Author: mduerig
Date: Wed Nov  2 11:00:32 2016
New Revision: 1767635

URL: http://svn.apache.org/viewvc?rev=1767635&view=rev
Log:
OAK-4965: Cold standby logs SNFE ERROR
Introduce a SNFE listener for logging or ignoring SNFEs

Added:
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNotFoundExceptionListener.java
Modified:
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentId.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreService.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreBuilder.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/BrokenNetworkIT.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/ExternalPrivateStoreIT.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/ExternalSharedStoreIT.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverIPRangeIT.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverMultipleClientsTestIT.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverSslTestIT.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/MBeanIT.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/RecoverTestIT.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/StandbyTest.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/StandbyTestIT.java
    
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/test/TemporaryFileStore.java

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentId.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentId.java?rev=1767635&r1=1767634&r2=1767635&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentId.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentId.java
 Wed Nov  2 11:00:32 2016
@@ -122,7 +122,6 @@ public class SegmentId implements Compar
                         log.debug("Loading segment {}", this);
                         segment = store.readSegment(this);
                     } catch (SegmentNotFoundException snfe) {
-                        log.error("Segment not found: {}. {}", this, gcInfo(), 
snfe);
                         throw snfe;
                     }
                 }
@@ -131,8 +130,12 @@ public class SegmentId implements Compar
         return segment;
     }
 
+    /**
+     * @return  garbage collection related information like the age of this 
segment
+     *          id, the generation of its segment and information about its gc 
status.
+     */
     @Nonnull
-    private String gcInfo() {
+    String gcInfo() {
         StringBuilder sb = new StringBuilder();
         sb.append("SegmentId age=").append(System.currentTimeMillis() - 
creationTime).append("ms");
         if (gcInfo != null) {

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreService.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreService.java?rev=1767635&r1=1767634&r2=1767635&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreService.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStoreService.java
 Wed Nov  2 11:00:32 2016
@@ -24,6 +24,7 @@ import static org.apache.jackrabbit.oak.
 import static org.apache.jackrabbit.oak.commons.PropertiesUtil.toInteger;
 import static org.apache.jackrabbit.oak.commons.PropertiesUtil.toLong;
 import static 
org.apache.jackrabbit.oak.osgi.OsgiUtil.lookupConfigurationThenFramework;
+import static 
org.apache.jackrabbit.oak.segment.SegmentNotFoundExceptionListener.IGNORE_SNFE;
 import static 
org.apache.jackrabbit.oak.segment.compaction.SegmentGCOptions.FORCE_TIMEOUT_DEFAULT;
 import static 
org.apache.jackrabbit.oak.segment.compaction.SegmentGCOptions.GAIN_THRESHOLD_DEFAULT;
 import static 
org.apache.jackrabbit.oak.segment.compaction.SegmentGCOptions.PAUSE_DEFAULT;
@@ -395,6 +396,10 @@ public class SegmentNodeStoreService ext
             log.info("Initializing SegmentNodeStore with BlobStore [{}]", 
blobStore);
             builder.withBlobStore(blobStore);
         }
+        
+        if (toBoolean(property(STANDBY), true)) {
+            builder.withSnfeListener(IGNORE_SNFE);
+        }
 
         try {
             store = builder.build();

Added: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNotFoundExceptionListener.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNotFoundExceptionListener.java?rev=1767635&view=auto
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNotFoundExceptionListener.java
 (added)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNotFoundExceptionListener.java
 Wed Nov  2 11:00:32 2016
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.jackrabbit.oak.segment;
+
+import javax.annotation.Nonnull;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Listener for {@code SegmentNotFoundException}. Its purpose is to e.g. 
provide meaningful
+ * logging information about these exceptions.
+ */
+public interface SegmentNotFoundExceptionListener {
+
+    /**
+     * Listener instance doing nothing on a {@code SegmentNotFoundException}
+     */
+    SegmentNotFoundExceptionListener IGNORE_SNFE = new 
SegmentNotFoundExceptionListener() {
+        @Override
+        public void notify(@Nonnull SegmentId id, @Nonnull 
SegmentNotFoundException snfe) { }
+    };
+
+    /**
+     * Listener instance logging the {@code SegmentNotFoundException} at error 
level.
+     */
+    SegmentNotFoundExceptionListener LOG_SNFE = new 
SegmentNotFoundExceptionListener() {
+        private final Logger log = 
LoggerFactory.getLogger(SegmentNotFoundExceptionListener.class);
+        @Override
+        public void notify(@Nonnull SegmentId id, @Nonnull 
SegmentNotFoundException snfe) {
+            log.error("Segment not found: {}. {}", this, id.gcInfo(), snfe);
+        }
+    };
+    
+    /**
+     * Notification about {@code SegmentNotFoundException} thrown by the 
underlying store
+     * in a meaningful way. E.g. by logging it.
+     * @param id the segment id of the offending {@code Segment}
+     * @param snfe the raised exception
+     */
+    void notify(@Nonnull final SegmentId id, @Nonnull final 
SegmentNotFoundException snfe);
+}

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java?rev=1767635&r1=1767634&r2=1767635&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java
 Wed Nov  2 11:00:32 2016
@@ -80,6 +80,7 @@ import org.apache.jackrabbit.oak.segment
 import org.apache.jackrabbit.oak.segment.SegmentIdTable;
 import org.apache.jackrabbit.oak.segment.SegmentNodeState;
 import org.apache.jackrabbit.oak.segment.SegmentNotFoundException;
+import org.apache.jackrabbit.oak.segment.SegmentNotFoundExceptionListener;
 import org.apache.jackrabbit.oak.segment.SegmentWriter;
 import org.apache.jackrabbit.oak.segment.WriterCacheManager.Default;
 import org.apache.jackrabbit.oak.segment.compaction.SegmentGCOptions;
@@ -150,6 +151,9 @@ public class FileStore extends AbstractF
 
     private final FileStoreStats stats;
 
+    @Nonnull
+    private final SegmentNotFoundExceptionListener snfeListener; 
+
     FileStore(final FileStoreBuilder builder) throws 
InvalidFileStoreVersionException, IOException {
         super(builder);
 
@@ -197,6 +201,8 @@ public class FileStore extends AbstractF
             writeNumber = indices[indices.length - 1] + 1;
         }
         this.tarWriter = new TarWriter(directory, stats, writeNumber);
+        
+        this.snfeListener = builder.getSnfeListener();
 
         fileStoreScheduler.scheduleAtFixedRate(
                 format("TarMK flush [%s]", directory), 5, SECONDS,
@@ -592,9 +598,12 @@ public class FileStore extends AbstractF
                 }
             });
         } catch (ExecutionException e) {
-            throw e.getCause() instanceof SegmentNotFoundException
-                ? (SegmentNotFoundException) e.getCause()
-                : new SegmentNotFoundException(id, e);
+            SegmentNotFoundException snfe = e.getCause() instanceof 
SegmentNotFoundException
+                    ? (SegmentNotFoundException) e.getCause() : new 
SegmentNotFoundException(id, e);
+
+            snfeListener.notify(id, snfe);
+            
+            throw snfe;
         }
     }
 

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreBuilder.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreBuilder.java?rev=1767635&r1=1767634&r2=1767635&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreBuilder.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStoreBuilder.java
 Wed Nov  2 11:00:32 2016
