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 mr...@apache.org on 2014/04/28 16:03:19 UTC
svn commit: r1590643 - in /jackrabbit/oak/branches/1.0: ./
oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/
Author: mreutegg
Date: Mon Apr 28 14:03:19 2014
New Revision: 1590643
URL: http://svn.apache.org/r1590643
Log:
OAK-1773: Optimize upgrade to DocumentNodeStore
Modified:
jackrabbit/oak/branches/1.0/ (props changed)
jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/Commit.java
jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentMK.java
jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeState.java
jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
Propchange: jackrabbit/oak/branches/1.0/
------------------------------------------------------------------------------
Merged /jackrabbit/oak/trunk:r1590628
Modified: jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/Commit.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/Commit.java?rev=1590643&r1=1590642&r2=1590643&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/Commit.java (original)
+++ jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/Commit.java Mon Apr 28 14:03:19 2014
@@ -167,7 +167,7 @@ public class Commit {
Revision baseRev = getBaseRevision();
boolean isBranch = baseRev != null && baseRev.isBranch();
Revision rev = getRevision();
- if (isBranch) {
+ if (isBranch && !nodeStore.isDisableBranches()) {
rev = rev.asBranchRevision();
// remember branch commit
Branch b = nodeStore.getBranches().getBranch(baseRev);
@@ -192,6 +192,9 @@ public class Commit {
} else {
applyInternal();
}
+ if (isBranch) {
+ rev = rev.asBranchRevision();
+ }
return rev;
}
Modified: jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentMK.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentMK.java?rev=1590643&r1=1590642&r2=1590643&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentMK.java (original)
+++ jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentMK.java Mon Apr 28 14:03:19 2014
@@ -463,6 +463,7 @@ public class DocumentMK implements Micro
private boolean useSimpleRevision;
private long splitDocumentAgeMillis = 5 * 60 * 1000;
private long offHeapCacheSize = -1;
+ private boolean disableBranches;
private Clock clock = Clock.SIMPLE;
private Executor executor;
@@ -730,6 +731,15 @@ public class DocumentMK implements Micro
return clock;
}
+ public Builder disableBranches() {
+ disableBranches = true;
+ return this;
+ }
+
+ public boolean isDisableBranches() {
+ return disableBranches;
+ }
+
/**
* Open the DocumentMK instance using the configured options.
*
Modified: jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeState.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeState.java?rev=1590643&r1=1590642&r2=1590643&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeState.java (original)
+++ jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeState.java Mon Apr 28 14:03:19 2014
@@ -209,7 +209,15 @@ class DocumentNodeState extends Abstract
// check if this node state is head of a branch
Branch b = store.getBranches().getBranch(rev);
if (b == null) {
- throw new IllegalStateException("No branch for revision: " + rev);
+ if (store.isDisableBranches()) {
+ if (DocumentNodeStoreBranch.getCurrentBranch() != null) {
+ return new DocumentRootBuilder(this, store);
+ } else {
+ return new MemoryNodeBuilder(this);
+ }
+ } else {
+ throw new IllegalStateException("No branch for revision: " + rev);
+ }
}
if (b.isHead(rev)
&& DocumentNodeStoreBranch.getCurrentBranch() != null) {
Modified: jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java?rev=1590643&r1=1590642&r2=1590643&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java (original)
+++ jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java Mon Apr 28 14:03:19 2014
@@ -310,6 +310,8 @@ public final class DocumentNodeStore
private final LastRevRecoveryAgent lastRevRecoveryAgent;
+ private final boolean disableBranches;
+
public DocumentNodeStore(DocumentMK.Builder builder) {
this.blobStore = builder.getBlobStore();
if (builder.isUseSimpleRevision()) {
@@ -342,6 +344,7 @@ public final class DocumentNodeStore
this.asyncDelay = builder.getAsyncDelay();
this.versionGarbageCollector = new VersionGarbageCollector(this);
this.lastRevRecoveryAgent = new LastRevRecoveryAgent(this);
+ this.disableBranches = builder.isDisableBranches();
this.missing = new DocumentNodeState(this, "MISSING", new Revision(0, 0, 0)) {
@Override
public int getMemory() {
@@ -590,6 +593,10 @@ public final class DocumentNodeStore
return unsavedLastRevisions.getPaths().size();
}
+ public boolean isDisableBranches() {
+ return disableBranches;
+ }
+
/**
* Checks that revision x is newer than another revision.
*
@@ -879,13 +886,19 @@ public final class DocumentNodeStore
List<String> removed, List<String> changed,
DiffCache.Entry cacheEntry) {
UnsavedModifications unsaved = unsavedLastRevisions;
- if (isBranchCommit) {
- Revision branchRev = rev.asBranchRevision();
- unsaved = branches.getBranch(branchRev).getModifications(branchRev);
- }
- if (isBranchCommit || pendingLastRev) {
- // write back _lastRev with background thread
- unsaved.put(path, rev);
+ if (disableBranches) {
+ if (pendingLastRev) {
+ unsaved.put(path, rev);
+ }
+ } else {
+ if (isBranchCommit) {
+ Revision branchRev = rev.asBranchRevision();
+ unsaved = branches.getBranch(branchRev).getModifications(branchRev);
+ }
+ if (isBranchCommit || pendingLastRev) {
+ // write back _lastRev with background thread
+ unsaved.put(path, rev);
+ }
}
if (isNew) {
CacheValue key = childNodeCacheKey(path, rev, null);
@@ -1029,6 +1042,9 @@ public final class DocumentNodeStore
Revision rebase(@Nonnull Revision branchHead, @Nonnull Revision base) {
checkNotNull(branchHead);
checkNotNull(base);
+ if (disableBranches) {
+ return branchHead;
+ }
// TODO conflict handling
Branch b = getBranches().getBranch(branchHead);
if (b == null) {