svn commit: r1826082 - in /jackrabbit/oak/branches/1.8: ./ oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBVersionGCSupport.java

2018-03-07 Thread reschke
Author: reschke
Date: Wed Mar  7 08:07:47 2018
New Revision: 1826082

URL: http://svn.apache.org/viewvc?rev=1826082&view=rev
Log:
OAK-7313: RDB*Store: add DEBUG level logging for filters in RDBVersionGCSupport 
(ported to 1.8)

Modified:
jackrabbit/oak/branches/1.8/   (props changed)

jackrabbit/oak/branches/1.8/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBVersionGCSupport.java

Propchange: jackrabbit/oak/branches/1.8/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Mar  7 08:07:47 2018
@@ -1,3 +1,3 @@
 /jackrabbit/oak/branches/1.0:1665962
-/jackrabbit/oak/trunk:1820660-1820661,1820729,1820734,1820859,1820861,1820878,1820888,1820947,1821130,1821140-1821141,1821240,1821249,1821258,1821325,1821358,1821361-1821362,1821370,1821375,1821393,1821477,1821487,1821516,1821665,1821668,1821681,1822121,1822201,1822723,1822808,1822850,1822934,1823135,1823163,1823169,1824962,1825362,1825381,1825442,1825448,1825466,1825470,1825475,1825523,1825525,1825619-1825621,1825651,1825992
+/jackrabbit/oak/trunk:1820660-1820661,1820729,1820734,1820859,1820861,1820878,1820888,1820947,1821130,1821140-1821141,1821240,1821249,1821258,1821325,1821358,1821361-1821362,1821370,1821375,1821393,1821477,1821487,1821516,1821665,1821668,1821681,1822121,1822201,1822723,1822808,1822850,1822934,1823135,1823163,1823169,1824962,1825362,1825381,1825442,1825448,1825466,1825470,1825475,1825523,1825525,1825619-1825621,1825651,1825992,1826079
 /jackrabbit/trunk:1345480

Modified: 
jackrabbit/oak/branches/1.8/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBVersionGCSupport.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.8/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBVersionGCSupport.java?rev=1826082&r1=1826081&r2=1826082&view=diff
==
--- 
jackrabbit/oak/branches/1.8/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBVersionGCSupport.java
 (original)
+++ 
jackrabbit/oak/branches/1.8/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBVersionGCSupport.java
 Wed Mar  7 08:07:47 2018
@@ -72,6 +72,7 @@ public class RDBVersionGCSupport extends
  final long 
oldestRevTimeStamp) {
 Iterable it1;
 Iterable it2;
+String name1, name2;
 
 // for schema 0 or 1 rows, we'll have to constrain the path
 List excludeKeyPatterns = Arrays.asList("_:/%", "__:/%", 
"___:/%");
@@ -85,6 +86,7 @@ public class RDBVersionGCSupport extends
 List conditions1 = new ArrayList();
 conditions1.add(new QueryCondition(NodeDocument.SD_TYPE, "in", 
gcTypeCodes));
 conditions1.add(new QueryCondition(RDBDocumentStore.VERSIONPROP, 
">=", 2));
+name1 = "version 2 query";
 it1 = store.queryAsIterable(Collection.NODES, null, null, 
Collections.emptyList(), conditions1,
 Integer.MAX_VALUE, null);
 
@@ -92,6 +94,7 @@ public class RDBVersionGCSupport extends
 conditions2.add(new QueryCondition(RDBDocumentStore.VERSIONPROP, 
"null or <", 2));
 it2 = store.queryAsIterable(Collection.NODES, null, null, 
excludeKeyPatterns, conditions2,
 Integer.MAX_VALUE, null);
+name2 = "version <2 fallback on " + excludeKeyPatterns;
 } catch (UnsupportedIndexedPropertyException ex) {
 // this will happen if we query a table that doesn't have the SD*
 // columns - create a new query without the constraint, and let the
@@ -99,26 +102,74 @@ public class RDBVersionGCSupport extends
 it1 = store.queryAsIterable(Collection.NODES, null, null, 
excludeKeyPatterns, Collections.emptyList(),
 Integer.MAX_VALUE, null);
 it2 = Collections.emptySet();
+name1 = "version <2 fallback on " + excludeKeyPatterns;
+name2 = "";
 }
 
 final Iterable fit1 = it1;
 final Iterable fit2 = it2;
 
