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 al...@apache.org on 2015/05/12 09:49:36 UTC

svn commit: r1678889 - in /jackrabbit/oak/branches/1.2: ./ oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/ oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/ oak-tarmk-standby/src/main/java/org/apache/jackrabbit/oa...

Author: alexparvulescu
Date: Tue May 12 07:49:36 2015
New Revision: 1678889

URL: http://svn.apache.org/r1678889
Log:
OAK-2861 TARMK Cold Standby better binary decoding
 - reverted too eager merge


Modified:
    jackrabbit/oak/branches/1.2/   (props changed)
    jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentTracker.java
    jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java
    jackrabbit/oak/branches/1.2/oak-tarmk-standby/src/main/java/org/apache/jackrabbit/oak/plugins/segment/standby/client/StandbyClient.java
    jackrabbit/oak/branches/1.2/oak-tarmk-standby/src/main/java/org/apache/jackrabbit/oak/plugins/segment/standby/codec/ReplyDecoder.java
    jackrabbit/oak/branches/1.2/oak-tarmk-standby/src/main/java/org/apache/jackrabbit/oak/plugins/segment/standby/store/StandbyStore.java
    jackrabbit/oak/branches/1.2/oak-tarmk-standby/src/main/java/org/apache/jackrabbit/oak/plugins/segment/standby/store/StandbyStoreService.java

Propchange: jackrabbit/oak/branches/1.2/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue May 12 07:49:36 2015
@@ -1,3 +1,3 @@
 /jackrabbit/oak/branches/1.0:1665962
-/jackrabbit/oak/trunk:1672350,1672468,1672537,1672603,1672642,1672644,1672834-1672835,1673351,1673410,1673414,1673436,1673644,1673662-1673664,1673669,1673695,1674046,1674065,1674075,1674107,1674228,1674880,1675055,1675332,1675354,1675357,1675593,1676198,1676237,1676407,1676458,1676539,1676670,1676725,1677939,1678173,1678758
+/jackrabbit/oak/trunk:1672350,1672468,1672537,1672603,1672642,1672644,1672834-1672835,1673351,1673410,1673414,1673436,1673644,1673662-1673664,1673669,1673695,1674046,1674065,1674075,1674107,1674228,1674880,1675055,1675332,1675354,1675357,1675593,1676198,1676237,1676407,1676458,1676539,1676670,1676725,1677939,1678173
 /jackrabbit/trunk:1345480

Modified: jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentTracker.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentTracker.java?rev=1678889&r1=1678888&r2=1678889&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentTracker.java (original)
+++ jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentTracker.java Tue May 12 07:49:36 2015
@@ -19,6 +19,7 @@ package org.apache.jackrabbit.oak.plugin
 import static com.google.common.collect.Lists.newLinkedList;
 import static com.google.common.collect.Queues.newArrayDeque;
 import static com.google.common.collect.Sets.newHashSet;
+import static com.google.common.collect.Sets.newIdentityHashSet;
 
 import java.security.SecureRandom;
 import java.util.LinkedList;
@@ -28,6 +29,7 @@ import java.util.concurrent.atomic.Atomi
 
 import javax.annotation.Nonnull;
 
+import com.google.common.collect.Sets;
 import org.apache.jackrabbit.oak.plugins.blob.ReferenceCollector;
 import org.apache.jackrabbit.oak.plugins.segment.compaction.CompactionStrategy;
 import org.slf4j.Logger;
@@ -254,9 +256,4 @@ public class SegmentTracker {
         }
     }
 
-    public synchronized void clearCache() {
-        segments.clear();
-        currentSize = 0;
-    }
-
 }

Modified: jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java?rev=1678889&r1=1678888&r2=1678889&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java (original)
+++ jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java Tue May 12 07:49:36 2015
@@ -651,10 +651,7 @@ public class FileStore implements Segmen
                     id.getMostSignificantBits(),
                     id.getLeastSignificantBits()));
         }
-        gcMonitor.info("getReferencedSegmentIds {}", ids);
-
         writer.cleanup(ids);
-        gcMonitor.info("collectReferences {}", ids);
 
         CompactionMap cm = tracker.getCompactionMap();
         List<TarReader> list = newArrayListWithCapacity(readers.size());

