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 md...@apache.org on 2016/01/12 18:21:04 UTC
svn commit: r1724289 - in /jackrabbit/oak/trunk/oak-core/src:
main/java/org/apache/jackrabbit/oak/plugins/backup/
main/java/org/apache/jackrabbit/oak/plugins/segment/
main/java/org/apache/jackrabbit/oak/plugins/segment/file/
test/java/org/apache/jackra...
Author: mduerig
Date: Tue Jan 12 17:21:04 2016
New Revision: 1724289
URL: http://svn.apache.org/viewvc?rev=1724289&view=rev
Log:
OAK-3868: Move createSegmentWriter() from FileStore to SegmentTracker
Move method and adapt call sites
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreBackup.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreRestore.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/Compactor.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/PersistedCompactionMap.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeBuilder.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentTracker.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/package-info.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/CompactionMapTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/CompactorTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/PartialCompactionMapTest.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStoreIT.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreBackup.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreBackup.java?rev=1724289&r1=1724288&r2=1724289&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreBackup.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreBackup.java Tue Jan 12 17:21:04 2016
@@ -77,7 +77,7 @@ public class FileStoreBackup {
}
}
- Compactor compactor = new Compactor(backup);
+ Compactor compactor = new Compactor(backup.getTracker());
SegmentNodeState after = compactor.compact(before, current);
// 4. commit the backup
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreRestore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreRestore.java?rev=1724289&r1=1724288&r2=1724289&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreRestore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/backup/FileStoreRestore.java Tue Jan 12 17:21:04 2016
@@ -74,7 +74,7 @@ public class FileStoreRestore {
private static class RestoreCompactor extends Compactor {
public RestoreCompactor(SegmentStore store) {
- super(store);
+ super(store.getTracker());
}
@Override
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/Compactor.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/Compactor.java?rev=1724289&r1=1724288&r2=1724289&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/Compactor.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/Compactor.java Tue Jan 12 17:21:04 2016
@@ -42,7 +42,6 @@ import org.apache.jackrabbit.oak.plugins
import org.apache.jackrabbit.oak.plugins.memory.MultiBinaryPropertyState;
import org.apache.jackrabbit.oak.plugins.memory.PropertyStates;
import org.apache.jackrabbit.oak.plugins.segment.compaction.CompactionStrategy;
-import org.apache.jackrabbit.oak.plugins.segment.file.FileStore;
import org.apache.jackrabbit.oak.spi.state.ApplyDiff;
import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
import org.apache.jackrabbit.oak.spi.state.NodeState;
@@ -98,28 +97,28 @@ public class Compactor {
*/
private final Supplier<Boolean> cancel;
- public Compactor(SegmentStore store) {
- this(store, Suppliers.ofInstance(false));
+ public Compactor(SegmentTracker tracker) {
+ this(tracker, Suppliers.ofInstance(false));
}
- public Compactor(SegmentStore store, Supplier<Boolean> cancel) {
- this.writer = store.getTracker().getWriter();
- this.map = new InMemoryCompactionMap(store.getTracker());
+ public Compactor(SegmentTracker tracker, Supplier<Boolean> cancel) {
+ this.writer = tracker.getWriter();
+ this.map = new InMemoryCompactionMap(tracker);
this.cloneBinaries = false;
this.cancel = cancel;
}
- public Compactor(FileStore store, CompactionStrategy compactionStrategy) {
- this(store, compactionStrategy, Suppliers.ofInstance(false));
+ public Compactor(SegmentTracker tracker, CompactionStrategy compactionStrategy) {
+ this(tracker, compactionStrategy, Suppliers.ofInstance(false));
}
- public Compactor(FileStore store, CompactionStrategy compactionStrategy, Supplier<Boolean> cancel) {
- String wid = "c-" + store.getTracker().getCompactionMap().getGeneration() + 1;
- this.writer = store.createSegmentWriter(wid);
+ public Compactor(SegmentTracker tracker, CompactionStrategy compactionStrategy, Supplier<Boolean> cancel) {
+ String wid = "c-" + tracker.getCompactionMap().getGeneration() + 1;
+ this.writer = tracker.createSegmentWriter(wid);
if (compactionStrategy.getPersistCompactionMap()) {
- this.map = new PersistedCompactionMap(store);
+ this.map = new PersistedCompactionMap(tracker);
} else {
- this.map = new InMemoryCompactionMap(store.getTracker());
+ this.map = new InMemoryCompactionMap(tracker);
}
this.cloneBinaries = compactionStrategy.cloneBinaries();
if (compactionStrategy.isOfflineCompaction()) {
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/PersistedCompactionMap.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/PersistedCompactionMap.java?rev=1724289&r1=1724288&r2=1724289&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/PersistedCompactionMap.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/PersistedCompactionMap.java Tue Jan 12 17:21:04 2016
@@ -35,7 +35,6 @@ import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
-import org.apache.jackrabbit.oak.plugins.segment.file.FileStore;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -68,13 +67,13 @@ public class PersistedCompactionMap impl
private final TreeMap<UUID, RecordIdMap> recent = newTreeMap();
- private final FileStore store;
+ private final SegmentTracker tracker;
private long recordCount;
private MapRecord entries;
- PersistedCompactionMap(@Nonnull FileStore store) {
- this.store = store;
+ PersistedCompactionMap(@Nonnull SegmentTracker tracker) {
+ this.tracker = tracker;
}
@Override
@@ -103,7 +102,7 @@ public class PersistedCompactionMap impl
return recordId;
}
- return get(store.getTracker(), entries, uuid, offset);
+ return get(tracker, entries, uuid, offset);
}
@CheckForNull
@@ -198,7 +197,7 @@ public class PersistedCompactionMap impl
base = baseEntry == null ? null : new MapRecord(baseEntry.getValue());
if (writer == null) {
- writer = store.createSegmentWriter(createWid());
+ writer = tracker.createSegmentWriter(createWid());
}
Map<String, RecordId> offsetMap = newHashMap();
@@ -223,7 +222,7 @@ public class PersistedCompactionMap impl
if (!segmentIdMap.isEmpty()) {
if (writer == null) {
- writer = store.createSegmentWriter(createWid());
+ writer = tracker.createSegmentWriter(createWid());
}
RecordId previousBaseId = entries == null ? null : entries.getRecordId();
@@ -248,7 +247,7 @@ public class PersistedCompactionMap impl
@Nonnull
private String createWid() {
- return "cm-" + store.getTracker().getCompactionMap().getGeneration() + 1;
+ return "cm-" + tracker.getCompactionMap().getGeneration() + 1;
}
/**
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeBuilder.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeBuilder.java?rev=1724289&r1=1724288&r2=1724289&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeBuilder.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentNodeBuilder.java Tue Jan 12 17:21:04 2016
@@ -69,7 +69,7 @@ public class SegmentNodeBuilder extends
this.updateCount = 0;
}
- SegmentNodeBuilder(SegmentNodeBuilder parent, String name,
+ private SegmentNodeBuilder(SegmentNodeBuilder parent, String name,
SegmentWriter writer) {
super(parent, name);
this.writer = writer;
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentTracker.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentTracker.java?rev=1724289&r1=1724288&r2=1724289&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentTracker.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/SegmentTracker.java Tue Jan 12 17:21:04 2016
@@ -113,8 +113,12 @@ public class SegmentTracker {
*/
private final AtomicInteger segmentCounter = new AtomicInteger();
+ private final SegmentVersion segmentVersion;
+
public SegmentTracker(SegmentStore store, int cacheSizeMB,
SegmentVersion version) {
+ this.segmentVersion = version;
+
for (int i = 0; i < tables.length; i++) {
tables[i] = new SegmentIdTable(this);
}
@@ -122,7 +126,7 @@ public class SegmentTracker {
this.store = store;
this.compactionMap = new AtomicReference<CompactionMap>(
CompactionMap.EMPTY);
- this.writer = new SegmentWriter(store, version, "sys");
+ this.writer = createSegmentWriter("sys");
StringCache c;
if (DISABLE_STRING_CACHE) {
c = null;
@@ -161,6 +165,13 @@ public class SegmentTracker {
return segmentCounter.incrementAndGet();
}
+ /**
+ * @return a new {@link SegmentWriter} instance for writing to this store.
+ */
+ public final SegmentWriter createSegmentWriter(String wid) {
+ return new SegmentWriter(store, segmentVersion, wid);
+ }
+
@Nonnull
public CacheStats getSegmentCacheStats() {
return new CacheStats(segmentCache, "Segment Cache", null, -1);
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java?rev=1724289&r1=1724288&r2=1724289&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStore.java Tue Jan 12 17:21:04 2016
@@ -76,7 +76,6 @@ import org.apache.jackrabbit.oak.plugins
import org.apache.jackrabbit.oak.plugins.segment.SegmentStore;
import org.apache.jackrabbit.oak.plugins.segment.SegmentTracker;
import org.apache.jackrabbit.oak.plugins.segment.SegmentVersion;
-import org.apache.jackrabbit.oak.plugins.segment.SegmentWriter;
import org.apache.jackrabbit.oak.plugins.segment.compaction.CompactionStrategy;
import org.apache.jackrabbit.oak.spi.blob.BlobStore;
import org.apache.jackrabbit.oak.spi.gc.GCMonitor;
@@ -935,13 +934,6 @@ public class FileStore implements Segmen
}
/**
- * @return a new {@link SegmentWriter} instance for writing to this store.
- */
- public SegmentWriter createSegmentWriter(String wid) {
- return new SegmentWriter(this, getVersion(), wid);
- }
-
- /**
* Returns the cancellation policy for the compaction phase. If the disk
* space was considered insufficient at least once during compaction (or if
* the space was never sufficient to begin with), compaction is considered
@@ -1009,7 +1001,7 @@ public class FileStore implements Segmen
gcMonitor.info("TarMK GC #{}: compaction started, strategy={}", gcCount, compactionStrategy);
Stopwatch watch = Stopwatch.createStarted();
Supplier<Boolean> compactionCanceled = newCancelCompactionCondition();
- Compactor compactor = new Compactor(this, compactionStrategy, compactionCanceled);
+ Compactor compactor = new Compactor(tracker, compactionStrategy, compactionCanceled);
SegmentNodeState before = getHead();
long existing = before.getChildNode(SegmentNodeStore.CHECKPOINTS)
.getChildNodeCount(Long.MAX_VALUE);
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/package-info.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/package-info.java?rev=1724289&r1=1724288&r2=1724289&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/package-info.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/segment/file/package-info.java Tue Jan 12 17:21:04 2016
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-@Version("4.1.0")
+@Version("5.0.0")
@Export(optional = "provide:=true")
package org.apache.jackrabbit.oak.plugins.segment.file;
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/CompactionMapTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/CompactionMapTest.java?rev=1724289&r1=1724288&r2=1724289&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/CompactionMapTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/CompactionMapTest.java Tue Jan 12 17:21:04 2016
@@ -84,7 +84,7 @@ public class CompactionMapTest {
private PartialCompactionMap createCompactionMap(boolean persisted) {
if (persisted) {
- return new PersistedCompactionMap(store);
+ return new PersistedCompactionMap(store.getTracker());
} else {
return new InMemoryCompactionMap(store.getTracker());
}
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/CompactorTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/CompactorTest.java?rev=1724289&r1=1724288&r2=1724289&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/CompactorTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/CompactorTest.java Tue Jan 12 17:21:04 2016
@@ -54,7 +54,7 @@ public class CompactorTest {
NodeStore store = new SegmentNodeStore(segmentStore);
init(store);
- Compactor compactor = new Compactor(segmentStore);
+ Compactor compactor = new Compactor(segmentStore.getTracker());
addTestContent(store, 0);
NodeState initial = store.getRoot();
@@ -75,7 +75,7 @@ public class CompactorTest {
// doesn't have the child named "b".
NodeStore store = SegmentNodeStore.newSegmentNodeStore(segmentStore).create();
- Compactor compactor = new Compactor(segmentStore, Suppliers.ofInstance(true));
+ Compactor compactor = new Compactor(segmentStore.getTracker(), Suppliers.ofInstance(true));
SegmentNodeState sns = compactor.compact(store.getRoot(), addChild(store.getRoot(), "b"), store.getRoot());
assertFalse(sns.hasChildNode("b"));
}
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/PartialCompactionMapTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/PartialCompactionMapTest.java?rev=1724289&r1=1724288&r2=1724289&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/PartialCompactionMapTest.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/PartialCompactionMapTest.java Tue Jan 12 17:21:04 2016
@@ -122,7 +122,7 @@ public class PartialCompactionMapTest {
private PartialCompactionMap createCompactionMap() {
SegmentWriter writer = new SegmentWriter(segmentStore, V_11, "");
if (usePersistedMap) {
- return new PersistedCompactionMap(segmentStore);
+ return new PersistedCompactionMap(segmentStore.getTracker());
} else {
return new InMemoryCompactionMap(segmentStore.getTracker());
}
Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStoreIT.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStoreIT.java?rev=1724289&r1=1724288&r2=1724289&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStoreIT.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/segment/file/FileStoreIT.java Tue Jan 12 17:21:04 2016
@@ -134,7 +134,7 @@ public class FileStoreIT {
assertTrue(store.setHead(base, head));
assertEquals("bar", store.getHead().getString("foo"));
- Compactor compactor = new Compactor(store);
+ Compactor compactor = new Compactor(store.getTracker());
SegmentNodeState compacted =
compactor.compact(EMPTY_NODE, head, EMPTY_NODE);
store.close();
@@ -163,7 +163,7 @@ public class FileStoreIT {
head = store.getHead();
assertTrue(store.size() > largeBinarySize);
writer = new SegmentWriter(store, V_11, "");
- compactor = new Compactor(store);
+ compactor = new Compactor(store.getTracker());
compacted = compactor.compact(EMPTY_NODE, head, EMPTY_NODE);
builder = head.builder();
builder.setChildNode("old", head); // reference to pre-compacted state