@@ -24,6 +24,7 @@ import static com.google.common.base.Pre
 import static 
org.apache.jackrabbit.oak.segment.CachingSegmentReader.DEFAULT_STRING_CACHE_MB;
 import static 
org.apache.jackrabbit.oak.segment.CachingSegmentReader.DEFAULT_TEMPLATE_CACHE_MB;
 import static 
org.apache.jackrabbit.oak.segment.SegmentCache.DEFAULT_SEGMENT_CACHE_MB;
+import static 
org.apache.jackrabbit.oak.segment.SegmentNotFoundExceptionListener.LOG_SNFE;
 import static 
org.apache.jackrabbit.oak.segment.WriterCacheManager.DEFAULT_NODE_CACHE_SIZE;
 import static 
org.apache.jackrabbit.oak.segment.WriterCacheManager.DEFAULT_STRING_CACHE_SIZE;
 import static 
org.apache.jackrabbit.oak.segment.WriterCacheManager.DEFAULT_TEMPLATE_CACHE_SIZE;
@@ -38,6 +39,7 @@ import javax.annotation.Nonnull;
 import com.google.common.base.Predicate;
 import org.apache.jackrabbit.oak.segment.RecordCache;
 import org.apache.jackrabbit.oak.segment.RecordId;
+import org.apache.jackrabbit.oak.segment.SegmentNotFoundExceptionListener;
 import org.apache.jackrabbit.oak.segment.Template;
 import org.apache.jackrabbit.oak.segment.WriterCacheManager;
 import org.apache.jackrabbit.oak.segment.compaction.LoggingGCMonitor;
@@ -102,6 +104,9 @@ public class FileStoreBuilder {
         }
     };
 
