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);
}
}