-return CloseableIterable.wrap(Iterables.filter(Iterables.concat(fit1, 
fit2), new Predicate() {
+Predicate pred =  new Predicate() {
 @Override
 public boolean apply(NodeDocument doc) {
 return gcTypes.contains(doc.getSplitDocType()) && 
doc.hasAllRevisionLessThan(oldestRevTimeStamp)
 && !isDefaultNoBranchSplitNewerThan(doc, sweepRevs);
 }
-}), new Closeable() {
+};
+
+final CountingPredicate cp1 = new 
CountingPredicate(name1, pred);
+final CountingPredicate cp2 = new 
CountingPredicate(name2, pred);
+
+return CloseableIterable.wrap(Iterables.concat(Iterables.filter(fit1, 
cp1), Iterables.filter(fit2, cp2)), new Closeable() {
  

svn commit: r1826084 - /jackrabbit/oak/trunk/oak-store-document/pom.xml

2018-03-07 Thread mreutegg
Author: mreutegg
Date: Wed Mar  7 08:33:45 2018
New Revision: 1826084

URL: http://svn.apache.org/viewvc?rev=1826084&view=rev
Log:
OAK-7310: Empty package-info.java in o.a.j.o.plugins.document.rdb causes 
unnecessary rebuild

Modified:
jackrabbit/oak/trunk/oak-store-document/pom.xml

Modified: jackrabbit/oak/trunk/oak-store-document/pom.xml
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/pom.xml?rev=1826084&r1=1826083&r2=1826084&view=diff
==
--- jackrabbit/oak/trunk/oak-store-document/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-store-document/pom.xml Wed Mar  7 08:33:45 2018
@@ -59,6 +59,15 @@
   
 
   
+  
+maven-compiler-plugin
+
+  
+
+-Xpkginfo:always
+  
+
+  
 
   
 




svn commit: r1826086 - in /jackrabbit/oak/trunk/oak-store-document/src: main/java/org/apache/jackrabbit/oak/plugins/document/ test/java/org/apache/jackrabbit/oak/plugins/document/

2018-03-07 Thread mreutegg
Author: mreutegg
Date: Wed Mar  7 08:37:19 2018
New Revision: 1826086

URL: http://svn.apache.org/viewvc?rev=1826086&view=rev
Log:
OAK-7308: Retry commit on transient DocumentStoreException

Modified:

jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreBranch.java

jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreTest.java

jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/FailingDocumentStore.java

Modified: 
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreBranch.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreBranch.java?rev=1826086&r1=1826085&r2=1826086&view=diff
==
--- 
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreBranch.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreBranch.java
 Wed Mar  7 08:37:19 2018
@@ -347,7 +347,15 @@ class DocumentNodeStoreBranch implements
 if (msg == null) {
 msg = "Failed to merge changes to the underlying store";
 }
-return new CommitFailedException(OAK, 1, msg, t);
+String type = OAK;
+if (t instanceof DocumentStoreException) {
+DocumentStoreException dse = (DocumentStoreException) t;
+if (dse.getType() == DocumentStoreException.Type.TRANSIENT) {
+// set type to MERGE, which indicates a retry may work
+type = MERGE;
+}
+}
+return new CommitFailedException(type, 1, msg, t);
 }
 
 /**

Modified: 
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreTest.java?rev=1826086&r1=1826085&r2=1826086&view=diff
==
--- 
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreTest.java
 Wed Mar  7 08:37:19 2018
@@ -24,6 +24,7 @@ import static org.apache.jackrabbit.oak.
 import static org.apache.jackrabbit.oak.plugins.document.Collection.JOURNAL;
 import static org.apache.jackrabbit.oak.plugins.document.Collection.NODES;
 import static org.apache.jackrabbit.oak.plugins.document.Collection.SETTINGS;
+import static 
org.apache.jackrabbit.oak.plugins.document.DocumentStoreException.Type.TRANSIENT;
 import static 
org.apache.jackrabbit.oak.plugins.document.NodeDocument.MODIFIED_IN_SECS;
 import static 
org.apache.jackrabbit.oak.plugins.document.NodeDocument.MODIFIED_IN_SECS_RESOLUTION;
 import static 
org.apache.jackrabbit.oak.plugins.document.NodeDocument.NUM_REVS_THRESHOLD;
@@ -3604,6 +3605,38 @@ public class DocumentNodeStoreTest {
 );
 }
 
+@Test
+public void retryOnTransientDocumentStoreException() {
+FailingDocumentStore store = new FailingDocumentStore(new 
MemoryDocumentStore());
+DocumentNodeStore ns = builderProvider.newBuilder()
+.setAsyncDelay(0).setDocumentStore(store).getNodeStore();
+NodeBuilder builder = ns.getRoot().builder();
+builder.child("foo");
+
+store.fail().after(0).once();
+try {
+merge(ns, builder);
+fail("CommitFailedException expected");
+} catch (CommitFailedException e) {
+// expected
+} finally {
+store.fail().never();
+}
+
+builder = ns.getRoot().builder();
+builder.child("bar");
+
+store.fail().after(0).withType(TRANSIENT).once();
+try {
+merge(ns, builder);
+} catch (CommitFailedException e) {
+fail(e.toString());
+} finally {
+store.fail().never();
+}
+assertTrue(ns.getRoot().hasChildNode("bar"));
+}
+
 private void getChildNodeCountTest(int numChildren,
Iterable maxValues,
Iterable expectedValues)

Modified: 
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/FailingDocumentStore.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/FailingDocumentStore.java?rev=1826086&r1=1826085&r2

svn commit: r1826087 - /jackrabbit/oak/trunk/oak-store-document/pom.xml

2018-03-07 Thread mreutegg
Author: mreutegg
Date: Wed Mar  7 08:46:09 2018
New Revision: 1826087

URL: http://svn.apache.org/viewvc?rev=1826087&view=rev
Log:
OAK-7310: Empty package-info.java in o.a.j.o.plugins.document.rdb causes 
unnecessary rebuild

Revert revision 1826084

Modified:
jackrabbit/oak/trunk/oak-store-document/pom.xml

Modified: jackrabbit/oak/trunk/oak-store-document/pom.xml
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/pom.xml?rev=1826087&r1=1826086&r2=1826087&view=diff
==
--- jackrabbit/oak/trunk/oak-store-document/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-store-document/pom.xml Wed Mar  7 08:46:09 2018
@@ -59,15 +59,6 @@
   
 
   
-  
-maven-compiler-plugin
-
-  
-
--Xpkginfo:always
-  
-
-  
 
   
 




svn commit: r1826089 - /jackrabbit/oak/trunk/oak-parent/pom.xml

2018-03-07 Thread mreutegg
Author: mreutegg
Date: Wed Mar  7 09:18:17 2018
New Revision: 1826089

URL: http://svn.apache.org/viewvc?rev=1826089&view=rev
Log:
OAK-7310: Empty package-info.java causes unnecessary rebuild

Modified:
jackrabbit/oak/trunk/oak-parent/pom.xml

Modified: jackrabbit/oak/trunk/oak-parent/pom.xml
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-parent/pom.xml?rev=1826089&r1=1826088&r2=1826089&view=diff
==
--- jackrabbit/oak/trunk/oak-parent/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-parent/pom.xml Wed Mar  7 09:18:17 2018
@@ -101,6 +101,10 @@
   
 ${java.version}
 ${java.version}
+
+  
+  -Xpkginfo:always
+
   
 
 




svn commit: r1826090 - /jackrabbit/oak/trunk/oak-parent/pom.xml

2018-03-07 Thread mreutegg
Author: mreutegg
Date: Wed Mar  7 09:51:30 2018
New Revision: 1826090

URL: http://svn.apache.org/viewvc?rev=1826090&view=rev
Log:
OAK-7315: Remove redundant JavaDoc link to Java 7 API

Modified:
jackrabbit/oak/trunk/oak-parent/pom.xml

Modified: jackrabbit/oak/trunk/oak-parent/pom.xml
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-parent/pom.xml?rev=1826090&r1=1826089&r2=1826090&view=diff
==
--- jackrabbit/oak/trunk/oak-parent/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-parent/pom.xml Wed Mar  7 09:51:30 2018
@@ -126,7 +126,6 @@
 ${java.version}
 true
 
-  http://docs.oracle.com/javase/7/docs/api/
   
https://docs.adobe.com/docs/en/spec/javax.jcr/javadocs/jcr-2.0/
   http://jackrabbit.apache.org/api/trunk/
 




svn commit: r1826091 - /jackrabbit/oak/trunk/oak-it-osgi/test-bundles.xml

2018-03-07 Thread adulceanu
Author: adulceanu
Date: Wed Mar  7 10:01:07 2018
New Revision: 1826091

URL: http://svn.apache.org/viewvc?rev=1826091&view=rev
Log:
OAK-7259 - Improve SegmentNodeStoreStats to include number of commits per 
thread and threads currently waiting on the semaphore
Added missing bundle reference in oak-it-osgi/test-bundles.xml

Modified:
jackrabbit/oak/trunk/oak-it-osgi/test-bundles.xml

Modified: jackrabbit/oak/trunk/oak-it-osgi/test-bundles.xml
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-it-osgi/test-bundles.xml?rev=1826091&r1=1826090&r2=1826091&view=diff
==
--- jackrabbit/oak/trunk/oak-it-osgi/test-bundles.xml (original)
+++ jackrabbit/oak/trunk/oak-it-osgi/test-bundles.xml Wed Mar  7 10:01:07 2018
@@ -51,6 +51,7 @@
 org.apache.jackrabbit:oak-security-spi
 org.apache.jackrabbit:oak-blob-plugins
 io.dropwizard.metrics:metrics-core
+
com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru
   
 
   




svn commit: r1826092 - in /jackrabbit/oak/trunk/oak-store-document/src: main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoUtils.java test/java/org/apache/jackrabbit/oak/plugins/document/

2018-03-07 Thread mreutegg
Author: mreutegg
Date: Wed Mar  7 10:03:26 2018
New Revision: 1826092

URL: http://svn.apache.org/viewvc?rev=1826092&view=rev
Log:
OAK-7306: MongoDocumentStore: use transient DocumentStoreException type where 
appropriate

Modified:

jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoUtils.java

jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoUtilsTest.java

Modified: 
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoUtils.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoUtils.java?rev=1826092&r1=1826091&r2=1826092&view=diff
==
--- 
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoUtils.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoUtils.java
 Wed Mar  7 10:03:26 2018
@@ -27,6 +27,7 @@ import com.mongodb.MongoException;
 import com.mongodb.MongoNotPrimaryException;
 import com.mongodb.MongoSocketException;
 import com.mongodb.MongoWriteConcernException;
+import com.mongodb.WriteConcernException;
 
 import org.apache.jackrabbit.oak.plugins.document.DocumentStoreException.Type;
 
@@ -153,8 +154,9 @@ class MongoUtils {
 || t instanceof MongoWriteConcernException
 || t instanceof MongoNotPrimaryException) {
 type = Type.TRANSIENT;
-} else if (t instanceof MongoCommandException) {
-int code = ((MongoCommandException) t).getErrorCode();
+} else if (t instanceof MongoCommandException
+|| t instanceof WriteConcernException) {
+int code = ((MongoException) t).getCode();
 if (code == 11600   // InterruptedAtShutdown
 || code == 11601// Interrupted
 || code == 11602) { // InterruptedDueToReplStateChange

Modified: 
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoUtilsTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoUtilsTest.java?rev=1826092&r1=1826091&r2=1826092&view=diff
==
--- 
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoUtilsTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoUtilsTest.java
 Wed Mar  7 10:03:26 2018
@@ -20,10 +20,12 @@ import java.io.IOException;
 
 import com.mongodb.DBCollection;
 import com.mongodb.DBObject;
+import com.mongodb.DuplicateKeyException;
 import com.mongodb.MongoCommandException;
 import com.mongodb.MongoException;
 import com.mongodb.MongoSocketException;
 import com.mongodb.ServerAddress;
+import com.mongodb.WriteConcernException;
 
 import org.apache.jackrabbit.oak.plugins.document.MongoConnectionFactory;
 import org.apache.jackrabbit.oak.plugins.document.util.MongoConnection;
@@ -133,18 +135,29 @@ public class MongoUtilsTest {
 public void documentStoreExceptionType() {
 assertEquals(GENERIC, getDocumentStoreExceptionTypeFor(new 
IOException()));
 assertEquals(GENERIC, getDocumentStoreExceptionTypeFor(new 
MongoException("message")));
-assertEquals(GENERIC, 
getDocumentStoreExceptionTypeFor(createMongoCommandException(42)));
-assertEquals(TRANSIENT, 
getDocumentStoreExceptionTypeFor(createMongoCommandException(11600)));
-assertEquals(TRANSIENT, 
getDocumentStoreExceptionTypeFor(createMongoCommandException(11601)));
-assertEquals(TRANSIENT, 
getDocumentStoreExceptionTypeFor(createMongoCommandException(11602)));
+assertEquals(GENERIC, 
getDocumentStoreExceptionTypeFor(newMongoCommandException(42)));
+assertEquals(GENERIC, getDocumentStoreExceptionTypeFor(new 
DuplicateKeyException(response(11000), new ServerAddress(), null)));
+assertEquals(TRANSIENT, 
getDocumentStoreExceptionTypeFor(newWriteConcernException(11600)));
+assertEquals(TRANSIENT, 
getDocumentStoreExceptionTypeFor(newWriteConcernException(11601)));
+assertEquals(TRANSIENT, 
getDocumentStoreExceptionTypeFor(newWriteConcernException(11602)));
+assertEquals(TRANSIENT, 
getDocumentStoreExceptionTypeFor(newMongoCommandException(11600)));
+assertEquals(TRANSIENT, 
getDocumentStoreExceptionTypeFor(newMongoCommandException(11601)));
+assertEquals(TRANSIENT, 
getDocumentStoreExceptionTypeFor(newMongoCommandException(11602)));
 assertEquals(TRANSIENT, getDocum

svn commit: r1826093 - in /jackrabbit/oak/branches/1.8: ./ oak-parent/pom.xml

2018-03-07 Thread mreutegg
Author: mreutegg
Date: Wed Mar  7 10:05:58 2018
New Revision: 1826093

URL: http://svn.apache.org/viewvc?rev=1826093&view=rev
Log:
OAK-7315: Remove redundant JavaDoc link to Java 7 API

Merged revision 1826090 from trunk

Modified:
jackrabbit/oak/branches/1.8/   (props changed)
jackrabbit/oak/branches/1.8/oak-parent/pom.xml

Propchange: jackrabbit/oak/branches/1.8/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Mar  7 10:05:58 2018
@@ -1,3 +1,3 @@
 /jackrabbit/oak/branches/1.0:1665962
-/jackrabbit/oak/trunk:1820660-1820661,1820729,1820734,1820859,1820861,1820878,1820888,1820947,1821130,1821140-1821141,1821240,1821249,1821258,1821325,1821358,1821361-1821362,1821370,1821375,1821393,1821477,1821487,1821516,1821665,1821668,1821681,1822121,1822201,1822723,1822808,1822850,1822934,1823135,1823163,1823169,1824962,1825362,1825381,1825442,1825448,1825466,1825470,1825475,1825523,1825525,1825619-1825621,1825651,1825992,1826079
+/jackrabbit/oak/trunk:1820660-1820661,1820729,1820734,1820859,1820861,1820878,1820888,1820947,1821130,1821140-1821141,1821240,1821249,1821258,1821325,1821358,1821361-1821362,1821370,1821375,1821393,1821477,1821487,1821516,1821665,1821668,1821681,1822121,1822201,1822723,1822808,1822850,1822934,1823135,1823163,1823169,1824962,1825362,1825381,1825442,1825448,1825466,1825470,1825475,1825523,1825525,1825619-1825621,1825651,1825992,1826079,1826090
 /jackrabbit/trunk:1345480

Modified: jackrabbit/oak/branches/1.8/oak-parent/pom.xml
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.8/oak-parent/pom.xml?rev=1826093&r1=1826092&r2=1826093&view=diff
==
--- jackrabbit/oak/branches/1.8/oak-parent/pom.xml (original)
+++ jackrabbit/oak/branches/1.8/oak-parent/pom.xml Wed Mar  7 10:05:58 2018
@@ -127,7 +127,6 @@
 ${java.version}
 true
 
-  http://docs.oracle.com/javase/7/docs/api/
   
https://docs.adobe.com/docs/en/spec/javax.jcr/javadocs/jcr-2.0/
   http://jackrabbit.apache.org/api/trunk/
 




svn commit: r1826096 - /jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBVersionGCSupport.java

2018-03-07 Thread reschke
Author: reschke
Date: Wed Mar  7 13:15:37 2018
New Revision: 1826096

URL: http://svn.apache.org/viewvc?rev=1826096&view=rev
Log:
OAK-7314: RDB*Store: use SDMAXREV column in RevisionGC query

Modified:

jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBVersionGCSupport.java

Modified: 
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBVersionGCSupport.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBVersionGCSupport.java?rev=1826096&r1=1826095&r2=1826096&view=diff
==
--- 
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBVersionGCSupport.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBVersionGCSupport.java
 Wed Mar  7 13:15:37 2018
@@ -85,6 +85,7 @@ public class RDBVersionGCSupport extends
 
 List conditions1 = new ArrayList();
 conditions1.add(new QueryCondition(NodeDocument.SD_TYPE, "in", 
gcTypeCodes));
+conditions1.add(new 
QueryCondition(NodeDocument.SD_MAX_REV_TIME_IN_SECS, "<=", 
NodeDocument.getModifiedInSecs(oldestRevTimeStamp)));
 conditions1.add(new QueryCondition(RDBDocumentStore.VERSIONPROP, 
">=", 2));
 name1 = "version 2 query";
 it1 = store.queryAsIterable(Collection.NODES, null, null, 
Collections.emptyList(), conditions1,




svn commit: r1826097 - in /jackrabbit/oak/branches/1.8: ./ oak-parent/pom.xml

2018-03-07 Thread reschke
Author: reschke
Date: Wed Mar  7 13:17:51 2018
New Revision: 1826097

URL: http://svn.apache.org/viewvc?rev=1826097&view=rev
Log:
OAK-7204: RDB*Store: update postgresql JDBC driver reference to 42.2.0 (ported 
to 1.8)

Modified:
jackrabbit/oak/branches/1.8/   (props changed)
jackrabbit/oak/branches/1.8/oak-parent/pom.xml

Propchange: jackrabbit/oak/branches/1.8/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Mar  7 13:17:51 2018
@@ -1,3 +1,3 @@
 /jackrabbit/oak/branches/1.0:1665962
-/jackrabbit/oak/trunk:1820660-1820661,1820729,1820734,1820859,1820861,1820878,1820888,1820947,1821130,1821140-1821141,1821240,1821249,1821258,1821325,1821358,1821361-1821362,1821370,1821375,1821393,1821477,1821487,1821516,1821665,1821668,1821681,1822121,1822201,1822723,1822808,1822850,1822934,1823135,1823163,1823169,1824962,1825362,1825381,1825442,1825448,1825466,1825470,1825475,1825523,1825525,1825619-1825621,1825651,1825992,1826079,1826090
+/jackrabbit/oak/trunk:1820660-1820661,1820729,1820734,1820859,1820861,1820878,1820888,1820947,1821130,1821140-1821141,1821240,1821249,1821258,1821325,1821358,1821361-1821362,1821370,1821375,1821393,1821477,1821487,1821516,1821665,1821668,1821681,1822121,1822201,1822207,1822723,1822808,1822850,1822934,1823135,1823163,1823169,1824962,1825362,1825381,1825442,1825448,1825466,1825470,1825475,1825523,1825525,1825619-1825621,1825651,1825992,1826079,1826090
 /jackrabbit/trunk:1345480

Modified: jackrabbit/oak/branches/1.8/oak-parent/pom.xml
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.8/oak-parent/pom.xml?rev=1826097&r1=1826096&r2=1826097&view=diff
==
--- jackrabbit/oak/branches/1.8/oak-parent/pom.xml (original)
+++ jackrabbit/oak/branches/1.8/oak-parent/pom.xml Wed Mar  7 13:17:51 2018
@@ -898,7 +898,7 @@
 
   org.postgresql
   postgresql
-  42.1.4
+  42.2.0
 
   
 




svn commit: r1826098 - in /jackrabbit/oak/trunk/oak-core/src: main/java/org/apache/jackrabbit/oak/ main/java/org/apache/jackrabbit/oak/plugins/atomic/ test/java/org/apache/jackrabbit/oak/plugins/atomi

2018-03-07 Thread davide
Author: davide
Date: Wed Mar  7 13:57:55 2018
New Revision: 1826098

URL: http://svn.apache.org/viewvc?rev=1826098&view=rev
Log:
OAK-7225 - Replace AtomicCounter Supplier

Modified:

jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java

jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/atomic/AtomicCounterEditorProvider.java

jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/atomic/AtomicCounterEditorTest.java

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java?rev=1826098&r1=1826097&r2=1826098&view=diff
==
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java 
(original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java 
Wed Mar  7 13:57:55 2018
@@ -40,6 +40,7 @@ import java.util.concurrent.ThreadFactor
 import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
+import java.util.function.Supplier;
 
 import javax.annotation.Nonnull;
 import javax.jcr.NoSuchWorkspaceException;
@@ -50,7 +51,6 @@ import javax.management.StandardMBean;
 import javax.security.auth.login.LoginException;
 
 import com.google.common.base.Function;
-import com.google.common.base.Supplier;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/atomic/AtomicCounterEditorProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/atomic/AtomicCounterEditorProvider.java?rev=1826098&r1=1826097&r2=1826098&view=diff
==
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/atomic/AtomicCounterEditorProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/atomic/AtomicCounterEditorProvider.java
 Wed Mar  7 13:57:55 2018
@@ -20,6 +20,7 @@ import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.ThreadFactory;
 import java.util.concurrent.atomic.AtomicReference;
+import java.util.function.Supplier;
 
 import javax.annotation.Nullable;
 
@@ -43,7 +44,6 @@ import org.osgi.service.component.annota
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Supplier;
 import com.google.common.util.concurrent.ThreadFactoryBuilder;
 
 import static 
org.osgi.service.component.annotations.ReferenceCardinality.OPTIONAL;

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/atomic/AtomicCounterEditorTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/atomic/AtomicCounterEditorTest.java?rev=1826098&r1=1826097&r2=1826098&view=diff
==
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/atomic/AtomicCounterEditorTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/atomic/AtomicCounterEditorTest.java
 Wed Mar  7 13:57:55 2018
@@ -46,11 +46,11 @@ import java.util.concurrent.ScheduledExe
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
+import java.util.function.Supplier;
 
 import javax.annotation.CheckForNull;
 import javax.annotation.Nonnull;
 
-import com.google.common.base.Supplier;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Sets;
 import org.apache.jackrabbit.oak.api.CommitFailedException;




svn commit: r1826110 - in /jackrabbit/oak/branches/1.8: ./ oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBVersionGCSupport.java

2018-03-07 Thread reschke
Author: reschke
Date: Wed Mar  7 14:32:29 2018
New Revision: 1826110

URL: http://svn.apache.org/viewvc?rev=1826110&view=rev
Log:
OAK-7314: RDB*Store: use SDMAXREV column in RevisionGC query (ported to 1.8)

Modified:
jackrabbit/oak/branches/1.8/   (props changed)

jackrabbit/oak/branches/1.8/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBVersionGCSupport.java

Propchange: jackrabbit/oak/branches/1.8/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Mar  7 14:32:29 2018
@@ -1,3 +1,3 @@
 /jackrabbit/oak/branches/1.0:1665962
-/jackrabbit/oak/trunk:1820660-1820661,1820729,1820734,1820859,1820861,1820878,1820888,1820947,1821130,1821140-1821141,1821240,1821249,1821258,1821325,1821358,1821361-1821362,1821370,1821375,1821393,1821477,1821487,1821516,1821665,1821668,1821681,1822121,1822201,1822207,1822723,1822808,1822850,1822934,1823135,1823163,1823169,1824962,1825362,1825381,1825442,1825448,1825466,1825470,1825475,1825523,1825525,1825619-1825621,1825651,1825992,1826079,1826090
+/jackrabbit/oak/trunk:1820660-1820661,1820729,1820734,1820859,1820861,1820878,1820888,1820947,1821130,1821140-1821141,1821240,1821249,1821258,1821325,1821358,1821361-1821362,1821370,1821375,1821393,1821477,1821487,1821516,1821665,1821668,1821681,1822121,1822201,1822207,1822723,1822808,1822850,1822934,1823135,1823163,1823169,1824962,1825362,1825381,1825442,1825448,1825466,1825470,1825475,1825523,1825525,1825619-1825621,1825651,1825992,1826079,1826090,1826096
 /jackrabbit/trunk:1345480

Modified: 
jackrabbit/oak/branches/1.8/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBVersionGCSupport.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.8/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBVersionGCSupport.java?rev=1826110&r1=1826109&r2=1826110&view=diff
==
--- 
jackrabbit/oak/branches/1.8/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBVersionGCSupport.java
 (original)
+++ 
jackrabbit/oak/branches/1.8/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBVersionGCSupport.java
 Wed Mar  7 14:32:29 2018
@@ -85,6 +85,7 @@ public class RDBVersionGCSupport extends
 
 List conditions1 = new ArrayList();
 conditions1.add(new QueryCondition(NodeDocument.SD_TYPE, "in", 
gcTypeCodes));
+conditions1.add(new 
QueryCondition(NodeDocument.SD_MAX_REV_TIME_IN_SECS, "<=", 
NodeDocument.getModifiedInSecs(oldestRevTimeStamp)));
 conditions1.add(new QueryCondition(RDBDocumentStore.VERSIONPROP, 
">=", 2));
 name1 = "version 2 query";
 it1 = store.queryAsIterable(Collection.NODES, null, null, 
Collections.emptyList(), conditions1,




svn commit: r1826121 - /jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/BlobIdRecordTest.java

2018-03-07 Thread mduerig
Author: mduerig
Date: Wed Mar  7 15:05:40 2018
New Revision: 1826121

URL: http://svn.apache.org/viewvc?rev=1826121&view=rev
Log:
@trivial: correctly sort modifiers

Modified:

jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/BlobIdRecordTest.java

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/BlobIdRecordTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/BlobIdRecordTest.java?rev=1826121&r1=1826120&r2=1826121&view=diff
==
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/BlobIdRecordTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/BlobIdRecordTest.java
 Wed Mar  7 15:05:40 2018
@@ -42,7 +42,7 @@ import org.junit.rules.TemporaryFolder;
 
 public class BlobIdRecordTest {
 
-private static abstract class IdMappingBlobStore implements BlobStore {
+private abstract static class IdMappingBlobStore implements BlobStore {
 
 private final MemoryBlobStore bs = new MemoryBlobStore();
 




svn commit: r1826123 - /jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentParserTest.java

2018-03-07 Thread mduerig
Author: mduerig
Date: Wed Mar  7 15:55:12 2018
New Revision: 1826123

URL: http://svn.apache.org/viewvc?rev=1826123&view=rev
Log:
OAK-7317: SegmentParser#parseBlob does not long ids of external blobs
Added ignored test case

Modified:

jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentParserTest.java

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentParserTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentParserTest.java?rev=1826123&r1=1826122&r2=1826123&view=diff
==
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentParserTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentParserTest.java
 Wed Mar  7 15:55:12 2018
@@ -20,6 +20,7 @@
 package org.apache.jackrabbit.oak.segment;
 
 import static com.google.common.base.Strings.repeat;
+import static com.google.common.collect.Lists.newArrayList;
 import static com.google.common.collect.Lists.newArrayListWithCapacity;
 import static com.google.common.collect.Maps.newHashMap;
 import static org.apache.jackrabbit.oak.api.Type.BINARY;
@@ -30,6 +31,7 @@ import static org.apache.jackrabbit.oak.
 import static 
org.apache.jackrabbit.oak.segment.DefaultSegmentWriterBuilder.defaultSegmentWriterBuilder;
 import static org.apache.jackrabbit.oak.segment.Segment.MEDIUM_LIMIT;
 import static org.apache.jackrabbit.oak.segment.Segment.SMALL_LIMIT;
+import static 
org.apache.jackrabbit.oak.segment.SegmentParser.BlobType.EXTERNAL;
 import static org.apache.jackrabbit.oak.segment.SegmentParser.BlobType.LONG;
 import static org.apache.jackrabbit.oak.segment.SegmentParser.BlobType.MEDIUM;
 import static org.apache.jackrabbit.oak.segment.SegmentParser.BlobType.SMALL;
@@ -37,12 +39,19 @@ import static org.apache.jackrabbit.oak.
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 
 import java.io.IOException;
+import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 import java.util.Random;
 
+import javax.annotation.CheckForNull;
+
+import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableList;
 import org.apache.jackrabbit.oak.api.Blob;
 import org.apache.jackrabbit.oak.api.Type;
@@ -53,12 +62,37 @@ import org.apache.jackrabbit.oak.segment
 import org.apache.jackrabbit.oak.segment.SegmentParser.NodeInfo;
 import org.apache.jackrabbit.oak.segment.SegmentParser.ValueInfo;
 import org.apache.jackrabbit.oak.segment.memory.MemoryStore;
+import org.apache.jackrabbit.oak.spi.blob.BlobStore;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
+import org.junit.Assume;
 import org.junit.Before;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
 
+@RunWith(Parameterized.class)
 public class SegmentParserTest {
 
+@Parameterized.Parameters(name="{1}")
+public static Collection fixtures() throws Exception {
+BlobStore shortIdBlobStore = mock(BlobStore.class);
+when(shortIdBlobStore.writeBlob(any())).thenReturn("shortId");
+
+BlobStore longIdBlobStore = mock(BlobStore.class);
+
when(longIdBlobStore.writeBlob(any())).thenReturn(Strings.repeat("shortId", 
1000));
+
+return newArrayList(
+new Object[]{null, "No BlobStore"},
+new Object[]{shortIdBlobStore, "Short Id BlobStore"},
+new Object[]{longIdBlobStore, "Long Id BlobStore"});
+}
+
+private final BlobStore blobStore;
+
+public SegmentParserTest(BlobStore blobStore, String name) {
+this.blobStore = blobStore;
+}
+
 private MemoryStore store;
 
 private DefaultSegmentWriter writer;
@@ -138,7 +172,13 @@ public class SegmentParserTest {
 
 @Before
 public void setup() throws IOException {
-store = new MemoryStore();
+store = new MemoryStore() {
+@CheckForNull
+@Override
+public BlobStore getBlobStore() {
+return blobStore;
+}
+};
 writer = defaultSegmentWriterBuilder("").build(store);
 }
 
@@ -334,12 +374,14 @@ public class SegmentParserTest {
 @Test
 public void longBlob() throws IOException {
 SegmentBlob blob = new SegmentBlob(store.getBlobStore(), 
writer.writeBlob(createRandomBlob(MEDIUM_LIMIT)));
+// FIXME OAK-7317: SegmentParser#parseBlob does not long ids of 
external blobs
+Assume.assumeTrue(blob.getBlobId() == null || 
"shortId".equals(blob.getBlobId()));
 ValueInfo valueInfo = new TestParser(store.g

svn commit: r1826128 - in /jackrabbit/oak/branches/1.8: ./ oak-parent/pom.xml

2018-03-07 Thread reschke
Author: reschke
Date: Wed Mar  7 16:05:02 2018
New Revision: 1826128

URL: http://svn.apache.org/viewvc?rev=1826128&view=rev
Log:
OAK-7299: RDB*Store: update postgresql JDBC driver reference to 42.2.1 (ported 
to 1.8)

Modified:
jackrabbit/oak/branches/1.8/   (props changed)
jackrabbit/oak/branches/1.8/oak-parent/pom.xml

Propchange: jackrabbit/oak/branches/1.8/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Mar  7 16:05:02 2018
@@ -1,3 +1,3 @@
 /jackrabbit/oak/branches/1.0:1665962
-/jackrabbit/oak/trunk:1820660-1820661,1820729,1820734,1820859,1820861,1820878,1820888,1820947,1821130,1821140-1821141,1821240,1821249,1821258,1821325,1821358,1821361-1821362,1821370,1821375,1821393,1821477,1821487,1821516,1821665,1821668,1821681,1822121,1822201,1822207,1822723,1822808,1822850,1822934,1823135,1823163,1823169,1824962,1825362,1825381,1825442,1825448,1825466,1825470,1825475,1825523,1825525,1825619-1825621,1825651,1825992,1826079,1826090,1826096
+/jackrabbit/oak/trunk:1820660-1820661,1820729,1820734,1820859,1820861,1820878,1820888,1820947,1821130,1821140-1821141,1821240,1821249,1821258,1821325,1821358,1821361-1821362,1821370,1821375,1821393,1821477,1821487,1821516,1821665,1821668,1821681,1822121,1822201,1822207,1822723,1822808,1822850,1822934,1823135,1823163,1823169,1824962,1825362,1825381,1825442,1825448,1825466,1825470,1825475,1825523,1825525,1825619-1825621,1825651,1825654,1825992,1826079,1826090,1826096
 /jackrabbit/trunk:1345480

Modified: jackrabbit/oak/branches/1.8/oak-parent/pom.xml
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.8/oak-parent/pom.xml?rev=1826128&r1=1826127&r2=1826128&view=diff
==
--- jackrabbit/oak/branches/1.8/oak-parent/pom.xml (original)
+++ jackrabbit/oak/branches/1.8/oak-parent/pom.xml Wed Mar  7 16:05:02 2018
@@ -898,7 +898,7 @@
 
   org.postgresql
   postgresql
-  42.2.0
+  42.2.1
 
   
 




svn commit: r1826132 - in /jackrabbit/oak/trunk/oak-segment-tar/src: main/java/org/apache/jackrabbit/oak/segment/SegmentParser.java test/java/org/apache/jackrabbit/oak/segment/SegmentParserTest.java

2018-03-07 Thread mduerig
Author: mduerig
Date: Wed Mar  7 16:18:23 2018
New Revision: 1826132

URL: http://svn.apache.org/viewvc?rev=1826132&view=rev
Log:
OAK-7317: SegmentParser#parseBlob does not long ids of external blobs

Modified:

jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentParser.java

jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentParserTest.java

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentParser.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentParser.java?rev=1826132&r1=1826131&r2=1826132&view=diff
==
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentParser.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/SegmentParser.java
 Wed Mar  7 16:18:23 2018
@@ -19,17 +19,20 @@
 
 package org.apache.jackrabbit.oak.segment;
 
+import static com.google.common.base.Charsets.UTF_8;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.Lists.newArrayList;
 import static com.google.common.collect.Lists.newArrayListWithCapacity;
 import static java.util.Collections.singletonList;
+import static java.util.Objects.requireNonNull;
 import static org.apache.jackrabbit.oak.api.Type.BINARY;
-import static org.apache.jackrabbit.oak.segment.SegmentStream.BLOCK_SIZE;
 import static org.apache.jackrabbit.oak.segment.ListRecord.LEVEL_SIZE;
 import static org.apache.jackrabbit.oak.segment.Segment.MEDIUM_LIMIT;
 import static org.apache.jackrabbit.oak.segment.Segment.RECORD_ID_BYTES;
 import static org.apache.jackrabbit.oak.segment.Segment.SMALL_LIMIT;
+import static org.apache.jackrabbit.oak.segment.SegmentBlob.readBlobId;
+import static org.apache.jackrabbit.oak.segment.SegmentStream.BLOCK_SIZE;
 import static org.apache.jackrabbit.oak.segment.Template.MANY_CHILD_NODES;
 import static org.apache.jackrabbit.oak.segment.Template.ZERO_CHILD_NODES;
 
@@ -674,8 +677,13 @@ public class SegmentParser {
 size += (8 + RECORD_ID_BYTES + length);
 blobType = BlobType.LONG;
 } else if ((head & 0xf0) == 0xe0) {
-// 1110 : external value
-int length = (head & 0x0f) << 8 | 
(segment.readByte(blobId.getRecordNumber(), 1) & 0xff);
+// 1110 : external value, short blob ID
+int length = UTF_8.encode(requireNonNull(readBlobId(segment, 
blobId.getRecordNumber(.limit();
+size += (2 + length);
+blobType = BlobType.EXTERNAL;
+} else if ((head & 0xf8) == 0xf0) {
+//  0xxx: external value, long blob ID
+int length = UTF_8.encode(requireNonNull(readBlobId(segment, 
blobId.getRecordNumber(.limit();
 size += (2 + length);
 blobType = BlobType.EXTERNAL;
 } else {

Modified: 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentParserTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentParserTest.java?rev=1826132&r1=1826131&r2=1826132&view=diff
==
--- 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentParserTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-segment-tar/src/test/java/org/apache/jackrabbit/oak/segment/SegmentParserTest.java
 Wed Mar  7 16:18:23 2018
@@ -64,7 +64,6 @@ import org.apache.jackrabbit.oak.segment
 import org.apache.jackrabbit.oak.segment.memory.MemoryStore;
 import org.apache.jackrabbit.oak.spi.blob.BlobStore;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
-import org.junit.Assume;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -374,8 +373,6 @@ public class SegmentParserTest {
 @Test
 public void longBlob() throws IOException {
 SegmentBlob blob = new SegmentBlob(store.getBlobStore(), 
writer.writeBlob(createRandomBlob(MEDIUM_LIMIT)));
-// FIXME OAK-7317: SegmentParser#parseBlob does not long ids of 
external blobs
-Assume.assumeTrue(blob.getBlobId() == null || 
"shortId".equals(blob.getBlobId()));
 ValueInfo valueInfo = new TestParser(store.getReader(), "longBlob") {
 @Override
 protected void onBlob(RecordId parentId, RecordId blobId) {