You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by th...@apache.org on 2013/05/15 12:29:41 UTC
svn commit: r1482750 - in
/jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk:
Commit.java MongoMK.java
Author: thomasm
Date: Wed May 15 10:29:41 2013
New Revision: 1482750
URL: http://svn.apache.org/r1482750
Log:
OAK-619 MongoMK: improved logging and exception messages
Modified:
jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/Commit.java
jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/MongoMK.java
Modified: jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/Commit.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/Commit.java?rev=1482750&r1=1482749&r2=1482750&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/Commit.java (original)
+++ jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/Commit.java Wed May 15 10:29:41 2013
@@ -275,28 +275,30 @@ public class Commit {
collisions.get().add(uncommitted);
}
});
- MicroKernelException conflict = null;
+ String conflictMessage = null;
if (newestRev == null) {
if (op.isDelete || !op.isNew) {
- conflict = new MicroKernelException("The node " +
- op.path + " does not exist or is already deleted " +
- "before " + revision + "; document " + map);
+ conflictMessage = "The node " +
+ op.path + " does not exist or is already deleted";
}
} else {
if (op.isNew) {
- conflict = new MicroKernelException("The node " +
- op.path + " was already added in revision " +
- newestRev + "; before " + revision + "; document " + map);
+ conflictMessage = "The node " +
+ op.path + " was already added in revision\n" +
+ newestRev;
} else if (mk.isRevisionNewer(newestRev, baseRevision)
&& (op.isDelete || isConflicting(map, op))) {
- conflict = new MicroKernelException("The node " +
- op.path + " was changed in revision " + newestRev +
- ", which was applied after the base revision " +
- baseRevision + "; before " + revision + "; document " + map);
+ conflictMessage = "The node " +
+ op.path + " was changed in revision\n" + newestRev +
+ ", which was applied after the base revision\n" +
+ baseRevision;
}
}
- if (conflict != null) {
- throw conflict;
+ if (conflictMessage != null) {
+ conflictMessage += ", before\n" + revision +
+ "; document:\n" + map.toString().replaceAll(", _", ",\n_").replaceAll("}, ", "},\n") +
+ ",\nrevision order:\n" + mk.getRevisionComparator();
+ throw new MicroKernelException(conflictMessage);
}
// if we get here the modification was successful
// -> check for collisions and conflict (concurrent updates
Modified: jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/MongoMK.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/MongoMK.java?rev=1482750&r1=1482749&r2=1482750&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/MongoMK.java (original)
+++ jackrabbit/oak/trunk/oak-mongomk/src/main/java/org/apache/jackrabbit/mongomk/MongoMK.java Wed May 15 10:29:41 2013
@@ -169,6 +169,11 @@ public class MongoMK implements MicroKer
private Thread backgroundThread;
private AtomicInteger simpleRevisionCounter;
+
+ /**
+ * The comparator for revisions.
+ */
+ private final RevisionComparator revisionComparator;
/**
* Unmerged branches of this MongoMK instance.
@@ -177,11 +182,6 @@ public class MongoMK implements MicroKer
// need to be garbage collected (in-memory and on disk)
private final UnmergedBranches branches = new UnmergedBranches();
- /**
- * The comparator for revisions.
- */
- private final RevisionComparator revisionComparator;
-
private boolean stopBackground;
MongoMK(Builder builder) {
@@ -416,11 +416,11 @@ public class MongoMK implements MicroKer
}
private void checkRevisionAge(Revision r, String path) {
- if (headRevision.getTimestamp() - r.getTimestamp() > WARN_REVISION_AGE) {
- LOG.warn("Requesting an old revision for path " + path + ", " +
+ // TODO only log if there are new revisions available for the given node
+ if (LOG.isDebugEnabled()) {
+ if (headRevision.getTimestamp() - r.getTimestamp() > WARN_REVISION_AGE) {
+ LOG.debug("Requesting an old revision for path " + path + ", " +
((headRevision.getTimestamp() - r.getTimestamp()) / 1000) + " seconds old");
- if (LOG.isDebugEnabled()) {
- LOG.warn("Requesting an old revision", new Exception());
}
}
}
@@ -1513,8 +1513,13 @@ public class MongoMK implements MicroKer
public boolean isCached(String path) {
return store.isCached(Collection.NODES, Utils.getIdFromPath(path));
}
+
public void stopBackground() {
stopBackground = true;
}
+
+ RevisionComparator getRevisionComparator() {
+ return revisionComparator;
+ }
}