You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2014/02/19 17:01:25 UTC
[01/12] git commit: Support negative timestamps in DateType.fromString
Repository: cassandra
Updated Branches:
refs/heads/cassandra-2.0 55d8da44b -> 84103bbe2
refs/heads/cassandra-2.1 5afd2bd48 -> 8e101bef0
refs/heads/trunk 89b8b1a75 -> 97a529f06
Support negative timestamps in DateType.fromString
patch by slebresne; reviewed by iamaleksey for CASSANDRA-6718
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/e787b7a4
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/e787b7a4
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/e787b7a4
Branch: refs/heads/cassandra-2.1
Commit: e787b7a4c7f69cf486c7d5b6c53bfb88086b5261
Parents: 6dfca3d
Author: Sylvain Lebresne <sy...@datastax.com>
Authored: Wed Feb 19 11:41:21 2014 +0100
Committer: Sylvain Lebresne <sy...@datastax.com>
Committed: Wed Feb 19 11:41:21 2014 +0100
----------------------------------------------------------------------
CHANGES.txt | 1 +
src/java/org/apache/cassandra/db/marshal/DateType.java | 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/e787b7a4/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index f146166..47fc3a3 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -10,6 +10,7 @@
* IN on the last clustering columns + ORDER BY DESC yield no results (CASSANDRA-6701)
* Fix SecondaryIndexManager#deleteFromIndexes() (CASSANDRA-6711)
* Fix snapshot repair not snapshotting coordinator itself (CASSANDRA-6713)
+ * Support negative timestamps for CQL3 dates in query string (CASSANDRA-6718)
1.2.15
http://git-wip-us.apache.org/repos/asf/cassandra/blob/e787b7a4/src/java/org/apache/cassandra/db/marshal/DateType.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/marshal/DateType.java b/src/java/org/apache/cassandra/db/marshal/DateType.java
index 875169d..ad165ee 100644
--- a/src/java/org/apache/cassandra/db/marshal/DateType.java
+++ b/src/java/org/apache/cassandra/db/marshal/DateType.java
@@ -92,7 +92,7 @@ public class DateType extends AbstractType<Date>
millis = System.currentTimeMillis();
}
// Milliseconds since epoch?
- else if (source.matches("^\\d+$"))
+ else if (source.matches("^-?\\d+$"))
{
try
{
[03/12] git commit: Don't attempt cross-dc forwarding
interface/mixed-version cluster with 1.1 patch by Jeremiah Jordan;
reviewed by jbellis for CASSANDRA-6732
Posted by jb...@apache.org.
Don't attempt cross-dc forwarding interface/mixed-version cluster with 1.1
patch by Jeremiah Jordan; reviewed by jbellis for CASSANDRA-6732
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/c92b20b3
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/c92b20b3
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/c92b20b3
Branch: refs/heads/cassandra-2.1
Commit: c92b20b3073f1c5cca3666225db33ea102ba77b5
Parents: e787b7a
Author: Jonathan Ellis <jb...@apache.org>
Authored: Wed Feb 19 08:32:40 2014 -0600
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Wed Feb 19 08:32:40 2014 -0600
----------------------------------------------------------------------
CHANGES.txt | 8 ++++++--
src/java/org/apache/cassandra/service/StorageProxy.java | 2 +-
2 files changed, 7 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/c92b20b3/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 47fc3a3..ffda82c 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,6 @@
1.2.16
+ * Don't attempt cross-dc forwarding in mixed-version cluster with 1.1
+ (CASSANDRA-6732)
* Fix broken streams when replacing with same IP (CASSANDRA-6622)
* Fix upgradesstables NPE for non-CF-based indexes (CASSANDRA-6645)
* Fix partition and range deletes not triggering flush (CASSANDRA-6655)
@@ -6,8 +8,10 @@
* Compact hints after partial replay to clean out tombstones (CASSANDRA-6666)
* Log USING TTL/TIMESTAMP in a counter update warning (CASSANDRA-6649)
* Don't exchange schema between nodes with different versions (CASSANDRA-6695)
- * Use real node messaging versions for schema exchange decisions (CASSANDRA-6700)
- * IN on the last clustering columns + ORDER BY DESC yield no results (CASSANDRA-6701)
+ * Use real node messaging versions for schema exchange decisions
+ (CASSANDRA-6700)
+ * IN on the last clustering columns + ORDER BY DESC yield no results
+ (CASSANDRA-6701)
* Fix SecondaryIndexManager#deleteFromIndexes() (CASSANDRA-6711)
* Fix snapshot repair not snapshotting coordinator itself (CASSANDRA-6713)
* Support negative timestamps for CQL3 dates in query string (CASSANDRA-6718)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/c92b20b3/src/java/org/apache/cassandra/service/StorageProxy.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/StorageProxy.java b/src/java/org/apache/cassandra/service/StorageProxy.java
index dbe029b..ca82a1f 100644
--- a/src/java/org/apache/cassandra/service/StorageProxy.java
+++ b/src/java/org/apache/cassandra/service/StorageProxy.java
@@ -614,7 +614,7 @@ public class StorageProxy implements StorageProxyMBean
InetAddress target = iter.next();
// direct writes to local DC or old Cassandra versions
- if (localDC || MessagingService.instance().getVersion(target) < MessagingService.VERSION_11)
+ if (localDC || MessagingService.instance().getVersion(target) < MessagingService.VERSION_12)
{
// yes, the loop and non-loop code here are the same; this is clunky but we want to avoid
// creating a second iterator since we already have a perfectly good one
[05/12] git commit: Merge branch 'cassandra-1.2' into cassandra-2.0
Posted by jb...@apache.org.
Merge branch 'cassandra-1.2' into cassandra-2.0
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/55d8da44
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/55d8da44
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/55d8da44
Branch: refs/heads/cassandra-2.1
Commit: 55d8da44bc270c1dcaef013dec287e9cb9b6865f
Parents: 0520aeb c92b20b
Author: Jonathan Ellis <jb...@apache.org>
Authored: Wed Feb 19 08:33:25 2014 -0600
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Wed Feb 19 08:33:25 2014 -0600
----------------------------------------------------------------------
----------------------------------------------------------------------
[12/12] git commit: Merge branch 'cassandra-2.1' into trunk
Posted by jb...@apache.org.
Merge branch 'cassandra-2.1' into trunk
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/97a529f0
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/97a529f0
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/97a529f0
Branch: refs/heads/trunk
Commit: 97a529f0662f92b6539dbff426ca252ad1713954
Parents: 89b8b1a 8e101be
Author: Jonathan Ellis <jb...@apache.org>
Authored: Wed Feb 19 10:01:19 2014 -0600
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Wed Feb 19 10:01:19 2014 -0600
----------------------------------------------------------------------
.../apache/cassandra/db/ColumnFamilyStore.java | 30 +++++++-------------
.../org/apache/cassandra/db/DataTracker.java | 21 ++++++++------
2 files changed, 23 insertions(+), 28 deletions(-)
----------------------------------------------------------------------
[04/12] git commit: Don't attempt cross-dc forwarding
interface/mixed-version cluster with 1.1 patch by Jeremiah Jordan;
reviewed by jbellis for CASSANDRA-6732
Posted by jb...@apache.org.
Don't attempt cross-dc forwarding interface/mixed-version cluster with 1.1
patch by Jeremiah Jordan; reviewed by jbellis for CASSANDRA-6732
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/c92b20b3
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/c92b20b3
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/c92b20b3
Branch: refs/heads/trunk
Commit: c92b20b3073f1c5cca3666225db33ea102ba77b5
Parents: e787b7a
Author: Jonathan Ellis <jb...@apache.org>
Authored: Wed Feb 19 08:32:40 2014 -0600
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Wed Feb 19 08:32:40 2014 -0600
----------------------------------------------------------------------
CHANGES.txt | 8 ++++++--
src/java/org/apache/cassandra/service/StorageProxy.java | 2 +-
2 files changed, 7 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/c92b20b3/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 47fc3a3..ffda82c 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,6 @@
1.2.16
+ * Don't attempt cross-dc forwarding in mixed-version cluster with 1.1
+ (CASSANDRA-6732)
* Fix broken streams when replacing with same IP (CASSANDRA-6622)
* Fix upgradesstables NPE for non-CF-based indexes (CASSANDRA-6645)
* Fix partition and range deletes not triggering flush (CASSANDRA-6655)
@@ -6,8 +8,10 @@
* Compact hints after partial replay to clean out tombstones (CASSANDRA-6666)
* Log USING TTL/TIMESTAMP in a counter update warning (CASSANDRA-6649)
* Don't exchange schema between nodes with different versions (CASSANDRA-6695)
- * Use real node messaging versions for schema exchange decisions (CASSANDRA-6700)
- * IN on the last clustering columns + ORDER BY DESC yield no results (CASSANDRA-6701)
+ * Use real node messaging versions for schema exchange decisions
+ (CASSANDRA-6700)
+ * IN on the last clustering columns + ORDER BY DESC yield no results
+ (CASSANDRA-6701)
* Fix SecondaryIndexManager#deleteFromIndexes() (CASSANDRA-6711)
* Fix snapshot repair not snapshotting coordinator itself (CASSANDRA-6713)
* Support negative timestamps for CQL3 dates in query string (CASSANDRA-6718)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/c92b20b3/src/java/org/apache/cassandra/service/StorageProxy.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/StorageProxy.java b/src/java/org/apache/cassandra/service/StorageProxy.java
index dbe029b..ca82a1f 100644
--- a/src/java/org/apache/cassandra/service/StorageProxy.java
+++ b/src/java/org/apache/cassandra/service/StorageProxy.java
@@ -614,7 +614,7 @@ public class StorageProxy implements StorageProxyMBean
InetAddress target = iter.next();
// direct writes to local DC or old Cassandra versions
- if (localDC || MessagingService.instance().getVersion(target) < MessagingService.VERSION_11)
+ if (localDC || MessagingService.instance().getVersion(target) < MessagingService.VERSION_12)
{
// yes, the loop and non-loop code here are the same; this is clunky but we want to avoid
// creating a second iterator since we already have a perfectly good one
[08/12] git commit: Use correct partitioner in
AbstractViewSSTableFinder patch by jbellis;
reviewed by yukim for CASSANDRA-6734
Posted by jb...@apache.org.
Use correct partitioner in AbstractViewSSTableFinder
patch by jbellis; reviewed by yukim for CASSANDRA-6734
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/84103bbe
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/84103bbe
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/84103bbe
Branch: refs/heads/cassandra-2.0
Commit: 84103bbe2894706d224dc5975ca6bdaaa6f7f6c4
Parents: 55d8da4
Author: Jonathan Ellis <jb...@apache.org>
Authored: Wed Feb 19 09:58:28 2014 -0600
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Wed Feb 19 09:58:28 2014 -0600
----------------------------------------------------------------------
.../apache/cassandra/db/ColumnFamilyStore.java | 30 +++++++-------------
.../org/apache/cassandra/db/DataTracker.java | 7 +++++
2 files changed, 17 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/84103bbe/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
index 38d87db..f25f934 100644
--- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
+++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
@@ -1448,17 +1448,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
return markCurrentViewReferenced().sstables;
}
- abstract class AbstractViewSSTableFinder
- {
- abstract List<SSTableReader> findSSTables(DataTracker.View view);
- protected List<SSTableReader> sstablesForRowBounds(AbstractBounds<RowPosition> rowBounds, DataTracker.View view)
- {
- RowPosition stopInTree = rowBounds.right.isMinimum() ? view.intervalTree.max() : rowBounds.right;
- return view.intervalTree.search(Interval.<RowPosition, SSTableReader>create(rowBounds.left, stopInTree));
- }
- }
-
- private ViewFragment markReferenced(AbstractViewSSTableFinder finder)
+ private ViewFragment markReferenced(Function<DataTracker.View, List<SSTableReader>> filter)
{
List<SSTableReader> sstables;
DataTracker.View view;
@@ -1473,7 +1463,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
break;
}
- sstables = finder.findSSTables(view);
+ sstables = filter.apply(view);
if (SSTableReader.acquireReferences(sstables))
break;
// retry w/ new view
@@ -1489,9 +1479,9 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
public ViewFragment markReferenced(final DecoratedKey key)
{
assert !key.isMinimum();
- return markReferenced(new AbstractViewSSTableFinder()
+ return markReferenced(new Function<DataTracker.View, List<SSTableReader>>()
{
- List<SSTableReader> findSSTables(DataTracker.View view)
+ public List<SSTableReader> apply(DataTracker.View view)
{
return compactionStrategy.filterSSTablesForReads(view.intervalTree.search(key));
}
@@ -1504,11 +1494,11 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
*/
public ViewFragment markReferenced(final AbstractBounds<RowPosition> rowBounds)
{
- return markReferenced(new AbstractViewSSTableFinder()
+ return markReferenced(new Function<DataTracker.View, List<SSTableReader>>()
{
- List<SSTableReader> findSSTables(DataTracker.View view)
+ public List<SSTableReader> apply(DataTracker.View view)
{
- return compactionStrategy.filterSSTablesForReads(sstablesForRowBounds(rowBounds, view));
+ return compactionStrategy.filterSSTablesForReads(view.sstablesInBounds(rowBounds));
}
});
}
@@ -1519,13 +1509,13 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
*/
public ViewFragment markReferenced(final Collection<AbstractBounds<RowPosition>> rowBoundsCollection)
{
- return markReferenced(new AbstractViewSSTableFinder()
+ return markReferenced(new Function<DataTracker.View, List<SSTableReader>>()
{
- List<SSTableReader> findSSTables(DataTracker.View view)
+ public List<SSTableReader> apply(DataTracker.View view)
{
Set<SSTableReader> sstables = Sets.newHashSet();
for (AbstractBounds<RowPosition> rowBounds : rowBoundsCollection)
- sstables.addAll(sstablesForRowBounds(rowBounds, view));
+ sstables.addAll(view.sstablesInBounds(rowBounds));
return ImmutableList.copyOf(sstables);
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/84103bbe/src/java/org/apache/cassandra/db/DataTracker.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/DataTracker.java b/src/java/org/apache/cassandra/db/DataTracker.java
index 8886c39..c1ae00f 100644
--- a/src/java/org/apache/cassandra/db/DataTracker.java
+++ b/src/java/org/apache/cassandra/db/DataTracker.java
@@ -29,6 +29,7 @@ import org.slf4j.LoggerFactory;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.db.compaction.OperationType;
+import org.apache.cassandra.dht.AbstractBounds;
import org.apache.cassandra.io.sstable.Descriptor;
import org.apache.cassandra.io.sstable.SSTableReader;
import org.apache.cassandra.io.util.FileUtils;
@@ -594,5 +595,11 @@ public class DataTracker
{
return String.format("View(pending_count=%d, sstables=%s, compacting=%s)", memtablesPendingFlush.size(), sstables, compacting);
}
+
+ public List<SSTableReader> sstablesInBounds(AbstractBounds<RowPosition> rowBounds)
+ {
+ RowPosition stopInTree = rowBounds.right.isMinimum(memtable.cfs.partitioner) ? intervalTree.max() : rowBounds.right;
+ return intervalTree.search(Interval.<RowPosition, SSTableReader>create(rowBounds.left, stopInTree));
+ }
}
}
[10/12] git commit: merge from 2.0
Posted by jb...@apache.org.
merge from 2.0
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/8e101bef
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/8e101bef
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/8e101bef
Branch: refs/heads/trunk
Commit: 8e101bef056eb00173f51ec7fb6e3b6b251d105d
Parents: 5afd2bd 84103bb
Author: Jonathan Ellis <jb...@apache.org>
Authored: Wed Feb 19 10:01:10 2014 -0600
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Wed Feb 19 10:01:10 2014 -0600
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../apache/cassandra/db/ColumnFamilyStore.java | 30 +++++++-------------
.../org/apache/cassandra/db/DataTracker.java | 21 ++++++++------
.../apache/cassandra/db/marshal/DateType.java | 2 +-
4 files changed, 25 insertions(+), 29 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8e101bef/CHANGES.txt
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8e101bef/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/ColumnFamilyStore.java
index ca4ff0a,f25f934..76160ea
--- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
+++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
@@@ -1708,43 -1448,7 +1708,33 @@@ public class ColumnFamilyStore implemen
return markCurrentViewReferenced().sstables;
}
+ public Set<SSTableReader> getUnrepairedSSTables()
+ {
+ Set<SSTableReader> unRepairedSSTables = new HashSet<>(getSSTables());
+ Iterator<SSTableReader> sstableIterator = unRepairedSSTables.iterator();
+ while(sstableIterator.hasNext())
+ {
+ SSTableReader sstable = sstableIterator.next();
+ if (sstable.isRepaired())
+ sstableIterator.remove();
+ }
+ return unRepairedSSTables;
+ }
+
+ public Set<SSTableReader> getRepairedSSTables()
+ {
+ Set<SSTableReader> repairedSSTables = new HashSet<>(getSSTables());
+ Iterator<SSTableReader> sstableIterator = repairedSSTables.iterator();
+ while(sstableIterator.hasNext())
+ {
+ SSTableReader sstable = sstableIterator.next();
+ if (!sstable.isRepaired())
+ sstableIterator.remove();
+ }
+ return repairedSSTables;
+ }
+
- abstract class AbstractViewSSTableFinder
- {
- abstract List<SSTableReader> findSSTables(DataTracker.View view);
- protected List<SSTableReader> sstablesForRowBounds(AbstractBounds<RowPosition> rowBounds, DataTracker.View view)
- {
- RowPosition stopInTree = rowBounds.right.isMinimum() ? view.intervalTree.max() : rowBounds.right;
- return view.intervalTree.search(Interval.<RowPosition, SSTableReader>create(rowBounds.left, stopInTree));
- }
- }
-
- private ViewFragment markReferenced(AbstractViewSSTableFinder finder)
+ private ViewFragment markReferenced(Function<DataTracker.View, List<SSTableReader>> filter)
{
List<SSTableReader> sstables;
DataTracker.View view;
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8e101bef/src/java/org/apache/cassandra/db/DataTracker.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/DataTracker.java
index e51f380,c1ae00f..30bd360
--- a/src/java/org/apache/cassandra/db/DataTracker.java
+++ b/src/java/org/apache/cassandra/db/DataTracker.java
@@@ -32,12 -29,14 +29,14 @@@ import org.slf4j.LoggerFactory
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.db.compaction.OperationType;
+ import org.apache.cassandra.dht.AbstractBounds;
-import org.apache.cassandra.io.sstable.Descriptor;
import org.apache.cassandra.io.sstable.SSTableReader;
import org.apache.cassandra.io.util.FileUtils;
import org.apache.cassandra.metrics.StorageMetrics;
import org.apache.cassandra.notifications.*;
import org.apache.cassandra.utils.Interval;
import org.apache.cassandra.utils.IntervalTree;
++import org.apache.cassandra.utils.concurrent.OpOrder;
public class DataTracker
{
@@@ -317,47 -322,11 +316,47 @@@
/** (Re)initializes the tracker, purging all references. */
void init()
{
- view.set(new View(new Memtable(cfstore),
- Collections.<Memtable>emptySet(),
- Collections.<SSTableReader>emptySet(),
- Collections.<SSTableReader>emptySet(),
- SSTableIntervalTree.empty()));
+ view.set(new View(
- ImmutableList.of(new Memtable(cfstore)),
- ImmutableList.<Memtable>of(),
- Collections.<SSTableReader>emptySet(),
- Collections.<SSTableReader>emptySet(),
- SSTableIntervalTree.empty()));
++ ImmutableList.of(new Memtable(cfstore)),
++ ImmutableList.<Memtable>of(),
++ Collections.<SSTableReader>emptySet(),
++ Collections.<SSTableReader>emptySet(),
++ SSTableIntervalTree.empty()));
+ }
+
+ /**
+ * A special kind of replacement for SSTableReaders that were cloned with a new index summary sampling level (see
+ * SSTableReader.cloneWithNewSummarySamplingLevel and CASSANDRA-5519). This does not mark the old reader
+ * as compacted.
+ * @param oldSSTables replaced readers
+ * @param newSSTables replacement readers
+ */
+ public void replaceReaders(Collection<SSTableReader> oldSSTables, Collection<SSTableReader> newSSTables)
+ {
+ // data component will be unchanged but the index summary will be a different size
+ // (since we save that to make restart fast)
+ long sizeIncrease = 0;
+ for (SSTableReader sstable : oldSSTables)
+ sizeIncrease -= sstable.bytesOnDisk();
+ for (SSTableReader sstable : newSSTables)
+ sizeIncrease += sstable.bytesOnDisk();
+
+ View currentView, newView;
+ do
+ {
+ currentView = view.get();
+ newView = currentView.replace(oldSSTables, newSSTables);
+ }
+ while (!view.compareAndSet(currentView, newView));
+
+ StorageMetrics.load.inc(sizeIncrease);
+ cfstore.metric.liveDiskSpaceUsed.inc(sizeIncrease);
+
+ for (SSTableReader sstable : newSSTables)
+ sstable.setTrackedBy(this);
+
+ for (SSTableReader sstable : oldSSTables)
+ sstable.releaseReference();
}
private void replace(Collection<SSTableReader> oldSSTables, Iterable<SSTableReader> replacements)
@@@ -690,7 -593,13 +689,13 @@@
@Override
public String toString()
{
- return String.format("View(pending_count=%d, sstables=%s, compacting=%s)", memtablesPendingFlush.size(), sstables, compacting);
+ return String.format("View(pending_count=%d, sstables=%s, compacting=%s)", liveMemtables.size() + flushingMemtables.size() - 1, sstables, compacting);
}
+
+ public List<SSTableReader> sstablesInBounds(AbstractBounds<RowPosition> rowBounds)
+ {
- RowPosition stopInTree = rowBounds.right.isMinimum(memtable.cfs.partitioner) ? intervalTree.max() : rowBounds.right;
++ RowPosition stopInTree = rowBounds.right.isMinimum(liveMemtables.get(0).cfs.partitioner) ? intervalTree.max() : rowBounds.right;
+ return intervalTree.search(Interval.<RowPosition, SSTableReader>create(rowBounds.left, stopInTree));
+ }
}
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8e101bef/src/java/org/apache/cassandra/db/marshal/DateType.java
----------------------------------------------------------------------
[07/12] git commit: Use correct partitioner in
AbstractViewSSTableFinder patch by jbellis;
reviewed by yukim for CASSANDRA-6734
Posted by jb...@apache.org.
Use correct partitioner in AbstractViewSSTableFinder
patch by jbellis; reviewed by yukim for CASSANDRA-6734
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/84103bbe
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/84103bbe
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/84103bbe
Branch: refs/heads/cassandra-2.1
Commit: 84103bbe2894706d224dc5975ca6bdaaa6f7f6c4
Parents: 55d8da4
Author: Jonathan Ellis <jb...@apache.org>
Authored: Wed Feb 19 09:58:28 2014 -0600
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Wed Feb 19 09:58:28 2014 -0600
----------------------------------------------------------------------
.../apache/cassandra/db/ColumnFamilyStore.java | 30 +++++++-------------
.../org/apache/cassandra/db/DataTracker.java | 7 +++++
2 files changed, 17 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/84103bbe/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
index 38d87db..f25f934 100644
--- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
+++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
@@ -1448,17 +1448,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
return markCurrentViewReferenced().sstables;
}
- abstract class AbstractViewSSTableFinder
- {
- abstract List<SSTableReader> findSSTables(DataTracker.View view);
- protected List<SSTableReader> sstablesForRowBounds(AbstractBounds<RowPosition> rowBounds, DataTracker.View view)
- {
- RowPosition stopInTree = rowBounds.right.isMinimum() ? view.intervalTree.max() : rowBounds.right;
- return view.intervalTree.search(Interval.<RowPosition, SSTableReader>create(rowBounds.left, stopInTree));
- }
- }
-
- private ViewFragment markReferenced(AbstractViewSSTableFinder finder)
+ private ViewFragment markReferenced(Function<DataTracker.View, List<SSTableReader>> filter)
{
List<SSTableReader> sstables;
DataTracker.View view;
@@ -1473,7 +1463,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
break;
}
- sstables = finder.findSSTables(view);
+ sstables = filter.apply(view);
if (SSTableReader.acquireReferences(sstables))
break;
// retry w/ new view
@@ -1489,9 +1479,9 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
public ViewFragment markReferenced(final DecoratedKey key)
{
assert !key.isMinimum();
- return markReferenced(new AbstractViewSSTableFinder()
+ return markReferenced(new Function<DataTracker.View, List<SSTableReader>>()
{
- List<SSTableReader> findSSTables(DataTracker.View view)
+ public List<SSTableReader> apply(DataTracker.View view)
{
return compactionStrategy.filterSSTablesForReads(view.intervalTree.search(key));
}
@@ -1504,11 +1494,11 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
*/
public ViewFragment markReferenced(final AbstractBounds<RowPosition> rowBounds)
{
- return markReferenced(new AbstractViewSSTableFinder()
+ return markReferenced(new Function<DataTracker.View, List<SSTableReader>>()
{
- List<SSTableReader> findSSTables(DataTracker.View view)
+ public List<SSTableReader> apply(DataTracker.View view)
{
- return compactionStrategy.filterSSTablesForReads(sstablesForRowBounds(rowBounds, view));
+ return compactionStrategy.filterSSTablesForReads(view.sstablesInBounds(rowBounds));
}
});
}
@@ -1519,13 +1509,13 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
*/
public ViewFragment markReferenced(final Collection<AbstractBounds<RowPosition>> rowBoundsCollection)
{
- return markReferenced(new AbstractViewSSTableFinder()
+ return markReferenced(new Function<DataTracker.View, List<SSTableReader>>()
{
- List<SSTableReader> findSSTables(DataTracker.View view)
+ public List<SSTableReader> apply(DataTracker.View view)
{
Set<SSTableReader> sstables = Sets.newHashSet();
for (AbstractBounds<RowPosition> rowBounds : rowBoundsCollection)
- sstables.addAll(sstablesForRowBounds(rowBounds, view));
+ sstables.addAll(view.sstablesInBounds(rowBounds));
return ImmutableList.copyOf(sstables);
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/84103bbe/src/java/org/apache/cassandra/db/DataTracker.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/DataTracker.java b/src/java/org/apache/cassandra/db/DataTracker.java
index 8886c39..c1ae00f 100644
--- a/src/java/org/apache/cassandra/db/DataTracker.java
+++ b/src/java/org/apache/cassandra/db/DataTracker.java
@@ -29,6 +29,7 @@ import org.slf4j.LoggerFactory;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.db.compaction.OperationType;
+import org.apache.cassandra.dht.AbstractBounds;
import org.apache.cassandra.io.sstable.Descriptor;
import org.apache.cassandra.io.sstable.SSTableReader;
import org.apache.cassandra.io.util.FileUtils;
@@ -594,5 +595,11 @@ public class DataTracker
{
return String.format("View(pending_count=%d, sstables=%s, compacting=%s)", memtablesPendingFlush.size(), sstables, compacting);
}
+
+ public List<SSTableReader> sstablesInBounds(AbstractBounds<RowPosition> rowBounds)
+ {
+ RowPosition stopInTree = rowBounds.right.isMinimum(memtable.cfs.partitioner) ? intervalTree.max() : rowBounds.right;
+ return intervalTree.search(Interval.<RowPosition, SSTableReader>create(rowBounds.left, stopInTree));
+ }
}
}
[02/12] git commit: Merge branch 'cassandra-1.2' into cassandra-2.0
Posted by jb...@apache.org.
Merge branch 'cassandra-1.2' into cassandra-2.0
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/0520aeb7
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/0520aeb7
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/0520aeb7
Branch: refs/heads/cassandra-2.1
Commit: 0520aeb7e751626b62268c1495c941d33b01cdfb
Parents: e67a0a9 e787b7a
Author: Sylvain Lebresne <sy...@datastax.com>
Authored: Wed Feb 19 11:42:25 2014 +0100
Committer: Sylvain Lebresne <sy...@datastax.com>
Committed: Wed Feb 19 11:42:25 2014 +0100
----------------------------------------------------------------------
CHANGES.txt | 1 +
src/java/org/apache/cassandra/db/marshal/DateType.java | 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0520aeb7/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 95faf18,47fc3a3..2cacbaa
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -30,34 -10,24 +30,35 @@@ Merged from 1.2
* IN on the last clustering columns + ORDER BY DESC yield no results (CASSANDRA-6701)
* Fix SecondaryIndexManager#deleteFromIndexes() (CASSANDRA-6711)
* Fix snapshot repair not snapshotting coordinator itself (CASSANDRA-6713)
+ * Support negative timestamps for CQL3 dates in query string (CASSANDRA-6718)
-1.2.15
- * Move handling of migration event source to solve bootstrap race (CASSANDRA-6648)
- * Make sure compaction throughput value doesn't overflow with int math (CASSANDRA-6647)
-
-
-1.2.14
- * Reverted code to limit CQL prepared statement cache by size (CASSANDRA-6592)
- * add cassandra.default_messaging_version property to allow easier
- upgrading from 1.1 (CASSANDRA-6619)
- * Allow executing CREATE statements multiple times (CASSANDRA-6471)
- * Don't send confusing info with timeouts (CASSANDRA-6491)
- * Don't resubmit counter mutation runnables internally (CASSANDRA-6427)
- * Don't drop local mutations without a hint (CASSANDRA-6510)
- * Don't allow null max_hint_window_in_ms (CASSANDRA-6419)
- * Validate SliceRange start and finish lengths (CASSANDRA-6521)
+2.0.5
+ * Reduce garbage generated by bloom filter lookups (CASSANDRA-6609)
+ * Add ks.cf names to tombstone logging (CASSANDRA-6597)
+ * Use LOCAL_QUORUM for LWT operations at LOCAL_SERIAL (CASSANDRA-6495)
+ * Wait for gossip to settle before accepting client connections (CASSANDRA-4288)
+ * Delete unfinished compaction incrementally (CASSANDRA-6086)
+ * Allow specifying custom secondary index options in CQL3 (CASSANDRA-6480)
+ * Improve replica pinning for cache efficiency in DES (CASSANDRA-6485)
+ * Fix LOCAL_SERIAL from thrift (CASSANDRA-6584)
+ * Don't special case received counts in CAS timeout exceptions (CASSANDRA-6595)
+ * Add support for 2.1 global counter shards (CASSANDRA-6505)
+ * Fix NPE when streaming connection is not yet established (CASSANDRA-6210)
+ * Avoid rare duplicate read repair triggering (CASSANDRA-6606)
+ * Fix paging discardFirst (CASSANDRA-6555)
+ * Fix ArrayIndexOutOfBoundsException in 2ndary index query (CASSANDRA-6470)
+ * Release sstables upon rebuilding 2i (CASSANDRA-6635)
+ * Add AbstractCompactionStrategy.startup() method (CASSANDRA-6637)
+ * SSTableScanner may skip rows during cleanup (CASSANDRA-6638)
+ * sstables from stalled repair sessions can resurrect deleted data (CASSANDRA-6503)
+ * Switch stress to use ITransportFactory (CASSANDRA-6641)
+ * Fix IllegalArgumentException during prepare (CASSANDRA-6592)
+ * Fix possible loss of 2ndary index entries during compaction (CASSANDRA-6517)
+ * Fix direct Memory on architectures that do not support unaligned long access
+ (CASSANDRA-6628)
+ * Let scrub optionally skip broken counter partitions (CASSANDRA-5930)
+Merged from 1.2:
* fsync compression metadata (CASSANDRA-6531)
* Validate CF existence on execution for prepared statement (CASSANDRA-6535)
* Add ability to throttle batchlog replay (CASSANDRA-6550)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0520aeb7/src/java/org/apache/cassandra/db/marshal/DateType.java
----------------------------------------------------------------------
[09/12] git commit: Use correct partitioner in
AbstractViewSSTableFinder patch by jbellis;
reviewed by yukim for CASSANDRA-6734
Posted by jb...@apache.org.
Use correct partitioner in AbstractViewSSTableFinder
patch by jbellis; reviewed by yukim for CASSANDRA-6734
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/84103bbe
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/84103bbe
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/84103bbe
Branch: refs/heads/trunk
Commit: 84103bbe2894706d224dc5975ca6bdaaa6f7f6c4
Parents: 55d8da4
Author: Jonathan Ellis <jb...@apache.org>
Authored: Wed Feb 19 09:58:28 2014 -0600
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Wed Feb 19 09:58:28 2014 -0600
----------------------------------------------------------------------
.../apache/cassandra/db/ColumnFamilyStore.java | 30 +++++++-------------
.../org/apache/cassandra/db/DataTracker.java | 7 +++++
2 files changed, 17 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/84103bbe/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
index 38d87db..f25f934 100644
--- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
+++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
@@ -1448,17 +1448,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
return markCurrentViewReferenced().sstables;
}
- abstract class AbstractViewSSTableFinder
- {
- abstract List<SSTableReader> findSSTables(DataTracker.View view);
- protected List<SSTableReader> sstablesForRowBounds(AbstractBounds<RowPosition> rowBounds, DataTracker.View view)
- {
- RowPosition stopInTree = rowBounds.right.isMinimum() ? view.intervalTree.max() : rowBounds.right;
- return view.intervalTree.search(Interval.<RowPosition, SSTableReader>create(rowBounds.left, stopInTree));
- }
- }
-
- private ViewFragment markReferenced(AbstractViewSSTableFinder finder)
+ private ViewFragment markReferenced(Function<DataTracker.View, List<SSTableReader>> filter)
{
List<SSTableReader> sstables;
DataTracker.View view;
@@ -1473,7 +1463,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
break;
}
- sstables = finder.findSSTables(view);
+ sstables = filter.apply(view);
if (SSTableReader.acquireReferences(sstables))
break;
// retry w/ new view
@@ -1489,9 +1479,9 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
public ViewFragment markReferenced(final DecoratedKey key)
{
assert !key.isMinimum();
- return markReferenced(new AbstractViewSSTableFinder()
+ return markReferenced(new Function<DataTracker.View, List<SSTableReader>>()
{
- List<SSTableReader> findSSTables(DataTracker.View view)
+ public List<SSTableReader> apply(DataTracker.View view)
{
return compactionStrategy.filterSSTablesForReads(view.intervalTree.search(key));
}
@@ -1504,11 +1494,11 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
*/
public ViewFragment markReferenced(final AbstractBounds<RowPosition> rowBounds)
{
- return markReferenced(new AbstractViewSSTableFinder()
+ return markReferenced(new Function<DataTracker.View, List<SSTableReader>>()
{
- List<SSTableReader> findSSTables(DataTracker.View view)
+ public List<SSTableReader> apply(DataTracker.View view)
{
- return compactionStrategy.filterSSTablesForReads(sstablesForRowBounds(rowBounds, view));
+ return compactionStrategy.filterSSTablesForReads(view.sstablesInBounds(rowBounds));
}
});
}
@@ -1519,13 +1509,13 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
*/
public ViewFragment markReferenced(final Collection<AbstractBounds<RowPosition>> rowBoundsCollection)
{
- return markReferenced(new AbstractViewSSTableFinder()
+ return markReferenced(new Function<DataTracker.View, List<SSTableReader>>()
{
- List<SSTableReader> findSSTables(DataTracker.View view)
+ public List<SSTableReader> apply(DataTracker.View view)
{
Set<SSTableReader> sstables = Sets.newHashSet();
for (AbstractBounds<RowPosition> rowBounds : rowBoundsCollection)
- sstables.addAll(sstablesForRowBounds(rowBounds, view));
+ sstables.addAll(view.sstablesInBounds(rowBounds));
return ImmutableList.copyOf(sstables);
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/84103bbe/src/java/org/apache/cassandra/db/DataTracker.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/DataTracker.java b/src/java/org/apache/cassandra/db/DataTracker.java
index 8886c39..c1ae00f 100644
--- a/src/java/org/apache/cassandra/db/DataTracker.java
+++ b/src/java/org/apache/cassandra/db/DataTracker.java
@@ -29,6 +29,7 @@ import org.slf4j.LoggerFactory;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.db.compaction.OperationType;
+import org.apache.cassandra.dht.AbstractBounds;
import org.apache.cassandra.io.sstable.Descriptor;
import org.apache.cassandra.io.sstable.SSTableReader;
import org.apache.cassandra.io.util.FileUtils;
@@ -594,5 +595,11 @@ public class DataTracker
{
return String.format("View(pending_count=%d, sstables=%s, compacting=%s)", memtablesPendingFlush.size(), sstables, compacting);
}
+
+ public List<SSTableReader> sstablesInBounds(AbstractBounds<RowPosition> rowBounds)
+ {
+ RowPosition stopInTree = rowBounds.right.isMinimum(memtable.cfs.partitioner) ? intervalTree.max() : rowBounds.right;
+ return intervalTree.search(Interval.<RowPosition, SSTableReader>create(rowBounds.left, stopInTree));
+ }
}
}
[06/12] git commit: Merge branch 'cassandra-1.2' into cassandra-2.0
Posted by jb...@apache.org.
Merge branch 'cassandra-1.2' into cassandra-2.0
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/55d8da44
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/55d8da44
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/55d8da44
Branch: refs/heads/trunk
Commit: 55d8da44bc270c1dcaef013dec287e9cb9b6865f
Parents: 0520aeb c92b20b
Author: Jonathan Ellis <jb...@apache.org>
Authored: Wed Feb 19 08:33:25 2014 -0600
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Wed Feb 19 08:33:25 2014 -0600
----------------------------------------------------------------------
----------------------------------------------------------------------
[11/12] git commit: merge from 2.0
Posted by jb...@apache.org.
merge from 2.0
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/8e101bef
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/8e101bef
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/8e101bef
Branch: refs/heads/cassandra-2.1
Commit: 8e101bef056eb00173f51ec7fb6e3b6b251d105d
Parents: 5afd2bd 84103bb
Author: Jonathan Ellis <jb...@apache.org>
Authored: Wed Feb 19 10:01:10 2014 -0600
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Wed Feb 19 10:01:10 2014 -0600
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../apache/cassandra/db/ColumnFamilyStore.java | 30 +++++++-------------
.../org/apache/cassandra/db/DataTracker.java | 21 ++++++++------
.../apache/cassandra/db/marshal/DateType.java | 2 +-
4 files changed, 25 insertions(+), 29 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8e101bef/CHANGES.txt
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8e101bef/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/ColumnFamilyStore.java
index ca4ff0a,f25f934..76160ea
--- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
+++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
@@@ -1708,43 -1448,7 +1708,33 @@@ public class ColumnFamilyStore implemen
return markCurrentViewReferenced().sstables;
}
+ public Set<SSTableReader> getUnrepairedSSTables()
+ {
+ Set<SSTableReader> unRepairedSSTables = new HashSet<>(getSSTables());
+ Iterator<SSTableReader> sstableIterator = unRepairedSSTables.iterator();
+ while(sstableIterator.hasNext())
+ {
+ SSTableReader sstable = sstableIterator.next();
+ if (sstable.isRepaired())
+ sstableIterator.remove();
+ }
+ return unRepairedSSTables;
+ }
+
+ public Set<SSTableReader> getRepairedSSTables()
+ {
+ Set<SSTableReader> repairedSSTables = new HashSet<>(getSSTables());
+ Iterator<SSTableReader> sstableIterator = repairedSSTables.iterator();
+ while(sstableIterator.hasNext())
+ {
+ SSTableReader sstable = sstableIterator.next();
+ if (!sstable.isRepaired())
+ sstableIterator.remove();
+ }
+ return repairedSSTables;
+ }
+
- abstract class AbstractViewSSTableFinder
- {
- abstract List<SSTableReader> findSSTables(DataTracker.View view);
- protected List<SSTableReader> sstablesForRowBounds(AbstractBounds<RowPosition> rowBounds, DataTracker.View view)
- {
- RowPosition stopInTree = rowBounds.right.isMinimum() ? view.intervalTree.max() : rowBounds.right;
- return view.intervalTree.search(Interval.<RowPosition, SSTableReader>create(rowBounds.left, stopInTree));
- }
- }
-
- private ViewFragment markReferenced(AbstractViewSSTableFinder finder)
+ private ViewFragment markReferenced(Function<DataTracker.View, List<SSTableReader>> filter)
{
List<SSTableReader> sstables;
DataTracker.View view;
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8e101bef/src/java/org/apache/cassandra/db/DataTracker.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/DataTracker.java
index e51f380,c1ae00f..30bd360
--- a/src/java/org/apache/cassandra/db/DataTracker.java
+++ b/src/java/org/apache/cassandra/db/DataTracker.java
@@@ -32,12 -29,14 +29,14 @@@ import org.slf4j.LoggerFactory
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.db.compaction.OperationType;
+ import org.apache.cassandra.dht.AbstractBounds;
-import org.apache.cassandra.io.sstable.Descriptor;
import org.apache.cassandra.io.sstable.SSTableReader;
import org.apache.cassandra.io.util.FileUtils;
import org.apache.cassandra.metrics.StorageMetrics;
import org.apache.cassandra.notifications.*;
import org.apache.cassandra.utils.Interval;
import org.apache.cassandra.utils.IntervalTree;
++import org.apache.cassandra.utils.concurrent.OpOrder;
public class DataTracker
{
@@@ -317,47 -322,11 +316,47 @@@
/** (Re)initializes the tracker, purging all references. */
void init()
{
- view.set(new View(new Memtable(cfstore),
- Collections.<Memtable>emptySet(),
- Collections.<SSTableReader>emptySet(),
- Collections.<SSTableReader>emptySet(),
- SSTableIntervalTree.empty()));
+ view.set(new View(
- ImmutableList.of(new Memtable(cfstore)),
- ImmutableList.<Memtable>of(),
- Collections.<SSTableReader>emptySet(),
- Collections.<SSTableReader>emptySet(),
- SSTableIntervalTree.empty()));
++ ImmutableList.of(new Memtable(cfstore)),
++ ImmutableList.<Memtable>of(),
++ Collections.<SSTableReader>emptySet(),
++ Collections.<SSTableReader>emptySet(),
++ SSTableIntervalTree.empty()));
+ }
+
+ /**
+ * A special kind of replacement for SSTableReaders that were cloned with a new index summary sampling level (see
+ * SSTableReader.cloneWithNewSummarySamplingLevel and CASSANDRA-5519). This does not mark the old reader
+ * as compacted.
+ * @param oldSSTables replaced readers
+ * @param newSSTables replacement readers
+ */
+ public void replaceReaders(Collection<SSTableReader> oldSSTables, Collection<SSTableReader> newSSTables)
+ {
+ // data component will be unchanged but the index summary will be a different size
+ // (since we save that to make restart fast)
+ long sizeIncrease = 0;
+ for (SSTableReader sstable : oldSSTables)
+ sizeIncrease -= sstable.bytesOnDisk();
+ for (SSTableReader sstable : newSSTables)
+ sizeIncrease += sstable.bytesOnDisk();
+
+ View currentView, newView;
+ do
+ {
+ currentView = view.get();
+ newView = currentView.replace(oldSSTables, newSSTables);
+ }
+ while (!view.compareAndSet(currentView, newView));
+
+ StorageMetrics.load.inc(sizeIncrease);
+ cfstore.metric.liveDiskSpaceUsed.inc(sizeIncrease);
+
+ for (SSTableReader sstable : newSSTables)
+ sstable.setTrackedBy(this);
+
+ for (SSTableReader sstable : oldSSTables)
+ sstable.releaseReference();
}
private void replace(Collection<SSTableReader> oldSSTables, Iterable<SSTableReader> replacements)
@@@ -690,7 -593,13 +689,13 @@@
@Override
public String toString()
{
- return String.format("View(pending_count=%d, sstables=%s, compacting=%s)", memtablesPendingFlush.size(), sstables, compacting);
+ return String.format("View(pending_count=%d, sstables=%s, compacting=%s)", liveMemtables.size() + flushingMemtables.size() - 1, sstables, compacting);
}
+
+ public List<SSTableReader> sstablesInBounds(AbstractBounds<RowPosition> rowBounds)
+ {
- RowPosition stopInTree = rowBounds.right.isMinimum(memtable.cfs.partitioner) ? intervalTree.max() : rowBounds.right;
++ RowPosition stopInTree = rowBounds.right.isMinimum(liveMemtables.get(0).cfs.partitioner) ? intervalTree.max() : rowBounds.right;
+ return intervalTree.search(Interval.<RowPosition, SSTableReader>create(rowBounds.left, stopInTree));
+ }
}
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8e101bef/src/java/org/apache/cassandra/db/marshal/DateType.java
----------------------------------------------------------------------