During the life of a client application it is always possible that multiple sessions are opened, each of which with a different ID; in fact, the client could disconnect and reconnect, or recover from an interruption due to network problems.
In general, these sessions don't overlap and the Metadata Adapter can rebuild the user history by sensing the NotifyNewSession and NotifySessionClose calls.
In some cases, like in the Stream-sense case, two sessions may even overlap.
If overlapping is a problem, then your Metadata Adapter has the option of forcing the existence of one single session by throwing a ConflictingSessionException from NotifyNewSession when needed.

We are working on a way to simplify the interface with the Metadata Adapter on this respect, but no results are expected for the forthcoming release.
However, for instance, the Html Client Library, since version 5.0, no longer changes the session because of the Stream-sense or when resorting to polling if the client can't keep up with a huge streaming update flow.
We may try to help you, if you provide us with more details on your case.