Author: mreutegg
Date: Tue Sep 10 08:00:30 2019
New Revision: 1866730
URL: http://svn.apache.org/viewvc?rev=1866730&view=rev
Log:
OAK-8591: Conflict exception on commit
Apply proposed changes and enable tests
Modified:
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/NodeDocument.java
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/NodeDocumentTest.java
Modified:
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/NodeDocument.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/NodeDocument.java?rev=1866730&r1=1866729&r2=1866730&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/NodeDocument.java
(original)
+++
jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/NodeDocument.java
Tue Sep 10 08:00:30 2019
@@ -885,19 +885,15 @@ public final class NodeDocument extends
if (validRevisions.containsKey(rev)) {
return true;
}
- if (Utils.isCommitted(commitValue) && !readRevision.isBranch()) {
- // no need to load commit root document, we can simply
- // tell by looking at the commit revision whether the
- // revision is valid/visible
- Revision commitRev = Utils.resolveCommitRevision(rev, commitValue);
- return !readRevision.isRevisionNewer(commitRev);
+ // get the commit value if it is not yet available
+ if (commitValue == null) {
+ commitValue = context.getCommitValue(rev, this);
}
-
- NodeDocument doc = getCommitRoot(rev);
- if (doc == null) {
+ if (commitValue == null) {
+ // this change is not committed, hence not valid/visible
return false;
}
- if (doc.isVisible(context, rev, commitValue, readRevision)) {
+ if (isVisible(context, rev, commitValue, readRevision)) {
validRevisions.put(rev, commitValue);
return true;
}
@@ -2060,22 +2056,15 @@ public final class NodeDocument extends
* to check.
*
* @param revision the revision to check.
- * @param commitValue the commit value of the revision to check or
- * <code>null</code> if unknown.
+ * @param commitValue the commit value of the revision to check.
* @param readRevision the read revision.
* @return <code>true</code> if the revision is visible, otherwise
* <code>false</code>.
*/
private boolean isVisible(@NotNull RevisionContext context,
@NotNull Revision revision,
- @Nullable String commitValue,
+ @NotNull String commitValue,
@NotNull RevisionVector readRevision) {
- if (commitValue == null) {
- commitValue = context.getCommitValue(revision, this);
- }
- if (commitValue == null) {
- return false;
- }
if (Utils.isCommitted(commitValue)) {
Branch b = context.getBranches().getBranch(readRevision);
if (b == null) {
Modified:
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/NodeDocumentTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/NodeDocumentTest.java?rev=1866730&r1=1866729&r2=1866730&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/NodeDocumentTest.java
(original)
+++
jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/NodeDocumentTest.java
Tue Sep 10 08:00:30 2019
@@ -43,7 +43,6 @@ import org.apache.jackrabbit.oak.spi.com
import org.apache.jackrabbit.oak.spi.commit.EmptyHook;
import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
import org.apache.jackrabbit.oak.spi.state.NodeStore;
-import org.junit.Ignore;
import org.junit.Test;
import static com.google.common.collect.Maps.newLinkedHashMap;
@@ -479,13 +478,11 @@ public class NodeDocumentTest {
ns.dispose();
}
- @Ignore
@Test
public void getNewestRevisionAfterGC() throws Exception {
getNewestRevisionAfterGC(false);
}
- @Ignore
@Test
public void getNewestRevisionAfterGCWithBranchCommit() throws Exception {
getNewestRevisionAfterGC(true);