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;


Reply via email to