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 th...@apache.org on 2013/04/22 15:51:41 UTC

svn commit: r1470512 - in /jackrabbit/oak/trunk/oak-mongomk/src: main/java/org/apache/jackrabbit/mongomk/ test/java/org/apache/jackrabbit/mongomk/ test/java/org/apache/jackrabbit/mongomk/impl/

Author: thomasm
Date: Mon Apr 22 13:51:41 2013
New Revision: 1470512

URL: http://svn.apache.org/r1470512
Log:
OAK-780 Revision.fromString() only parses two counter digits - changed revision id format

Modified:
    jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/LoggingDocumentStoreWrapper.java
    jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/MongoMK.java
    jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/Revision.java
    jackrabbit/oak/trunk/oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/RandomizedClusterTest.java
    jackrabbit/oak/trunk/oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/SimpleTest.java
    jackrabbit/oak/trunk/oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/impl/MongoMKWaitForCommitTest.java

Modified: jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/LoggingDocumentStoreWrapper.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/LoggingDocumentStoreWrapper.java?rev=1470512&r1=1470511&r2=1470512&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/LoggingDocumentStoreWrapper.java (original)
+++ jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/LoggingDocumentStoreWrapper.java Mon Apr 22 13:51:41 2013
@@ -149,7 +149,7 @@ public class LoggingDocumentStoreWrapper
         }
     }
 
