Author: alexparvulescu
Date: Thu Feb  4 18:17:40 2016
New Revision: 1728525

URL: http://svn.apache.org/viewvc?rev=1728525&view=rev
Log:
OAK-3988 Offline compaction should avoid loading external binaries

Modified:
    
jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/Compactor.java

Modified: 
jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/Compactor.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/Compactor.java?rev=1728525&r1=1728524&r2=1728525&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/Compactor.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment/src/main/java/org/apache/jackrabbit/oak/plugins/segment/Compactor.java
 Thu Feb  4 18:17:40 2016
@@ -466,8 +466,21 @@ public class Compactor {
             }
             long count = 0;
             for (PropertyState ps : state.getProperties()) {
+                Type<?> type = ps.getType();
                 for (int i = 0; i < ps.count(); i++) {
-                    long size = ps.size(i);
+                    long size = 0;
+                    if (type == BINARY || type == BINARIES) {
+                        Blob blob = ps.getValue(BINARY, i);
+                        if (blob instanceof SegmentBlob) {
+                            if (!((SegmentBlob) blob).isExternal()) {
+                                size += blob.length();
+                            }
+                        } else {
+                            size += blob.length();
+                        }
+                    } else {
+                        size = ps.size(i);
+                    }
                     count += size;
                     if (size >= offlineThreshold || count >= offlineThreshold) 
{
                         return true;


Reply via email to