Author: reschke
Date: Mon May 27 09:30:47 2019
New Revision: 1860114
URL: http://svn.apache.org/viewvc?rev=1860114&view=rev
Log:
OAK-8346: RDBDocumentStore*: fix several potential but improbable NPEs
Modified:
jackrabbit/oak/branches/1.10/ (props changed)
jackrabbit/oak/branches/1.10/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
jackrabbit/oak/branches/1.10/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreJDBC.java
Propchange: jackrabbit/oak/branches/1.10/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon May 27 09:30:47 2019
@@ -1,3 +1,3 @@
/jackrabbit/oak/branches/1.0:1665962
-/jackrabbit/oak/trunk:1850874,1850882,1851236,1851253,1851451,1851533-1851535,1851619,1852052,1852084,1852120,1852135,1852451,1852492-1852493,1852528,1852582,1852584,1852601,1852920,1853083,1853141,1853229,1853393,1853429,1853433,1853441,1853866,1853868,1853870,1853893,1853969,1853997,1854034,1854044,1854055,1854058,1854113,1854373,1854377,1854380,1854385,1854401,1854403,1854455,1854461-1854462,1854466,1854468,1854515,1854533,1854539,1854701,1854773-1854774,1854827,1854848,1854859,1854930,1854990-1854991,1855032,1855221,1855477-1855478,1855776,1855993,1856049,1856056,1856538,1856545,1857000,1857010,1857104,1857159,1857212,1857221,1857238,1857247,1857253,1857294,1857314,1857577,1857635,1857638,1857640,1857687,1857936,1858032,1858053,1858123,1858139,1858571,1858578,1858810,1858926,1858931,1859231,1859292,1859294,1859619,1859716,1859776,1859780,1859843,1859854
+/jackrabbit/oak/trunk:1850874,1850882,1851236,1851253,1851451,1851533-1851535,1851619,1852052,1852084,1852120,1852135,1852451,1852492-1852493,1852528,1852582,1852584,1852601,1852920,1853083,1853141,1853229,1853393,1853429,1853433,1853441,1853866,1853868,1853870,1853893,1853969,1853997,1854034,1854044,1854055,1854058,1854113,1854373,1854377,1854380,1854385,1854401,1854403,1854455,1854461-1854462,1854466,1854468,1854515,1854533,1854539,1854701,1854773-1854774,1854827,1854848,1854859,1854930,1854990-1854991,1855032,1855221,1855477-1855478,1855776,1855993,1856049,1856056,1856538,1856545,1857000,1857010,1857104,1857159,1857212,1857221,1857238,1857247,1857253,1857294,1857314,1857577,1857635,1857638,1857640,1857687,1857936,1858032,1858053,1858123,1858139,1858571,1858578,1858810,1858926,1858931,1859231,1859292,1859294,1859619,1859716,1859776,1859780,1859843,1859854,1859881
/jackrabbit/trunk:1345480
Modified:
jackrabbit/oak/branches/1.10/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.10/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java?rev=1860114&r1=1860113&r2=1860114&view=diff
==============================================================================
---
jackrabbit/oak/branches/1.10/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
(original)
+++
jackrabbit/oak/branches/1.10/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
Mon May 27 09:30:47 2019
@@ -833,7 +833,7 @@ public class RDBDocumentStore implements
private <T extends Document> T getIfCached(Collection<T> collection,
String id, long modCount) {
T doc = getIfCached(collection, id);
- if (doc != null && doc.getModCount() == modCount) {
+ if (doc != null && doc.getModCount() != null && doc.getModCount() ==
modCount) {
return doc;
} else {
return null;
Modified:
jackrabbit/oak/branches/1.10/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreJDBC.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.10/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreJDBC.java?rev=1860114&r1=1860113&r2=1860114&view=diff
==============================================================================
---
jackrabbit/oak/branches/1.10/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreJDBC.java
(original)
+++
jackrabbit/oak/branches/1.10/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreJDBC.java
Mon May 27 09:30:47 2019
@@ -62,6 +62,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.base.Function;
+import com.google.common.base.Strings;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
@@ -84,6 +85,8 @@ public class RDBDocumentStoreJDBC {
private final RDBDocumentSerializer ser;
private final int queryHitsLimit, queryTimeLimit;
+ private static final Long INITIALMODCOUNT = Long.valueOf(1);
+
public RDBDocumentStoreJDBC(RDBDocumentStoreDB dbInfo,
RDBDocumentSerializer ser, int queryHitsLimit, int queryTimeLimit) {
this.dbInfo = dbInfo;
this.ser = ser;
@@ -343,7 +346,7 @@ public class RDBDocumentStoreJDBC {
boolean batchIsEmpty = true;
for (T document : sortDocuments(documents)) {
Long modcount = (Long) document.get(MODCOUNT);
- if (modcount == 1) {
+ if (INITIALMODCOUNT.equals(modcount)) {
continue; // This is a new document. We'll deal with the
inserts later.
}
@@ -414,7 +417,7 @@ public class RDBDocumentStoreJDBC {
if (upsert) {
List<T> toBeInserted = new ArrayList<T>(documents.size());
for (T doc : documents) {
- if ((Long) doc.get(MODCOUNT) == 1) {
+ if (INITIALMODCOUNT.equals(doc.get(MODCOUNT))) {
toBeInserted.add(doc);
}
}
@@ -1111,7 +1114,7 @@ public class RDBDocumentStoreJDBC {
Collections.sort(result, new Comparator<T>() {
@Override
public int compare(T o1, T o2) {
- return o1.getId().compareTo(o2.getId());
+ return
Strings.nullToEmpty(o1.getId()).compareTo(Strings.nullToEmpty(o2.getId()));
}
});
return result;