Author: tomekr
Date: Thu Nov 10 10:46:00 2016
New Revision: 1769078

URL: http://svn.apache.org/viewvc?rev=1769078&view=rev
Log:
OAK-5009: ExternalToExternalMigrationTest failures on Windows

Support empty blob identities in the migrator.

Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/migration/BlobMigrator.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/blob/migration/AbstractMigratorTest.java

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/migration/BlobMigrator.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/migration/BlobMigrator.java?rev=1769078&r1=1769077&r2=1769078&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/migration/BlobMigrator.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/migration/BlobMigrator.java
 Thu Nov 10 10:46:00 2016
@@ -24,6 +24,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicBoolean;
 
+import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.jackrabbit.oak.api.Blob;
 import org.apache.jackrabbit.oak.api.CommitFailedException;
 import org.apache.jackrabbit.oak.api.PropertyState;
@@ -176,7 +177,7 @@ public class BlobMigrator {
 
     private PropertyState migrateProperty(PropertyState propertyState) throws 
IOException {
         Blob oldBlob = propertyState.getValue(Type.BINARY);
-        String blobId = oldBlob.getContentIdentity();
+        String blobId = getIdentity(oldBlob);
         if (blobStore.isMigrated(blobId)) {
             return null;
         }
@@ -196,7 +197,7 @@ public class BlobMigrator {
         builder.assignFrom(propertyState);
         boolean blobUpdated = false;
         for (Blob oldBlob : oldBlobs) {
-            String blobId = oldBlob.getContentIdentity();
+            String blobId = getIdentity(oldBlob);
             if (blobStore.isMigrated(blobId)) {
                 newBlobs.add(new BlobStoreBlob(blobStore, blobId));
             } else {
@@ -213,4 +214,12 @@ public class BlobMigrator {
             return null;
         }
     }
+
+    private String getIdentity(Blob blob) throws IOException {
+        String id = blob.getContentIdentity();
+        if (id == null) {
+            id = DigestUtils.shaHex(blob.getNewStream());
+        }
+        return id;
+    }
 }
\ No newline at end of file

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/blob/migration/AbstractMigratorTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/blob/migration/AbstractMigratorTest.java?rev=1769078&r1=1769077&r2=1769078&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/blob/migration/AbstractMigratorTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/blob/migration/AbstractMigratorTest.java
 Thu Nov 10 10:46:00 2016
@@ -91,7 +91,6 @@ public abstract class AbstractMigratorTe
     }
 
     @Test
-    @Ignore("OAK-5009")
     public void blobsExistsOnTheNewBlobStore() throws IOException, 
CommitFailedException {
         migrator.migrate();
         NodeState root = nodeStore.getRoot();
@@ -101,7 +100,6 @@ public abstract class AbstractMigratorTe
     }
 
     @Test
-    @Ignore("OAK-5009")
     public void blobsCanBeReadAfterSwitchingBlobStore() throws IOException, 
CommitFailedException {
         migrator.migrate();
         closeNodeStore();


Reply via email to