+    @Nonnull
+    private SegmentNotFoundExceptionListener snfeListener = LOG_SNFE;
+    
     private boolean built;
 
     /**
@@ -262,6 +267,17 @@ public class FileStoreBuilder {
     }
 
     /**
+     * {@link SegmentNotFoundExceptionListener} listener for  {@code 
SegmentNotFoundException}
+     * @param snfeListener, the actual listener
+     * @return this instance
+     */
+    @Nonnull
+    public FileStoreBuilder withSnfeListener(@Nonnull 
SegmentNotFoundExceptionListener snfeListener) {
+        this.snfeListener = checkNotNull(snfeListener);
+        return this;
+    }
+    
+    /**
      * Create a new {@link FileStore} instance with the settings specified in 
this
      * builder. If none of the {@code with} methods have been called before 
calling
      * this method, a file store with the following default settings is 
returned:
@@ -359,6 +375,11 @@ public class FileStoreBuilder {
     SegmentGCOptions getGcOptions() {
         return gcOptions;
     }
+    
+    @Nonnull
+    SegmentNotFoundExceptionListener getSnfeListener() {
+        return snfeListener;
+    }
 
     @Nonnull
     WriterCacheManager getCacheManager() {

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/BrokenNetworkIT.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/BrokenNetworkIT.java?rev=1767635&r1=1767634&r2=1767635&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/BrokenNetworkIT.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/BrokenNetworkIT.java
 Wed Nov  2 11:00:32 2016
@@ -41,11 +41,11 @@ public class BrokenNetworkIT extends Tes
 
     private TemporaryFolder folder = new TemporaryFolder(new File("target"));
 
-    private TemporaryFileStore serverFileStore = new 
TemporaryFileStore(folder);
+    private TemporaryFileStore serverFileStore = new 
TemporaryFileStore(folder, false);
 
-    private TemporaryFileStore clientFileStore1 = new 
TemporaryFileStore(folder);
+    private TemporaryFileStore clientFileStore1 = new 
TemporaryFileStore(folder, true);
 
-    private TemporaryFileStore clientFileStore2 = new 
TemporaryFileStore(folder);
+    private TemporaryFileStore clientFileStore2 = new 
TemporaryFileStore(folder, true);
 
     @Rule
     public RuleChain chain = RuleChain.outerRule(folder)

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/ExternalPrivateStoreIT.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/ExternalPrivateStoreIT.java?rev=1767635&r1=1767634&r2=1767635&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/ExternalPrivateStoreIT.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/ExternalPrivateStoreIT.java
 Wed Nov  2 11:00:32 2016
@@ -33,11 +33,11 @@ public class ExternalPrivateStoreIT exte
 
     private TemporaryBlobStore serverBlobStore = new 
TemporaryBlobStore(folder);
 
-    private TemporaryFileStore serverFileStore = new 
TemporaryFileStore(folder, serverBlobStore);
+    private TemporaryFileStore serverFileStore = new 
TemporaryFileStore(folder, serverBlobStore, false);
 
     private TemporaryBlobStore clientBlobStore = new 
TemporaryBlobStore(folder);
 
-    private TemporaryFileStore clientFileStore = new 
TemporaryFileStore(folder, clientBlobStore);
+    private TemporaryFileStore clientFileStore = new 
TemporaryFileStore(folder, clientBlobStore, true);
 
     @Rule
     public RuleChain chain = RuleChain.outerRule(folder)

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/ExternalSharedStoreIT.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/ExternalSharedStoreIT.java?rev=1767635&r1=1767634&r2=1767635&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/ExternalSharedStoreIT.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/ExternalSharedStoreIT.java
 Wed Nov  2 11:00:32 2016
@@ -33,9 +33,9 @@ public class ExternalSharedStoreIT exten
 
     private TemporaryBlobStore commonBlobStore = new 
TemporaryBlobStore(folder);
 
-    private TemporaryFileStore serverFileStore = new 
TemporaryFileStore(folder, commonBlobStore);
+    private TemporaryFileStore serverFileStore = new 
TemporaryFileStore(folder, commonBlobStore, false);
 
-    private TemporaryFileStore clientFileStore = new 
TemporaryFileStore(folder, commonBlobStore);
+    private TemporaryFileStore clientFileStore = new 
TemporaryFileStore(folder, commonBlobStore, true);
 
     @Rule
     public RuleChain chain = RuleChain.outerRule(folder)

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverIPRangeIT.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverIPRangeIT.java?rev=1767635&r1=1767634&r2=1767635&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverIPRangeIT.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverIPRangeIT.java
 Wed Nov  2 11:00:32 2016
@@ -40,9 +40,9 @@ public class FailoverIPRangeIT extends T
 
     private TemporaryFolder folder = new TemporaryFolder(new File("target"));
 
-    private TemporaryFileStore serverFileStore = new 
TemporaryFileStore(folder);
+    private TemporaryFileStore serverFileStore = new 
TemporaryFileStore(folder, false);
 
-    private TemporaryFileStore clientFileStore = new 
TemporaryFileStore(folder);
+    private TemporaryFileStore clientFileStore = new 
TemporaryFileStore(folder, true);
 
     @Rule
     public RuleChain chain = RuleChain.outerRule(folder)

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverMultipleClientsTestIT.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverMultipleClientsTestIT.java?rev=1767635&r1=1767634&r2=1767635&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverMultipleClientsTestIT.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverMultipleClientsTestIT.java
 Wed Nov  2 11:00:32 2016
@@ -39,11 +39,11 @@ public class FailoverMultipleClientsTest
 
     private TemporaryFolder folder = new TemporaryFolder(new File("target"));
 
-    private TemporaryFileStore serverFileStore = new 
TemporaryFileStore(folder);
+    private TemporaryFileStore serverFileStore = new 
TemporaryFileStore(folder, false);
 
-    private TemporaryFileStore clientFileStore1 = new 
TemporaryFileStore(folder);
+    private TemporaryFileStore clientFileStore1 = new 
TemporaryFileStore(folder, true);
 
-    private TemporaryFileStore clientFileStore2 = new 
TemporaryFileStore(folder);
+    private TemporaryFileStore clientFileStore2 = new 
TemporaryFileStore(folder, true);
 
     @Rule
     public RuleChain chain = RuleChain.outerRule(folder)

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverSslTestIT.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverSslTestIT.java?rev=1767635&r1=1767634&r2=1767635&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverSslTestIT.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/FailoverSslTestIT.java
 Wed Nov  2 11:00:32 2016
@@ -40,9 +40,9 @@ public class FailoverSslTestIT extends T
 
     private TemporaryFolder folder = new TemporaryFolder(new File("target"));
 
-    private TemporaryFileStore serverFileStore = new 
TemporaryFileStore(folder);
+    private TemporaryFileStore serverFileStore = new 
TemporaryFileStore(folder, false);
 
-    private TemporaryFileStore clientFileStore = new 
TemporaryFileStore(folder);
+    private TemporaryFileStore clientFileStore = new 
TemporaryFileStore(folder, true);
 
     @Rule
     public RuleChain chain = RuleChain.outerRule(folder)

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/MBeanIT.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/MBeanIT.java?rev=1767635&r1=1767634&r2=1767635&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/MBeanIT.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/MBeanIT.java
 Wed Nov  2 11:00:32 2016
@@ -44,9 +44,9 @@ public class MBeanIT extends TestBase {
 
     private TemporaryFolder folder = new TemporaryFolder(new File("target"));
 
-    private TemporaryFileStore serverFileStore = new 
TemporaryFileStore(folder);
+    private TemporaryFileStore serverFileStore = new 
TemporaryFileStore(folder, false);
 
-    private TemporaryFileStore clientFileStore = new 
TemporaryFileStore(folder);
+    private TemporaryFileStore clientFileStore = new 
TemporaryFileStore(folder, true);
 
     @Rule
     public RuleChain chain = RuleChain.outerRule(folder)

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/RecoverTestIT.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/RecoverTestIT.java?rev=1767635&r1=1767634&r2=1767635&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/RecoverTestIT.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/RecoverTestIT.java
 Wed Nov  2 11:00:32 2016
@@ -40,9 +40,9 @@ public class RecoverTestIT extends TestB
 
     private TemporaryFolder folder = new TemporaryFolder(new File("target"));
 
-    private TemporaryFileStore serverFileStore = new 
TemporaryFileStore(folder);
+    private TemporaryFileStore serverFileStore = new 
TemporaryFileStore(folder, false);
 
-    private TemporaryFileStore clientFileStore = new 
TemporaryFileStore(folder);
+    private TemporaryFileStore clientFileStore = new 
TemporaryFileStore(folder, true);
 
     @Rule
     public RuleChain chain = RuleChain.outerRule(folder)

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/StandbyTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/StandbyTest.java?rev=1767635&r1=1767634&r2=1767635&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/StandbyTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/StandbyTest.java
 Wed Nov  2 11:00:32 2016
@@ -19,32 +19,10 @@
 
 package org.apache.jackrabbit.oak.segment.standby;
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.io.ByteArrayInputStream;
 import java.io.File;
-import java.io.IOException;
-import java.util.Random;
 
-import com.google.common.io.ByteStreams;
-import org.apache.jackrabbit.oak.api.Blob;
-import org.apache.jackrabbit.oak.api.CommitFailedException;
-import org.apache.jackrabbit.oak.api.PropertyState;
-import org.apache.jackrabbit.oak.api.Type;
-import org.apache.jackrabbit.oak.segment.SegmentNodeStoreBuilders;
-import org.apache.jackrabbit.oak.segment.file.FileStore;
-import org.apache.jackrabbit.oak.segment.standby.client.StandbyClientSync;
-import org.apache.jackrabbit.oak.segment.standby.server.StandbyServerSync;
 import org.apache.jackrabbit.oak.segment.test.TemporaryFileStore;
-import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
-import org.apache.jackrabbit.oak.spi.commit.EmptyHook;
-import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
-import org.apache.jackrabbit.oak.spi.state.NodeStore;
 import org.junit.Rule;
-import org.junit.Test;
 import org.junit.rules.RuleChain;
 import org.junit.rules.TemporaryFolder;
 
@@ -52,9 +30,9 @@ public class StandbyTest extends TestBas
 
     private TemporaryFolder folder = new TemporaryFolder(new File("target"));
 
-    private TemporaryFileStore serverFileStore = new 
TemporaryFileStore(folder);
+    private TemporaryFileStore serverFileStore = new 
TemporaryFileStore(folder, false);
 
-    private TemporaryFileStore clientFileStore = new 
TemporaryFileStore(folder);
+    private TemporaryFileStore clientFileStore = new 
TemporaryFileStore(folder, true);
 
     @Rule
     public RuleChain chain = RuleChain.outerRule(folder)

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/StandbyTestIT.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/StandbyTestIT.java?rev=1767635&r1=1767634&r2=1767635&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/StandbyTestIT.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/StandbyTestIT.java
 Wed Nov  2 11:00:32 2016
@@ -50,9 +50,9 @@ public class StandbyTestIT extends TestB
 
     private TemporaryFolder folder = new TemporaryFolder(new File("target"));
 
-    private TemporaryFileStore serverFileStore = new 
TemporaryFileStore(folder);
+    private TemporaryFileStore serverFileStore = new 
TemporaryFileStore(folder, false);
 
-    private TemporaryFileStore clientFileStore = new 
TemporaryFileStore(folder);
+    private TemporaryFileStore clientFileStore = new 
TemporaryFileStore(folder, true);
 
     @Rule
     public RuleChain chain = RuleChain.outerRule(folder)

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/test/TemporaryFileStore.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/test/TemporaryFileStore.java?rev=1767635&r1=1767634&r2=1767635&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/test/TemporaryFileStore.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/test/TemporaryFileStore.java
 Wed Nov  2 11:00:32 2016
@@ -23,6 +23,7 @@ import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
 
 import org.apache.jackrabbit.oak.commons.concurrent.ExecutorCloser;
+import org.apache.jackrabbit.oak.segment.SegmentNotFoundExceptionListener;
 import org.apache.jackrabbit.oak.segment.file.FileStore;
 import org.apache.jackrabbit.oak.segment.file.FileStoreBuilder;
 import org.apache.jackrabbit.oak.stats.DefaultStatisticsProvider;
@@ -34,19 +35,23 @@ public class TemporaryFileStore extends
     private final TemporaryFolder folder;
 
     private final TemporaryBlobStore blobStore;
+    
+    private final boolean standby;
 
     private ScheduledExecutorService executor;
 
     private FileStore store;
 
-    public TemporaryFileStore(TemporaryFolder folder) {
+    public TemporaryFileStore(TemporaryFolder folder, boolean standby) {
         this.folder = folder;
+        this.standby = standby;
         this.blobStore = null;
     }
 
-    public TemporaryFileStore(TemporaryFolder folder, TemporaryBlobStore 
blobStore) {
+    public TemporaryFileStore(TemporaryFolder folder, TemporaryBlobStore 
blobStore, boolean standby) {
         this.folder = folder;
         this.blobStore = blobStore;
+        this.standby = standby;
     }
 
     @Override
@@ -60,6 +65,9 @@ public class TemporaryFileStore extends
                 .withStringCacheSize(0)
                 .withTemplateCacheSize(0)
                 .withStatisticsProvider(new 
DefaultStatisticsProvider(executor));
+        
+        if (standby) 
builder.withSnfeListener(SegmentNotFoundExceptionListener.IGNORE_SNFE);
+        
         if (blobStore != null) {
             builder.withBlobStore(blobStore.blobStore());
         }


Reply via email to