Modified: jackrabbit/oak/branches/1.2/oak-tarmk-standby/src/main/java/org/apache/jackrabbit/oak/plugins/segment/standby/client/StandbyClient.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.2/oak-tarmk-standby/src/main/java/org/apache/jackrabbit/oak/plugins/segment/standby/client/StandbyClient.java?rev=1678889&r1=1678888&r2=1678889&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.2/oak-tarmk-standby/src/main/java/org/apache/jackrabbit/oak/plugins/segment/standby/client/StandbyClient.java (original)
+++ jackrabbit/oak/branches/1.2/oak-tarmk-standby/src/main/java/org/apache/jackrabbit/oak/plugins/segment/standby/client/StandbyClient.java Tue May 12 07:49:36 2015
@@ -43,7 +43,6 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
 
 import org.apache.jackrabbit.oak.plugins.segment.SegmentStore;
-import org.apache.jackrabbit.oak.plugins.segment.SegmentStoreProvider;
 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;
@@ -88,10 +87,10 @@ public final class StandbyClient impleme
 
     public StandbyClient(String host, int port, SegmentStore store,
             boolean secure, int readTimeoutMs) throws SSLException {
-        this(host, port, store, null, secure, readTimeoutMs, false);
+        this(host, port, store, secure, readTimeoutMs, false);
     }
 
