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