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());
}