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/12 14:32:36 UTC

svn commit: r1695492 - in /jackrabbit/oak/trunk/oak-core/src: main/java/org/apache/jackrabbit/oak/plugins/document/ main/java/org/apache/jackrabbit/oak/plugins/document/memory/ main/java/org/apache/jackrabbit/oak/plugins/document/mongo/ main/java/org/a...

Author: stefanegli
Date: Wed Aug 12 12:32:35 2015
New Revision: 1695492

URL: http://svn.apache.org/r1695492
Log:
OAK-2682 : Introducing time difference detection for DocumentNodeStore: now startup will fail if oak and mongo server are off by more than 2 seconds (configurable via system property 'oak.documentMK.maxServerTimeDiffMillis')

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreMBean.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreService.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentStore.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/memory/MemoryDocumentStore.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreDB.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/LoggingDocumentStoreWrapper.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/SynchronizingDocumentStoreWrapper.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/TimingDocumentStoreWrapper.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/BasicDocumentStoreTest.java
    jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/CountingDocumentStore.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java?rev=1695492&r1=1695491&r2=1695492&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java Wed Aug 12 12:32:35 2015
@@ -2516,6 +2516,11 @@ public final class DocumentNodeStore
             }
             return sdf.format(r.getTimestamp());
         }
+        
+        @Override
+        public long determineServerTimeDifferenceMillis() {
+        	return store.determineServerTimeDifferenceMillis();
+        }
     }
 
     static abstract class NodeStoreTask implements Runnable {

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreMBean.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreMBean.java?rev=1695492&r1=1695491&r2=1695492&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreMBean.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreMBean.java Wed Aug 12 12:32:35 2015
@@ -40,4 +40,15 @@ public interface DocumentNodeStoreMBean
     String[] getLastKnownRevisions();
 
     String formatRevision(@Name("revision") String rev, @Name("UTC")boolean utc);
+
+    /**
+     * @return the estimated time difference in milliseconds between
+     * the local instance and the (typically common, shared) document server system.
+     * The value can be zero if the times are estimated to be equal,
+     * positive when the local instance is ahead of the remote server
+     * and negative when the local instance is behind the remote server. An invocation is not cached
+     * and typically requires a round-trip to the server (but that is not a requirement).
+     * @throws UnsupportedOperationException if this DocumentStore does not support this method
+     */
+    long determineServerTimeDifferenceMillis();
 }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreService.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreService.java?rev=1695492&r1=1695491&r2=1695492&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreService.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreService.java Wed Aug 12 12:32:35 2015
@@ -447,6 +447,19 @@ public class DocumentNodeStoreService {
         observerTracker.start(context.getBundleContext());
 
         DocumentStore ds = mk.getDocumentStore();
+        
+        // OAK-2682: time difference detection applied at startup with a default max time diff of 2000 millis (2sec)
+        final long maxDiff = Long.parseLong(System.getProperty("oak.documentMK.maxServerTimeDiffMillis", "2000"));
+        try{
+	        final long timeDiff = ds.determineServerTimeDifferenceMillis();
+	        log.info("registerNodeStore: server time difference: {}ms (max allowed: {}ms)", timeDiff, maxDiff);
+	        if (Math.abs(timeDiff)>Math.abs(maxDiff)) {
+	        	throw new IllegalStateException("Server clock seems off ("+timeDiff+"ms) by more than configured amount ("+maxDiff+"ms)");
+	        }
+        } catch(RuntimeException e) { // no checked exception
+        	// in case of a RuntimeException, just log but continue
+        	log.warn("registerNodeStore: got RuntimeException while trying to determine time difference to server: "+e, e);
+        }
 
         Dictionary<String, Object> props = new Hashtable<String, Object>();
         props.put(Constants.SERVICE_PID, DocumentNodeStore.class.getName());

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentStore.java?rev=1695492&r1=1695491&r2=1695492&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentStore.java Wed Aug 12 12:32:35 2015
@@ -308,4 +308,15 @@ public interface DocumentStore {
      * @return description of the underlying storage.
      */
     Map<String, String> getMetadata();
+    
+    /**
+     * @return the estimated time difference in milliseconds between
+     * the local instance and the (typically common, shared) document server system.
+     * The value can be zero if the times are estimated to be equal,
+     * positive when the local instance is ahead of the remote server
+     * and negative when the local instance is behind the remote server. An invocation is not cached
+     * and typically requires a round-trip to the server (but that is not a requirement).
+     * @throws UnsupportedOperationException if this DocumentStore does not support this method
+     */
+    long determineServerTimeDifferenceMillis();
 }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/memory/MemoryDocumentStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/memory/MemoryDocumentStore.java?rev=1695492&r1=1695491&r2=1695492&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/memory/MemoryDocumentStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/memory/MemoryDocumentStore.java Wed Aug 12 12:32:35 2015
@@ -401,5 +401,11 @@ public class MemoryDocumentStore impleme
     public Map<String, String> getMetadata() {
         return metadata;
     }
+    
+    @Override
+    public long determineServerTimeDifferenceMillis() {
+    	// the MemoryDocumentStore has no delays, thus return 0
+    	return 0;
+    }
 
 }
