You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by st...@apache.org on 2015/08/26 14:45:15 UTC

svn commit: r1697913 - in /jackrabbit/oak/trunk/oak-core/src: main/java/org/apache/jackrabbit/oak/plugins/document/ test/java/org/apache/jackrabbit/oak/plugins/document/

Author: stefanegli
Date: Wed Aug 26 12:45:15 2015
New Revision: 1697913

URL: http://svn.apache.org/r1697913
Log:
OAK-3238 : update lease more often: after 20sec instead of 30sec already - this allows to make the lease-check on the other hand to have a larger safety-margin: the lease check now fails if the lease is only valid for another 20sec (instead of timing out at the very end, which has zero margin)

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/ClusterNodeInfo.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/ClusterInfoTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentDiscoveryLiteServiceTest.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/ClusterNodeInfo.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/ClusterNodeInfo.java?rev=1697913&r1=1697912&r2=1697913&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/ClusterNodeInfo.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/ClusterNodeInfo.java Wed Aug 26 12:45:15 2015
@@ -401,7 +401,7 @@ public class ClusterNodeInfo {
             return;
         }
         final long now = getCurrentTime();
-        if (now < leaseEndTime) {
+        if (now < (leaseEndTime - leaseTime / 3)) { // OAK-3238 : put the barrier 1/3 before lease end
             // then all is good
             return;
         }
@@ -439,14 +439,14 @@ public class ClusterNodeInfo {
     /**
      * Renew the cluster id lease. This method needs to be called once in a while,
      * to ensure the same cluster id is not re-used by a different instance.
-     * The lease is only renewed when half of the lease time passed. That is,
-     * with a lease time of 60 seconds, the lease is renewed every 30 seconds.
+     * The lease is only renewed when a third of the lease time passed. That is,
+     * with a lease time of 60 seconds, the lease is renewed every 20 seconds.
      *
      * @return {@code true} if the lease was renewed; {@code false} otherwise.
      */
     public boolean renewLease() {
         long now = getCurrentTime();
-        if (now + leaseTime / 2 < leaseEndTime) {
+        if (now + 2 * leaseTime / 3 < leaseEndTime) {
             return false;
         }
         UpdateOp update = new UpdateOp("" + id, true);

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/ClusterInfoTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/ClusterInfoTest.java?rev=1697913&r1=1697912&r2=1697913&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/ClusterInfoTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/ClusterInfoTest.java Wed Aug 26 12:45:15 2015
@@ -113,8 +113,8 @@ public class ClusterInfoTest {
         // current lease end
         long leaseEnd = getLeaseEndTime(ns);
 
-        // wait a bit, but not more than half of the lease time
-        clock.waitUntil(clock.getTime() + (ns.getClusterInfo().getLeaseTime() / 2) - 1000);
+        // wait a bit, but not more than a third of the lease time
+        clock.waitUntil(clock.getTime() + (ns.getClusterInfo().getLeaseTime() / 3) - 1000);
 
         // must not renew lease right now
         ns.renewClusterIdLease();

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentDiscoveryLiteServiceTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentDiscoveryLiteServiceTest.java?rev=1697913&r1=1697912&r2=1697913&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentDiscoveryLiteServiceTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentDiscoveryLiteServiceTest.java Wed Aug 26 12:45:15 2015
@@ -313,7 +313,7 @@ public class DocumentDiscoveryLiteServic
          */
         private boolean setLeaseTime(final int leaseTime) throws NoSuchFieldException {
             ns.getClusterInfo().setLeaseTime(leaseTime);
-            PrivateAccessor.setField(ns.getClusterInfo(), "leaseEndTime", System.currentTimeMillis() + (leaseTime / 2));
+            PrivateAccessor.setField(ns.getClusterInfo(), "leaseEndTime", System.currentTimeMillis() + (leaseTime / 3) - 10 /* 10ms safety margin */);
             boolean renewed = ns.renewClusterIdLease();
             return renewed;
         }