-    public StandbyClient(String host, int port, SegmentStore store, SegmentStoreProvider storeProvider,
+    public StandbyClient(String host, int port, SegmentStore store,
             boolean secure, int readTimeoutMs, boolean autoClean)
             throws SSLException {
         this.state = STATUS_INITIALIZING;
@@ -104,7 +103,7 @@ public final class StandbyClient impleme
         }
         this.readTimeoutMs = readTimeoutMs;
         this.autoClean = autoClean;
-        this.store = new StandbyStore(store, storeProvider);
+        this.store = new StandbyStore(store);
         String s = System.getProperty(CLIENT_ID_PROPERTY_NAME);
         this.observer = new CommunicationObserver((s == null || s.length() == 0) ? UUID.randomUUID().toString() : s);
 

Modified: jackrabbit/oak/branches/1.2/oak-tarmk-standby/src/main/java/org/apache/jackrabbit/oak/plugins/segment/standby/codec/ReplyDecoder.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.2/oak-tarmk-standby/src/main/java/org/apache/jackrabbit/oak/plugins/segment/standby/codec/ReplyDecoder.java?rev=1678889&r1=1678888&r2=1678889&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.2/oak-tarmk-standby/src/main/java/org/apache/jackrabbit/oak/plugins/segment/standby/codec/ReplyDecoder.java (original)
+++ jackrabbit/oak/branches/1.2/oak-tarmk-standby/src/main/java/org/apache/jackrabbit/oak/plugins/segment/standby/codec/ReplyDecoder.java Tue May 12 07:49:36 2015
@@ -113,18 +113,8 @@ public class ReplyDecoder extends Replay
         long msb = in.readLong();
         long lsb = in.readLong();
         long hash = in.readLong();
-
-        // #readBytes throws a 'REPLAY' exception if there are not enough bytes
-        // available for reading
-        ByteBuf data = in.readBytes(len - 25);
-        byte[] segment;
-        if (data.hasArray()) {
-            segment = data.array();
-        } else {
-            segment = new byte[len - 25];
-            in.readBytes(segment);
-        }
-
+        byte[] segment = new byte[len - 25];
+        in.readBytes(segment);
         Hasher hasher = Hashing.murmur3_32().newHasher();
         long check = hasher.putBytes(segment).hash().padToLong();
         if (hash == check) {
@@ -145,17 +135,8 @@ public class ReplyDecoder extends Replay
         String id = new String(bid, Charset.forName("UTF-8"));
 
         long hash = in.readLong();
-        // #readBytes throws a 'REPLAY' exception if there are not enough bytes
-        // available for reading
-        ByteBuf data = in.readBytes(length);
-        byte[] blob;
-        if (data.hasArray()) {
-            blob = data.array();
-        } else {
-            blob = new byte[length];
-            data.readBytes(blob);
-        }
-
+        byte[] blob = new byte[length];
+        in.readBytes(blob);
         Hasher hasher = Hashing.murmur3_32().newHasher();
         long check = hasher.putBytes(blob).hash().padToLong();
         if (hash == check) {

Modified: jackrabbit/oak/branches/1.2/oak-tarmk-standby/src/main/java/org/apache/jackrabbit/oak/plugins/segment/standby/store/StandbyStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.2/oak-tarmk-standby/src/main/java/org/apache/jackrabbit/oak/plugins/segment/standby/store/StandbyStore.java?rev=1678889&r1=1678888&r2=1678889&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.2/oak-tarmk-standby/src/main/java/org/apache/jackrabbit/oak/plugins/segment/standby/store/StandbyStore.java (original)
+++ jackrabbit/oak/branches/1.2/oak-tarmk-standby/src/main/java/org/apache/jackrabbit/oak/plugins/segment/standby/store/StandbyStore.java Tue May 12 07:49:36 2015
@@ -33,11 +33,9 @@ import org.apache.jackrabbit.oak.plugins
 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.SegmentStoreProvider;
 import org.apache.jackrabbit.oak.plugins.segment.SegmentTracker;
 import org.apache.jackrabbit.oak.plugins.segment.file.FileStore;
 import org.apache.jackrabbit.oak.spi.blob.BlobStore;
-import org.apache.jackrabbit.oak.spi.state.NodeStore;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -49,14 +47,10 @@ public class StandbyStore implements Seg
 
     private final SegmentStore delegate;
 
-    private final SegmentStoreProvider storeProvider;
-
     private RemoteSegmentLoader loader;
 
-    public StandbyStore(SegmentStore delegate,
-            SegmentStoreProvider storeProvider) {
+    public StandbyStore(SegmentStore delegate) {
         this.delegate = delegate;
-        this.storeProvider = storeProvider;
     }
 
     @Override
@@ -246,38 +240,10 @@ public class StandbyStore implements Seg
         return -1;
     }
 
-    private void refreshStoreProviderRoot() {
-        if (storeProvider != null && storeProvider instanceof NodeStore) {
-            int i = 0;
-            SegmentNodeState root = null;
-            while (!delegate.getHead().equals(root) && i < 50) {
-                root = (SegmentNodeState) ((NodeStore) storeProvider).getRoot();
-                i++;
-            }
-            log.debug(
-                    "#refreshStoreProviderRoot called, refreshed {} time(s).",
-                    i);
-        } else {
-            log.debug("#refreshStoreProviderRoot ignored {}", storeProvider);
-        }
-    }
-
     public void cleanup() {
         if (delegate instanceof FileStore) {
             try {
-                FileStore store = (FileStore) delegate;
-
-                store.getTracker().clearCache();
-                store.getTracker().getWriter().dropCache();
-                store.getTracker().getWriter().flush();
-
-                tracker.clearCache();
-                tracker.getWriter().dropCache();
-                tracker.getWriter().flush();
-
-                refreshStoreProviderRoot();
-
-                store.cleanup();
+                ((FileStore) delegate).cleanup();
             } catch (IOException e) {
                 log.error("Error running cleanup", e);
             }

Modified: jackrabbit/oak/branches/1.2/oak-tarmk-standby/src/main/java/org/apache/jackrabbit/oak/plugins/segment/standby/store/StandbyStoreService.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.2/oak-tarmk-standby/src/main/java/org/apache/jackrabbit/oak/plugins/segment/standby/store/StandbyStoreService.java?rev=1678889&r1=1678888&r2=1678889&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.2/oak-tarmk-standby/src/main/java/org/apache/jackrabbit/oak/plugins/segment/standby/store/StandbyStoreService.java (original)
+++ jackrabbit/oak/branches/1.2/oak-tarmk-standby/src/main/java/org/apache/jackrabbit/oak/plugins/segment/standby/store/StandbyStoreService.java Tue May 12 07:49:36 2015
@@ -150,7 +150,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, storeProvider, secure, readTimeout, clean);
+        sync = new StandbyClient(host, port, segmentStore, secure, readTimeout, clean);
         Dictionary<Object, Object> dictionary = new Hashtable<Object, Object>();
         dictionary.put("scheduler.period", interval);
         dictionary.put("scheduler.concurrent", false);