Affects Version/s: 1.2.2
Fix Version/s: None
HostedContext is used to keep objects for invoking methods upon them remotely. It comes into play in situations like: remote xadisk invocation for filesystem operations, endpoint activation on remote xadisk instance, clustering (xadisk slave instances making use of a single master instance's concurrency control).
ConversationalHostedContext is bound to a specific communication channel and when the communication is closed, the context would go away (garbage collected) automatically.
GlobalHostedContext remains alive for the lifetime of the instance.
Currently, the three kinds of objects kept in the global hosted context are removed at certain later time (message-endpoint-factory, message-endpoint, xaresource for message delivery).
But, for conversational hosted context, the objects are never removed. This can lead to accumulation of references to the unused objects. For example, in case of remote xadisk operations, each new session is kept in this context. So, as long as the same xafs proxy object is used to create new and new sessions, all the session object would keep accumulating in the conversational context (of the xafs proxy).
Implement the removal of unused objects from the conversational context at the appropriate times (eg commit/rollback in case of a remote session).