\ No newline at end of file

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java?rev=1695492&r1=1695491&r2=1695492&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoDocumentStore.java Wed Aug 12 12:32:35 2015
@@ -22,6 +22,7 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.Comparator;
+import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -122,7 +123,9 @@ public class MongoDocumentStore implemen
     private final DBCollection settings;
     private final DBCollection journal;
 
-    private final Cache<CacheValue, NodeDocument> nodesCache;
+	private final DB db;
+
+	private final Cache<CacheValue, NodeDocument> nodesCache;
     private final CacheStats cacheStats;
 
     /**
@@ -200,6 +203,7 @@ public class MongoDocumentStore implemen
                 .put("version", version)
                 .build();
 
+        this.db = db;
         nodes = db.getCollection(Collection.NODES.toString());
         clusterNodes = db.getCollection(Collection.CLUSTER_NODES.toString());
         settings = db.getCollection(Collection.SETTINGS.toString());
@@ -1483,4 +1487,34 @@ public class MongoDocumentStore implemen
             parentLock.unlock();
         }
     }
+
+    @Override
+    public long determineServerTimeDifferenceMillis() {
+        // the assumption is that the network delay from this instance
+        // to the server, and from the server back to this instance
+        // are (more or less) equal.
+        // taking this assumption into account allows to remove
+        // the network delays from the picture: the difference
+        // between end and start time is exactly this network
+        // delay (plus some server time, but that's neglected).
+        // so if the clocks are in perfect sync and the above
+        // mentioned assumption holds, then the server time should
+        // be exactly at the midPoint between start and end.
+        // this should allow a more accurate picture of the diff.
+        final long start = System.currentTimeMillis();
+        // assumption here: server returns UTC - ie the returned
+        // date object is correctly taking care of time zones.
+        final Date serverLocalTime = db.command("serverStatus").getDate("localTime");
+        final long end = System.currentTimeMillis();
+
+        final long midPoint = (start + end) / 2;
+        final long serverLocalTimeMillis = serverLocalTime.getTime();
+
+        // the difference should be
+        // * positive when local instance is ahead
+        // * and negative when the local instance is behind
+        final long diff = midPoint - serverLocalTimeMillis;
+
+        return diff;
+    }
 }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java?rev=1695492&r1=1695491&r2=1695492&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java Wed Aug 12 12:32:35 2015
@@ -294,6 +294,53 @@ public class RDBDocumentStore implements
         invalidateCache(collection, id, false);
     }
 
+    @Override
+    public long determineServerTimeDifferenceMillis() {
+        Connection connection = null;
+        PreparedStatement stmt = null;
+        ResultSet rs = null;
+        String tableName = getTable(Collection.NODES);
+        long result;
+        try {
+            connection = this.ch.getROConnection();
+            String t = "select ";
+            if (this.db.getFetchFirstSyntax() == FETCHFIRSTSYNTAX.TOP) {
+                t += "TOP 1 ";
+            }
+            t += this.db.getCurrentTimeStampInMsSyntax() + " from " + tableName;
+            switch (this.db.getFetchFirstSyntax()) {
+                case LIMIT:
+                    t += " LIMIT 1";
+                    break;
+                case FETCHFIRST:
+                    t += " FETCH FIRST 1 ROWS ONLY";
+                    break;
+                default:
+                    break;
+            }
+
+            stmt = connection.prepareStatement(t);
+
+            long start = System.currentTimeMillis();
+            rs = stmt.executeQuery();
+            if (rs.next()) {
+                long roundtrip = System.currentTimeMillis() - start;
+                long serverTime = rs.getTimestamp(1).getTime();
+                result = (start + roundtrip / 2) - serverTime;
+            } else {
+                throw new DocumentStoreException("failed to determine server timestamp");
+            }
+            return result;
+        } catch (Exception ex) {
+            LOG.error("", ex);
+            throw new DocumentStoreException(ex);
+        } finally {
+            this.ch.closeResultSet(rs);
+            this.ch.closeStatement(stmt);
+            this.ch.closeConnection(connection);
+        }
+    }
+
     private <T extends Document> void invalidateCache(Collection<T> collection, String id, boolean remove) {
         if (collection == Collection.NODES) {
             invalidateNodesCache(id, remove);
@@ -1858,4 +1905,5 @@ public class RDBDocumentStore implements
         }
         return false;
     }
+    
 }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreDB.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreDB.java?rev=1695492&r1=1695491&r2=1695492&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreDB.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreDB.java Wed Aug 12 12:32:35 2015
@@ -52,6 +52,12 @@ public enum RDBDocumentStoreDB {
             return RDBJDBCTools.versionCheck(md, 10, 11, description);
         }
 
+        @Override
+        public String getCurrentTimeStampInMsSyntax() {
+            return "CURRENT_TIMESTAMP";
+        }
+
+        @Override
         public boolean allowsCaseInSelect() {
             return false;
         }
@@ -261,6 +267,11 @@ public enum RDBDocumentStoreDB {
         }
 
         @Override
+        public String getCurrentTimeStampInMsSyntax() {
+            return "CURRENT_TIMESTAMP";
+        }
+
+        @Override
         public String getAdditionalDiagnostics(RDBConnectionHandler ch, String tableName) {
             Connection con = null;
             PreparedStatement stmt = null;
@@ -320,6 +331,13 @@ public enum RDBDocumentStoreDB {
     }
 
     /**
+     * Query syntax for current time in ms
+     */
+    public String getCurrentTimeStampInMsSyntax() {
+        return "CURRENT_TIMESTAMP(4)";
+    }
+
+    /**
      * Returns the CONCAT function or its equivalent function or sub-query. Note
      * that the function MUST NOT cause a truncated value to be written!
      *

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/LoggingDocumentStoreWrapper.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/LoggingDocumentStoreWrapper.java?rev=1695492&r1=1695491&r2=1695492&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/LoggingDocumentStoreWrapper.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/LoggingDocumentStoreWrapper.java Wed Aug 12 12:32:35 2015
@@ -333,6 +333,14 @@ public class LoggingDocumentStoreWrapper
     public Map<String, String> getMetadata() {
         return store.getMetadata();
     }
+    
+    @Override
+    public long determineServerTimeDifferenceMillis() {
+    	logMethod("determineServerTimeDifferenceMillis", "start");
+    	long result = store.determineServerTimeDifferenceMillis();
+    	logMethod("determineServerTimeDifferenceMillis", "end", result);
+		return result;
+    }
 
     private void logMethod(String methodName, Object... args) {
         StringBuilder buff = new StringBuilder("ds");

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/SynchronizingDocumentStoreWrapper.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/SynchronizingDocumentStoreWrapper.java?rev=1695492&r1=1695491&r2=1695492&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/SynchronizingDocumentStoreWrapper.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/SynchronizingDocumentStoreWrapper.java Wed Aug 12 12:32:35 2015
@@ -135,6 +135,11 @@ public class SynchronizingDocumentStoreW
     public synchronized CacheStats getCacheStats() {
         return store.getCacheStats();
     }
+    
+    @Override
+    public synchronized long determineServerTimeDifferenceMillis() {
+    	return store.determineServerTimeDifferenceMillis();
+    }
 
     @Override
     public Map<String, String> getMetadata() {

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/TimingDocumentStoreWrapper.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/TimingDocumentStoreWrapper.java?rev=1695492&r1=1695491&r2=1695492&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/TimingDocumentStoreWrapper.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/util/TimingDocumentStoreWrapper.java Wed Aug 12 12:32:35 2015
@@ -357,6 +357,18 @@ public class TimingDocumentStoreWrapper
     public Map<String, String> getMetadata() {
         return base.getMetadata();
     }
+    
+    @Override
+    public long determineServerTimeDifferenceMillis() {
+        try {
+            long start = now();
+            long result = base.determineServerTimeDifferenceMillis();
+            updateAndLogTimes("determineServerTimeDifferenceMillis", start, 0, 0);
+            return result;
+        } catch (Exception e) {
+            throw convert(e);
+        }
+    }
 
     private void logCommonCall(long start, String key) {
         int time = (int) (System.currentTimeMillis() - start);

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/BasicDocumentStoreTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/BasicDocumentStoreTest.java?rev=1695492&r1=1695491&r2=1695492&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/BasicDocumentStoreTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/BasicDocumentStoreTest.java Wed Aug 12 12:32:35 2015
@@ -34,6 +34,7 @@ import java.util.UUID;
 
 import org.apache.jackrabbit.oak.plugins.document.UpdateOp.Condition;
 import org.apache.jackrabbit.oak.plugins.document.UpdateOp.Key;
+import org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore;
 import org.apache.jackrabbit.oak.plugins.document.util.Utils;
 import org.junit.Test;
 import org.slf4j.Logger;
@@ -587,6 +588,18 @@ public class BasicDocumentStoreTest exte
     }
 
     @Test
+    public void testServerTimeDiff() throws Exception {
+        if (super.ds instanceof RDBDocumentStore) {
+            UpdateOp up = new UpdateOp("0:/", true);
+            up.set("_id", "0:/");
+            super.ds.create(Collection.NODES, Collections.singletonList(up));
+            removeMe.add("0:/");
+            long td = ((RDBDocumentStore)super.ds).determineServerTimeDifferenceMillis();
+            LOG.info("Server time difference on " + super.dsname + ": " + td + "ms");
+        }
+    }
+
+    @Test
     public void removeWithCondition() throws Exception {
         List<UpdateOp> docs = Lists.newArrayList();
         docs.add(newDocument("/foo", 100));

Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/CountingDocumentStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/CountingDocumentStore.java?rev=1695492&r1=1695491&r2=1695492&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/CountingDocumentStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/CountingDocumentStore.java Wed Aug 12 12:32:35 2015
@@ -219,4 +219,8 @@ public class CountingDocumentStore imple
         return delegate.getMetadata();
     }
 
+    @Override
+    public long determineServerTimeDifferenceMillis() {
+    	return delegate.determineServerTimeDifferenceMillis();
+    }
 }



Re: svn commit: r1695492 - in /jackrabbit/oak/trunk/oak-core/src: main/java/org/apache/jackrabbit/oak/plugins/document/ main/java/org/apache/jackrabbit/oak/plugins/document/memory/ main/java/org/apache/jackrabbit/oak/plugins/document/mongo/ main/java/org/a...

Posted by Stefan Egli <st...@gmail.com>.
Good point, done in http://svn.apache.org/r1695655

Cheers,
Stefan

On 13/08/15 09:35, "Davide Giannella" <da...@apache.org> wrote:

>On 12/08/2015 14:32, stefanegli@apache.org wrote:
>> Author: stefanegli
>> Date: Wed Aug 12 12:32:35 2015
>> New Revision: 1695492
>>
>> URL: http://svn.apache.org/r1695492
>> Log:
>> OAK-2682 : Introducing time difference detection for DocumentNodeStore:
>>now startup will fail if oak and mongo server are off by more than 2
>>seconds (configurable via system property
>>'oak.documentMK.maxServerTimeDiffMillis')
>>
>
>Stefan, could you please add note of this new configuration in the
>RELESE-NOTES? See here for an example
>
>https://github.com/apache/jackrabbit-oak/blob/jackrabbit-oak-1.0.18/RELEAS
>E-NOTES.txt#L18
>
>Thanks
>Davide
>
>



Re: svn commit: r1695492 - in /jackrabbit/oak/trunk/oak-core/src: main/java/org/apache/jackrabbit/oak/plugins/document/ main/java/org/apache/jackrabbit/oak/plugins/document/memory/ main/java/org/apache/jackrabbit/oak/plugins/document/mongo/ main/java/org/a...

Posted by Davide Giannella <da...@apache.org>.
On 12/08/2015 14:32, stefanegli@apache.org wrote:
> Author: stefanegli
> Date: Wed Aug 12 12:32:35 2015
> New Revision: 1695492
>
> URL: http://svn.apache.org/r1695492
> Log:
> OAK-2682 : Introducing time difference detection for DocumentNodeStore: now startup will fail if oak and mongo server are off by more than 2 seconds (configurable via system property 'oak.documentMK.maxServerTimeDiffMillis')
>

Stefan, could you please add note of this new configuration in the
RELESE-NOTES? See here for an example

https://github.com/apache/jackrabbit-oak/blob/jackrabbit-oak-1.0.18/RELEASE-NOTES.txt#L18

Thanks
Davide