Repository: incubator-ignite Updated Branches: refs/heads/ignite-gg-10561 74b8fdb43 -> 55806b9f0
# gg-10561: session expiration (change) Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/42042ecb Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/42042ecb Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/42042ecb Branch: refs/heads/ignite-gg-10561 Commit: 42042ecb035f74b4b653400f13cdcb2f7334bd70 Parents: 74b8fdb Author: ashutak <ashu...@gridgain.com> Authored: Thu Jul 23 14:46:17 2015 +0300 Committer: ashutak <ashu...@gridgain.com> Committed: Thu Jul 23 14:46:17 2015 +0300 ---------------------------------------------------------------------- .../processors/rest/GridRestProcessor.java | 35 +++++++++++++------- 1 file changed, 23 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/42042ecb/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java index 3f10f0a..9f7be97 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java @@ -811,18 +811,23 @@ public class GridRestProcessor extends GridProcessorAdapter { * Session. */ private static class Session { - private static final Long EXPIRED_FLAG = -0l; + /** Expiration flag. It's a final state of lastToucnTime. */ + private static final Long EXPIRED_FLAG = 0L; /** Client id. */ - volatile UUID clientId; + private volatile UUID clientId; /** Session token id. */ - volatile UUID sesTokId; + private volatile UUID sesTokId; /** Security context. */ - volatile SecurityContext secCtx; + private volatile SecurityContext secCtx; - final AtomicLong lastTouchTime = new AtomicLong(U.currentTimeMillis()); + /** + * Time when session is used last time. + * If this time was set at EXPIRED_FLAG, then it should never be changed. + */ + private final AtomicLong lastTouchTime = new AtomicLong(U.currentTimeMillis()); /** * @return Session token as bytes. @@ -832,7 +837,9 @@ public class GridRestProcessor extends GridProcessorAdapter { } /** - * // TODO javadoc + * Checks expiration of session and if expired then sets EXPIRED_FLAG. + * + * @return <code>True</code> if expired. */ boolean checkExpiration() { long time0 = lastTouchTime.get(); @@ -844,18 +851,22 @@ public class GridRestProcessor extends GridProcessorAdapter { } /** - * // TODO javadoc + * Checks whether session at expired state (EPIRATION_FLAG) or not, if not then tries to update last touch time. + * * @return <code>True</code> if expired. */ boolean checkExpirationAndTryUpdateLastTouchTime() { - long time0 = lastTouchTime.get(); + while (true) { + long time0 = lastTouchTime.get(); - if (time0 == EXPIRED_FLAG) - return true; + if (time0 == EXPIRED_FLAG) + return true; - lastTouchTime.compareAndSet(time0, U.currentTimeMillis()); + boolean success = lastTouchTime.compareAndSet(time0, U.currentTimeMillis()); - return isExpired(); + if (success) + return false; + } } /**