Java and .NET API: Why does my session end up in the ABORTED state even though my client has finished normally?

You must call Session.close() when using the Java API and Session.Close() when using the .NET API. Both are mandatory calls that ensure that your session is terminated properly and put into the CLOSED state. Both the Java and .NET APIs try to close the session in the cleanup methods for the Session object. However, since garbage collection is non-deterministic, your session could be in either the ABORTED or CLOSED state if you neglect to close your session.