You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ma...@apache.org on 2017/12/11 08:07:10 UTC
[02/10] cassandra git commit: Grab refs during scrub,
index summary redistribution and cleanup
Grab refs during scrub, index summary redistribution and cleanup
Patch by marcuse; reviewed by Joel Knighton for CASSANDRA-13873
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/3cd2c3c4
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/3cd2c3c4
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/3cd2c3c4
Branch: refs/heads/cassandra-3.0
Commit: 3cd2c3c4ea4286562b2cb8443d6173ee251e6212
Parents: 797de4a
Author: Marcus Eriksson <ma...@apache.org>
Authored: Mon Oct 23 09:43:44 2017 +0200
Committer: Marcus Eriksson <ma...@apache.org>
Committed: Mon Dec 11 08:53:44 2017 +0100
----------------------------------------------------------------------
CHANGES.txt | 2 +-
.../cassandra/db/compaction/CompactionManager.java | 3 ++-
.../org/apache/cassandra/db/compaction/Scrubber.java | 4 +++-
.../io/sstable/IndexSummaryRedistribution.java | 12 ++++++++----
4 files changed, 14 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/3cd2c3c4/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 752cbdc..c1e81fd 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,5 +1,5 @@
2.2.12
- *
+ * Grab refs during scrub/index redistribution/cleanup (CASSANDRA-13873)
2.2.11
* Safely handle empty buffers when outputting to JSON (CASSANDRA-13868)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/3cd2c3c4/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 cd50646..2e69b6f 100644
--- a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
+++ b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
@@ -856,7 +856,8 @@ public class CompactionManager implements CompactionManagerMBean
metrics.beginCompaction(ci);
List<SSTableReader> finished;
try (SSTableRewriter writer = new SSTableRewriter(cfs, txn, sstable.maxDataAge, false);
- CompactionController controller = new CompactionController(cfs, txn.originals(), getDefaultGcBefore(cfs)))
+ CompactionController controller = new CompactionController(cfs, txn.originals(), getDefaultGcBefore(cfs));
+ Refs<SSTableReader> refs = Refs.ref(Collections.singleton(sstable)))
{
writer.switchWriter(createWriter(cfs, compactionFileLocation, expectedBloomFilterSize, sstable.getSSTableMetadata().repairedAt, sstable));
http://git-wip-us.apache.org/repos/asf/cassandra/blob/3cd2c3c4/src/java/org/apache/cassandra/db/compaction/Scrubber.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/compaction/Scrubber.java b/src/java/org/apache/cassandra/db/compaction/Scrubber.java
index aaed234..b6b20fb 100644
--- a/src/java/org/apache/cassandra/db/compaction/Scrubber.java
+++ b/src/java/org/apache/cassandra/db/compaction/Scrubber.java
@@ -40,6 +40,7 @@ import org.apache.cassandra.utils.ByteBufferUtil;
import org.apache.cassandra.utils.JVMStabilityInspector;
import org.apache.cassandra.utils.OutputHandler;
import org.apache.cassandra.utils.UUIDGen;
+import org.apache.cassandra.utils.concurrent.Refs;
public class Scrubber implements Closeable
{
@@ -142,7 +143,8 @@ public class Scrubber implements Closeable
public void scrub()
{
outputHandler.output(String.format("Scrubbing %s (%s bytes)", sstable, dataFile.length()));
- try (SSTableRewriter writer = new SSTableRewriter(cfs, transaction, sstable.maxDataAge, transaction.isOffline()))
+ try (SSTableRewriter writer = new SSTableRewriter(cfs, transaction, sstable.maxDataAge, transaction.isOffline());
+ Refs<SSTableReader> refs = Refs.ref(Collections.singleton(sstable)))
{
nextIndexKey = indexAvailable() ? ByteBufferUtil.readWithShortLength(indexFile) : null;
if (indexAvailable())
http://git-wip-us.apache.org/repos/asf/cassandra/blob/3cd2c3c4/src/java/org/apache/cassandra/io/sstable/IndexSummaryRedistribution.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/io/sstable/IndexSummaryRedistribution.java b/src/java/org/apache/cassandra/io/sstable/IndexSummaryRedistribution.java
index aad479b..12586e5 100644
--- a/src/java/org/apache/cassandra/io/sstable/IndexSummaryRedistribution.java
+++ b/src/java/org/apache/cassandra/io/sstable/IndexSummaryRedistribution.java
@@ -41,6 +41,7 @@ import org.apache.cassandra.db.compaction.OperationType;
import org.apache.cassandra.db.lifecycle.LifecycleTransaction;
import org.apache.cassandra.io.sstable.format.SSTableReader;
import org.apache.cassandra.utils.Pair;
+import org.apache.cassandra.utils.concurrent.Refs;
import static org.apache.cassandra.io.sstable.Downsampling.BASE_SAMPLING_LEVEL;
@@ -123,11 +124,14 @@ public class IndexSummaryRedistribution extends CompactionInfo.Holder
logger.trace("Index summaries for compacting SSTables are using {} MB of space",
(memoryPoolBytes - remainingBytes) / 1024.0 / 1024.0);
- List<SSTableReader> newSSTables = adjustSamplingLevels(sstablesByHotness, transactions, totalReadsPerSec, remainingBytes);
-
- for (LifecycleTransaction txn : transactions.values())
- txn.finish();
+ List<SSTableReader> newSSTables;
+ try (Refs<SSTableReader> refs = Refs.ref(sstablesByHotness))
+ {
+ newSSTables = adjustSamplingLevels(sstablesByHotness, transactions, totalReadsPerSec, remainingBytes);
+ for (LifecycleTransaction txn : transactions.values())
+ txn.finish();
+ }
total = 0;
for (SSTableReader sstable : Iterables.concat(compacting, oldFormatSSTables, newSSTables))
total += sstable.getIndexSummaryOffHeapSize();
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org