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/04/22 14:51:16 UTC
svn commit: r1740503 - in /jackrabbit/oak/trunk/oak-segment-next/src:
main/java/org/apache/jackrabbit/oak/segment/
main/java/org/apache/jackrabbit/oak/segment/file/
test/java/org/apache/jackrabbit/oak/backup/
Author: mduerig
Date: Fri Apr 22 12:51:15 2016
New Revision: 1740503
URL: http://svn.apache.org/viewvc?rev=1740503&view=rev
Log:
OAK-3348: Cross gc sessions might introduce references to pre-compacted segments
Update issue references in FIXME tags to point to actual issues where they already exist
Modified:
jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBlob.java
jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriter.java
jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStore.java
jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentTracker.java
jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriter.java
jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java
jackrabbit/oak/trunk/oak-segment-next/src/test/java/org/apache/jackrabbit/oak/backup/FileStoreBackupTest.java
Modified: jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBlob.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBlob.java?rev=1740503&r1=1740502&r2=1740503&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBlob.java (original)
+++ jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBlob.java Fri Apr 22 12:51:15 2016
@@ -175,8 +175,6 @@ public class SegmentBlob extends Record
return true;
}
- // FIXME OAK-3348 check / test deduplication of large SegmentBlob instances
- // FIXME OAK-3348 Can we do something similar for long strings?
if (object instanceof SegmentBlob) {
SegmentBlob that = (SegmentBlob) object;
if (this.length() != that.length()) {
Modified: jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriter.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriter.java?rev=1740503&r1=1740502&r2=1740503&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriter.java (original)
+++ jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriter.java Fri Apr 22 12:51:15 2016
@@ -29,7 +29,6 @@ import static com.google.common.collect.
import static java.lang.System.arraycopy;
import static java.lang.System.currentTimeMillis;
import static java.lang.System.identityHashCode;
-import static org.apache.jackrabbit.oak.segment.RecordWriters.newValueWriter;
import static org.apache.jackrabbit.oak.segment.Segment.GC_GEN_OFFSET;
import static org.apache.jackrabbit.oak.segment.Segment.MAX_SEGMENT_SIZE;
import static org.apache.jackrabbit.oak.segment.Segment.RECORD_ID_BYTES;
Modified: jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStore.java?rev=1740503&r1=1740502&r2=1740503&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStore.java (original)
+++ jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentNodeStore.java Fri Apr 22 12:51:15 2016
@@ -195,8 +195,9 @@ public class SegmentNodeStore implements
* of {@code c.call()} otherwise.
* @throws Exception
*/
- // FIXME OAK-3348 Remove and use an exclusive locking mechanism of the FileStore
- // instead. See FileStore.forceCompact
+ // FIXME OAK-4015: Expedite commits from the compactor
+ // FIXME OAK-4122: Replace the commit semaphore in the segment node store with a scheduler
+ // Replace by usage of expeditable lock or commit scheduler
boolean locked(Callable<Boolean> c) throws Exception {
if (commitSemaphore.tryAcquire()) {
try {
@@ -217,8 +218,9 @@ public class SegmentNodeStore implements
* of {@code c.call()} otherwise.
* @throws Exception
*/
- // FIXME OAK-3348 Remove and use an exclusive locking mechanism of the FileStore
- // instead. See FileStore.forceCompact
+ // FIXME OAK-4015: Expedite commits from the compactor
+ // FIXME OAK-4122: Replace the commit semaphore in the segment node store with a scheduler
+ // Replace by usage of expeditable lock or commit scheduler
boolean locked(Callable<Boolean> c, long timeout, TimeUnit unit) throws Exception {
if (commitSemaphore.tryAcquire(timeout, unit)) {
try {
Modified: jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentTracker.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentTracker.java?rev=1740503&r1=1740502&r2=1740503&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentTracker.java (original)
+++ jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentTracker.java Fri Apr 22 12:51:15 2016
@@ -249,9 +249,9 @@ public class SegmentTracker {
segmentCache.put(id, segment, segment.size());
}
- // FIXME OAK-3348 Improve retrieving current GC generation.
- // See also the comments in FileStore regarding initialisation and
- // cyclic dependencies.
+ // FIXME OAK-4102: Break cyclic dependency of FileStore and SegmentTracker
+ // Improve retrieving current GC generation. (OAK-4102)
+ // See also the comments in FileStore regarding initialisation and cyclic dependencies.
public int getGcGen() {
if (store instanceof FileStore) {
return ((FileStore) store).getGcGen();
Modified: jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriter.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriter.java?rev=1740503&r1=1740502&r2=1740503&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriter.java (original)
+++ jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentWriter.java Fri Apr 22 12:51:15 2016
@@ -71,7 +71,8 @@ import org.slf4j.LoggerFactory;
* Converts nodes, properties, and values to records, which are written to segments.
* FIXME OAK-3348 doc thread safety properties
*/
-// FIXME OAK-3348 Improve the way how SegmentWriter instances are created.
+// FIXME OAK-4102: Break cyclic dependency of FileStore and SegmentTracker
+// Improve the way how SegmentWriter instances are created. (OAK-4102)
public class SegmentWriter {
private static final Logger LOG = LoggerFactory.getLogger(SegmentWriter.class);
Modified: jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java?rev=1740503&r1=1740502&r2=1740503&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java (original)
+++ jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/file/FileStore.java Fri Apr 22 12:51:15 2016
@@ -393,7 +393,7 @@ public class FileStore implements Segmen
checkNotNull(builder.directory).mkdirs();
}
- // FIXME OAK-3348 Improve the setup of FileStore and SegmentTracker.
+ // FIXME OAK-4102: Break cyclic dependency of FileStore and SegmentTracker
// SegmentTracker and FileStore have a cyclic dependency, which we should
// try to break. Here we pass along a not fully initialised instances of the
// FileStore to the SegmentTracker, which in turn is in later invoked to write
@@ -551,8 +551,9 @@ public class FileStore implements Segmen
log.debug("TarMK readers {}", this.readers);
}
- // FIXME OAK-3348 hack: We cannot determine the current GC generation before
- // the FileStore is fully initialised so just return 0 for now.
+ // FIXME OAK-4102: Break cyclic dependency of FileStore and SegmentTracker
+ // We cannot determine the current GC generation before the FileStore is fully
+ // initialised so just return 0 for now.
public int getGcGen() {
if (head == null) {
return 0; // not fully initialised
@@ -885,7 +886,7 @@ public class FileStore implements Segmen
Set<UUID> reclaim = newHashSet();
for (TarReader reader : cleaned.keySet()) {
reader.mark(bulkRefs, reclaim, generation);
- // FIXME OAK-3348 log at debug level
+ // FIXME OAK-4165: Too verbose logging during revision gc
log.info("Size of bulk references/reclaim set {}/{}", bulkRefs.size(), reclaim.size());
if (shutdown) {
gcMonitor.info("TarMK GC #{}: cleanup interrupted", gcCount);
@@ -1138,8 +1139,8 @@ public class FileStore implements Segmen
return new SegmentNodeState(head.get());
}
- // FIXME OAK-3348 Maybe us a lock implementation that could expedite important commits
- // like compaction and checkpoints. See OAK-4015. Needs to be evaluated.
+ // FIXME OAK-4015: Expedite commits from the compactor
+ // use a lock that can expedite important commits like compaction and checkpoints.
private ReadWriteLock rwLock = new ReentrantReadWriteLock();
@Override
Modified: jackrabbit/oak/trunk/oak-segment-next/src/test/java/org/apache/jackrabbit/oak/backup/FileStoreBackupTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-next/src/test/java/org/apache/jackrabbit/oak/backup/FileStoreBackupTest.java?rev=1740503&r1=1740502&r2=1740503&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-next/src/test/java/org/apache/jackrabbit/oak/backup/FileStoreBackupTest.java (original)
+++ jackrabbit/oak/trunk/oak-segment-next/src/test/java/org/apache/jackrabbit/oak/backup/FileStoreBackupTest.java Fri Apr 22 12:51:15 2016
@@ -30,8 +30,6 @@ import java.util.Random;
import org.apache.jackrabbit.oak.Oak;
import org.apache.jackrabbit.oak.api.Blob;
import org.apache.jackrabbit.oak.api.CommitFailedException;
-import org.apache.jackrabbit.oak.backup.FileStoreBackup;
-import org.apache.jackrabbit.oak.backup.FileStoreRestore;
import org.apache.jackrabbit.oak.plugins.nodetype.write.InitialContent;
import org.apache.jackrabbit.oak.segment.file.FileStore;
import org.apache.jackrabbit.oak.spi.commit.CommitInfo;