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 2014/09/18 14:36:42 UTC

svn commit: r1625962 - in /jackrabbit/oak/trunk: oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/ oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/ oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/h...

Author: alexparvulescu
Date: Thu Sep 18 12:36:41 2014
New Revision: 1625962

URL: http://svn.apache.org/r1625962
Log:
OAK-2111 Rename FileStoreCorruptException to SegmentNotFoundException and update the NodeStore contract


Added:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNotFoundException.java   (with props)
Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentStore.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/http/HttpStore.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/memory/MemoryStore.java
    jackrabbit/oak/trunk/oak-tarmk-failover/src/main/java/org/apache/jackrabbit/oak/plugins/segment/failover/client/SegmentLoaderHandler.java
    jackrabbit/oak/trunk/oak-tarmk-failover/src/main/java/org/apache/jackrabbit/oak/plugins/segment/failover/codec/Messages.java
    jackrabbit/oak/trunk/oak-tarmk-failover/src/main/java/org/apache/jackrabbit/oak/plugins/segment/failover/store/FailoverStore.java
    jackrabbit/oak/trunk/oak-tarmk-failover/src/main/java/org/apache/jackrabbit/oak/plugins/segment/failover/store/RemoteSegmentLoader.java

Added: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNotFoundException.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNotFoundException.java?rev=1625962&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNotFoundException.java (added)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNotFoundException.java Thu Sep 18 12:36:41 2014
@@ -0,0 +1,43 @@
+/*
+ * 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.plugins.segment;
+
+/**
+ * This exception is thrown when there the segment does not exist in the store
+ */
+public class SegmentNotFoundException extends IllegalStateException {
+
+    private final String segmentId;
+
+    public SegmentNotFoundException(SegmentId id) {
+        super("Segment " + id + " not found");
+        this.segmentId = id.toString();
+    }
+
+    public SegmentNotFoundException(SegmentId id, Throwable e) {
+        super("Segment " + id + " not found", e);
+        this.segmentId = id.toString();
+    }
+
+    public String getSegmentId() {
+        return segmentId;
+    }
+
+}

Propchange: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNotFoundException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentStore.java?rev=1625962&r1=1625961&r2=1625962&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentStore.java Thu Sep 18 12:36:41 2014
@@ -51,7 +51,7 @@ public interface SegmentStore {
      * Reads the identified segment from this store.
      *
      * @param segmentId segment identifier
-     * @return identified segment, or {@code null} if not found
+     * @return identified segment, or a {@link SegmentNotFoundException} thrown if not found
      */
     @CheckForNull
     Segment readSegment(SegmentId segmentId);

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java?rev=1625962&r1=1625961&r2=1625962&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java Thu Sep 18 12:36:41 2014
@@ -49,6 +49,7 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 import com.google.common.base.Stopwatch;
+
 import org.apache.jackrabbit.oak.api.Blob;
 import org.apache.jackrabbit.oak.plugins.blob.BlobStoreBlob;
 import org.apache.jackrabbit.oak.plugins.segment.Compactor;
@@ -56,6 +57,7 @@ import org.apache.jackrabbit.oak.plugins
 import org.apache.jackrabbit.oak.plugins.segment.Segment;
 import org.apache.jackrabbit.oak.plugins.segment.SegmentId;
 import org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore;
+import org.apache.jackrabbit.oak.plugins.segment.SegmentNotFoundException;
 import org.apache.jackrabbit.oak.plugins.segment.SegmentTracker;
 import org.apache.jackrabbit.oak.plugins.segment.SegmentNodeState;
 import org.apache.jackrabbit.oak.plugins.segment.SegmentStore;
@@ -669,7 +671,7 @@ public class FileStore implements Segmen
             }
         }
 
-        throw new FileStoreCorruptException(id);
+        throw new SegmentNotFoundException(id);
     }
 
     @Override
@@ -731,13 +733,4 @@ public class FileStore implements Segmen
         this.pauseCompaction = pauseCompaction;
         return this;
     }
-
-    public class FileStoreCorruptException extends IllegalStateException {
-        public final SegmentId id;
-
-        public FileStoreCorruptException(SegmentId id) {
-            super("Segment " + id + " not found");
-            this.id = id;
-        }
-    }
 }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/http/HttpStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/http/HttpStore.java?rev=1625962&r1=1625961&r2=1625962&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/http/HttpStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/http/HttpStore.java Thu Sep 18 12:36:41 2014
