jvmRoute as part of the Redis key prevents failover to other nodes #67
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Including the jvmRoute as part of the redis key prevents migrating the session to another node. This applies both to failover because a node dies, as well as normal round-robin load balancing.
Quoting the memcached session plugin FAQ (https://code.google.com/p/memcached-session-manager/wiki/FAQ):
This pull request modifies the key used in redis by stripping the jvmRoute from it. This way any node in the cluster can fetch the same value using the session id. Stripping the key happens both for newly generated session ids, as well as the ones coming from the customer.
This current implementation assumes that if the jvmRoute is not set, i.e. is null, then the session id is not tampered with.
The pull request contains some very basic sanity tests for the strip method, to make sure no unwarranted exceptions are thrown, and that the stripping logic works for various special cases.