subscribe and unsubscribe issues
- Added unit tests to cover a few more cases which I my system ran into
under concurrent load testing.
- Remove and detect TNode, implement more of
http://bravenewgeek.com/breaking-and-entering-lose-the-lock-while-embracing-concurrency/
related to TNode state
- NOTE: The graph is left with nodes which have no subscriptions, the
TNode cleanup only cleanss the last node for now. We should
autoprune further up by placing more TNodes and pruning them off.
- Adding concurrency Sets and Lists to CNode, because those ARE edited
and read in parallel in our use-case. Before a CNode is CAS
replaced, more than 1 thread may be attempting to modify and read the
subscriptions and children CNode datastructures, and I hit this
during testing.
- Fixed an issue where we unsubscribe all sub-topics if an unsubscribe
is sent on a parent node.
- Fixed an issue with unsubscribing multiple times when no subscrition
exists, we should handle this gracefully.
- introduced a unique point of access and management of sessions state (SessionRepository)
- separated behaiour for sessions with clean flag to false into DurableSession
- separated behaviour for session with clean flag to true into TransientSession
First step on implementing H2 storage
Minor, fixed not imported class
Cleaned MessageStore interface to avoid duplication of methods used in couple. Switched from guid + message to move messages
Separated ISubscriptionsStore from ISessionStore
Implemented H2 queue
max line length warnings removed
missing Copyright added
useless publics removed
unmaintainable Javadoc tags: @author removed
helper class warnings removed
field default value initialization removed
Multiple warnings removed
pref: checkstyle warnings removed
Checkstyle will fail the build process if it detects violations
switch default cases error logger added
broker/IStore: Interface added for MapDBPersistentStore
broker/ProtocolProcessorBootstrapper: class loader for store added
broker/ISessionsStore#mapToGuid: moved to IMessagesStore
broker/ProtocolProcessorBootstrapper: getter used for SessionStore
broker/Server: getter for processor added
broker/ProtocolProcessor: getter added for Stores