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 fr...@apache.org on 2016/08/25 14:51:36 UTC
svn commit: r1757699 [1/2] - in /jackrabbit/oak/trunk/oak-segment-tar: ./
src/main/java/org/apache/jackrabbit/oak/segment/
src/main/java/org/apache/jackrabbit/oak/segment/standby/
src/main/java/org/apache/jackrabbit/oak/segment/standby/client/ src/main...
Author: frm
Date: Thu Aug 25 14:51:36 2016
New Revision: 1757699
URL: http://svn.apache.org/viewvc?rev=1757699&view=rev
Log:
OAK-4704 - Copy and adapt the cold standby code to the oak-segment-tar bundle
Added:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentStoreProvider.java (with props)
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/
- copied from r1756619, jackrabbit/oak/trunk/oak-tarmk-standby/src/main/java/org/apache/jackrabbit/oak/plugins/segment/standby/
jackrabbit/oak/trunk/oak-segment-tar/src/main/resources/OSGI-INF/
- copied from r1756619, jackrabbit/oak/trunk/oak-tarmk-standby/src/main/resources/OSGI-INF/
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/NetworkErrorProxy.java
- copied, changed from r1756619, jackrabbit/oak/trunk/oak-tarmk-standby/src/test/java/org/apache/jackrabbit/oak/plugins/segment/NetworkErrorProxy.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentTestUtils.java
- copied, changed from r1756619, jackrabbit/oak/trunk/oak-tarmk-standby/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentTestUtils.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/
- copied from r1756619, jackrabbit/oak/trunk/oak-tarmk-standby/src/test/java/org/apache/jackrabbit/oak/plugins/segment/standby/
Removed:
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/SegmentDecoder.java
Modified:
jackrabbit/oak/trunk/oak-segment-tar/pom.xml
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/PropertyTemplate.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/Segment.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/FailedRequestListener.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/SegmentLoaderHandler.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyApplyDiff.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClient.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClientHandler.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/BlobEncoder.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/IdArrayBasedBlob.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/Messages.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/RecordIdDecoder.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/RecordIdEncoder.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/ReplyDecoder.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/SegmentEncoder.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/SegmentReply.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/jmx/ClientStandbyStatusMBean.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/jmx/ObservablePartnerMBean.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/jmx/StandbyStatusMBean.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbyServer.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbyServerHandler.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/store/CommunicationObserver.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/store/RemoteSegmentLoader.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/store/StandbyStore.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/store/StandbyStoreService.java
jackrabbit/oak/trunk/oak-segment-tar/src/main/resources/OSGI-INF/metatype/metatype.properties
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/BrokenNetworkTest.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/BulkTest.java
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/DataStoreTestBase.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/FailoverIPRangeTest.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/MBeanTest.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/standby/TestBase.java
Modified: jackrabbit/oak/trunk/oak-segment-tar/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/pom.xml?rev=1757699&r1=1757698&r2=1757699&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/pom.xml Thu Aug 25 14:51:36 2016
@@ -35,6 +35,7 @@
<properties>
<oak.version>1.5.5</oak.version>
+ <netty.version>4.0.23.Final</netty.version>
</properties>
<scm>
@@ -51,7 +52,24 @@
<configuration>
<instructions>
<Export-Package />
- <Embed-Dependency>commons-math3</Embed-Dependency>
+ <Embed-Dependency>
+ commons-math3,
+ netty-*
+ </Embed-Dependency>
+ <Import-Package>
+ com.google.protobuf.*;resolution:=optional,
+ com.jcraft.jzlib.*;resolution:=optional,
+ javassist.*;resolution:=optional,
+ org.apache.tomcat.jni.*;resolution:=optional,
+ org.bouncycastle.*;resolution:=optional,
+ org.eclipse.jetty.npn.*;resolution:=optional,
+ org.jboss.marshalling.*;resolution:=optional,
+ sun.misc.*;resolution:=optional,
+ sun.nio.ch.*;resolution:=optional,
+ sun.security.util.*;resolution:=optional,
+ sun.security.x509.*;resolution:=optional,
+ *
+ </Import-Package>
</instructions>
</configuration>
</plugin>
@@ -60,11 +78,49 @@
<artifactId>maven-scr-plugin</artifactId>
</plugin>
<plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <version>1.12</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>reserve-network-port</goal>
+ </goals>
+ <phase>process-test-resources</phase>
+ <configuration>
+ <portNames>
+ <portName>standby.server.port</portName>
+ <portName>standby.proxy.port</portName>
+ </portNames>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <version>2.19.1</version>
+ <configuration>
+ <systemPropertyVariables>
+ <standby.server.port>${standby.server.port}</standby.server.port>
+ <standby.proxy.port>${standby.proxy.port}</standby.proxy.port>
+ </systemPropertyVariables>
+ <excludes>
+ <exclude>**/BulkTest.java</exclude>
+ <exclude>**/MBeanTest.java</exclude>
+ <exclude>**/FailoverIPRangeTest.java</exclude>
+ </excludes>
+ </configuration>
+ </plugin>
+ <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
+ <version>2.19.1</version>
<configuration>
<systemPropertyVariables>
<nsfixtures>SEGMENT_TAR</nsfixtures>
+ <standby.server.port>${standby.server.port}</standby.server.port>
+ <standby.proxy.port>${standby.proxy.port}</standby.proxy.port>
</systemPropertyVariables>
</configuration>
<executions>
@@ -208,6 +264,39 @@
<scope>provided</scope>
</dependency>
+ <!-- Netty -->
+
+ <dependency>
+ <groupId>io.netty</groupId>
+ <artifactId>netty-common</artifactId>
+ <version>${netty.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>io.netty</groupId>
+ <artifactId>netty-buffer</artifactId>
+ <version>${netty.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>io.netty</groupId>
+ <artifactId>netty-transport</artifactId>
+ <version>${netty.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>io.netty</groupId>
+ <artifactId>netty-codec</artifactId>
+ <version>${netty.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>io.netty</groupId>
+ <artifactId>netty-handler</artifactId>
+ <version>${netty.version}</version>
+ <scope>provided</scope>
+ </dependency>
+
<!-- Dependencies on Oak testing modules -->
<dependency>
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/PropertyTemplate.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/PropertyTemplate.java?rev=1757699&r1=1757698&r2=1757699&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/PropertyTemplate.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/PropertyTemplate.java Thu Aug 25 14:51:36 2016
@@ -31,7 +31,7 @@ import com.google.common.collect.Compari
* A property definition within a template (the property name, the type, and the
* index within the list of properties for the given node).
*/
-class PropertyTemplate implements Comparable<PropertyTemplate> {
+public class PropertyTemplate implements Comparable<PropertyTemplate> {
/**
* The index of this property within the list of properties in the node
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/Segment.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/Segment.java?rev=1757699&r1=1757698&r2=1757699&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/Segment.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/Segment.java Thu Aug 25 14:51:36 2016
@@ -30,9 +30,12 @@ import static org.apache.jackrabbit.oak.
import static org.apache.jackrabbit.oak.segment.SegmentWriter.BLOCK_SIZE;
import java.io.IOException;
+import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.nio.ByteBuffer;
+import java.nio.channels.Channels;
+import java.nio.channels.WritableByteChannel;
import java.util.Arrays;
import java.util.Map;
import java.util.UUID;
@@ -584,4 +587,12 @@ public class Segment {
}
}
+ public void writeTo(OutputStream stream) throws IOException {
+ ByteBuffer buffer = data.duplicate();
+ WritableByteChannel channel = Channels.newChannel(stream);
+ while (buffer.hasRemaining()) {
+ channel.write(buffer);
+ }
+ }
+
}
Added: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentStoreProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentStoreProvider.java?rev=1757699&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentStoreProvider.java (added)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentStoreProvider.java Thu Aug 25 14:51:36 2016
@@ -0,0 +1,25 @@
+/*
+ * 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;
+
+public interface SegmentStoreProvider {
+
+ SegmentStore getSegmentStore();
+
+}
Propchange: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentStoreProvider.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/FailedRequestListener.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/FailedRequestListener.java?rev=1757699&r1=1756619&r2=1757699&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/FailedRequestListener.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/FailedRequestListener.java Thu Aug 25 14:51:36 2016
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.jackrabbit.oak.plugins.segment.standby.client;
+package org.apache.jackrabbit.oak.segment.standby.client;
import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelFutureListener;
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/SegmentLoaderHandler.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/SegmentLoaderHandler.java?rev=1757699&r1=1756619&r2=1757699&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/SegmentLoaderHandler.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/SegmentLoaderHandler.java Thu Aug 25 14:51:36 2016
@@ -16,11 +16,11 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.jackrabbit.oak.plugins.segment.standby.client;
+package org.apache.jackrabbit.oak.segment.standby.client;
import static org.apache.jackrabbit.oak.commons.IOUtils.humanReadableByteCount;
-import static org.apache.jackrabbit.oak.plugins.segment.standby.codec.Messages.newGetBlobReq;
-import static org.apache.jackrabbit.oak.plugins.segment.standby.codec.Messages.newGetSegmentReq;
+import static org.apache.jackrabbit.oak.segment.standby.codec.Messages.newGetBlobReq;
+import static org.apache.jackrabbit.oak.segment.standby.codec.Messages.newGetSegmentReq;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ExecutorService;
@@ -32,14 +32,14 @@ import java.util.concurrent.atomic.Atomi
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;
import org.apache.jackrabbit.oak.api.Blob;
-import org.apache.jackrabbit.oak.plugins.segment.RecordId;
-import org.apache.jackrabbit.oak.plugins.segment.Segment;
-import org.apache.jackrabbit.oak.plugins.segment.SegmentNodeBuilder;
-import org.apache.jackrabbit.oak.plugins.segment.SegmentNodeState;
-import org.apache.jackrabbit.oak.plugins.segment.SegmentNotFoundException;
-import org.apache.jackrabbit.oak.plugins.segment.standby.codec.SegmentReply;
-import org.apache.jackrabbit.oak.plugins.segment.standby.store.RemoteSegmentLoader;
-import org.apache.jackrabbit.oak.plugins.segment.standby.store.StandbyStore;
+import org.apache.jackrabbit.oak.segment.RecordId;
+import org.apache.jackrabbit.oak.segment.Segment;
+import org.apache.jackrabbit.oak.segment.SegmentNodeBuilder;
+import org.apache.jackrabbit.oak.segment.SegmentNodeState;
+import org.apache.jackrabbit.oak.segment.SegmentNotFoundException;
+import org.apache.jackrabbit.oak.segment.standby.codec.SegmentReply;
+import org.apache.jackrabbit.oak.segment.standby.store.RemoteSegmentLoader;
+import org.apache.jackrabbit.oak.segment.standby.store.StandbyStore;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -131,7 +131,7 @@ public class SegmentLoaderHandler extend
SegmentNodeState before = store.getHead();
SegmentNodeBuilder builder = before.builder();
- SegmentNodeState current = new SegmentNodeState(head);
+ SegmentNodeState current = store.newSegmentNodeState(head);
do {
try {
current.compareAgainstBaseState(before,
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyApplyDiff.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyApplyDiff.java?rev=1757699&r1=1756619&r2=1757699&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyApplyDiff.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyApplyDiff.java Thu Aug 25 14:51:36 2016
@@ -16,7 +16,8 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.jackrabbit.oak.plugins.segment.standby.client;
+
+package org.apache.jackrabbit.oak.segment.standby.client;
import static org.apache.jackrabbit.oak.api.Type.BINARIES;
import static org.apache.jackrabbit.oak.api.Type.BINARY;
@@ -27,11 +28,11 @@ import org.apache.jackrabbit.oak.api.Blo
import org.apache.jackrabbit.oak.api.PropertyState;
import org.apache.jackrabbit.oak.api.Type;
import org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState;
-import org.apache.jackrabbit.oak.plugins.segment.RecordId;
-import org.apache.jackrabbit.oak.plugins.segment.SegmentBlob;
-import org.apache.jackrabbit.oak.plugins.segment.SegmentNodeState;
-import org.apache.jackrabbit.oak.plugins.segment.SegmentStore;
-import org.apache.jackrabbit.oak.plugins.segment.standby.store.RemoteSegmentLoader;
+import org.apache.jackrabbit.oak.segment.RecordId;
+import org.apache.jackrabbit.oak.segment.SegmentBlob;
+import org.apache.jackrabbit.oak.segment.SegmentNodeState;
+import org.apache.jackrabbit.oak.segment.standby.store.RemoteSegmentLoader;
+import org.apache.jackrabbit.oak.segment.standby.store.StandbyStore;
import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
import org.apache.jackrabbit.oak.spi.state.NodeState;
import org.apache.jackrabbit.oak.spi.state.NodeStateDiff;
@@ -45,7 +46,7 @@ class StandbyApplyDiff implements NodeSt
private final NodeBuilder builder;
- private final SegmentStore store;
+ private final StandbyStore store;
private final boolean hasDataStore;
@@ -60,12 +61,12 @@ class StandbyApplyDiff implements NodeSt
*/
private final boolean logOnly;
- public StandbyApplyDiff(NodeBuilder builder, SegmentStore store,
+ public StandbyApplyDiff(NodeBuilder builder, StandbyStore store,
RemoteSegmentLoader loader) {
this(builder, store, loader, "/", false);
}
- private StandbyApplyDiff(NodeBuilder builder, SegmentStore store,
+ private StandbyApplyDiff(NodeBuilder builder, StandbyStore store,
RemoteSegmentLoader loader, String path, boolean logOnly) {
this.builder = builder;
this.store = store;
@@ -179,7 +180,7 @@ class StandbyApplyDiff implements NodeSt
}
if (!logOnly) {
RecordId id = ((SegmentNodeState) after).getRecordId();
- builder.setChildNode(name, new SegmentNodeState(id));
+ builder.setChildNode(name, store.newSegmentNodeState(id));
}
if ("checkpoints".equals(name)) {
// if we're on the /checkpoints path, there's no need for a deep
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClient.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClient.java?rev=1757699&r1=1756619&r2=1757699&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClient.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClient.java Thu Aug 25 14:51:36 2016
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.jackrabbit.oak.plugins.segment.standby.client;
+package org.apache.jackrabbit.oak.segment.standby.client;
import java.io.Closeable;
import java.lang.management.ManagementFactory;
@@ -44,12 +44,13 @@ import io.netty.handler.ssl.SslContext;
import io.netty.handler.ssl.util.InsecureTrustManagerFactory;
import io.netty.handler.timeout.ReadTimeoutHandler;
import io.netty.util.CharsetUtil;
-import org.apache.jackrabbit.oak.plugins.segment.SegmentStore;
-import org.apache.jackrabbit.oak.plugins.segment.standby.codec.RecordIdDecoder;
-import org.apache.jackrabbit.oak.plugins.segment.standby.jmx.ClientStandbyStatusMBean;
-import org.apache.jackrabbit.oak.plugins.segment.standby.jmx.StandbyStatusMBean;
-import org.apache.jackrabbit.oak.plugins.segment.standby.store.CommunicationObserver;
-import org.apache.jackrabbit.oak.plugins.segment.standby.store.StandbyStore;
+import org.apache.jackrabbit.oak.segment.SegmentStore;
+import org.apache.jackrabbit.oak.segment.file.FileStore;
+import org.apache.jackrabbit.oak.segment.standby.codec.RecordIdDecoder;
+import org.apache.jackrabbit.oak.segment.standby.jmx.ClientStandbyStatusMBean;
+import org.apache.jackrabbit.oak.segment.standby.jmx.StandbyStatusMBean;
+import org.apache.jackrabbit.oak.segment.standby.store.CommunicationObserver;
+import org.apache.jackrabbit.oak.segment.standby.store.StandbyStore;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -80,7 +81,7 @@ public final class StandbyClient impleme
private long syncStartTimestamp;
private long syncEndTimestamp;
- public StandbyClient(String host, int port, SegmentStore store,
+ public StandbyClient(String host, int port, FileStore store,
boolean secure, int readTimeoutMs, boolean autoClean)
throws SSLException {
this.state = STATUS_INITIALIZING;
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClientHandler.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClientHandler.java?rev=1757699&r1=1756619&r2=1757699&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClientHandler.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/client/StandbyClientHandler.java Thu Aug 25 14:51:36 2016
@@ -16,9 +16,10 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.jackrabbit.oak.plugins.segment.standby.client;
-import static org.apache.jackrabbit.oak.plugins.segment.standby.codec.Messages.newGetHeadReq;
+package org.apache.jackrabbit.oak.segment.standby.client;
+
+import static org.apache.jackrabbit.oak.segment.standby.codec.Messages.newGetHeadReq;
import java.io.Closeable;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -26,11 +27,11 @@ import java.util.concurrent.atomic.Atomi
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;
import io.netty.handler.timeout.ReadTimeoutHandler;
-import org.apache.jackrabbit.oak.plugins.segment.RecordId;
-import org.apache.jackrabbit.oak.plugins.segment.standby.codec.RecordIdDecoder;
-import org.apache.jackrabbit.oak.plugins.segment.standby.codec.ReplyDecoder;
-import org.apache.jackrabbit.oak.plugins.segment.standby.store.CommunicationObserver;
-import org.apache.jackrabbit.oak.plugins.segment.standby.store.StandbyStore;
+import org.apache.jackrabbit.oak.segment.RecordId;
+import org.apache.jackrabbit.oak.segment.standby.codec.RecordIdDecoder;
+import org.apache.jackrabbit.oak.segment.standby.codec.ReplyDecoder;
+import org.apache.jackrabbit.oak.segment.standby.store.CommunicationObserver;
+import org.apache.jackrabbit.oak.segment.standby.store.StandbyStore;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/BlobEncoder.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/BlobEncoder.java?rev=1757699&r1=1756619&r2=1757699&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/BlobEncoder.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/BlobEncoder.java Thu Aug 25 14:51:36 2016
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.jackrabbit.oak.plugins.segment.standby.codec;
+package org.apache.jackrabbit.oak.segment.standby.codec;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/IdArrayBasedBlob.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/IdArrayBasedBlob.java?rev=1757699&r1=1756619&r2=1757699&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/IdArrayBasedBlob.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/IdArrayBasedBlob.java Thu Aug 25 14:51:36 2016
@@ -17,7 +17,7 @@
* under the License.
*/
-package org.apache.jackrabbit.oak.plugins.segment.standby.codec;
+package org.apache.jackrabbit.oak.segment.standby.codec;
import org.apache.jackrabbit.oak.plugins.memory.ArrayBasedBlob;
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/Messages.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/Messages.java?rev=1757699&r1=1756619&r2=1757699&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/Messages.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/Messages.java Thu Aug 25 14:51:36 2016
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.jackrabbit.oak.plugins.segment.standby.codec;
+package org.apache.jackrabbit.oak.segment.standby.codec;
public class Messages {
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/RecordIdDecoder.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/RecordIdDecoder.java?rev=1757699&r1=1756619&r2=1757699&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/RecordIdDecoder.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/RecordIdDecoder.java Thu Aug 25 14:51:36 2016
@@ -17,7 +17,7 @@
* under the License.
*/
-package org.apache.jackrabbit.oak.plugins.segment.standby.codec;
+package org.apache.jackrabbit.oak.segment.standby.codec;
import java.io.IOException;
@@ -25,9 +25,8 @@ import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.LengthFieldBasedFrameDecoder;
import io.netty.util.CharsetUtil;
-
-import org.apache.jackrabbit.oak.plugins.segment.RecordId;
-import org.apache.jackrabbit.oak.plugins.segment.SegmentStore;
+import org.apache.jackrabbit.oak.segment.RecordId;
+import org.apache.jackrabbit.oak.segment.SegmentStore;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -55,7 +54,7 @@ public class RecordIdDecoder extends Len
String id = frame.toString(CharsetUtil.UTF_8);
try {
log.debug("received type {} with id {}", type, id);
- return RecordId.fromString(store.getTracker(), id);
+ return RecordId.fromString(store, id);
} catch (IllegalArgumentException e) {
log.error(e.getMessage(), e);
}
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/RecordIdEncoder.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/RecordIdEncoder.java?rev=1757699&r1=1756619&r2=1757699&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/RecordIdEncoder.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/RecordIdEncoder.java Thu Aug 25 14:51:36 2016
@@ -17,14 +17,14 @@
* under the License.
*/
-package org.apache.jackrabbit.oak.plugins.segment.standby.codec;
+package org.apache.jackrabbit.oak.segment.standby.codec;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToByteEncoder;
import io.netty.util.CharsetUtil;
-import org.apache.jackrabbit.oak.plugins.segment.RecordId;
+import org.apache.jackrabbit.oak.segment.RecordId;
public class RecordIdEncoder extends MessageToByteEncoder<RecordId> {
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/ReplyDecoder.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/ReplyDecoder.java?rev=1757699&r1=1756619&r2=1757699&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/ReplyDecoder.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/ReplyDecoder.java Thu Aug 25 14:51:36 2016
@@ -17,26 +17,24 @@
* under the License.
*/
-package org.apache.jackrabbit.oak.plugins.segment.standby.codec;
-
-import io.netty.buffer.ByteBuf;
-import io.netty.channel.ChannelHandlerContext;
-import io.netty.handler.codec.ReplayingDecoder;
+package org.apache.jackrabbit.oak.segment.standby.codec;
import java.nio.ByteBuffer;
import java.nio.charset.Charset;
import java.util.List;
import java.util.UUID;
-import org.apache.jackrabbit.oak.plugins.segment.Segment;
-import org.apache.jackrabbit.oak.plugins.segment.SegmentId;
-import org.apache.jackrabbit.oak.plugins.segment.SegmentStore;
-import org.apache.jackrabbit.oak.plugins.segment.standby.codec.ReplyDecoder.DecodingState;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
import com.google.common.hash.Hasher;
import com.google.common.hash.Hashing;
+import io.netty.buffer.ByteBuf;
+import io.netty.channel.ChannelHandlerContext;
+import io.netty.handler.codec.ReplayingDecoder;
+import org.apache.jackrabbit.oak.segment.Segment;
+import org.apache.jackrabbit.oak.segment.SegmentId;
+import org.apache.jackrabbit.oak.segment.standby.codec.ReplyDecoder.DecodingState;
+import org.apache.jackrabbit.oak.segment.standby.store.StandbyStore;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class ReplyDecoder extends ReplayingDecoder<DecodingState> {
@@ -47,12 +45,12 @@ public class ReplyDecoder extends Replay
private static final Logger log = LoggerFactory
.getLogger(ReplyDecoder.class);
- private final SegmentStore store;
+ private final StandbyStore store;
private int length = -1;
private byte type = -1;
- public ReplyDecoder(SegmentStore store) {
+ public ReplyDecoder(StandbyStore store) {
super(DecodingState.HEADER);
this.store = store;
}
@@ -128,9 +126,8 @@ public class ReplyDecoder extends Replay
Hasher hasher = Hashing.murmur3_32().newHasher();
long check = hasher.putBytes(segment).hash().padToLong();
if (hash == check) {
- SegmentId id = new SegmentId(store.getTracker(), msb, lsb);
- Segment s = new Segment(store.getTracker(), id,
- ByteBuffer.wrap(segment));
+ SegmentId id = store.newSegmentId(msb, lsb);
+ Segment s = store.newSegment(id, ByteBuffer.wrap(segment));
log.debug("received segment with id {} and size {}", id, s.size());
return s;
}
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/SegmentEncoder.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/SegmentEncoder.java?rev=1757699&r1=1756619&r2=1757699&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/SegmentEncoder.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/SegmentEncoder.java Thu Aug 25 14:51:36 2016
@@ -17,7 +17,7 @@
* under the License.
*/
-package org.apache.jackrabbit.oak.plugins.segment.standby.codec;
+package org.apache.jackrabbit.oak.segment.standby.codec;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
@@ -25,8 +25,8 @@ import io.netty.handler.codec.MessageToB
import java.io.ByteArrayOutputStream;
-import org.apache.jackrabbit.oak.plugins.segment.Segment;
-import org.apache.jackrabbit.oak.plugins.segment.SegmentId;
+import org.apache.jackrabbit.oak.segment.Segment;
+import org.apache.jackrabbit.oak.segment.SegmentId;
import com.google.common.hash.Hasher;
import com.google.common.hash.Hashing;
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/SegmentReply.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/SegmentReply.java?rev=1757699&r1=1756619&r2=1757699&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/SegmentReply.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/codec/SegmentReply.java Thu Aug 25 14:51:36 2016
@@ -14,9 +14,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.jackrabbit.oak.plugins.segment.standby.codec;
+package org.apache.jackrabbit.oak.segment.standby.codec;
-import org.apache.jackrabbit.oak.plugins.segment.Segment;
+import org.apache.jackrabbit.oak.segment.Segment;
public class SegmentReply {
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/jmx/ClientStandbyStatusMBean.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/jmx/ClientStandbyStatusMBean.java?rev=1757699&r1=1756619&r2=1757699&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/jmx/ClientStandbyStatusMBean.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/jmx/ClientStandbyStatusMBean.java Thu Aug 25 14:51:36 2016
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.jackrabbit.oak.plugins.segment.standby.jmx;
+package org.apache.jackrabbit.oak.segment.standby.jmx;
import org.apache.jackrabbit.oak.commons.jmx.Description;
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/jmx/ObservablePartnerMBean.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/jmx/ObservablePartnerMBean.java?rev=1757699&r1=1756619&r2=1757699&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/jmx/ObservablePartnerMBean.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/jmx/ObservablePartnerMBean.java Thu Aug 25 14:51:36 2016
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.jackrabbit.oak.plugins.segment.standby.jmx;
+package org.apache.jackrabbit.oak.segment.standby.jmx;
import org.apache.jackrabbit.oak.commons.jmx.Description;
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/jmx/StandbyStatusMBean.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/jmx/StandbyStatusMBean.java?rev=1757699&r1=1756619&r2=1757699&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/jmx/StandbyStatusMBean.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/jmx/StandbyStatusMBean.java Thu Aug 25 14:51:36 2016
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.jackrabbit.oak.plugins.segment.standby.jmx;
+package org.apache.jackrabbit.oak.segment.standby.jmx;
import org.apache.jackrabbit.oak.commons.jmx.Description;
import javax.annotation.Nonnull;
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbyServer.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbyServer.java?rev=1757699&r1=1756619&r2=1757699&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbyServer.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbyServer.java Thu Aug 25 14:51:36 2016
@@ -16,7 +16,19 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.jackrabbit.oak.plugins.segment.standby.server;
+
+package org.apache.jackrabbit.oak.segment.standby.server;
+
+import java.io.Closeable;
+import java.lang.management.ManagementFactory;
+import java.security.cert.CertificateException;
+import java.util.concurrent.TimeUnit;
+
+import javax.management.InstanceNotFoundException;
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+import javax.management.StandardMBean;
+import javax.net.ssl.SSLException;
import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.ChannelFuture;
@@ -35,27 +47,17 @@ import io.netty.handler.ssl.SslContext;
import io.netty.handler.ssl.util.SelfSignedCertificate;
import io.netty.util.CharsetUtil;
import io.netty.util.concurrent.Future;
-
-import java.io.Closeable;
-import java.lang.management.ManagementFactory;
-import java.security.cert.CertificateException;
-import java.util.concurrent.TimeUnit;
-
-import org.apache.jackrabbit.oak.plugins.segment.SegmentStore;
-import org.apache.jackrabbit.oak.plugins.segment.standby.codec.BlobEncoder;
-import org.apache.jackrabbit.oak.plugins.segment.standby.codec.RecordIdEncoder;
-import org.apache.jackrabbit.oak.plugins.segment.standby.codec.SegmentEncoder;
-import org.apache.jackrabbit.oak.plugins.segment.standby.jmx.StandbyStatusMBean;
-import org.apache.jackrabbit.oak.plugins.segment.standby.store.CommunicationObserver;
+import org.apache.jackrabbit.oak.segment.SegmentStore;
+import org.apache.jackrabbit.oak.segment.file.FileStore;
+import org.apache.jackrabbit.oak.segment.standby.codec.BlobEncoder;
+import org.apache.jackrabbit.oak.segment.standby.codec.RecordIdEncoder;
+import org.apache.jackrabbit.oak.segment.standby.codec.SegmentEncoder;
+import org.apache.jackrabbit.oak.segment.standby.jmx.StandbyStatusMBean;
+import org.apache.jackrabbit.oak.segment.standby.store.CommunicationObserver;
+import org.apache.jackrabbit.oak.segment.standby.store.StandbyStore;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.management.InstanceNotFoundException;
-import javax.management.MBeanServer;
-import javax.management.ObjectName;
-import javax.management.StandardMBean;
-import javax.net.ssl.SSLException;
-
public class StandbyServer implements StandbyStatusMBean, Closeable {
private static final Logger log = LoggerFactory
@@ -72,23 +74,19 @@ public class StandbyServer implements St
private ChannelFuture channelFuture;
private boolean running;
- public StandbyServer(int port, final SegmentStore store)
- throws CertificateException, SSLException {
+ public StandbyServer(int port, final FileStore store) throws CertificateException, SSLException {
this(port, store, null, false);
}
- public StandbyServer(int port, final SegmentStore store, boolean secure)
- throws CertificateException, SSLException {
+ public StandbyServer(int port, final FileStore store, boolean secure) throws CertificateException, SSLException {
this(port, store, null, secure);
}
- public StandbyServer(int port, final SegmentStore store, String[] allowedClientIPRanges)
- throws CertificateException, SSLException {
+ public StandbyServer(int port, final FileStore store, String[] allowedClientIPRanges) throws CertificateException, SSLException {
this(port, store, allowedClientIPRanges, false);
}
- public StandbyServer(int port, final SegmentStore store, String[] allowedClientIPRanges, boolean secure)
- throws CertificateException, SSLException {
+ public StandbyServer(int port, final FileStore store, String[] allowedClientIPRanges, boolean secure) throws CertificateException, SSLException {
this.port = port;
if (secure) {
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbyServerHandler.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbyServerHandler.java?rev=1757699&r1=1756619&r2=1757699&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbyServerHandler.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/StandbyServerHandler.java Thu Aug 25 14:51:36 2016
@@ -16,7 +16,8 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.jackrabbit.oak.plugins.segment.standby.server;
+
+package org.apache.jackrabbit.oak.segment.standby.server;
import java.net.InetAddress;
import java.net.InetSocketAddress;
@@ -28,15 +29,17 @@ import io.netty.buffer.Unpooled;
import io.netty.channel.ChannelHandler.Sharable;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;
-
import org.apache.jackrabbit.oak.api.Blob;
import org.apache.jackrabbit.oak.api.IllegalRepositoryStateException;
-import org.apache.jackrabbit.oak.plugins.segment.RecordId;
-import org.apache.jackrabbit.oak.plugins.segment.Segment;
-import org.apache.jackrabbit.oak.plugins.segment.SegmentId;
-import org.apache.jackrabbit.oak.plugins.segment.SegmentStore;
-import org.apache.jackrabbit.oak.plugins.segment.standby.codec.Messages;
-import org.apache.jackrabbit.oak.plugins.segment.standby.store.CommunicationObserver;
+import org.apache.jackrabbit.oak.plugins.blob.BlobStoreBlob;
+import org.apache.jackrabbit.oak.segment.RecordId;
+import org.apache.jackrabbit.oak.segment.Segment;
+import org.apache.jackrabbit.oak.segment.SegmentId;
+import org.apache.jackrabbit.oak.segment.file.FileStore;
+import org.apache.jackrabbit.oak.segment.standby.codec.Messages;
+import org.apache.jackrabbit.oak.segment.standby.store.CommunicationObserver;
+import org.apache.jackrabbit.oak.segment.standby.store.StandbyStore;
+import org.apache.jackrabbit.oak.spi.blob.BlobStore;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -46,12 +49,12 @@ public class StandbyServerHandler extend
private static final Logger log = LoggerFactory
.getLogger(StandbyServerHandler.class);
- private final SegmentStore store;
+ private final FileStore store;
private final CommunicationObserver observer;
private final String[] allowedIPRanges;
public String state;
- public StandbyServerHandler(SegmentStore store, CommunicationObserver observer, String[] allowedIPRanges) {
+ public StandbyServerHandler(FileStore store, CommunicationObserver observer, String[] allowedIPRanges) {
this.store = store;
this.observer = observer;
this.allowedIPRanges = allowedIPRanges;
@@ -154,9 +157,7 @@ public class StandbyServerHandler extend
for (int i = 0; i < 10; i++) {
try {
- s = store.readSegment(new SegmentId(store.getTracker(),
- uuid.getMostSignificantBits(), uuid
- .getLeastSignificantBits()));
+ s = store.readSegment(store.newSegmentId(uuid.getMostSignificantBits(), uuid.getLeastSignificantBits()));
} catch (IllegalRepositoryStateException e) {
// segment not found
log.debug("waiting for segment. Got exception: " + e.getMessage());
@@ -174,7 +175,7 @@ public class StandbyServerHandler extend
} else if (request.startsWith(Messages.GET_BLOB)) {
String bid = request.substring(Messages.GET_BLOB.length());
log.debug("request blob id {}", bid);
- Blob b = store.readBlob(bid);
+ Blob b = readBlob(bid);
log.debug("sending blob " + bid + " to " + client);
ctx.writeAndFlush(b);
observer.didSendBinariesBytes(clientID,
@@ -203,4 +204,15 @@ public class StandbyServerHandler extend
log.error("Exception occurred: " + cause.getMessage(), cause);
}
}
+
+ private Blob readBlob(String blobId) {
+ BlobStore blobStore = store.getBlobStore();
+
+ if (blobStore != null) {
+ return new BlobStoreBlob(blobStore, blobId);
+ }
+
+ throw new IllegalStateException("Attempt to read external blob with blobId [" + blobId + "] without specifying BlobStore");
+ }
+
}
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/store/CommunicationObserver.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/store/CommunicationObserver.java?rev=1757699&r1=1756619&r2=1757699&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/store/CommunicationObserver.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/store/CommunicationObserver.java Thu Aug 25 14:51:36 2016
@@ -16,11 +16,11 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.jackrabbit.oak.plugins.segment.standby.store;
+package org.apache.jackrabbit.oak.segment.standby.store;
-import org.apache.jackrabbit.oak.plugins.segment.standby.jmx.StandbyStatusMBean;
-import org.apache.jackrabbit.oak.plugins.segment.standby.jmx.ObservablePartnerMBean;
+import org.apache.jackrabbit.oak.segment.standby.jmx.StandbyStatusMBean;
+import org.apache.jackrabbit.oak.segment.standby.jmx.ObservablePartnerMBean;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/store/RemoteSegmentLoader.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/store/RemoteSegmentLoader.java?rev=1757699&r1=1756619&r2=1757699&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/store/RemoteSegmentLoader.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/store/RemoteSegmentLoader.java Thu Aug 25 14:51:36 2016
@@ -14,10 +14,10 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.jackrabbit.oak.plugins.segment.standby.store;
+package org.apache.jackrabbit.oak.segment.standby.store;
import org.apache.jackrabbit.oak.api.Blob;
-import org.apache.jackrabbit.oak.plugins.segment.Segment;
+import org.apache.jackrabbit.oak.segment.Segment;
public interface RemoteSegmentLoader {
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/store/StandbyStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/store/StandbyStore.java?rev=1757699&r1=1756619&r2=1757699&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/store/StandbyStore.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/store/StandbyStore.java Thu Aug 25 14:51:36 2016
@@ -14,59 +14,66 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.jackrabbit.oak.plugins.segment.standby.store;
+
+package org.apache.jackrabbit.oak.segment.standby.store;
import static com.google.common.collect.Sets.newHashSet;
import static org.apache.jackrabbit.oak.commons.IOUtils.humanReadableByteCount;
import java.io.ByteArrayOutputStream;
+import java.io.Closeable;
import java.io.IOException;
+import java.nio.ByteBuffer;
import java.util.ArrayDeque;
+import java.util.ArrayList;
import java.util.Deque;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.UUID;
+
+import javax.annotation.Nonnull;
-import org.apache.jackrabbit.oak.api.Blob;
-import org.apache.jackrabbit.oak.plugins.segment.Segment;
-import org.apache.jackrabbit.oak.plugins.segment.SegmentId;
-import org.apache.jackrabbit.oak.plugins.segment.SegmentNodeState;
-import org.apache.jackrabbit.oak.plugins.segment.SegmentStore;
-import org.apache.jackrabbit.oak.plugins.segment.SegmentTracker;
-import org.apache.jackrabbit.oak.plugins.segment.file.FileStore;
+import org.apache.jackrabbit.oak.segment.RecordId;
+import org.apache.jackrabbit.oak.segment.Segment;
+import org.apache.jackrabbit.oak.segment.SegmentId;
+import org.apache.jackrabbit.oak.segment.SegmentNodeState;
+import org.apache.jackrabbit.oak.segment.SegmentStore;
+import org.apache.jackrabbit.oak.segment.file.FileStore;
import org.apache.jackrabbit.oak.spi.blob.BlobStore;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class StandbyStore implements SegmentStore {
+public class StandbyStore implements SegmentStore, Closeable {
private static final Logger log = LoggerFactory.getLogger(StandbyStore.class);
- private final SegmentTracker tracker = new SegmentTracker(this);
-
- private final SegmentStore delegate;
+ private final FileStore delegate;
private RemoteSegmentLoader loader;
- public StandbyStore(SegmentStore delegate) {
+ public StandbyStore(FileStore delegate) {
this.delegate = delegate;
}
+ @Nonnull
@Override
- public SegmentTracker getTracker() {
- return tracker;
+ public SegmentId newSegmentId(long msb, long lsb) {
+ return delegate.newSegmentId(msb, lsb);
}
+ @Nonnull
@Override
- public SegmentNodeState getHead() {
- return delegate.getHead();
+ public SegmentId newBulkSegmentId() {
+ return delegate.newBulkSegmentId();
}
+ @Nonnull
@Override
- public boolean setHead(SegmentNodeState base, SegmentNodeState head) {
- return delegate.setHead(base, head);
+ public SegmentId newDataSegmentId() {
+ return delegate.newDataSegmentId();
}
@Override
@@ -74,6 +81,19 @@ public class StandbyStore implements Seg
return delegate.containsSegment(id);
}
+ private List<SegmentId> getReferencedIds(Segment s) {
+ List<SegmentId> segmentIds = new ArrayList<>();
+
+ for (int i = 0; i < s.getReferencedSegmentIdCount(); i++) {
+ UUID uuid = s.getReferencedSegmentId(i);
+ long msb = uuid.getMostSignificantBits();
+ long lsb = uuid.getLeastSignificantBits();
+ segmentIds.add(delegate.newSegmentId(msb, lsb));
+ }
+
+ return segmentIds;
+ }
+
@Override
public Segment readSegment(SegmentId sid) {
callId++;
@@ -114,7 +134,7 @@ public class StandbyStore implements Seg
s.size());
if (id.isDataSegmentId()) {
boolean hasPendingRefs = false;
- List<SegmentId> refs = s.getReferencedIds();
+ List<SegmentId> refs = getReferencedIds(s);
if (logRefs) {
log.debug("{} -> {}", id, refs);
}
@@ -181,8 +201,7 @@ public class StandbyStore implements Seg
}
public void persist(SegmentId in, Segment s) {
- SegmentId id = delegate.getTracker().getSegmentId(
- in.getMostSignificantBits(), in.getLeastSignificantBits());
+ SegmentId id = delegate.newSegmentId(in.getMostSignificantBits(), in.getLeastSignificantBits());
log.debug("persisting segment {} with size {}", id, s.size());
try {
ByteArrayOutputStream bout = new ByteArrayOutputStream(s.size());
@@ -220,38 +239,36 @@ public class StandbyStore implements Seg
delegate.close();
}
- @Override
- public Blob readBlob(String reference) {
- return delegate.readBlob(reference);
+ public long size() {
+ return delegate.getStats().getApproximateSize();
}
- @Override
- public BlobStore getBlobStore() {
- return delegate.getBlobStore();
+ public void cleanup() {
+ try {
+ delegate.flush();
+ } catch (IOException e) {
+ log.error("Error running cleanup", e);
+ }
}
- @Override
- public void gc() {
- delegate.gc();
+ public SegmentNodeState getHead() {
+ return delegate.getHead();
}
- public long size() {
- if (delegate instanceof FileStore) {
- return ((FileStore) delegate).size();
- }
- return -1;
+ public SegmentNodeState newSegmentNodeState(RecordId id) {
+ return delegate.getReader().readNode(id);
}
- public void cleanup() {
- if (delegate instanceof FileStore) {
- try {
- delegate.getTracker().getWriter().dropCache();
- ((FileStore) delegate).flush(true);
- } catch (IOException e) {
- log.error("Error running cleanup", e);
- }
- } else {
- log.warn("Delegate is not a FileStore, ignoring cleanup call");
- }
+ public boolean setHead(@Nonnull SegmentNodeState expected, @Nonnull SegmentNodeState head) {
+ return delegate.getRevisions().setHead(expected.getRecordId(), head.getRecordId());
+ }
+
+ public Segment newSegment(SegmentId segmentId, ByteBuffer buffer) {
+ return new Segment(delegate, delegate.getReader(), segmentId, buffer);
+ }
+
+ public BlobStore getBlobStore() {
+ return delegate.getBlobStore();
}
+
}
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/store/StandbyStoreService.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/store/StandbyStoreService.java?rev=1757699&r1=1756619&r2=1757699&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/store/StandbyStoreService.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/store/StandbyStoreService.java Thu Aug 25 14:51:36 2016
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.jackrabbit.oak.plugins.segment.standby.store;
+package org.apache.jackrabbit.oak.segment.standby.store;
import static java.lang.String.valueOf;
import static org.apache.felix.scr.annotations.ReferencePolicy.STATIC;
@@ -35,10 +35,11 @@ import org.apache.felix.scr.annotations.
import org.apache.felix.scr.annotations.PropertyOption;
import org.apache.felix.scr.annotations.Reference;
import org.apache.jackrabbit.oak.commons.PropertiesUtil;
-import org.apache.jackrabbit.oak.plugins.segment.SegmentStoreProvider;
-import org.apache.jackrabbit.oak.plugins.segment.SegmentStore;
-import org.apache.jackrabbit.oak.plugins.segment.standby.client.StandbyClient;
-import org.apache.jackrabbit.oak.plugins.segment.standby.server.StandbyServer;
+import org.apache.jackrabbit.oak.segment.SegmentStore;
+import org.apache.jackrabbit.oak.segment.SegmentStoreProvider;
+import org.apache.jackrabbit.oak.segment.file.FileStore;
+import org.apache.jackrabbit.oak.segment.standby.client.StandbyClient;
+import org.apache.jackrabbit.oak.segment.standby.server.StandbyServer;
import org.osgi.framework.ServiceRegistration;
import org.osgi.service.component.ComponentContext;
import org.slf4j.Logger;
@@ -91,7 +92,7 @@ public class StandbyStoreService {
@Reference(policy = STATIC, policyOption = GREEDY)
private SegmentStoreProvider storeProvider = null;
- private SegmentStore segmentStore;
+ private FileStore fileStore;
private StandbyServer primary = null;
private StandbyClient sync = null;
@@ -100,12 +101,18 @@ public class StandbyStoreService {
@Activate
private void activate(ComponentContext context) throws IOException, CertificateException {
- if (storeProvider != null) {
- segmentStore = storeProvider.getSegmentStore();
- } else {
- throw new IllegalArgumentException(
- "Missing SegmentStoreProvider service");
+ if (storeProvider == null) {
+ throw new IllegalArgumentException("Missing SegmentStoreProvider service");
}
+
+ SegmentStore segmentStore = storeProvider.getSegmentStore();
+
+ if (!(segmentStore instanceof FileStore)) {
+ throw new IllegalArgumentException("Unexpected SegmentStore implementation");
+ }
+
+ fileStore = (FileStore) segmentStore;
+
String mode = valueOf(context.getProperties().get(MODE));
if (MODE_PRIMARY.equals(mode)) {
bootstrapMaster(context);
@@ -136,7 +143,7 @@ public class StandbyStoreService {
int port = PropertiesUtil.toInteger(props.get(PORT), PORT_DEFAULT);
String[] ranges = PropertiesUtil.toStringArray(props.get(ALLOWED_CLIENT_IP_RANGES), ALLOWED_CLIENT_IP_RANGES_DEFAULT);
boolean secure = PropertiesUtil.toBoolean(props.get(SECURE), SECURE_DEFAULT);
- primary = new StandbyServer(port, segmentStore, ranges, secure);
+ primary = new StandbyServer(port, fileStore, ranges, secure);
primary.start();
log.info("started primary on port {} with allowed ip ranges {}.", port, ranges);
}
@@ -150,7 +157,7 @@ public class StandbyStoreService {
int readTimeout = PropertiesUtil.toInteger(props.get(READ_TIMEOUT), READ_TIMEOUT_DEFAULT);
boolean clean = PropertiesUtil.toBoolean(props.get(AUTO_CLEAN), AUTO_CLEAN_DEFAULT);
- sync = new StandbyClient(host, port, segmentStore, secure, readTimeout, clean);
+ sync = new StandbyClient(host, port, fileStore, secure, readTimeout, clean);
Dictionary<Object, Object> dictionary = new Hashtable<Object, Object>();
dictionary.put("scheduler.period", interval);
dictionary.put("scheduler.concurrent", false);
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/main/resources/OSGI-INF/metatype/metatype.properties
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/resources/OSGI-INF/metatype/metatype.properties?rev=1757699&r1=1756619&r2=1757699&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/main/resources/OSGI-INF/metatype/metatype.properties (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/main/resources/OSGI-INF/metatype/metatype.properties Thu Aug 25 14:51:36 2016
@@ -19,8 +19,8 @@
# suppress inspection "UnusedProperty" for whole file
-org.apache.jackrabbit.oak.plugins.segment.standby.store.StandbyStoreService.name = Apache Jackrabbit Oak TarMK Cold Standby service
-org.apache.jackrabbit.oak.plugins.segment.standby.store.StandbyStoreService.description = Provides continuous backups of TarMK based repositories
+org.apache.jackrabbit.oak.segment.standby.store.StandbyStoreService.name = Apache Jackrabbit Oak Segment Tar Cold Standby Service
+org.apache.jackrabbit.oak.segment.standby.store.StandbyStoreService.description = Provides continuous backups of repositories based on Segment Tar
mode.name = Mode
mode.description = TarMK Cold Standby mode (primary or standby)
Copied: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/NetworkErrorProxy.java (from r1756619, jackrabbit/oak/trunk/oak-tarmk-standby/src/test/java/org/apache/jackrabbit/oak/plugins/segment/NetworkErrorProxy.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/NetworkErrorProxy.java?p2=jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/NetworkErrorProxy.java&p1=jackrabbit/oak/trunk/oak-tarmk-standby/src/test/java/org/apache/jackrabbit/oak/plugins/segment/NetworkErrorProxy.java&r1=1756619&r2=1757699&rev=1757699&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-tarmk-standby/src/test/java/org/apache/jackrabbit/oak/plugins/segment/NetworkErrorProxy.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/NetworkErrorProxy.java Thu Aug 25 14:51:36 2016
@@ -16,34 +16,44 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.jackrabbit.oak.plugins.segment;
+
+package org.apache.jackrabbit.oak.segment;
+
+import java.util.concurrent.TimeUnit;
import io.netty.bootstrap.Bootstrap;
import io.netty.bootstrap.ServerBootstrap;
import io.netty.buffer.ByteBuf;
-import io.netty.channel.*;
+import io.netty.channel.ChannelFuture;
+import io.netty.channel.ChannelHandlerContext;
+import io.netty.channel.ChannelInboundHandler;
+import io.netty.channel.ChannelInboundHandlerAdapter;
+import io.netty.channel.ChannelInitializer;
+import io.netty.channel.EventLoopGroup;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.SocketChannel;
import io.netty.channel.socket.nio.NioServerSocketChannel;
import io.netty.channel.socket.nio.NioSocketChannel;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.util.concurrent.TimeUnit;
-
public class NetworkErrorProxy {
+
static final Logger log = LoggerFactory
.getLogger(NetworkErrorProxy.class);
private final int inboundPort;
+
private final int outboundPort;
+
private final String host;
+
private ChannelFuture f;
private ForwardHandler fh;
EventLoopGroup bossGroup = new NioEventLoopGroup();
+
EventLoopGroup workerGroup = new NioEventLoopGroup();
public NetworkErrorProxy(int inboundPort, String outboundHost, int outboundPort) {
@@ -68,6 +78,7 @@ public class NetworkErrorProxy {
b.group(bossGroup, workerGroup)
.channel(NioServerSocketChannel.class)
.childHandler(new ChannelInitializer<SocketChannel>() {
+
@Override
public void initChannel(SocketChannel ch) throws Exception {
ch.pipeline().addLast(NetworkErrorProxy.this.fh);
@@ -105,12 +116,19 @@ public class NetworkErrorProxy {
}
class ForwardHandler extends ChannelInboundHandlerAdapter {
+
private final String targetHost;
+
private final int targetPort;
+
public long transferredBytes;
+
public int skipPosition;
+
public int skipBytes;
+
public int flipPosition;
+
private ChannelFuture remote;
public ForwardHandler(String host, int port) {
@@ -128,13 +146,13 @@ class ForwardHandler extends ChannelInbo
cb.channel(NioSocketChannel.class);
cb.handler(new ChannelInitializer<SocketChannel>() {
+
@Override
public void initChannel(SocketChannel ch) throws Exception {
SendBackHandler sbh = new SendBackHandler(c);
if (ForwardHandler.this.flipPosition >= 0) {
sbh = new BitFlipHandler(c, ForwardHandler.this.flipPosition);
- }
- else if (ForwardHandler.this.skipBytes > 0) {
+ } else if (ForwardHandler.this.skipBytes > 0) {
sbh = new SwallowingHandler(c, ForwardHandler.this.skipPosition, ForwardHandler.this.skipBytes);
}
ch.pipeline().addFirst(sbh);
@@ -155,7 +173,7 @@ class ForwardHandler extends ChannelInbo
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) {
if (msg instanceof ByteBuf) {
- ByteBuf bb = (ByteBuf)msg;
+ ByteBuf bb = (ByteBuf) msg;
this.transferredBytes += (bb.writerIndex() - bb.readerIndex());
}
remote.channel().write(msg);
@@ -174,7 +192,9 @@ class ForwardHandler extends ChannelInbo
}
class SendBackHandler implements ChannelInboundHandler {
+
private final ChannelHandlerContext target;
+
public long transferredBytes;
public SendBackHandler(ChannelHandlerContext ctx) {
@@ -199,7 +219,7 @@ class SendBackHandler implements Channel
public int messageSize(Object msg) {
if (msg instanceof ByteBuf) {
- ByteBuf bb = (ByteBuf)msg;
+ ByteBuf bb = (ByteBuf) msg;
return (bb.writerIndex() - bb.readerIndex());
}
// unknown
@@ -240,7 +260,9 @@ class SendBackHandler implements Channel
}
class SwallowingHandler extends SendBackHandler {
+
private int skipStartingPos;
+
private int nrOfBytes;
public SwallowingHandler(ChannelHandlerContext ctx, int skipStartingPos, int numberOfBytes) {
@@ -251,13 +273,12 @@ class SwallowingHandler extends SendBack
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
if (msg instanceof ByteBuf) {
- ByteBuf bb = (ByteBuf)msg;
+ ByteBuf bb = (ByteBuf) msg;
if (this.nrOfBytes > 0) {
if (this.transferredBytes >= this.skipStartingPos) {
bb.skipBytes(this.nrOfBytes);
this.nrOfBytes = 0;
- }
- else {
+ } else {
this.skipStartingPos -= messageSize(msg);
}
}
@@ -268,6 +289,7 @@ class SwallowingHandler extends SendBack
}
class BitFlipHandler extends SendBackHandler {
+
private static final Logger log = LoggerFactory
.getLogger(BitFlipHandler.class);
@@ -280,11 +302,11 @@ class BitFlipHandler extends SendBackHan
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
if (msg instanceof ByteBuf) {
- ByteBuf bb = (ByteBuf)msg;
+ ByteBuf bb = (ByteBuf) msg;
log.debug("FlipHandler. Got Buffer size: " + bb.readableBytes());
if (this.startingPos >= 0) {
if (this.transferredBytes + bb.readableBytes() >= this.startingPos) {
- int i = this.startingPos - (int)this.transferredBytes;
+ int i = this.startingPos - (int) this.transferredBytes;
log.info("FlipHandler flips byte at offset " + (this.transferredBytes + i));
byte b = (byte) (bb.getByte(i) ^ 0x01);
bb.setByte(i, b);
Copied: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentTestUtils.java (from r1756619, jackrabbit/oak/trunk/oak-tarmk-standby/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentTestUtils.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentTestUtils.java?p2=jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentTestUtils.java&p1=jackrabbit/oak/trunk/oak-tarmk-standby/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentTestUtils.java&r1=1756619&r2=1757699&rev=1757699&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-tarmk-standby/src/test/java/org/apache/jackrabbit/oak/plugins/segment/SegmentTestUtils.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentTestUtils.java Thu Aug 25 14:51:36 2016
@@ -16,19 +16,15 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.jackrabbit.oak.plugins.segment;
+
+package org.apache.jackrabbit.oak.segment;
import static java.io.File.createTempFile;
-import static org.apache.jackrabbit.oak.plugins.segment.Segment.MAX_SEGMENT_SIZE;
-import static org.apache.jackrabbit.oak.plugins.segment.Segment.RECORD_ALIGN_BITS;
-import static org.junit.Assert.assertEquals;
import java.io.File;
import java.io.IOException;
-import java.util.Random;
import org.apache.jackrabbit.oak.api.CommitFailedException;
-import org.apache.jackrabbit.oak.plugins.segment.file.FileStore;
import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
import org.apache.jackrabbit.oak.spi.commit.EmptyHook;
import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
@@ -36,27 +32,7 @@ import org.apache.jackrabbit.oak.spi.sta
public final class SegmentTestUtils {
- private SegmentTestUtils() { }
-
- public static int newValidOffset(Random random) {
- return random.nextInt(MAX_SEGMENT_SIZE >> RECORD_ALIGN_BITS) << RECORD_ALIGN_BITS;
- }
-
- public static RecordId newRecordId(SegmentTracker factory, Random random) {
- SegmentId id = factory.newDataSegmentId();
- RecordId r = new RecordId(id, newValidOffset(random));
- return r;
- }
-
- public static void assertEqualStores(File d1, File d2) throws Exception {
- FileStore f1 = FileStore.builder(d1).withMaxFileSize(1).withMemoryMapping(false).build();
- FileStore f2 = FileStore.builder(d2).withMaxFileSize(1).withMemoryMapping(false).build();
- try {
- assertEquals(f1.getHead(), f2.getHead());
- } finally {
- f1.close();
- f2.close();
- }
+ private SegmentTestUtils() {
}
public static void addTestContent(NodeStore store, String child)
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/BrokenNetworkTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/BrokenNetworkTest.java?rev=1757699&r1=1756619&r2=1757699&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/BrokenNetworkTest.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/BrokenNetworkTest.java Thu Aug 25 14:51:36 2016
@@ -16,21 +16,22 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.jackrabbit.oak.plugins.segment.standby;
-import org.apache.jackrabbit.oak.plugins.segment.NetworkErrorProxy;
-import org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore;
-import org.apache.jackrabbit.oak.plugins.segment.standby.client.StandbyClient;
-import org.apache.jackrabbit.oak.plugins.segment.standby.server.StandbyServer;
+package org.apache.jackrabbit.oak.segment.standby;
+
+import static org.apache.jackrabbit.oak.segment.SegmentTestUtils.addTestContent;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+
+import org.apache.jackrabbit.oak.segment.NetworkErrorProxy;
+import org.apache.jackrabbit.oak.segment.SegmentNodeStoreBuilders;
+import org.apache.jackrabbit.oak.segment.standby.client.StandbyClient;
+import org.apache.jackrabbit.oak.segment.standby.server.StandbyServer;
import org.apache.jackrabbit.oak.spi.state.NodeStore;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
-import static org.apache.jackrabbit.oak.plugins.segment.SegmentTestUtils.addTestContent;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-
public class BrokenNetworkTest extends TestBase {
@Before
@@ -119,7 +120,7 @@ public class BrokenNetworkTest extends T
p.flipByte(flipPosition);
p.run();
- NodeStore store = SegmentNodeStore.builder(storeS).build();
+ NodeStore store = SegmentNodeStoreBuilders.builder(storeS).build();
final StandbyServer server = new StandbyServer(port, storeS, ssl);
server.start();
addTestContent(store, "server");
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/BulkTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/BulkTest.java?rev=1757699&r1=1756619&r2=1757699&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/BulkTest.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/BulkTest.java Thu Aug 25 14:51:36 2016
@@ -16,12 +16,23 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.jackrabbit.oak.plugins.segment.standby;
-import org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore;
-import org.apache.jackrabbit.oak.plugins.segment.standby.client.StandbyClient;
-import org.apache.jackrabbit.oak.plugins.segment.standby.jmx.StandbyStatusMBean;
-import org.apache.jackrabbit.oak.plugins.segment.standby.server.StandbyServer;
+package org.apache.jackrabbit.oak.segment.standby;
+
+import static junit.framework.Assert.assertNotNull;
+import static junit.framework.Assert.assertTrue;
+import static org.junit.Assert.assertEquals;
+
+import java.lang.management.ManagementFactory;
+import java.util.Set;
+
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+
+import org.apache.jackrabbit.oak.segment.SegmentNodeStoreBuilders;
+import org.apache.jackrabbit.oak.segment.standby.client.StandbyClient;
+import org.apache.jackrabbit.oak.segment.standby.jmx.StandbyStatusMBean;
+import org.apache.jackrabbit.oak.segment.standby.server.StandbyServer;
import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
import org.apache.jackrabbit.oak.spi.commit.EmptyHook;
import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
@@ -30,16 +41,6 @@ import org.junit.After;
import org.junit.Before;
import org.junit.Test;
-import javax.management.MBeanServer;
-import javax.management.ObjectName;
-
-import java.lang.management.ManagementFactory;
-import java.util.Set;
-
-import static junit.framework.Assert.assertNotNull;
-import static junit.framework.Assert.assertTrue;
-import static org.junit.Assert.assertEquals;
-
public class BulkTest extends TestBase {
@Before
@@ -97,7 +98,7 @@ public class BulkTest extends TestBase {
private void test(int number, int minExpectedSegments, int maxExpectedSegments, long minExpectedBytes, long maxExpectedBytes,
boolean useSSL) throws Exception {
- NodeStore store = SegmentNodeStore.builder(storeS).build();
+ NodeStore store = SegmentNodeStoreBuilders.builder(storeS).build();
NodeBuilder rootbuilder = store.getRoot().builder();
NodeBuilder b = rootbuilder.child("store");
for (int j=0; j<=number / 1000; j++) {
Modified: jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/DataStoreTestBase.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/DataStoreTestBase.java?rev=1757699&r1=1756619&r2=1757699&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/DataStoreTestBase.java (original)
+++ jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/standby/DataStoreTestBase.java Thu Aug 25 14:51:36 2016
@@ -16,7 +16,8 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.jackrabbit.oak.plugins.segment.standby;
+
+package org.apache.jackrabbit.oak.segment.standby;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
@@ -36,11 +37,12 @@ import org.apache.jackrabbit.oak.api.Com
import org.apache.jackrabbit.oak.api.PropertyState;
import org.apache.jackrabbit.oak.api.Type;
import org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreBlobStore;
-import org.apache.jackrabbit.oak.plugins.segment.NetworkErrorProxy;
-import org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore;
-import org.apache.jackrabbit.oak.plugins.segment.file.FileStore;
-import org.apache.jackrabbit.oak.plugins.segment.standby.client.StandbyClient;
-import org.apache.jackrabbit.oak.plugins.segment.standby.server.StandbyServer;
+import org.apache.jackrabbit.oak.segment.NetworkErrorProxy;
+import org.apache.jackrabbit.oak.segment.SegmentNodeStoreBuilders;
+import org.apache.jackrabbit.oak.segment.file.FileStore;
+import org.apache.jackrabbit.oak.segment.file.FileStoreBuilder;
+import org.apache.jackrabbit.oak.segment.standby.client.StandbyClient;
+import org.apache.jackrabbit.oak.segment.standby.server.StandbyServer;
import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
import org.apache.jackrabbit.oak.spi.commit.EmptyHook;
import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
@@ -62,12 +64,15 @@ public class DataStoreTestBase extends T
fds.setMinRecordLength(4092);
fds.init(path);
DataStoreBlobStore blobStore = new DataStoreBlobStore(fds);
- return FileStore.builder(d)
- .withMaxFileSize(1)
- .withMemoryMapping(false)
- .withNoCache()
- .withBlobStore(blobStore)
- .build();
+ return FileStoreBuilder.fileStoreBuilder(d)
+ .withMaxFileSize(1)
+ .withMemoryMapping(false)
+ .withNodeDeduplicationCacheSize(0)
+ .withSegmentCacheSize(0)
+ .withStringCacheSize(0)
+ .withTemplateCacheSize(0)
+ .withBlobStore(blobStore)
+ .build();
}
protected byte[] addTestContent(NodeStore store, String child, int size)
@@ -92,7 +97,7 @@ public class DataStoreTestBase extends T
FileStore primary = getPrimary();
FileStore secondary = getSecondary();
- NodeStore store = SegmentNodeStore.builder(primary).build();
+ NodeStore store = SegmentNodeStoreBuilders.builder(primary).build();
final StandbyServer server = new StandbyServer(port, primary);
server.start();
byte[] data = addTestContent(store, "server", blobSize);
@@ -108,8 +113,8 @@ public class DataStoreTestBase extends T
cl.close();
}
- assertTrue(primary.size() < mb);
- assertTrue(secondary.size() < mb);
+ assertTrue(primary.getStats().getApproximateSize() < mb);
+ assertTrue(secondary.getStats().getApproximateSize() < mb);
PropertyState ps = secondary.getHead().getChildNode("root")
.getChildNode("server").getProperty("testBlob");
@@ -168,7 +173,7 @@ public class DataStoreTestBase extends T
p.flipByte(flipPosition);
p.run();
- NodeStore store = SegmentNodeStore.builder(primary).build();
+ NodeStore store = SegmentNodeStoreBuilders.builder(primary).build();
final StandbyServer server = new StandbyServer(port, primary);
server.start();
byte[] data = addTestContent(store, "server", blobSize);
@@ -197,8 +202,8 @@ public class DataStoreTestBase extends T
p.close();
}
- assertTrue(primary.size() < mb);
- assertTrue(secondary.size() < mb);
+ assertTrue(primary.getStats().getApproximateSize() < mb);
+ assertTrue(secondary.getStats().getApproximateSize() < mb);
PropertyState ps = secondary.getHead().getChildNode("root")
.getChildNode("server").getProperty("testBlob");
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=1757699&r1=1756619&r2=1757699&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 Thu Aug 25 14:51:36 2016
@@ -16,15 +16,15 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.jackrabbit.oak.plugins.segment.standby;
+package org.apache.jackrabbit.oak.segment.standby;
-import static org.apache.jackrabbit.oak.plugins.segment.SegmentTestUtils.createTmpTargetDir;
+import static org.apache.jackrabbit.oak.segment.SegmentTestUtils.createTmpTargetDir;
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
-import org.apache.jackrabbit.oak.plugins.segment.file.FileStore;
+import org.apache.jackrabbit.oak.segment.file.FileStore;
import org.junit.After;