Author: reschke
Date: Mon Nov 23 11:29:34 2015
New Revision: 1715771

URL: http://svn.apache.org/viewvc?rev=1715771&view=rev
Log:
OAK-3661: RDBDocumentStore: improve logging for invalid data in persistence

Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentSerializer.java

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentSerializer.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentSerializer.java?rev=1715771&r1=1715770&r2=1715771&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentSerializer.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentSerializer.java
 Mon Nov 23 11:29:34 2015
@@ -43,6 +43,8 @@ import org.apache.jackrabbit.oak.plugins
 import org.apache.jackrabbit.oak.plugins.document.UpdateOp;
 import org.apache.jackrabbit.oak.plugins.document.UpdateOp.Key;
 import org.apache.jackrabbit.oak.plugins.document.UpdateOp.Operation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Serialization/Parsing of documents.
@@ -61,6 +63,8 @@ public class RDBDocumentSerializer {
 
     private final Comparator<Revision> comparator = 
StableRevisionComparator.REVERSE;
 
+    private static final Logger LOG = 
LoggerFactory.getLogger(RDBDocumentSerializer.class);
+
     public RDBDocumentSerializer(DocumentStore store, Set<String> 
columnProperties) {
         this.store = store;
         this.columnProperties = columnProperties;
@@ -211,10 +215,11 @@ public class RDBDocumentSerializer {
             throw new DocumentStoreException(ex);
         }
 
+        String charData = row.getData();
+        json = new JsopTokenizer(charData);
+
         // start processing the VARCHAR data
         try {
-            json = new JsopTokenizer(row.getData());
-
             int next = json.read();
 
             if (next == '{') {
@@ -251,7 +256,16 @@ public class RDBDocumentSerializer {
 
             return doc;
         } catch (Exception ex) {
-            throw new DocumentStoreException(ex);
+            String message = String.format("Error processing persisted data 
for document '%s'", row.getId());
+            if (charData.length() > 0) {
+                int last = charData.charAt(charData.length() - 1);
+                if (last != '}' && last != '"' && last != ']') {
+                    message += " (DATA column might be truncated)";
+                }
+            }
+
+            LOG.error(message, ex);
+            throw new DocumentStoreException(message, ex);
         }
     }
 


Reply via email to