Author: chetanm
Date: Thu Nov 24 14:01:36 2016
New Revision: 1771133

URL: http://svn.apache.org/viewvc?rev=1771133&view=rev
Log:
OAK-4898 - Allow for external changes to have a CommitInfo attached

Changes in DocumentNodeStore
-- Switch to Nonnull annotation for CommitInfo param
-- Use CommitInfo.isExternal instead of null check to determine if info is 
external
-- Pass CommitInfo.EMPTY_EXTERNAL while dispatching changes
   - Read from journal as part of background read
   - As part of initial Observer registration callback

Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentDiscoveryLiteService.java
    
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/PrefetchDispatcher.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/bundlor/BundlingConfigHandler.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/secondary/SecondaryStoreObserver.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/PrefetchDispatcherTest.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/secondary/SecondaryStoreCacheTest.java

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentDiscoveryLiteService.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentDiscoveryLiteService.java?rev=1771133&r1=1771132&r2=1771133&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentDiscoveryLiteService.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentDiscoveryLiteService.java
 Thu Nov 24 14:01:36 2016
@@ -27,6 +27,7 @@ import java.util.Map;
 import java.util.Random;
 import java.util.Set;
 
+import javax.annotation.Nonnull;
 import javax.jcr.Value;
 
 import org.apache.felix.scr.annotations.Activate;
@@ -649,7 +650,7 @@ public class DocumentDiscoveryLiteServic
      * that's why this approach has been chosen).
      */
     @Override
