Author: reschke
Date: Tue Apr 8 16:10:56 2014
New Revision: 1585770
URL: http://svn.apache.org/r1585770
Log:
OAK-1266 - improve diagnostics for failed updates
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java?rev=1585770&r1=1585769&r2=1585770&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
Tue Apr 8 16:10:56 2014
@@ -344,6 +344,7 @@ public class RDBDocumentStore implements
oldDoc = readDocumentCached(collection, update.getId(),
Integer.MAX_VALUE);
if (oldDoc == null) {
// something else went wrong
+ LOG.error("insert failed, but document " + update.getId()
+ " is not present, aborting", ex);
throw (ex);
}
return internalUpdate(collection, update, oldDoc,
checkConditions, RETRIES);
@@ -355,13 +356,14 @@ public class RDBDocumentStore implements
@CheckForNull
private <T extends Document> T internalUpdate(Collection<T> collection,
UpdateOp update, T oldDoc, boolean checkConditions,
- int retries) {
+ int maxRetries) {
T doc = applyChanges(collection, oldDoc, update, checkConditions);
if (doc == null) {
return null;
} else {
boolean success = false;
+ int retries = maxRetries;
while (!success && retries > 0) {
success = updateDocument(collection, doc, (Long)
oldDoc.get(MODCOUNT));
if (!success) {
@@ -378,7 +380,7 @@ public class RDBDocumentStore implements
}
if (!success) {
- throw new MicroKernelException("failed update (race?)");
+ throw new MicroKernelException("failed update (race?) after "
+ maxRetries + " retries");
}
return oldDoc;