You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by vo...@apache.org on 2016/09/08 14:46:13 UTC
[31/50] ignite git commit: Better invariants in SessionStateData.
Better invariants in SessionStateData.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/5543901d
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/5543901d
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/5543901d
Branch: refs/heads/ignite-3199-1
Commit: 5543901d26f1ed82cf0e465f57852b98f11b98bd
Parents: 7a90d55
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Wed Sep 7 20:14:25 2016 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Wed Sep 7 20:14:25 2016 +0300
----------------------------------------------------------------------
.../platform/websession/LockEntryProcessor.java | 15 +---
.../platform/websession/LockInfo.java | 2 +-
.../platform/websession/SessionStateData.java | 80 ++++++++++++--------
.../websession/SetAndUnlockEntryProcessor.java | 8 +-
.../websession/UnlockEntryProcessor.java | 8 +-
5 files changed, 60 insertions(+), 53 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/5543901d/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/LockEntryProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/LockEntryProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/LockEntryProcessor.java
index a8591a4..03ae929 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/LockEntryProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/LockEntryProcessor.java
@@ -21,7 +21,6 @@ import org.apache.ignite.cache.CacheEntryProcessor;
import javax.cache.processor.EntryProcessorException;
import javax.cache.processor.MutableEntry;
-import java.sql.Timestamp;
/**
* Entry processor that locks web session data.
@@ -43,21 +42,13 @@ public class LockEntryProcessor implements CacheEntryProcessor<String, SessionSt
assert data != null;
- if (data.getLockNodeId() != null) {
- // Already locked: return lock time.
- Timestamp lockTime = data.getLockTime();
-
- assert lockTime != null;
-
- return lockTime;
- }
+ if (data.locked())
+ return data.lockTime();
LockInfo lockInfo = (LockInfo)objects[0];
// Not locked: lock and return result
- data.setLockNodeId(lockInfo.nodeId());
- data.setLockId(lockInfo.id());
- data.setLockTime(lockInfo.getTime());
+ data.lock(lockInfo);
// Apply.
entry.setValue(data);
http://git-wip-us.apache.org/repos/asf/ignite/blob/5543901d/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/LockInfo.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/LockInfo.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/LockInfo.java
index e71ae38..28bca3a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/LockInfo.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/LockInfo.java
@@ -58,7 +58,7 @@ public class LockInfo implements Binarylizable {
/**
* @return Time.
*/
- public Timestamp getTime() {
+ public Timestamp time() {
return time;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/5543901d/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/SessionStateData.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/SessionStateData.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/SessionStateData.java
index 6ef7c59..e850706 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/SessionStateData.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/SessionStateData.java
@@ -23,6 +23,8 @@ import org.apache.ignite.binary.BinaryRawWriter;
import org.apache.ignite.binary.BinaryReader;
import org.apache.ignite.binary.BinaryWriter;
import org.apache.ignite.binary.Binarylizable;
+import org.apache.ignite.internal.util.tostring.GridToStringExclude;
+import org.apache.ignite.internal.util.typedef.internal.S;
import java.sql.Timestamp;
import java.util.UUID;
@@ -32,66 +34,75 @@ import java.util.UUID;
*/
@SuppressWarnings({"ReturnOfDateField", "AssignmentToDateFieldFromParameter"})
public class SessionStateData implements Binarylizable {
- /** */
- private int timeout;
+ /** Items. */
+ private KeyValueDirtyTrackedCollection items;
- /** */
- private UUID lockNodeId;
+ /** Static objects. */
+ @GridToStringExclude
+ private byte[] staticObjects;
- /** */
- private long lockId;
+ /** Timeout. */
+ private int timeout;
- /** */
- private Timestamp lockTime;
+ /** Lock ID. */
+ private long lockId;
- /** */
- private KeyValueDirtyTrackedCollection items;
+ /** Lock node ID. */
+ private UUID lockNodeId;
- /** */
- private byte[] staticObjects;
+ /** Lock time. */
+ private Timestamp lockTime;
/**
- * Gets the lock node id.
+ * @return Lock ID.
*/
- public UUID getLockNodeId() {
- return lockNodeId;
+ public long lockId() {
+ return lockId;
}
/**
- * Sets the lock node id.
- *
+ * @return Lock node ID.
*/
- public void setLockNodeId(UUID lockNodeId) {
- this.lockNodeId = lockNodeId;
+ public UUID lockNodeId() {
+ return lockNodeId;
}
/**
- * Gets the lock id.
- *
+ * @return Lock time.
*/
- public long getLockId() {
- return lockId;
+ public Timestamp lockTime() {
+ return lockTime;
}
/**
- * Sets the lock id.
+ * @return {@code True} if locked.
*/
- public void setLockId(long lockId) {
- this.lockId = lockId;
+ public boolean locked() {
+ return lockTime == null;
}
/**
- * Gets the lock time.
+ * Set lock info.
+ *
+ * @param lock Lock.
*/
- public Timestamp getLockTime() {
- return lockTime;
+ public void lock(LockInfo lock) {
+ assert !locked();
+
+ lockId = lock.id();
+ lockNodeId = lock.nodeId();
+ lockTime = lock.time();
}
/**
- * Sets the lock time.
+ * Clear lock info.
*/
- public void setLockTime(Timestamp lockTime) {
- this.lockTime = lockTime;
+ public void unlock() {
+ assert locked();
+
+ lockId = 0;
+ lockNodeId = null;
+ lockTime = null;
}
/** {@inheritDoc} */
@@ -131,4 +142,9 @@ public class SessionStateData implements Binarylizable {
staticObjects = other.staticObjects;
items.applyChanges(other.items);
}
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(SessionStateData.class, this);
+ }
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/5543901d/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/SetAndUnlockEntryProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/SetAndUnlockEntryProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/SetAndUnlockEntryProcessor.java
index c973256..6ac8ed1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/SetAndUnlockEntryProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/SetAndUnlockEntryProcessor.java
@@ -37,18 +37,18 @@ public class SetAndUnlockEntryProcessor implements CacheEntryProcessor<String, S
SessionStateData data = entry.getValue();
assert data != null;
- assert data.getLockNodeId() != null;
+ assert data.lockNodeId() != null;
SessionStateData newData = (SessionStateData)objects[0];
- if (!data.getLockNodeId().equals(newData.getLockNodeId()))
+ if (!data.lockNodeId().equals(newData.lockNodeId()))
throw new IllegalStateException("Can not unlock session data: lock node id check failed.");
- if (data.getLockId() != newData.getLockId())
+ if (data.lockId() != newData.lockId())
throw new IllegalStateException("Can not unlock session data: lock id check failed.");
// Unlock.
- data.setLockNodeId(null);
+ data.unlock();
// Update values.
data.applyChanges(newData);
http://git-wip-us.apache.org/repos/asf/ignite/blob/5543901d/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/UnlockEntryProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/UnlockEntryProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/UnlockEntryProcessor.java
index 5554026..f6aa798 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/UnlockEntryProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/websession/UnlockEntryProcessor.java
@@ -37,18 +37,18 @@ public class UnlockEntryProcessor implements CacheEntryProcessor<String, Session
SessionStateData data = entry.getValue();
assert data != null;
- assert data.getLockNodeId() != null;
+ assert data.lockNodeId() != null;
LockInfo lockInfo = (LockInfo)objects[0];
- if (!data.getLockNodeId().equals(lockInfo.nodeId()))
+ if (!data.lockNodeId().equals(lockInfo.nodeId()))
throw new IllegalStateException("Can not unlock session data: lock node id check failed.");
- if (data.getLockId() != lockInfo.id())
+ if (data.lockId() != lockInfo.id())
throw new IllegalStateException("Can not unlock session data: lock id check failed.");
// Unlock.
- data.setLockNodeId(null);
+ data.unlock();
entry.setValue(data);