Author: reschke
Date: Fri May 24 14:16:36 2019
New Revision: 1859881

URL: http://svn.apache.org/viewvc?rev=1859881&view=rev
Log:
OAK-8346: RDBDocumentStore*: fix several potential but improbable NPEs

Modified:
    
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
    
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreJDBC.java

Modified: 
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java?rev=1859881&r1=1859880&r2=1859881&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
 Fri May 24 14:16:36 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/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreJDBC.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreJDBC.java?rev=1859881&r1=1859880&r2=1859881&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreJDBC.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStoreJDBC.java
 Fri May 24 14:16:36 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