You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by yu...@apache.org on 2012/08/22 16:00:49 UTC
git commit: change cache write progress check to cache type basis;
patch by yukim, reviewed by jbellis for CASSANDRA-4533
Updated Branches:
refs/heads/cassandra-1.1 5655d9722 -> aa81f84c3
change cache write progress check to cache type basis; patch by yukim,
reviewed by jbellis for CASSANDRA-4533
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/aa81f84c
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/aa81f84c
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/aa81f84c
Branch: refs/heads/cassandra-1.1
Commit: aa81f84c38f2c1fcad08eae955bec031341f8f75
Parents: 5655d97
Author: Yuki Morishita <yu...@apache.org>
Authored: Wed Aug 22 08:55:46 2012 -0500
Committer: Yuki Morishita <yu...@apache.org>
Committed: Wed Aug 22 08:55:58 2012 -0500
----------------------------------------------------------------------
.../apache/cassandra/cache/AutoSavingCache.java | 8 +++++++-
.../cassandra/db/compaction/CompactionManager.java | 4 ++--
2 files changed, 9 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/aa81f84c/src/java/org/apache/cassandra/cache/AutoSavingCache.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cache/AutoSavingCache.java b/src/java/org/apache/cassandra/cache/AutoSavingCache.java
index 004e46e..b4e77be 100644
--- a/src/java/org/apache/cassandra/cache/AutoSavingCache.java
+++ b/src/java/org/apache/cassandra/cache/AutoSavingCache.java
@@ -27,6 +27,7 @@ import java.util.concurrent.Future;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
+import org.cliffc.high_scale_lib.NonBlockingHashSet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -49,7 +50,7 @@ public class AutoSavingCache<K extends CacheKey, V> extends InstrumentingCache<K
private static final Logger logger = LoggerFactory.getLogger(AutoSavingCache.class);
/** True if a cache flush is currently executing: only one may execute at a time. */
- public static final AtomicBoolean flushInProgress = new AtomicBoolean(false);
+ public static final Set<CacheService.CacheType> flushInProgress = new NonBlockingHashSet<CacheService.CacheType>();
protected volatile ScheduledFuture<?> saveTask;
protected final CacheService.CacheType cacheType;
@@ -200,6 +201,11 @@ public class AutoSavingCache<K extends CacheKey, V> extends InstrumentingCache<K
estimatedTotalBytes);
}
+ public CacheService.CacheType cacheType()
+ {
+ return cacheType;
+ }
+
public CompactionInfo getCompactionInfo()
{
long bytesWritten = this.bytesWritten;
http://git-wip-us.apache.org/repos/asf/cassandra/blob/aa81f84c/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
index 0f5be39..fcdf45b 100644
--- a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
+++ b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
@@ -773,7 +773,7 @@ public class CompactionManager implements CompactionManagerMBean
{
public void runMayThrow() throws IOException
{
- if (!AutoSavingCache.flushInProgress.compareAndSet(false, true))
+ if (!AutoSavingCache.flushInProgress.add(writer.cacheType()))
{
logger.debug("Cache flushing was already in progress: skipping {}", writer.getCompactionInfo());
return;
@@ -792,7 +792,7 @@ public class CompactionManager implements CompactionManagerMBean
}
finally
{
- AutoSavingCache.flushInProgress.set(false);
+ AutoSavingCache.flushInProgress.remove(writer.cacheType());
}
}
};