@@ -34,11 +34,13 @@ import org.apache.jackrabbit.oak.api.Blo
 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.SegmentNotFoundException;
 import org.apache.jackrabbit.oak.plugins.segment.SegmentTracker;
 import org.apache.jackrabbit.oak.plugins.segment.SegmentNodeState;
 import org.apache.jackrabbit.oak.plugins.segment.SegmentStore;
 
 import com.google.common.io.ByteStreams;
+
 import org.apache.jackrabbit.oak.spi.blob.BlobStore;
 
 public class HttpStore implements SegmentStore {
@@ -122,7 +124,7 @@ public class HttpStore implements Segmen
                 stream.close();
             }
         } catch (MalformedURLException e) {
-            throw new IllegalStateException(e);
+            throw new SegmentNotFoundException(id, e);
         } catch (IOException e) {
             throw new RuntimeException(e);
         }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/memory/MemoryStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/memory/MemoryStore.java?rev=1625962&r1=1625961&r2=1625962&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/memory/MemoryStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/memory/MemoryStore.java Thu Sep 18 12:36:41 2014
@@ -26,6 +26,7 @@ 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.SegmentNotFoundException;
 import org.apache.jackrabbit.oak.plugins.segment.SegmentTracker;
 import org.apache.jackrabbit.oak.plugins.segment.SegmentNodeState;
 import org.apache.jackrabbit.oak.plugins.segment.SegmentStore;
@@ -91,9 +92,8 @@ public class MemoryStore implements Segm
         Segment segment = segments.get(id);
         if (segment != null) {
             return segment;
-        } else {
-            throw new IllegalArgumentException("Segment not found: " + id);
         }
+        throw new SegmentNotFoundException(id);
     }
 
     @Override

Modified: jackrabbit/oak/trunk/oak-tarmk-failover/src/main/java/org/apache/jackrabbit/oak/plugins/segment/failover/client/SegmentLoaderHandler.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-tarmk-failover/src/main/java/org/apache/jackrabbit/oak/plugins/segment/failover/client/SegmentLoaderHandler.java?rev=1625962&r1=1625961&r2=1625962&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-tarmk-failover/src/main/java/org/apache/jackrabbit/oak/plugins/segment/failover/client/SegmentLoaderHandler.java (original)
+++ jackrabbit/oak/trunk/oak-tarmk-failover/src/main/java/org/apache/jackrabbit/oak/plugins/segment/failover/client/SegmentLoaderHandler.java Thu Sep 18 12:36:41 2014
@@ -31,13 +31,12 @@ import java.util.concurrent.TimeUnit;
 
 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.SegmentNodeBuilder;
 import org.apache.jackrabbit.oak.plugins.segment.SegmentNodeState;
+import org.apache.jackrabbit.oak.plugins.segment.SegmentNotFoundException;
 import org.apache.jackrabbit.oak.plugins.segment.failover.codec.SegmentReply;
 import org.apache.jackrabbit.oak.plugins.segment.failover.store.FailoverStore;
 import org.apache.jackrabbit.oak.plugins.segment.failover.store.RemoteSegmentLoader;
-import org.apache.jackrabbit.oak.plugins.segment.file.FileStore;
 import org.apache.jackrabbit.oak.spi.state.ApplyDiff;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -101,16 +100,17 @@ public class SegmentLoaderHandler extend
                     current.compareAgainstBaseState(before, new ApplyDiff(builder));
                     break;
                 }
-                catch (FileStore.FileStoreCorruptException e) {
+                catch (SegmentNotFoundException e) {
                     // the segment is locally damaged or not present anymore
                     // lets try to read this from the master again
-                    Segment s = readSegment(e.id);
+                    String id = e.getSegmentId();
+                    Segment s = readSegment(e.getSegmentId());
                     if (s == null) {
-                        log.warn("can't read locally corrupt segment " + e.id + " from master");
+                        log.warn("can't read locally corrupt segment " + id + " from master");
                         throw e;
                     }
 
-                    log.info("did reread locally corrupt segment " + e.id + " with size " + s.size());
+                    log.info("did reread locally corrupt segment " + id + " with size " + s.size());
                     ByteArrayOutputStream bout = new ByteArrayOutputStream(s.size());
                     try {
                         s.writeTo(bout);
@@ -119,7 +119,7 @@ public class SegmentLoaderHandler extend
                         log.error("can't wrap segment to output stream", f);
                         throw e;
                     }
-                    store.writeSegment(e.id, bout.toByteArray(), 0, s.size());
+                    store.writeSegment(s.getSegmentId(), bout.toByteArray(), 0, s.size());
                 }
             } while(true);
             boolean ok = store.setHead(before, builder.getNodeState());
