You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by ds...@apache.org on 2017/08/31 00:49:24 UTC
[1/3] geode git commit: change ExpiryTask to not call
GemFireCacheImpl.getInstance
Repository: geode
Updated Branches:
refs/heads/feature/GEODE-3543 [created] 762f39a6e
change ExpiryTask to not call GemFireCacheImpl.getInstance
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/127ddfea
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/127ddfea
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/127ddfea
Branch: refs/heads/feature/GEODE-3543
Commit: 127ddfea0ce03df8f7e9a0b31cbcf5f9dc002d08
Parents: ca2f20b
Author: Darrel Schneider <ds...@pivotal.io>
Authored: Wed Aug 30 09:34:04 2017 -0700
Committer: Darrel Schneider <ds...@pivotal.io>
Committed: Wed Aug 30 09:34:04 2017 -0700
----------------------------------------------------------------------
.../apache/geode/internal/cache/ExpiryTask.java | 17 +++++++++--------
.../apache/geode/internal/cache/LocalRegion.java | 2 +-
.../geode/internal/cache/RegionExpiryTask.java | 2 +-
.../geode/cache30/MultiVMRegionTestCase.java | 4 ++--
.../org/apache/geode/cache30/RegionTestCase.java | 2 +-
5 files changed, 14 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/127ddfea/geode-core/src/main/java/org/apache/geode/internal/cache/ExpiryTask.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/ExpiryTask.java b/geode-core/src/main/java/org/apache/geode/internal/cache/ExpiryTask.java
index 3048e52..226f02e 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/ExpiryTask.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/ExpiryTask.java
@@ -144,7 +144,6 @@ public abstract class ExpiryTask extends SystemTimer.SystemTimerTask {
return extm;
}
-
/**
* Return true if current task could have expired. Return false if expiration is impossible.
*/
@@ -461,12 +460,14 @@ public abstract class ExpiryTask extends SystemTimer.SystemTimerTask {
* to set a thread local. Make sure and call {@link #clearNow()} in a finally block after calling
* this method.
*/
- public static void setNow() {
- now.set(calculateNow());
+ public static void setNow(LocalRegion lr) {
+ now.set(calculateNow(lr.getCache()));
}
- private static long calculateNow() {
- InternalCache cache = GemFireCacheImpl.getInstance();
+ public long calculateNow() {
+ return calculateNow(getLocalRegion().getCache());
+ }
+ public static long calculateNow(InternalCache cache) {
if (cache != null) {
// Use cache.cacheTimeMillis here. See bug 52267.
InternalDistributedSystem ids = cache.getInternalDistributedSystem();
@@ -479,19 +480,19 @@ public abstract class ExpiryTask extends SystemTimer.SystemTimerTask {
/**
* Call this method after a thread has called {@link #setNow()} once you are done calling code
- * that may call {@link #getNow()}.
+ * that may call {@link #getNow(LocalRegion)}.
*/
public static void clearNow() {
now.remove();
}
/**
- * Returns the current time in milliseconds. If the current thread has called {@link #setNow()}
+ * Returns the current time in milliseconds. If the current thread has called {@link #setNow(LocalRegion)}
* then that time is return.
*
* @return the current time in milliseconds
*/
- public static long getNow() {
+ protected long getNow() {
long result;
Long tl = now.get();
if (tl != null) {
http://git-wip-us.apache.org/repos/asf/geode/blob/127ddfea/geode-core/src/main/java/org/apache/geode/internal/cache/LocalRegion.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/LocalRegion.java b/geode-core/src/main/java/org/apache/geode/internal/cache/LocalRegion.java
index 6bee770..9a3e425 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/LocalRegion.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/LocalRegion.java
@@ -7751,7 +7751,7 @@ public class LocalRegion extends AbstractRegion implements LoaderHelperFactory,
if (it.hasNext()) {
try {
if (isEntryExpiryPossible()) {
- ExpiryTask.setNow();
+ ExpiryTask.setNow(this);
}
while (it.hasNext()) {
addExpiryTask(it.next());
http://git-wip-us.apache.org/repos/asf/geode/blob/127ddfea/geode-core/src/main/java/org/apache/geode/internal/cache/RegionExpiryTask.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/RegionExpiryTask.java b/geode-core/src/main/java/org/apache/geode/internal/cache/RegionExpiryTask.java
index 065d966..06e2c99 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/RegionExpiryTask.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/RegionExpiryTask.java
@@ -141,6 +141,6 @@ abstract class RegionExpiryTask extends ExpiryTask {
SystemFailure.checkFailure();
}
return super.toString() + " for " + getLocalRegion().getFullPath() + ", expiration time: "
- + expireTime + " [now: " + getNow() + "]";
+ + expireTime + " [now: " + calculateNow() + "]";
}
}
http://git-wip-us.apache.org/repos/asf/geode/blob/127ddfea/geode-core/src/test/java/org/apache/geode/cache30/MultiVMRegionTestCase.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/cache30/MultiVMRegionTestCase.java b/geode-core/src/test/java/org/apache/geode/cache30/MultiVMRegionTestCase.java
index 34cf1ca..870e1be 100644
--- a/geode-core/src/test/java/org/apache/geode/cache30/MultiVMRegionTestCase.java
+++ b/geode-core/src/test/java/org/apache/geode/cache30/MultiVMRegionTestCase.java
@@ -3933,7 +3933,7 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
((InternalDistributedSystem) (region.getCache().getDistributedSystem()))
.getClock().getStopTime();
logger.info("DEBUG: waiting for expire destroy expirationTime= "
- + eet.getExpirationTime() + " now=" + eet.getNow() + " stopTime=" + stopTime
+ + eet.getExpirationTime() + " now=" + eet.calculateNow() + " stopTime=" + stopTime
+ " currentTimeMillis=" + System.currentTimeMillis());
} else {
logger.info("DEBUG: waiting for expire destroy but expiry task is null");
@@ -3948,7 +3948,7 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
try {
EntryExpiryTask eet = getEntryExpiryTask(region, key);
if (eet != null) {
- expiryInfo = "expirationTime= " + eet.getExpirationTime() + " now=" + eet.getNow()
+ expiryInfo = "expirationTime= " + eet.getExpirationTime() + " now=" + eet.calculateNow()
+ " currentTimeMillis=" + System.currentTimeMillis();
}
} catch (EntryNotFoundException ex) {
http://git-wip-us.apache.org/repos/asf/geode/blob/127ddfea/geode-core/src/test/java/org/apache/geode/cache30/RegionTestCase.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/cache30/RegionTestCase.java b/geode-core/src/test/java/org/apache/geode/cache30/RegionTestCase.java
index 3b56748..525c793 100644
--- a/geode-core/src/test/java/org/apache/geode/cache30/RegionTestCase.java
+++ b/geode-core/src/test/java/org/apache/geode/cache30/RegionTestCase.java
@@ -3480,7 +3480,7 @@ public abstract class RegionTestCase extends JUnit4CacheTestCase {
// ignore
}
Date ttlTime = new Date(et.getTTLExpirationTime());
- Date getNow = new Date(et.getNow());
+ Date getNow = new Date(ExpiryTask.calculateNow(getCache()));
Date scheduleETime = new Date(et.scheduledExecutionTime());
getCache().getLogger()
.info(callback + " now: " + getCurrentTimeStamp(now) + " ttl:" + getCurrentTimeStamp(ttl)
[2/3] geode git commit: added doWithNowSet
Posted by ds...@apache.org.
added doWithNowSet
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/87621249
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/87621249
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/87621249
Branch: refs/heads/feature/GEODE-3543
Commit: 87621249ce706363caa9d2b6732b33b9bc42fc11
Parents: 127ddfe
Author: Darrel Schneider <ds...@pivotal.io>
Authored: Wed Aug 30 16:55:17 2017 -0700
Committer: Darrel Schneider <ds...@pivotal.io>
Committed: Wed Aug 30 16:55:17 2017 -0700
----------------------------------------------------------------------
.../apache/geode/internal/cache/ExpiryTask.java | 50 +++++++++-----------
.../geode/internal/cache/LocalRegion.java | 12 ++---
.../apache/geode/cache30/RegionTestCase.java | 2 +-
3 files changed, 29 insertions(+), 35 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/87621249/geode-core/src/main/java/org/apache/geode/internal/cache/ExpiryTask.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/ExpiryTask.java b/geode-core/src/main/java/org/apache/geode/internal/cache/ExpiryTask.java
index 226f02e..129688f 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/ExpiryTask.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/ExpiryTask.java
@@ -456,39 +456,21 @@ public abstract class ExpiryTask extends SystemTimer.SystemTimerTask {
private static final ThreadLocal<Long> now = new ThreadLocal<Long>();
/**
- * To reduce the number of times we need to call System.currentTimeMillis you can call this method
- * to set a thread local. Make sure and call {@link #clearNow()} in a finally block after calling
- * this method.
+ * To reduce the number of times we need to call calculateNow, you can call this method
+ * to set now in a thread local. When the run returns the thread local is cleared.
*/
- public static void setNow(LocalRegion lr) {
+ static void doWithNowSet(LocalRegion lr, Runnable runnable) {
now.set(calculateNow(lr.getCache()));
- }
-
- public long calculateNow() {
- return calculateNow(getLocalRegion().getCache());
- }
- public static long calculateNow(InternalCache cache) {
- if (cache != null) {
- // Use cache.cacheTimeMillis here. See bug 52267.
- InternalDistributedSystem ids = cache.getInternalDistributedSystem();
- if (ids != null) {
- return ids.getClock().cacheTimeMillis();
- }
+ try {
+ runnable.run();
+ } finally {
+ now.remove();
}
- return 0L;
}
/**
- * Call this method after a thread has called {@link #setNow()} once you are done calling code
- * that may call {@link #getNow(LocalRegion)}.
- */
- public static void clearNow() {
- now.remove();
- }
-
- /**
- * Returns the current time in milliseconds. If the current thread has called {@link #setNow(LocalRegion)}
- * then that time is return.
+ * Returns the current time in milliseconds. If the current thread has set the now thread local
+ * then that time is return. Otherwise now is calculated and returned.
*
* @return the current time in milliseconds
*/
@@ -503,6 +485,20 @@ public abstract class ExpiryTask extends SystemTimer.SystemTimerTask {
return result;
}
+ public long calculateNow() {
+ return calculateNow(getLocalRegion().getCache());
+ }
+ public static long calculateNow(InternalCache cache) {
+ if (cache != null) {
+ // Use cache.cacheTimeMillis here. See bug 52267.
+ InternalDistributedSystem ids = cache.getInternalDistributedSystem();
+ if (ids != null) {
+ return ids.getClock().cacheTimeMillis();
+ }
+ }
+ return 0L;
+ }
+
// Should only be set by unit tests
public static ExpiryTaskListener expiryTaskListener;
http://git-wip-us.apache.org/repos/asf/geode/blob/87621249/geode-core/src/main/java/org/apache/geode/internal/cache/LocalRegion.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/LocalRegion.java b/geode-core/src/main/java/org/apache/geode/internal/cache/LocalRegion.java
index 9a3e425..47ce7e0 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/LocalRegion.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/LocalRegion.java
@@ -7746,19 +7746,17 @@ public class LocalRegion extends AbstractRegion implements LoaderHelperFactory,
if (!isInitialized()) {
return; // don't schedule expiration until region is initialized (bug
}
+ if (!isEntryExpiryPossible()) {
+ return;
+ }
// OK to ignore transaction since Expiry only done non-tran
Iterator<RegionEntry> it = this.entries.regionEntries().iterator();
if (it.hasNext()) {
- try {
- if (isEntryExpiryPossible()) {
- ExpiryTask.setNow(this);
- }
+ ExpiryTask.doWithNowSet(this, () -> {
while (it.hasNext()) {
addExpiryTask(it.next());
}
- } finally {
- ExpiryTask.clearNow();
- }
+ });
}
}
http://git-wip-us.apache.org/repos/asf/geode/blob/87621249/geode-core/src/test/java/org/apache/geode/cache30/RegionTestCase.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/cache30/RegionTestCase.java b/geode-core/src/test/java/org/apache/geode/cache30/RegionTestCase.java
index 525c793..f086125 100644
--- a/geode-core/src/test/java/org/apache/geode/cache30/RegionTestCase.java
+++ b/geode-core/src/test/java/org/apache/geode/cache30/RegionTestCase.java
@@ -3480,7 +3480,7 @@ public abstract class RegionTestCase extends JUnit4CacheTestCase {
// ignore
}
Date ttlTime = new Date(et.getTTLExpirationTime());
- Date getNow = new Date(ExpiryTask.calculateNow(getCache()));
+ Date getNow = new Date(et.calculateNow());
Date scheduleETime = new Date(et.scheduledExecutionTime());
getCache().getLogger()
.info(callback + " now: " + getCurrentTimeStamp(now) + " ttl:" + getCurrentTimeStamp(ttl)
[3/3] geode git commit: spotless
Posted by ds...@apache.org.
spotless
Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/762f39a6
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/762f39a6
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/762f39a6
Branch: refs/heads/feature/GEODE-3543
Commit: 762f39a6e78a4fe395eca0f1a62c02a3470fef5d
Parents: 8762124
Author: Darrel Schneider <ds...@pivotal.io>
Authored: Wed Aug 30 17:47:44 2017 -0700
Committer: Darrel Schneider <ds...@pivotal.io>
Committed: Wed Aug 30 17:47:44 2017 -0700
----------------------------------------------------------------------
.../java/org/apache/geode/internal/cache/ExpiryTask.java | 5 +++--
.../java/org/apache/geode/cache30/MultiVMRegionTestCase.java | 8 ++++----
2 files changed, 7 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/geode/blob/762f39a6/geode-core/src/main/java/org/apache/geode/internal/cache/ExpiryTask.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/ExpiryTask.java b/geode-core/src/main/java/org/apache/geode/internal/cache/ExpiryTask.java
index 129688f..9e21115 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/ExpiryTask.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/ExpiryTask.java
@@ -456,8 +456,8 @@ public abstract class ExpiryTask extends SystemTimer.SystemTimerTask {
private static final ThreadLocal<Long> now = new ThreadLocal<Long>();
/**
- * To reduce the number of times we need to call calculateNow, you can call this method
- * to set now in a thread local. When the run returns the thread local is cleared.
+ * To reduce the number of times we need to call calculateNow, you can call this method to set now
+ * in a thread local. When the run returns the thread local is cleared.
*/
static void doWithNowSet(LocalRegion lr, Runnable runnable) {
now.set(calculateNow(lr.getCache()));
@@ -488,6 +488,7 @@ public abstract class ExpiryTask extends SystemTimer.SystemTimerTask {
public long calculateNow() {
return calculateNow(getLocalRegion().getCache());
}
+
public static long calculateNow(InternalCache cache) {
if (cache != null) {
// Use cache.cacheTimeMillis here. See bug 52267.
http://git-wip-us.apache.org/repos/asf/geode/blob/762f39a6/geode-core/src/test/java/org/apache/geode/cache30/MultiVMRegionTestCase.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/cache30/MultiVMRegionTestCase.java b/geode-core/src/test/java/org/apache/geode/cache30/MultiVMRegionTestCase.java
index 870e1be..e7e6ee1 100644
--- a/geode-core/src/test/java/org/apache/geode/cache30/MultiVMRegionTestCase.java
+++ b/geode-core/src/test/java/org/apache/geode/cache30/MultiVMRegionTestCase.java
@@ -3933,8 +3933,8 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
((InternalDistributedSystem) (region.getCache().getDistributedSystem()))
.getClock().getStopTime();
logger.info("DEBUG: waiting for expire destroy expirationTime= "
- + eet.getExpirationTime() + " now=" + eet.calculateNow() + " stopTime=" + stopTime
- + " currentTimeMillis=" + System.currentTimeMillis());
+ + eet.getExpirationTime() + " now=" + eet.calculateNow() + " stopTime="
+ + stopTime + " currentTimeMillis=" + System.currentTimeMillis());
} else {
logger.info("DEBUG: waiting for expire destroy but expiry task is null");
}
@@ -3948,8 +3948,8 @@ public abstract class MultiVMRegionTestCase extends RegionTestCase {
try {
EntryExpiryTask eet = getEntryExpiryTask(region, key);
if (eet != null) {
- expiryInfo = "expirationTime= " + eet.getExpirationTime() + " now=" + eet.calculateNow()
- + " currentTimeMillis=" + System.currentTimeMillis();
+ expiryInfo = "expirationTime= " + eet.getExpirationTime() + " now="
+ + eet.calculateNow() + " currentTimeMillis=" + System.currentTimeMillis();
}
} catch (EntryNotFoundException ex) {
expiryInfo = "EntryNotFoundException when getting expiry task";