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 {