@@ -132,7 +132,7 @@ public class SegmentLoaderHandler extend
     }
 
     @Override
-    public Segment readSegment(final SegmentId id) {
+    public Segment readSegment(final String id) {
         ctx.writeAndFlush(newGetSegmentReq(this.clientID, id));
         return getSegment();
     }

Modified: jackrabbit/oak/trunk/oak-tarmk-failover/src/main/java/org/apache/jackrabbit/oak/plugins/segment/failover/codec/Messages.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-tarmk-failover/src/main/java/org/apache/jackrabbit/oak/plugins/segment/failover/codec/Messages.java?rev=1625962&r1=1625961&r2=1625962&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-tarmk-failover/src/main/java/org/apache/jackrabbit/oak/plugins/segment/failover/codec/Messages.java (original)
+++ jackrabbit/oak/trunk/oak-tarmk-failover/src/main/java/org/apache/jackrabbit/oak/plugins/segment/failover/codec/Messages.java Thu Sep 18 12:36:41 2014
@@ -18,8 +18,6 @@
  */
 package org.apache.jackrabbit.oak.plugins.segment.failover.codec;
 
-import org.apache.jackrabbit.oak.plugins.segment.SegmentId;
-
 public class Messages {
 
     public static final byte HEADER_RECORD = 0x00;
@@ -39,8 +37,8 @@ public class Messages {
         return newRequest(clientID, GET_HEAD);
     }
 
-    public static String newGetSegmentReq(String clientID, SegmentId sid) {
-        return newRequest(clientID, GET_SEGMENT + sid.toString());
+    public static String newGetSegmentReq(String clientID, String sid) {
+        return newRequest(clientID, GET_SEGMENT + sid);
     }
 
     public static String extractMessageFrom(String payload) {

Modified: jackrabbit/oak/trunk/oak-tarmk-failover/src/main/java/org/apache/jackrabbit/oak/plugins/segment/failover/store/FailoverStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-tarmk-failover/src/main/java/org/apache/jackrabbit/oak/plugins/segment/failover/store/FailoverStore.java?rev=1625962&r1=1625961&r2=1625962&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-tarmk-failover/src/main/java/org/apache/jackrabbit/oak/plugins/segment/failover/store/FailoverStore.java (original)
+++ jackrabbit/oak/trunk/oak-tarmk-failover/src/main/java/org/apache/jackrabbit/oak/plugins/segment/failover/store/FailoverStore.java Thu Sep 18 12:36:41 2014
@@ -29,7 +29,6 @@ import org.apache.jackrabbit.oak.plugins
 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.failover.server.FailoverServer;
 import org.apache.jackrabbit.oak.spi.blob.BlobStore;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -79,7 +78,7 @@ public class FailoverStore implements Se
             SegmentId id = ids.remove();
             if (!seen.contains(id) && !delegate.containsSegment(id)) {
                 log.debug("trying to read segment " + id);
-                Segment s = loader.readSegment(id);
+                Segment s = loader.readSegment(id.toString());
                 if (s != null) {
                     log.info("got segment " + id + " with size " + s.size());
                     ByteArrayOutputStream bout = new ByteArrayOutputStream(

Modified: jackrabbit/oak/trunk/oak-tarmk-failover/src/main/java/org/apache/jackrabbit/oak/plugins/segment/failover/store/RemoteSegmentLoader.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-tarmk-failover/src/main/java/org/apache/jackrabbit/oak/plugins/segment/failover/store/RemoteSegmentLoader.java?rev=1625962&r1=1625961&r2=1625962&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-tarmk-failover/src/main/java/org/apache/jackrabbit/oak/plugins/segment/failover/store/RemoteSegmentLoader.java (original)
+++ jackrabbit/oak/trunk/oak-tarmk-failover/src/main/java/org/apache/jackrabbit/oak/plugins/segment/failover/store/RemoteSegmentLoader.java Thu Sep 18 12:36:41 2014
@@ -17,11 +17,10 @@
 package org.apache.jackrabbit.oak.plugins.segment.failover.store;
 
 import org.apache.jackrabbit.oak.plugins.segment.Segment;
-import org.apache.jackrabbit.oak.plugins.segment.SegmentId;
 
 public interface RemoteSegmentLoader {
 
-    Segment readSegment(SegmentId id);
+    Segment readSegment(String id);
 
     void close();