-    public void contentChanged(NodeState root, CommitInfo info) {
+    public void contentChanged(@Nonnull NodeState root,@Nonnull CommitInfo 
info) {
         // contentChanged is only used to react as quickly as possible
         // when we have instances that have a 'backlog' - ie when instances
         // crashed
@@ -662,7 +663,7 @@ public class DocumentDiscoveryLiteServic
         // Now from the above it also results that this only wakes up the
         // backgroundWorker if we have any pending 'backlogy instances'
         // otherwise this is a no-op
-        if (info == null) {
+        if (info.isExternal()) {
             // then ignore this as this is likely an external change
             // note: it could be a compacted change, in which case we should
             // probably still process it - but we have a 5sec fallback

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=1771133&r1=1771132&r2=1771133&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
 Thu Nov 24 14:01:36 2016
@@ -767,7 +767,7 @@ public final class DocumentNodeStore
         return c;
     }
 
-    RevisionVector done(final @Nonnull Commit c, boolean isBranch, final 
@Nullable CommitInfo info) {
+    RevisionVector done(final @Nonnull Commit c, boolean isBranch, final 
@Nonnull CommitInfo info) {
         if (commitQueue.contains(c.getRevision())) {
             try {
                 final RevisionVector[] newHead = new RevisionVector[1];
@@ -2002,7 +2002,7 @@ public final class DocumentNodeStore
                     stats.populateDiffCache = clock.getTime() - time;
                     time = clock.getTime();
 
-                    dispatcher.contentChanged(getRoot().fromExternalChange(), 
null);
+                    dispatcher.contentChanged(getRoot().fromExternalChange(), 
CommitInfo.EMPTY_EXTERNAL);
                 } finally {
                     backgroundOperationLock.writeLock().unlock();
                 }

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/PrefetchDispatcher.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/PrefetchDispatcher.java?rev=1771133&r1=1771132&r2=1771133&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/PrefetchDispatcher.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/PrefetchDispatcher.java
 Thu Nov 24 14:01:36 2016
@@ -50,7 +50,7 @@ class PrefetchDispatcher extends ChangeD
 
     @Override
     public synchronized void contentChanged(@Nonnull NodeState root,
-                                            @Nullable CommitInfo info) {
+                                            @Nonnull CommitInfo info) {
         if (root instanceof DocumentNodeState) {
             final DocumentNodeState state = (DocumentNodeState) root;
             if (state.isFromExternalChange()) {

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/bundlor/BundlingConfigHandler.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/bundlor/BundlingConfigHandler.java?rev=1771133&r1=1771132&r2=1771133&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/bundlor/BundlingConfigHandler.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/bundlor/BundlingConfigHandler.java
 Thu Nov 24 14:01:36 2016
@@ -66,7 +66,7 @@ public class BundlingConfigHandler imple
     }, Iterables.toArray(PathUtils.elements(CONFIG_PATH), String.class));
 
     @Override
-    public synchronized void contentChanged(@Nonnull NodeState root, @Nullable 
CommitInfo info) {
+    public synchronized void contentChanged(@Nonnull NodeState root, @Nonnull 
CommitInfo info) {
         EditorDiff.process(changeDetector, this.root, root);
         this.root = root;
     }

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/secondary/SecondaryStoreObserver.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/secondary/SecondaryStoreObserver.java?rev=1771133&r1=1771132&r2=1771133&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/secondary/SecondaryStoreObserver.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/secondary/SecondaryStoreObserver.java
 Thu Nov 24 14:01:36 2016
@@ -23,7 +23,6 @@ import java.util.List;
 import java.util.concurrent.TimeUnit;
 
 import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
 
 import com.google.common.base.Stopwatch;
 import org.apache.jackrabbit.oak.api.CommitFailedException;
@@ -70,7 +69,7 @@ public class SecondaryStoreObserver impl
     }
 
     @Override
-    public void contentChanged(@Nonnull NodeState root, @Nullable CommitInfo 
info) {
+    public void contentChanged(@Nonnull NodeState root, @Nonnull CommitInfo 
info) {
         //Diff here would also be traversing non visible areas and there
         //diffManyChildren might pose problem for e.g. data under uuid index
         if (!firstEventProcessed){
@@ -93,7 +92,7 @@ public class SecondaryStoreObserver impl
             NodeState updatedSecondaryRoot = nodeStore.merge(builder, 
EmptyHook.INSTANCE, CommitInfo.EMPTY);
             
secondaryObserver.contentChanged(DelegatingDocumentNodeState.wrap(updatedSecondaryRoot,
 differ));
 
-            TimerStats timer = info == null ? external : local;
+            TimerStats timer = info.isExternal() ? external : local;
             timer.update(w.elapsed(TimeUnit.NANOSECONDS), 
TimeUnit.NANOSECONDS);
 
             if (!firstEventProcessed){

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/PrefetchDispatcherTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/PrefetchDispatcherTest.java?rev=1771133&r1=1771132&r2=1771133&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/PrefetchDispatcherTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/PrefetchDispatcherTest.java
 Thu Nov 24 14:01:36 2016
@@ -75,7 +75,7 @@ public class PrefetchDispatcherTest {
         PrefetchDispatcher dispatcher = new PrefetchDispatcher(
                 before, MoreExecutors.sameThreadExecutor());
         numQueries.set(0);
-        dispatcher.contentChanged(after, null);
+        dispatcher.contentChanged(after, CommitInfo.EMPTY_EXTERNAL);
         // expect two queries for children: below /foo and /foo/bar
         assertEquals(2, numQueries.get());
     }

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/secondary/SecondaryStoreCacheTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/secondary/SecondaryStoreCacheTest.java?rev=1771133&r1=1771132&r2=1771133&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/secondary/SecondaryStoreCacheTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/secondary/SecondaryStoreCacheTest.java
 Thu Nov 24 14:01:36 2016
@@ -193,7 +193,7 @@ public class SecondaryStoreCacheTest {
         AbstractDocumentNodeState r0 = merge(nb);
         AbstractDocumentNodeState a_c_0 = documentState(primary.getRoot(), 
"/a/c");
 
-        observer.contentChanged(r0, null);
+        observer.contentChanged(r0, CommitInfo.EMPTY);
 
         AbstractDocumentNodeState result = cache.getDocumentNodeState("/a/c", 
r0.getRootRevision(), a_c_0
                 .getLastRevision());


Reply via email to