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";