-    private void logMethod(String methodName, Object... args) {
+    private static void logMethod(String methodName, Object... args) {
         StringBuilder buff = new StringBuilder("ds");
         buff.append('.').append(methodName).append('(');
         for (int i = 0; i < args.length; i++) {

Modified: jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/MongoMK.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/MongoMK.java?rev=1470512&r1=1470511&r2=1470512&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/MongoMK.java (original)
+++ jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/MongoMK.java Mon Apr 22 13:51:41 2013
@@ -276,7 +276,7 @@ public class MongoMK implements MicroKer
         clusterNodeInfo.renewLease(asyncDelay);
     }
     
-    private void backgroundRead() {
+    void backgroundRead() {
         String id = Utils.getIdFromPath("/");
         Map<String, Object> map = store.find(DocumentStore.Collection.NODES, id, asyncDelay);
         @SuppressWarnings("unchecked")
@@ -302,7 +302,7 @@ public class MongoMK implements MicroKer
         }
     }
     
-    private void backgroundWrite() {
+    void backgroundWrite() {
         if (unsavedLastRevisions.size() == 0) {
             return;
         }
@@ -1047,6 +1047,7 @@ public class MongoMK implements MicroKer
      * @param onlyCommitted whether only committed changes should be considered
      * @return the revision, or null if deleted
      */
+    @SuppressWarnings("unchecked")
     @Nullable Revision getNewestRevision(Map<String, Object> nodeMap,
                                          Revision before, boolean onlyCommitted) {
         if (nodeMap == null) {
@@ -1054,10 +1055,8 @@ public class MongoMK implements MicroKer
         }
         Map<String, String> revisions = Maps.newHashMap();
         if (nodeMap.containsKey(UpdateOp.REVISIONS)) {
-            //noinspection unchecked
             revisions.putAll((Map<String, String>) nodeMap.get(UpdateOp.REVISIONS));
         }
-        @SuppressWarnings("unchecked")
         Map<String, String> deletedMap = (Map<String, String>) nodeMap
                 .get(UpdateOp.DELETED);
         if (deletedMap != null) {

Modified: jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/Revision.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/Revision.java?rev=1470512&r1=1470511&r2=1470512&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/Revision.java (original)
+++ jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/Revision.java Mon Apr 22 13:51:41 2013
@@ -113,27 +113,32 @@ public class Revision {
         if (!rev.startsWith("r")) {
             throw new IllegalArgumentException(rev);
         }
-        String t = rev.substring(1, 8);
-        long timestamp = Long.parseLong(t, 16);
-        int idx = rev.indexOf('-');
-        int c = 0;
-        if (idx > 8) {
-            t = rev.substring(8, 11);
-            c = Integer.parseInt(t, 16);
+        int idxCount = rev.indexOf('-');
+        if (idxCount < 0) {
+            throw new IllegalArgumentException(rev);
         }
-        t = rev.substring(idx + 1);
+        int idxClusterId = rev.indexOf('-', idxCount + 1);
+        if (idxClusterId < 0) {
+            throw new IllegalArgumentException(rev);
+        }
+        String t = rev.substring(1, idxCount);
+        long timestamp = Long.parseLong(t, 16);
+        t = rev.substring(idxCount + 1, idxClusterId);
+        int c = Integer.parseInt(t, 16);
+        t = rev.substring(idxClusterId + 1);
         int clusterId = Integer.parseInt(t, 16);
         Revision r = new Revision(timestamp, c, clusterId);
         return r;
     }
     
     public String toString() {
-        StringBuilder buff = new StringBuilder("r");
-        buff.append(Long.toHexString(0x10000000L + timestamp).substring(1));
-        buff.append(Integer.toHexString(0x1000 + counter).substring(1));
-        buff.append('-');
-        buff.append(Integer.toHexString(clusterId));
-        return buff.toString();
+        return new StringBuilder("r").
+                append(Long.toHexString(timestamp)).
+                append('-').
+                append(Integer.toHexString(counter)).
+                append('-').
+                append(Integer.toHexString(clusterId)).
+                toString();
     }
     
     public long getTimestamp() {

Modified: jackrabbit/oak/trunk/oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/RandomizedClusterTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/RandomizedClusterTest.java?rev=1470512&r1=1470511&r2=1470512&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/RandomizedClusterTest.java (original)
+++ jackrabbit/oak/trunk/oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/RandomizedClusterTest.java Mon Apr 22 13:51:41 2013
@@ -136,9 +136,10 @@ public class RandomizedClusterTest {
                 } else {
                     maskFail |= 1 << op;
                 }
-int todo;                
-//                get(node);
-//                get(node2);
+                log("get " + node);
+                get(node);
+                log("get " + node2);
+                get(node2);
                 MongoMK mk = mkList[mkId];
                 MicroKernelImpl mkGold = mkListGold[mkId];
                 ClusterRev cr = new ClusterRev();
@@ -150,8 +151,7 @@ int todo;                
                 int revId = i - r.nextInt(maxBackRev);
                 cr = revs.get(revId);
                 if (cr != null) {
-int todo2;                
-//                    get(node, cr.revGold, cr.rev);
+                    get(node, cr.revGold, cr.rev);
                 }
             }
             if (Integer.bitCount(maskOk) != opCount) {
@@ -180,7 +180,13 @@ int todo2;                
     
     private void get(String node) {
         String headGold = mkListGold[mkId].getHeadRevision();
-        String head = mkList[mkId].getHeadRevision();
+        for (int i = 0; i < mkList.length; i++) {
+            MongoMK mk = mkList[i];
+            mk.backgroundWrite();
+        }
+        MongoMK mk = mkList[mkId];
+        mk.backgroundRead();
+        String head = mk.getHeadRevision();
         get(node, headGold, head);
     }
         
@@ -192,7 +198,9 @@ int todo2;                
             assertFalse(mk.nodeExists(p, head));
             return;
         }
-        assertTrue("path: " + p, mk.nodeExists(p, head));
+        if (!mk.nodeExists(p, head)) {
+            assertTrue("path: " + p, mk.nodeExists(p, head));
+        }
         String resultGold = mkGold.getNodes(p, headGold, 0, 0, Integer.MAX_VALUE, null);
         String result = mk.getNodes(p, head, 0, 0, Integer.MAX_VALUE, null);
         resultGold = normalize(resultGold);
@@ -248,7 +256,7 @@ int todo2;                
             }
             builder.setDocumentStore(ds).setBlobStore(bs);
         }
-        return builder.setClusterId(clusterId).open();
+        return builder.setClusterId(clusterId + 1).open();
     }
     
     /**

Modified: jackrabbit/oak/trunk/oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/SimpleTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/SimpleTest.java?rev=1470512&r1=1470511&r2=1470512&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/SimpleTest.java (original)
+++ jackrabbit/oak/trunk/oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/SimpleTest.java Mon Apr 22 13:51:41 2013
@@ -108,25 +108,25 @@ public class SimpleTest {
         String rev4 = mk.commit("/test", "^\"a/x\":1", null, null);
         
         String r0 = mk.getNodes("/", rev0, 0, 0, Integer.MAX_VALUE, ":id");
-        assertEquals("{\":id\":\"/@r0000001000-1\",\":childNodeCount\":0}", r0);
+        assertEquals("{\":id\":\"/@r1-0-1\",\":childNodeCount\":0}", r0);
         String r1 = mk.getNodes("/", rev1, 0, 0, Integer.MAX_VALUE, ":id");
-        assertEquals("{\":id\":\"/@r0000002000-1\",\"test\":{},\":childNodeCount\":1}", r1);
+        assertEquals("{\":id\":\"/@r2-0-1\",\"test\":{},\":childNodeCount\":1}", r1);
         String r2 = mk.getNodes("/", rev2, 0, 0, Integer.MAX_VALUE, ":id");
-        assertEquals("{\":id\":\"/@r0000003000-1\",\"test\":{},\":childNodeCount\":1}", r2);
+        assertEquals("{\":id\":\"/@r3-0-1\",\"test\":{},\":childNodeCount\":1}", r2);
         String r3;
         r3 = mk.getNodes("/", rev3, 0, 0, Integer.MAX_VALUE, ":id");
-        assertEquals("{\":id\":\"/@r0000004000-1\",\"test\":{},\":childNodeCount\":1}", r3);
+        assertEquals("{\":id\":\"/@r4-0-1\",\"test\":{},\":childNodeCount\":1}", r3);
         r3 = mk.getNodes("/test", rev3, 0, 0, Integer.MAX_VALUE, ":id");
-        assertEquals("{\":id\":\"/test@r0000004000-1\",\"a\":{},\"b\":{},\":childNodeCount\":2}", r3);
+        assertEquals("{\":id\":\"/test@r4-0-1\",\"a\":{},\"b\":{},\":childNodeCount\":2}", r3);
         String r4;
         r4 = mk.getNodes("/", rev4, 0, 0, Integer.MAX_VALUE, ":id");
-        assertEquals("{\":id\":\"/@r0000005000-1\",\"test\":{},\":childNodeCount\":1}", r4);
+        assertEquals("{\":id\":\"/@r5-0-1\",\"test\":{},\":childNodeCount\":1}", r4);
         r4 = mk.getNodes("/test", rev4, 0, 0, Integer.MAX_VALUE, ":id");
-        assertEquals("{\":id\":\"/test@r0000005000-1\",\"a\":{},\"b\":{},\":childNodeCount\":2}", r4);
+        assertEquals("{\":id\":\"/test@r5-0-1\",\"a\":{},\"b\":{},\":childNodeCount\":2}", r4);
         r4 = mk.getNodes("/test/a", rev4, 0, 0, Integer.MAX_VALUE, ":id");
-        assertEquals("{\":id\":\"/test/a@r0000005000-1\",\"x\":1,\":childNodeCount\":0}", r4);
+        assertEquals("{\":id\":\"/test/a@r5-0-1\",\"x\":1,\":childNodeCount\":0}", r4);
         r4 = mk.getNodes("/test/b", rev4, 0, 0, Integer.MAX_VALUE, ":id");
-        assertEquals("{\":id\":\"/test/b@r0000004000-1\",\":childNodeCount\":0}", r4);
+        assertEquals("{\":id\":\"/test/b@r4-0-1\",\":childNodeCount\":0}", r4);
         
         mk.dispose();        
     }

Modified: jackrabbit/oak/trunk/oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/impl/MongoMKWaitForCommitTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/impl/MongoMKWaitForCommitTest.java?rev=1470512&r1=1470511&r2=1470512&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/impl/MongoMKWaitForCommitTest.java (original)
+++ jackrabbit/oak/trunk/oak-mongomk/src/test/java/org/apache/jackrabbit/mongomk/impl/MongoMKWaitForCommitTest.java Mon Apr 22 13:51:41 2013
@@ -127,6 +127,7 @@ public class MongoMKWaitForCommitTest ex
 
     private ScheduledFuture<String> scheduleCommit(long delay, final String revisionId) {
         ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
+        final MicroKernel mk = this.mk;
         ScheduledFuture<String> future = executorService.schedule(new Callable<String>(){
             @Override
             public String call() throws Exception {