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/20 18:13:43 UTC

svn commit: r1740166 - /jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriterPool.java

Author: mduerig
Date: Wed Apr 20 16:13:43 2016
New Revision: 1740166

URL: http://svn.apache.org/viewvc?rev=1740166&view=rev
Log:
OAK-3348: Cross gc sessions might introduce references to pre-compacted segments
Throw ISE when returning the same writer to the pool more than once

Modified:
    jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriterPool.java

Modified: jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriterPool.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriterPool.java?rev=1740166&r1=1740165&r2=1740166&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriterPool.java (original)
+++ jackrabbit/oak/trunk/oak-segment-next/src/main/java/org/apache/jackrabbit/oak/segment/SegmentBufferWriterPool.java Wed Apr 20 16:13:43 2016
@@ -19,6 +19,7 @@
 
 package org.apache.jackrabbit.oak.segment;
 
+import static com.google.common.base.Preconditions.checkState;
 import static com.google.common.collect.Lists.newArrayList;
 import static com.google.common.collect.Maps.newHashMap;
 import static com.google.common.collect.Sets.newHashSet;
@@ -89,7 +90,7 @@ class SegmentBufferWriterPool implements
 
     private synchronized void returnWriter(Object key, SegmentBufferWriter writer) {
         if (borrowed.remove(writer)) {
-            writers.put(key, writer);
+            checkState(writers.put(key, writer) == null);
         } else {
             // Defer flush this writer as it was borrowed while flush() was called.
             disposed.add(writer);