Author: jukka
Date: Fri Nov 22 17:31:39 2013
New Revision: 1544610

URL: http://svn.apache.org/r1544610
Log:
OAK-1159: Backup and restore

Only skip copying blobs when they are stored in the same SegmentStore

Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentStream.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentWriter.java

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentStream.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentStream.java?rev=1544610&r1=1544609&r2=1544610&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentStream.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentStream.java
 Fri Nov 22 17:31:39 2013
@@ -32,10 +32,11 @@ import com.google.common.io.ByteStreams;
 public class SegmentStream extends InputStream {
 
     @CheckForNull
-    public static RecordId getRecordIdIfAvailable(InputStream stream) {
+    public static RecordId getRecordIdIfAvailable(
+            InputStream stream, SegmentStore store) {
         if (stream instanceof SegmentStream) {
             SegmentStream sstream = (SegmentStream) stream;
-            if (sstream.position == 0) {
+            if (sstream.position == 0 && sstream.store == store) {
                 return sstream.recordId;
             }
         }

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentWriter.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentWriter.java?rev=1544610&r1=1544609&r2=1544610&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentWriter.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentWriter.java
 Fri Nov 22 17:31:39 2013
@@ -549,7 +549,8 @@ public class SegmentWriter {
     }
 
     public SegmentBlob writeBlob(Blob blob) throws IOException {
-        if (blob instanceof SegmentBlob) {
+        if (blob instanceof SegmentBlob
+                && store == ((SegmentBlob) blob).getSegment().store) {
             return (SegmentBlob) blob;
         } else {
             return writeStream(blob.getNewStream());
@@ -565,7 +566,7 @@ public class SegmentWriter {
      * @throws IOException if the stream could not be read
      */
     public SegmentBlob writeStream(InputStream stream) throws IOException {
-        RecordId id = SegmentStream.getRecordIdIfAvailable(stream);
+        RecordId id = SegmentStream.getRecordIdIfAvailable(stream, store);
         if (id == null) {
             boolean threw = true;
             try {


Reply via email to