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/04/22 14:34:37 UTC
[01/19] git commit: CHANGES
Repository: cassandra
Updated Branches:
refs/heads/cassandra-2.0 48d7e4080 -> 364282a7d
refs/heads/cassandra-2.1 3e6b29925 -> a2e74354c
refs/heads/trunk 68aa62bde -> 498eb2ab7
CHANGES
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/75b87ce8
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/75b87ce8
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/75b87ce8
Branch: refs/heads/cassandra-2.0
Commit: 75b87ce86bb729c38832acfb0edb6ab84a0deefd
Parents: 655ae7a
Author: Jonathan Ellis <jb...@apache.org>
Authored: Fri Apr 4 15:33:47 2014 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Wed Apr 9 09:07:04 2014 -0500
----------------------------------------------------------------------
CHANGES.txt | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/75b87ce8/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 38a6c3c..b642908 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,5 +1,6 @@
2.0.7
- * Allow compaction of system tables during startup (CASSANDRA-6913)
+ * Avoid early loading of non-system keyspaces before compaction-leftovers
+ cleanup at startup (CASSANDRA-6913)
* Restrict Windows to parallel repairs (CASSANDRA-6907)
* (Hadoop) Allow manually specifying start/end tokens in CFIF (CASSANDRA-6436)
* Fix NPE in MeteredFlusher (CASSANDRA-6820)
[06/19] git commit: cleanup
Posted by jb...@apache.org.
cleanup
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/655ae7a8
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/655ae7a8
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/655ae7a8
Branch: refs/heads/trunk
Commit: 655ae7a8f9c4582eb6c303e005df6edbe76bd732
Parents: 2dd0907
Author: Jonathan Ellis <jb...@apache.org>
Authored: Fri Apr 4 12:34:12 2014 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Wed Apr 9 09:07:04 2014 -0500
----------------------------------------------------------------------
src/java/org/apache/cassandra/db/DeletionTime.java | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/655ae7a8/src/java/org/apache/cassandra/db/DeletionTime.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/DeletionTime.java b/src/java/org/apache/cassandra/db/DeletionTime.java
index b80422c..a1b9f17 100644
--- a/src/java/org/apache/cassandra/db/DeletionTime.java
+++ b/src/java/org/apache/cassandra/db/DeletionTime.java
@@ -122,10 +122,9 @@ public class DeletionTime implements Comparable<DeletionTime>
{
int ldt = in.readInt();
long mfda = in.readLong();
- if (mfda == Long.MIN_VALUE && ldt == Integer.MAX_VALUE)
- return LIVE;
- else
- return new DeletionTime(mfda, ldt);
+ return mfda == Long.MIN_VALUE && ldt == Integer.MAX_VALUE
+ ? LIVE
+ : new DeletionTime(mfda, ldt);
}
public long serializedSize(DeletionTime delTime, TypeSizes typeSizes)
[18/19] git commit: Add range tombstones to read repair digests patch
by Oleg Anastasyev; reviewed by jbellis for CASSANDRA-6863
Posted by jb...@apache.org.
Add range tombstones to read repair digests
patch by Oleg Anastasyev; reviewed by jbellis for CASSANDRA-6863
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/a2e74354
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/a2e74354
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/a2e74354
Branch: refs/heads/trunk
Commit: a2e74354ca51809a11b62dd7995c026807683b0a
Parents: be2686d
Author: Jonathan Ellis <jb...@apache.org>
Authored: Tue Apr 22 07:27:20 2014 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Tue Apr 22 07:27:20 2014 -0500
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../org/apache/cassandra/db/ColumnFamily.java | 5 ++
.../org/apache/cassandra/db/DeletionInfo.java | 34 +++++++++-
.../apache/cassandra/db/RangeTombstoneList.java | 68 ++++++++++++++++++--
.../apache/cassandra/net/MessagingService.java | 32 ++++++++-
test/unit/org/apache/cassandra/Util.java | 7 ++
.../apache/cassandra/db/ColumnFamilyTest.java | 46 ++++++++++++-
test/unit/org/apache/cassandra/db/RowTest.java | 40 ++++++++++--
8 files changed, 222 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a2e74354/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index ae7410e..495dab2 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
2.1.0-beta2
+ * Add range tombstones to read repair digests (CASSANDRA-6863)
* Fix BTree.clear for large updates (CASSANDRA-6943)
* Fail write instead of logging a warning when unable to append to CL
(CASSANDRA-6764)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a2e74354/src/java/org/apache/cassandra/db/ColumnFamily.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/ColumnFamily.java b/src/java/org/apache/cassandra/db/ColumnFamily.java
index da404b0..4f85610 100644
--- a/src/java/org/apache/cassandra/db/ColumnFamily.java
+++ b/src/java/org/apache/cassandra/db/ColumnFamily.java
@@ -313,8 +313,11 @@ public abstract class ColumnFamily implements Iterable<Cell>, IRowCacheEntry
}
}
+ cfDiff.setDeletionInfo(deletionInfo().diff(cfComposite.deletionInfo()));
+
if (!cfDiff.isEmpty())
return cfDiff;
+
return null;
}
@@ -385,6 +388,8 @@ public abstract class ColumnFamily implements Iterable<Cell>, IRowCacheEntry
{
for (Cell cell : this)
cell.updateDigest(digest);
+ if (MessagingService.instance().areAllNodesAtLeast21())
+ deletionInfo().updateDigest(digest);
}
public static ColumnFamily diff(ColumnFamily cf1, ColumnFamily cf2)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a2e74354/src/java/org/apache/cassandra/db/DeletionInfo.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/DeletionInfo.java b/src/java/org/apache/cassandra/db/DeletionInfo.java
index 8601bce..a167b85 100644
--- a/src/java/org/apache/cassandra/db/DeletionInfo.java
+++ b/src/java/org/apache/cassandra/db/DeletionInfo.java
@@ -19,7 +19,9 @@ package org.apache.cassandra.db;
import java.io.DataInput;
import java.io.IOException;
-import java.util.*;
+import java.security.MessageDigest;
+import java.util.Comparator;
+import java.util.Iterator;
import com.google.common.base.Objects;
import com.google.common.collect.Iterators;
@@ -29,6 +31,7 @@ import org.apache.cassandra.db.composites.CType;
import org.apache.cassandra.db.composites.Composite;
import org.apache.cassandra.io.IVersionedSerializer;
import org.apache.cassandra.io.util.DataOutputPlus;
+import org.apache.cassandra.utils.ByteBufferUtil;
import org.apache.cassandra.utils.ObjectSizes;
/**
@@ -168,6 +171,35 @@ public class DeletionInfo implements IMeasurableMemory
}
/**
+ * Evaluates difference between this deletion info and superset for read repair
+ *
+ * @return the difference between the two, or LIVE if no difference
+ */
+ public DeletionInfo diff(DeletionInfo superset)
+ {
+ RangeTombstoneList rangeDiff = superset.ranges == null || superset.ranges.isEmpty()
+ ? null
+ : ranges == null ? superset.ranges : ranges.diff(superset.ranges);
+
+ return topLevel.markedForDeleteAt != superset.topLevel.markedForDeleteAt || rangeDiff != null
+ ? new DeletionInfo(superset.topLevel, rangeDiff)
+ : DeletionInfo.live();
+ }
+
+
+ /**
+ * Digests deletion info. Used to trigger read repair on mismatch.
+ */
+ public void updateDigest(MessageDigest digest)
+ {
+ if (topLevel.markedForDeleteAt != Long.MIN_VALUE)
+ digest.update(ByteBufferUtil.bytes(topLevel.markedForDeleteAt));
+
+ if (ranges != null)
+ ranges.updateDigest(digest);
+ }
+
+ /**
* Returns true if {@code purge} would remove the top-level tombstone or any of the range
* tombstones, false otherwise.
* @param gcBefore timestamp (in seconds) before which tombstones should be purged
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a2e74354/src/java/org/apache/cassandra/db/RangeTombstoneList.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/RangeTombstoneList.java b/src/java/org/apache/cassandra/db/RangeTombstoneList.java
index dd0b9a6..b06c520 100644
--- a/src/java/org/apache/cassandra/db/RangeTombstoneList.java
+++ b/src/java/org/apache/cassandra/db/RangeTombstoneList.java
@@ -19,12 +19,16 @@ package org.apache.cassandra.db;
import java.io.DataInput;
import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.security.MessageDigest;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Iterator;
import com.google.common.collect.AbstractIterator;
import com.google.common.collect.Iterators;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.apache.cassandra.cache.IMeasurableMemory;
import org.apache.cassandra.db.composites.CType;
@@ -32,10 +36,7 @@ import org.apache.cassandra.db.composites.Composite;
import org.apache.cassandra.io.IVersionedSerializer;
import org.apache.cassandra.io.util.DataOutputPlus;
import org.apache.cassandra.net.MessagingService;
-
import org.apache.cassandra.utils.ObjectSizes;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Data structure holding the range tombstones of a ColumnFamily.
@@ -384,6 +385,64 @@ public class RangeTombstoneList implements Iterable<RangeTombstone>, IMeasurable
}
};
}
+
+ /**
+ * Evaluates a diff between superset (known to be all merged tombstones) and this list for read repair
+ *
+ * @return null if there is no difference
+ */
+ public RangeTombstoneList diff(RangeTombstoneList superset)
+ {
+ if (isEmpty())
+ return superset;
+
+ assert size <= superset.size;
+
+ RangeTombstoneList diff = null;
+
+ int j = 0; // index to iterate through our own list
+ for (int i = 0; i < superset.size; i++)
+ {
+ boolean sameStart = j < size && starts[j].equals(superset.starts[i]);
+ // don't care about local deletion time here. for RR it doesn't makes sense
+ if (!sameStart
+ || !ends[j].equals(superset.ends[i])
+ || markedAts[j] != superset.markedAts[i])
+ {
+ if (diff == null)
+ diff = new RangeTombstoneList(comparator, Math.min(8, superset.size - i));
+ diff.add(superset.starts[i], superset.ends[i], superset.markedAts[i], superset.delTimes[i]);
+
+ if (sameStart)
+ j++;
+ }
+ else
+ {
+ j++;
+ }
+ }
+
+ return diff;
+ }
+
+ /**
+ * Calculates digest for triggering read repair on mismatch
+ */
+ public void updateDigest(MessageDigest digest)
+ {
+ ByteBuffer longBuffer = ByteBuffer.allocate(8);
+ for (int i = 0; i < size; i++)
+ {
+ for (int j = 0; j < starts[i].size(); j++)
+ digest.update(starts[i].get(j).duplicate());
+ for (int j = 0; j < ends[i].size(); j++)
+ digest.update(ends[i].get(j).duplicate());
+
+ longBuffer.putLong(0, markedAts[i]);
+ digest.update(longBuffer.array(), 0, 8);
+ }
+ }
+
@Override
public boolean equals(Object o)
@@ -393,7 +452,7 @@ public class RangeTombstoneList implements Iterable<RangeTombstone>, IMeasurable
RangeTombstoneList that = (RangeTombstoneList)o;
if (size != that.size)
return false;
-
+
for (int i = 0; i < size; i++)
{
if (!starts[i].equals(that.starts[i]))
@@ -779,4 +838,5 @@ public class RangeTombstoneList implements Iterable<RangeTombstone>, IMeasurable
return false;
}
}
+
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a2e74354/src/java/org/apache/cassandra/net/MessagingService.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/net/MessagingService.java b/src/java/org/apache/cassandra/net/MessagingService.java
index 6d9a1b5..4ef57d3 100644
--- a/src/java/org/apache/cassandra/net/MessagingService.java
+++ b/src/java/org/apache/cassandra/net/MessagingService.java
@@ -84,6 +84,8 @@ public final class MessagingService implements MessagingServiceMBean
*/
public static final int PROTOCOL_MAGIC = 0xCA552DFA;
+ private boolean allNodesAtLeast21;
+
/* All verb handler identifiers */
public enum Verb
{
@@ -760,20 +762,47 @@ public final class MessagingService implements MessagingServiceMBean
return packed >>> (start + 1) - count & ~(-1 << count);
}
+ public boolean areAllNodesAtLeast21()
+ {
+ return allNodesAtLeast21;
+ }
+
/**
* @return the last version associated with address, or @param version if this is the first such version
*/
public int setVersion(InetAddress endpoint, int version)
{
logger.debug("Setting version {} for {}", version, endpoint);
+ if (version < VERSION_21)
+ allNodesAtLeast21 = false;
Integer v = versions.put(endpoint, version);
+
+ // if the version was increased to 2.0 or later, see if all nodes are >= 2.0 now
+ if (v != null && v < VERSION_21 && version >= VERSION_21)
+ refreshAllNodesAtLeast21();
+
return v == null ? version : v;
}
public void resetVersion(InetAddress endpoint)
{
logger.debug("Reseting version for {}", endpoint);
- versions.remove(endpoint);
+ Integer removed = versions.remove(endpoint);
+ if (removed != null && removed <= VERSION_21)
+ refreshAllNodesAtLeast21();
+ }
+
+ private void refreshAllNodesAtLeast21()
+ {
+ for (Integer version: versions.values())
+ {
+ if (version < VERSION_21)
+ {
+ allNodesAtLeast21 = false;
+ return;
+ }
+ }
+ allNodesAtLeast21 = true;
}
public int getVersion(InetAddress endpoint)
@@ -807,6 +836,7 @@ public final class MessagingService implements MessagingServiceMBean
return versions.containsKey(endpoint);
}
+
public void incrementDroppedMessages(Verb verb)
{
assert DROPPABLE_VERBS.contains(verb) : "Verb " + verb + " should not legally be dropped";
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a2e74354/test/unit/org/apache/cassandra/Util.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/Util.java b/test/unit/org/apache/cassandra/Util.java
index b74f2c9..fe80009 100644
--- a/test/unit/org/apache/cassandra/Util.java
+++ b/test/unit/org/apache/cassandra/Util.java
@@ -368,4 +368,11 @@ public class Util
throw new RuntimeException(e);
}
}
+
+ public static RangeTombstone tombstone(String start, String finish, long timestamp, int localtime)
+ {
+ Composite startName = CellNames.simpleDense(ByteBufferUtil.bytes(start));
+ Composite endName = CellNames.simpleDense(ByteBufferUtil.bytes(finish));
+ return new RangeTombstone(startName, endName, timestamp , localtime);
+ }
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a2e74354/test/unit/org/apache/cassandra/db/ColumnFamilyTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/db/ColumnFamilyTest.java b/test/unit/org/apache/cassandra/db/ColumnFamilyTest.java
index b791b03..7f8da96 100644
--- a/test/unit/org/apache/cassandra/db/ColumnFamilyTest.java
+++ b/test/unit/org/apache/cassandra/db/ColumnFamilyTest.java
@@ -22,12 +22,13 @@ import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
-import java.util.*;
+import java.util.TreeMap;
import com.google.common.collect.Iterables;
import org.junit.Test;
import org.apache.cassandra.SchemaLoader;
+import org.apache.cassandra.Util;
import org.apache.cassandra.io.sstable.ColumnStats;
import org.apache.cassandra.io.util.DataOutputBuffer;
import org.apache.cassandra.net.MessagingService;
@@ -35,6 +36,7 @@ import org.apache.cassandra.utils.ByteBufferUtil;
import static org.apache.cassandra.Util.column;
import static org.apache.cassandra.Util.cellname;
+import static org.apache.cassandra.Util.tombstone;
import static org.junit.Assert.assertEquals;
public class ColumnFamilyTest extends SchemaLoader
@@ -105,6 +107,48 @@ public class ColumnFamilyTest extends SchemaLoader
}
@Test
+ public void testDigest()
+ {
+ ColumnFamily cf = ArrayBackedSortedColumns.factory.create("Keyspace1", "Standard1");
+ ColumnFamily cf2 = ArrayBackedSortedColumns.factory.create("Keyspace1", "Standard1");
+
+ ByteBuffer digest = ColumnFamily.digest(cf);
+
+ cf.addColumn(column("col1", "", 1));
+ cf2.addColumn(column("col1", "", 1));
+
+ assert !digest.equals(ColumnFamily.digest(cf));
+
+ digest = ColumnFamily.digest(cf);
+ assert digest.equals(ColumnFamily.digest(cf2));
+
+ cf.addColumn(column("col2", "", 2));
+ assert !digest.equals(ColumnFamily.digest(cf));
+
+ digest = ColumnFamily.digest(cf);
+ cf.addColumn(column("col1", "", 3));
+ assert !digest.equals(ColumnFamily.digest(cf));
+
+ digest = ColumnFamily.digest(cf);
+ cf.delete(new DeletionTime(4, 4));
+ assert !digest.equals(ColumnFamily.digest(cf));
+
+ digest = ColumnFamily.digest(cf);
+ cf.delete(tombstone("col1", "col11", 5, 5));
+ assert !digest.equals(ColumnFamily.digest(cf));
+
+ digest = ColumnFamily.digest(cf);
+ assert digest.equals(ColumnFamily.digest(cf));
+
+ cf.delete(tombstone("col2", "col21", 5, 5));
+ assert !digest.equals(ColumnFamily.digest(cf));
+
+ digest = ColumnFamily.digest(cf);
+ cf.delete(tombstone("col1", "col11", 5, 5)); // this does not change RangeTombstoneLList
+ assert digest.equals(ColumnFamily.digest(cf));
+ }
+
+ @Test
public void testTimestamp()
{
ColumnFamily cf = ArrayBackedSortedColumns.factory.create("Keyspace1", "Standard1");
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a2e74354/test/unit/org/apache/cassandra/db/RowTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/db/RowTest.java b/test/unit/org/apache/cassandra/db/RowTest.java
index f024c44..3de7fdc 100644
--- a/test/unit/org/apache/cassandra/db/RowTest.java
+++ b/test/unit/org/apache/cassandra/db/RowTest.java
@@ -20,19 +20,19 @@ package org.apache.cassandra.db;
import java.util.Arrays;
import java.util.concurrent.TimeUnit;
-import org.junit.Test;
import com.google.common.util.concurrent.Uninterruptibles;
+import org.junit.Test;
import org.apache.cassandra.SchemaLoader;
-import org.apache.cassandra.db.composites.*;
+import org.apache.cassandra.db.composites.CellNames;
import org.apache.cassandra.utils.ByteBufferUtil;
+import static org.apache.cassandra.Util.column;
+import static org.apache.cassandra.Util.tombstone;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
-import static org.apache.cassandra.Util.column;
-
public class RowTest extends SchemaLoader
{
@Test
@@ -48,6 +48,38 @@ public class RowTest extends SchemaLoader
ColumnFamily cfDiff = cf1.diff(cf2);
assertFalse(cfDiff.hasColumns());
assertEquals(cfDiff.deletionInfo(), delInfo);
+
+ RangeTombstone tombstone1 = tombstone("1", "11", (long) 123, 123);
+ RangeTombstone tombstone1_2 = tombstone("111", "112", (long) 1230, 123);
+ RangeTombstone tombstone2_1 = tombstone("2", "22", (long) 123, 123);
+ RangeTombstone tombstone2_2 = tombstone("2", "24", (long) 123, 123);
+ RangeTombstone tombstone3_1 = tombstone("3", "31", (long) 123, 123);
+ RangeTombstone tombstone3_2 = tombstone("3", "31", (long) 1230, 123);
+ RangeTombstone tombstone4_1 = tombstone("4", "41", (long) 123, 123);
+ RangeTombstone tombstone4_2 = tombstone("4", "41", (long) 123, 1230);
+ RangeTombstone tombstone5_2 = tombstone("5", "51", (long) 123, 1230);
+ cf1.delete(tombstone1);
+ cf1.delete(tombstone2_1);
+ cf1.delete(tombstone3_1);
+ cf1.delete(tombstone4_1);
+
+ cf2.delete(tombstone1);
+ cf2.delete(tombstone1_2);
+ cf2.delete(tombstone2_2);
+ cf2.delete(tombstone3_2);
+ cf2.delete(tombstone4_2);
+ cf2.delete(tombstone5_2);
+
+ cfDiff = cf1.diff(cf2);
+ assertEquals(0, cfDiff.getColumnCount());
+
+ // only tmbstones which differ in superset or have more recent timestamp to be in diff
+ delInfo.add(tombstone1_2, cf1.getComparator());
+ delInfo.add(tombstone2_2, cf1.getComparator());
+ delInfo.add(tombstone3_2, cf1.getComparator());
+ delInfo.add(tombstone5_2, cf1.getComparator());
+
+ assertEquals(delInfo, cfDiff.deletionInfo());
}
@Test
[13/19] git commit: Merge branch 'cassandra-2.0' into cassandra-2.1
Posted by jb...@apache.org.
Merge branch 'cassandra-2.0' into cassandra-2.1
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/4305bd40
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/4305bd40
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/4305bd40
Branch: refs/heads/cassandra-2.1
Commit: 4305bd40f619e1d4ebdfc5873c082deb82aac5f0
Parents: 3e6b299 364282a
Author: Jonathan Ellis <jb...@apache.org>
Authored: Tue Apr 22 07:20:45 2014 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Tue Apr 22 07:20:45 2014 -0500
----------------------------------------------------------------------
CHANGES.txt | 3 ++-
src/java/org/apache/cassandra/db/DeletionTime.java | 7 +++----
2 files changed, 5 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/4305bd40/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index d94f13b,791586c..ae7410e
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,55 -1,16 +1,56 @@@
-2.0.8
- * Queries on compact tables can return more rows that requested (CASSANDRA-7052)
- * USING TIMESTAMP for batches does not work (CASSANDRA-7053)
-Merged from 1.2:
- * Fix batchlog to account for CF truncation records (CASSANDRA-6999)
- * Fix CQLSH parsing of functions and BLOB literals (CASSANDRA-7018)
+2.1.0-beta2
+ * Fix BTree.clear for large updates (CASSANDRA-6943)
+ * Fail write instead of logging a warning when unable to append to CL
+ (CASSANDRA-6764)
+ * Eliminate possibility of CL segment appearing twice in active list
+ (CASSANDRA-6557)
+ * Apply DONTNEED fadvise to commitlog segments (CASSANDRA-6759)
+ * Switch CRC component to Adler and include it for compressed sstables
+ (CASSANDRA-4165)
+ * Allow cassandra-stress to set compaction strategy options (CASSANDRA-6451)
+ * Add broadcast_rpc_address option to cassandra.yaml (CASSANDRA-5899)
+ * Auto reload GossipingPropertyFileSnitch config (CASSANDRA-5897)
+ * Fix overflow of memtable_total_space_in_mb (CASSANDRA-6573)
+ * Fix ABTC NPE and apply update function correctly (CASSANDRA-6692)
+ * Allow nodetool to use a file or prompt for password (CASSANDRA-6660)
+ * Fix AIOOBE when concurrently accessing ABSC (CASSANDRA-6742)
+ * Fix assertion error in ALTER TYPE RENAME (CASSANDRA-6705)
+ * Scrub should not always clear out repaired status (CASSANDRA-5351)
+ * Improve handling of range tombstone for wide partitions (CASSANDRA-6446)
+ * Fix ClassCastException for compact table with composites (CASSANDRA-6738)
+ * Fix potentially repairing with wrong nodes (CASSANDRA-6808)
+ * Change caching option syntax (CASSANDRA-6745)
+ * Fix stress to do proper counter reads (CASSANDRA-6835)
+ * Fix help message for stress counter_write (CASSANDRA-6824)
+ * Fix stress smart Thrift client to pick servers correctly (CASSANDRA-6848)
+ * Add logging levels (minimal, normal or verbose) to stress tool (CASSANDRA-6849)
+ * Fix race condition in Batch CLE (CASSANDRA-6860)
+ * Improve cleanup/scrub/upgradesstables failure handling (CASSANDRA-6774)
+ * ByteBuffer write() methods for serializing sstables (CASSANDRA-6781)
+ * Proper compare function for CollectionType (CASSANDRA-6783)
+ * Update native server to Netty 4 (CASSANDRA-6236)
+ * Fix off-by-one error in stress (CASSANDRA-6883)
+ * Make OpOrder AutoCloseable (CASSANDRA-6901)
+ * Remove sync repair JMX interface (CASSANDRA-6900)
+ * Add multiple memory allocation options for memtables (CASSANDRA-6689)
+ * Remove adjusted op rate from stress output (CASSANDRA-6921)
+ * Add optimized CF.hasColumns() implementations (CASSANDRA-6941)
+ * Serialize batchlog mutations with the version of the target node
+ (CASSANDRA-6931)
+ * Optimize CounterColumn#reconcile() (CASSANDRA-6953)
+ * Properly remove 1.2 sstable support in 2.1 (CASSANDRA-6869)
+ * Lock counter cells, not partitions (CASSANDRA-6880)
+ * Track presence of legacy counter shards in sstables (CASSANDRA-6888)
+ * Ensure safe resource cleanup when replacing sstables (CASSANDRA-6912)
+ * Add failure handler to async callback (CASSANDRA-6747)
+ * Fix AE when closing SSTable without releasing reference (CASSANDRA-7000)
+ * Clean up IndexInfo on keyspace/table drops (CASSANDRA-6924)
+ * Only snapshot relative SSTables when sequential repair (CASSANDRA-7024)
* Require nodetool rebuild_index to specify index names (CASSANDRA-7038)
-
-
-2.0.7
+Merged from 2.0:
* Put nodes in hibernate when join_ring is false (CASSANDRA-6961)
- * Allow compaction of system tables during startup (CASSANDRA-6913)
+ * Avoid early loading of non-system keyspaces before compaction-leftovers
+ cleanup at startup (CASSANDRA-6913)
* Restrict Windows to parallel repairs (CASSANDRA-6907)
* (Hadoop) Allow manually specifying start/end tokens in CFIF (CASSANDRA-6436)
* Fix NPE in MeteredFlusher (CASSANDRA-6820)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/4305bd40/src/java/org/apache/cassandra/db/DeletionTime.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/DeletionTime.java
index e3e18f1,a1b9f17..f08196d
--- a/src/java/org/apache/cassandra/db/DeletionTime.java
+++ b/src/java/org/apache/cassandra/db/DeletionTime.java
@@@ -125,17 -122,11 +125,16 @@@ public class DeletionTime implements Co
{
int ldt = in.readInt();
long mfda = in.readLong();
- if (mfda == Long.MIN_VALUE && ldt == Integer.MAX_VALUE)
- return LIVE;
- else
- return new DeletionTime(mfda, ldt);
+ return mfda == Long.MIN_VALUE && ldt == Integer.MAX_VALUE
+ ? LIVE
+ : new DeletionTime(mfda, ldt);
}
+ public void skip(DataInput in) throws IOException
+ {
+ FileUtils.skipBytesFully(in, 4 + 8);
+ }
+
public long serializedSize(DeletionTime delTime, TypeSizes typeSizes)
{
return typeSizes.sizeof(delTime.localDeletionTime)
[16/19] git commit: remove invalid assert patch by Benedict Elliott
Smith; reviewed by jbellis for CASSANDRA-6987
Posted by jb...@apache.org.
remove invalid assert
patch by Benedict Elliott Smith; reviewed by jbellis for CASSANDRA-6987
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/be2686dd
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/be2686dd
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/be2686dd
Branch: refs/heads/cassandra-2.1
Commit: be2686dd94582abbdd20e0b1b3088d52eae4fbf2
Parents: 4305bd4
Author: Jonathan Ellis <jb...@apache.org>
Authored: Tue Apr 22 07:23:30 2014 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Tue Apr 22 07:23:30 2014 -0500
----------------------------------------------------------------------
src/java/org/apache/cassandra/db/Keyspace.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/be2686dd/src/java/org/apache/cassandra/db/Keyspace.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/Keyspace.java b/src/java/org/apache/cassandra/db/Keyspace.java
index 1c3df77..31e68c1 100644
--- a/src/java/org/apache/cassandra/db/Keyspace.java
+++ b/src/java/org/apache/cassandra/db/Keyspace.java
@@ -99,9 +99,9 @@ public class Keyspace
return open(keyspaceName, Schema.instance, true);
}
+ // to only be used by org.apache.cassandra.tools.Standalone* classes
public static Keyspace openWithoutSSTables(String keyspaceName)
{
- assert initialized || keyspaceName.equals(SYSTEM_KS);
return open(keyspaceName, Schema.instance, false);
}
[02/19] git commit: cleanup
Posted by jb...@apache.org.
cleanup
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/655ae7a8
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/655ae7a8
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/655ae7a8
Branch: refs/heads/cassandra-2.0
Commit: 655ae7a8f9c4582eb6c303e005df6edbe76bd732
Parents: 2dd0907
Author: Jonathan Ellis <jb...@apache.org>
Authored: Fri Apr 4 12:34:12 2014 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Wed Apr 9 09:07:04 2014 -0500
----------------------------------------------------------------------
src/java/org/apache/cassandra/db/DeletionTime.java | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/655ae7a8/src/java/org/apache/cassandra/db/DeletionTime.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/DeletionTime.java b/src/java/org/apache/cassandra/db/DeletionTime.java
index b80422c..a1b9f17 100644
--- a/src/java/org/apache/cassandra/db/DeletionTime.java
+++ b/src/java/org/apache/cassandra/db/DeletionTime.java
@@ -122,10 +122,9 @@ public class DeletionTime implements Comparable<DeletionTime>
{
int ldt = in.readInt();
long mfda = in.readLong();
- if (mfda == Long.MIN_VALUE && ldt == Integer.MAX_VALUE)
- return LIVE;
- else
- return new DeletionTime(mfda, ldt);
+ return mfda == Long.MIN_VALUE && ldt == Integer.MAX_VALUE
+ ? LIVE
+ : new DeletionTime(mfda, ldt);
}
public long serializedSize(DeletionTime delTime, TypeSizes typeSizes)
[17/19] git commit: Add range tombstones to read repair digests patch
by Oleg Anastasyev; reviewed by jbellis for CASSANDRA-6863
Posted by jb...@apache.org.
Add range tombstones to read repair digests
patch by Oleg Anastasyev; reviewed by jbellis for CASSANDRA-6863
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/a2e74354
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/a2e74354
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/a2e74354
Branch: refs/heads/cassandra-2.1
Commit: a2e74354ca51809a11b62dd7995c026807683b0a
Parents: be2686d
Author: Jonathan Ellis <jb...@apache.org>
Authored: Tue Apr 22 07:27:20 2014 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Tue Apr 22 07:27:20 2014 -0500
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../org/apache/cassandra/db/ColumnFamily.java | 5 ++
.../org/apache/cassandra/db/DeletionInfo.java | 34 +++++++++-
.../apache/cassandra/db/RangeTombstoneList.java | 68 ++++++++++++++++++--
.../apache/cassandra/net/MessagingService.java | 32 ++++++++-
test/unit/org/apache/cassandra/Util.java | 7 ++
.../apache/cassandra/db/ColumnFamilyTest.java | 46 ++++++++++++-
test/unit/org/apache/cassandra/db/RowTest.java | 40 ++++++++++--
8 files changed, 222 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a2e74354/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index ae7410e..495dab2 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
2.1.0-beta2
+ * Add range tombstones to read repair digests (CASSANDRA-6863)
* Fix BTree.clear for large updates (CASSANDRA-6943)
* Fail write instead of logging a warning when unable to append to CL
(CASSANDRA-6764)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a2e74354/src/java/org/apache/cassandra/db/ColumnFamily.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/ColumnFamily.java b/src/java/org/apache/cassandra/db/ColumnFamily.java
index da404b0..4f85610 100644
--- a/src/java/org/apache/cassandra/db/ColumnFamily.java
+++ b/src/java/org/apache/cassandra/db/ColumnFamily.java
@@ -313,8 +313,11 @@ public abstract class ColumnFamily implements Iterable<Cell>, IRowCacheEntry
}
}
+ cfDiff.setDeletionInfo(deletionInfo().diff(cfComposite.deletionInfo()));
+
if (!cfDiff.isEmpty())
return cfDiff;
+
return null;
}
@@ -385,6 +388,8 @@ public abstract class ColumnFamily implements Iterable<Cell>, IRowCacheEntry
{
for (Cell cell : this)
cell.updateDigest(digest);
+ if (MessagingService.instance().areAllNodesAtLeast21())
+ deletionInfo().updateDigest(digest);
}
public static ColumnFamily diff(ColumnFamily cf1, ColumnFamily cf2)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a2e74354/src/java/org/apache/cassandra/db/DeletionInfo.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/DeletionInfo.java b/src/java/org/apache/cassandra/db/DeletionInfo.java
index 8601bce..a167b85 100644
--- a/src/java/org/apache/cassandra/db/DeletionInfo.java
+++ b/src/java/org/apache/cassandra/db/DeletionInfo.java
@@ -19,7 +19,9 @@ package org.apache.cassandra.db;
import java.io.DataInput;
import java.io.IOException;
-import java.util.*;
+import java.security.MessageDigest;
+import java.util.Comparator;
+import java.util.Iterator;
import com.google.common.base.Objects;
import com.google.common.collect.Iterators;
@@ -29,6 +31,7 @@ import org.apache.cassandra.db.composites.CType;
import org.apache.cassandra.db.composites.Composite;
import org.apache.cassandra.io.IVersionedSerializer;
import org.apache.cassandra.io.util.DataOutputPlus;
+import org.apache.cassandra.utils.ByteBufferUtil;
import org.apache.cassandra.utils.ObjectSizes;
/**
@@ -168,6 +171,35 @@ public class DeletionInfo implements IMeasurableMemory
}
/**
+ * Evaluates difference between this deletion info and superset for read repair
+ *
+ * @return the difference between the two, or LIVE if no difference
+ */
+ public DeletionInfo diff(DeletionInfo superset)
+ {
+ RangeTombstoneList rangeDiff = superset.ranges == null || superset.ranges.isEmpty()
+ ? null
+ : ranges == null ? superset.ranges : ranges.diff(superset.ranges);
+
+ return topLevel.markedForDeleteAt != superset.topLevel.markedForDeleteAt || rangeDiff != null
+ ? new DeletionInfo(superset.topLevel, rangeDiff)
+ : DeletionInfo.live();
+ }
+
+
+ /**
+ * Digests deletion info. Used to trigger read repair on mismatch.
+ */
+ public void updateDigest(MessageDigest digest)
+ {
+ if (topLevel.markedForDeleteAt != Long.MIN_VALUE)
+ digest.update(ByteBufferUtil.bytes(topLevel.markedForDeleteAt));
+
+ if (ranges != null)
+ ranges.updateDigest(digest);
+ }
+
+ /**
* Returns true if {@code purge} would remove the top-level tombstone or any of the range
* tombstones, false otherwise.
* @param gcBefore timestamp (in seconds) before which tombstones should be purged
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a2e74354/src/java/org/apache/cassandra/db/RangeTombstoneList.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/RangeTombstoneList.java b/src/java/org/apache/cassandra/db/RangeTombstoneList.java
index dd0b9a6..b06c520 100644
--- a/src/java/org/apache/cassandra/db/RangeTombstoneList.java
+++ b/src/java/org/apache/cassandra/db/RangeTombstoneList.java
@@ -19,12 +19,16 @@ package org.apache.cassandra.db;
import java.io.DataInput;
import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.security.MessageDigest;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Iterator;
import com.google.common.collect.AbstractIterator;
import com.google.common.collect.Iterators;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.apache.cassandra.cache.IMeasurableMemory;
import org.apache.cassandra.db.composites.CType;
@@ -32,10 +36,7 @@ import org.apache.cassandra.db.composites.Composite;
import org.apache.cassandra.io.IVersionedSerializer;
import org.apache.cassandra.io.util.DataOutputPlus;
import org.apache.cassandra.net.MessagingService;
-
import org.apache.cassandra.utils.ObjectSizes;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Data structure holding the range tombstones of a ColumnFamily.
@@ -384,6 +385,64 @@ public class RangeTombstoneList implements Iterable<RangeTombstone>, IMeasurable
}
};
}
+
+ /**
+ * Evaluates a diff between superset (known to be all merged tombstones) and this list for read repair
+ *
+ * @return null if there is no difference
+ */
+ public RangeTombstoneList diff(RangeTombstoneList superset)
+ {
+ if (isEmpty())
+ return superset;
+
+ assert size <= superset.size;
+
+ RangeTombstoneList diff = null;
+
+ int j = 0; // index to iterate through our own list
+ for (int i = 0; i < superset.size; i++)
+ {
+ boolean sameStart = j < size && starts[j].equals(superset.starts[i]);
+ // don't care about local deletion time here. for RR it doesn't makes sense
+ if (!sameStart
+ || !ends[j].equals(superset.ends[i])
+ || markedAts[j] != superset.markedAts[i])
+ {
+ if (diff == null)
+ diff = new RangeTombstoneList(comparator, Math.min(8, superset.size - i));
+ diff.add(superset.starts[i], superset.ends[i], superset.markedAts[i], superset.delTimes[i]);
+
+ if (sameStart)
+ j++;
+ }
+ else
+ {
+ j++;
+ }
+ }
+
+ return diff;
+ }
+
+ /**
+ * Calculates digest for triggering read repair on mismatch
+ */
+ public void updateDigest(MessageDigest digest)
+ {
+ ByteBuffer longBuffer = ByteBuffer.allocate(8);
+ for (int i = 0; i < size; i++)
+ {
+ for (int j = 0; j < starts[i].size(); j++)
+ digest.update(starts[i].get(j).duplicate());
+ for (int j = 0; j < ends[i].size(); j++)
+ digest.update(ends[i].get(j).duplicate());
+
+ longBuffer.putLong(0, markedAts[i]);
+ digest.update(longBuffer.array(), 0, 8);
+ }
+ }
+
@Override
public boolean equals(Object o)
@@ -393,7 +452,7 @@ public class RangeTombstoneList implements Iterable<RangeTombstone>, IMeasurable
RangeTombstoneList that = (RangeTombstoneList)o;
if (size != that.size)
return false;
-
+
for (int i = 0; i < size; i++)
{
if (!starts[i].equals(that.starts[i]))
@@ -779,4 +838,5 @@ public class RangeTombstoneList implements Iterable<RangeTombstone>, IMeasurable
return false;
}
}
+
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a2e74354/src/java/org/apache/cassandra/net/MessagingService.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/net/MessagingService.java b/src/java/org/apache/cassandra/net/MessagingService.java
index 6d9a1b5..4ef57d3 100644
--- a/src/java/org/apache/cassandra/net/MessagingService.java
+++ b/src/java/org/apache/cassandra/net/MessagingService.java
@@ -84,6 +84,8 @@ public final class MessagingService implements MessagingServiceMBean
*/
public static final int PROTOCOL_MAGIC = 0xCA552DFA;
+ private boolean allNodesAtLeast21;
+
/* All verb handler identifiers */
public enum Verb
{
@@ -760,20 +762,47 @@ public final class MessagingService implements MessagingServiceMBean
return packed >>> (start + 1) - count & ~(-1 << count);
}
+ public boolean areAllNodesAtLeast21()
+ {
+ return allNodesAtLeast21;
+ }
+
/**
* @return the last version associated with address, or @param version if this is the first such version
*/
public int setVersion(InetAddress endpoint, int version)
{
logger.debug("Setting version {} for {}", version, endpoint);
+ if (version < VERSION_21)
+ allNodesAtLeast21 = false;
Integer v = versions.put(endpoint, version);
+
+ // if the version was increased to 2.0 or later, see if all nodes are >= 2.0 now
+ if (v != null && v < VERSION_21 && version >= VERSION_21)
+ refreshAllNodesAtLeast21();
+
return v == null ? version : v;
}
public void resetVersion(InetAddress endpoint)
{
logger.debug("Reseting version for {}", endpoint);
- versions.remove(endpoint);
+ Integer removed = versions.remove(endpoint);
+ if (removed != null && removed <= VERSION_21)
+ refreshAllNodesAtLeast21();
+ }
+
+ private void refreshAllNodesAtLeast21()
+ {
+ for (Integer version: versions.values())
+ {
+ if (version < VERSION_21)
+ {
+ allNodesAtLeast21 = false;
+ return;
+ }
+ }
+ allNodesAtLeast21 = true;
}
public int getVersion(InetAddress endpoint)
@@ -807,6 +836,7 @@ public final class MessagingService implements MessagingServiceMBean
return versions.containsKey(endpoint);
}
+
public void incrementDroppedMessages(Verb verb)
{
assert DROPPABLE_VERBS.contains(verb) : "Verb " + verb + " should not legally be dropped";
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a2e74354/test/unit/org/apache/cassandra/Util.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/Util.java b/test/unit/org/apache/cassandra/Util.java
index b74f2c9..fe80009 100644
--- a/test/unit/org/apache/cassandra/Util.java
+++ b/test/unit/org/apache/cassandra/Util.java
@@ -368,4 +368,11 @@ public class Util
throw new RuntimeException(e);
}
}
+
+ public static RangeTombstone tombstone(String start, String finish, long timestamp, int localtime)
+ {
+ Composite startName = CellNames.simpleDense(ByteBufferUtil.bytes(start));
+ Composite endName = CellNames.simpleDense(ByteBufferUtil.bytes(finish));
+ return new RangeTombstone(startName, endName, timestamp , localtime);
+ }
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a2e74354/test/unit/org/apache/cassandra/db/ColumnFamilyTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/db/ColumnFamilyTest.java b/test/unit/org/apache/cassandra/db/ColumnFamilyTest.java
index b791b03..7f8da96 100644
--- a/test/unit/org/apache/cassandra/db/ColumnFamilyTest.java
+++ b/test/unit/org/apache/cassandra/db/ColumnFamilyTest.java
@@ -22,12 +22,13 @@ import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
-import java.util.*;
+import java.util.TreeMap;
import com.google.common.collect.Iterables;
import org.junit.Test;
import org.apache.cassandra.SchemaLoader;
+import org.apache.cassandra.Util;
import org.apache.cassandra.io.sstable.ColumnStats;
import org.apache.cassandra.io.util.DataOutputBuffer;
import org.apache.cassandra.net.MessagingService;
@@ -35,6 +36,7 @@ import org.apache.cassandra.utils.ByteBufferUtil;
import static org.apache.cassandra.Util.column;
import static org.apache.cassandra.Util.cellname;
+import static org.apache.cassandra.Util.tombstone;
import static org.junit.Assert.assertEquals;
public class ColumnFamilyTest extends SchemaLoader
@@ -105,6 +107,48 @@ public class ColumnFamilyTest extends SchemaLoader
}
@Test
+ public void testDigest()
+ {
+ ColumnFamily cf = ArrayBackedSortedColumns.factory.create("Keyspace1", "Standard1");
+ ColumnFamily cf2 = ArrayBackedSortedColumns.factory.create("Keyspace1", "Standard1");
+
+ ByteBuffer digest = ColumnFamily.digest(cf);
+
+ cf.addColumn(column("col1", "", 1));
+ cf2.addColumn(column("col1", "", 1));
+
+ assert !digest.equals(ColumnFamily.digest(cf));
+
+ digest = ColumnFamily.digest(cf);
+ assert digest.equals(ColumnFamily.digest(cf2));
+
+ cf.addColumn(column("col2", "", 2));
+ assert !digest.equals(ColumnFamily.digest(cf));
+
+ digest = ColumnFamily.digest(cf);
+ cf.addColumn(column("col1", "", 3));
+ assert !digest.equals(ColumnFamily.digest(cf));
+
+ digest = ColumnFamily.digest(cf);
+ cf.delete(new DeletionTime(4, 4));
+ assert !digest.equals(ColumnFamily.digest(cf));
+
+ digest = ColumnFamily.digest(cf);
+ cf.delete(tombstone("col1", "col11", 5, 5));
+ assert !digest.equals(ColumnFamily.digest(cf));
+
+ digest = ColumnFamily.digest(cf);
+ assert digest.equals(ColumnFamily.digest(cf));
+
+ cf.delete(tombstone("col2", "col21", 5, 5));
+ assert !digest.equals(ColumnFamily.digest(cf));
+
+ digest = ColumnFamily.digest(cf);
+ cf.delete(tombstone("col1", "col11", 5, 5)); // this does not change RangeTombstoneLList
+ assert digest.equals(ColumnFamily.digest(cf));
+ }
+
+ @Test
public void testTimestamp()
{
ColumnFamily cf = ArrayBackedSortedColumns.factory.create("Keyspace1", "Standard1");
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a2e74354/test/unit/org/apache/cassandra/db/RowTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/db/RowTest.java b/test/unit/org/apache/cassandra/db/RowTest.java
index f024c44..3de7fdc 100644
--- a/test/unit/org/apache/cassandra/db/RowTest.java
+++ b/test/unit/org/apache/cassandra/db/RowTest.java
@@ -20,19 +20,19 @@ package org.apache.cassandra.db;
import java.util.Arrays;
import java.util.concurrent.TimeUnit;
-import org.junit.Test;
import com.google.common.util.concurrent.Uninterruptibles;
+import org.junit.Test;
import org.apache.cassandra.SchemaLoader;
-import org.apache.cassandra.db.composites.*;
+import org.apache.cassandra.db.composites.CellNames;
import org.apache.cassandra.utils.ByteBufferUtil;
+import static org.apache.cassandra.Util.column;
+import static org.apache.cassandra.Util.tombstone;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
-import static org.apache.cassandra.Util.column;
-
public class RowTest extends SchemaLoader
{
@Test
@@ -48,6 +48,38 @@ public class RowTest extends SchemaLoader
ColumnFamily cfDiff = cf1.diff(cf2);
assertFalse(cfDiff.hasColumns());
assertEquals(cfDiff.deletionInfo(), delInfo);
+
+ RangeTombstone tombstone1 = tombstone("1", "11", (long) 123, 123);
+ RangeTombstone tombstone1_2 = tombstone("111", "112", (long) 1230, 123);
+ RangeTombstone tombstone2_1 = tombstone("2", "22", (long) 123, 123);
+ RangeTombstone tombstone2_2 = tombstone("2", "24", (long) 123, 123);
+ RangeTombstone tombstone3_1 = tombstone("3", "31", (long) 123, 123);
+ RangeTombstone tombstone3_2 = tombstone("3", "31", (long) 1230, 123);
+ RangeTombstone tombstone4_1 = tombstone("4", "41", (long) 123, 123);
+ RangeTombstone tombstone4_2 = tombstone("4", "41", (long) 123, 1230);
+ RangeTombstone tombstone5_2 = tombstone("5", "51", (long) 123, 1230);
+ cf1.delete(tombstone1);
+ cf1.delete(tombstone2_1);
+ cf1.delete(tombstone3_1);
+ cf1.delete(tombstone4_1);
+
+ cf2.delete(tombstone1);
+ cf2.delete(tombstone1_2);
+ cf2.delete(tombstone2_2);
+ cf2.delete(tombstone3_2);
+ cf2.delete(tombstone4_2);
+ cf2.delete(tombstone5_2);
+
+ cfDiff = cf1.diff(cf2);
+ assertEquals(0, cfDiff.getColumnCount());
+
+ // only tmbstones which differ in superset or have more recent timestamp to be in diff
+ delInfo.add(tombstone1_2, cf1.getComparator());
+ delInfo.add(tombstone2_2, cf1.getComparator());
+ delInfo.add(tombstone3_2, cf1.getComparator());
+ delInfo.add(tombstone5_2, cf1.getComparator());
+
+ assertEquals(delInfo, cfDiff.deletionInfo());
}
@Test
[07/19] git commit: merge
Posted by jb...@apache.org.
merge
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/cdfe4e03
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/cdfe4e03
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/cdfe4e03
Branch: refs/heads/cassandra-2.0
Commit: cdfe4e0338bcb0f7f8d04af4b328a1e86c481ce2
Parents: 75b87ce 7dbbe92
Author: Jonathan Ellis <jb...@apache.org>
Authored: Thu Apr 17 23:14:25 2014 +0200
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Thu Apr 17 23:14:25 2014 +0200
----------------------------------------------------------------------
CHANGES.txt | 9 +-
NEWS.txt | 11 +-
build.xml | 4 +-
debian/changelog | 6 +
.../apache/cassandra/db/BatchlogManager.java | 2 +-
.../cassandra/net/OutboundTcpConnection.java | 12 +-
.../cassandra/service/MigrationManager.java | 12 +-
.../cassandra/service/StorageService.java | 138 +++++++++++--------
.../cassandra/streaming/ConnectionHandler.java | 2 +-
.../cassandra/streaming/StreamSession.java | 6 +-
.../cassandra/streaming/StreamTransferTask.java | 4 +-
11 files changed, 136 insertions(+), 70 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/cdfe4e03/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index b642908,451d046..01830ef
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,6 -1,6 +1,7 @@@
2.0.7
+ * Put nodes in hibernate when join_ring is false (CASSANDRA-6961)
- * Allow compaction of system tables during startup (CASSANDRA-6913)
+ * Avoid early loading of non-system keyspaces before compaction-leftovers
+ cleanup at startup (CASSANDRA-6913)
* Restrict Windows to parallel repairs (CASSANDRA-6907)
* (Hadoop) Allow manually specifying start/end tokens in CFIF (CASSANDRA-6436)
* Fix NPE in MeteredFlusher (CASSANDRA-6820)
[14/19] git commit: Merge branch 'cassandra-2.0' into cassandra-2.1
Posted by jb...@apache.org.
Merge branch 'cassandra-2.0' into cassandra-2.1
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/4305bd40
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/4305bd40
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/4305bd40
Branch: refs/heads/trunk
Commit: 4305bd40f619e1d4ebdfc5873c082deb82aac5f0
Parents: 3e6b299 364282a
Author: Jonathan Ellis <jb...@apache.org>
Authored: Tue Apr 22 07:20:45 2014 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Tue Apr 22 07:20:45 2014 -0500
----------------------------------------------------------------------
CHANGES.txt | 3 ++-
src/java/org/apache/cassandra/db/DeletionTime.java | 7 +++----
2 files changed, 5 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/4305bd40/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index d94f13b,791586c..ae7410e
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,55 -1,16 +1,56 @@@
-2.0.8
- * Queries on compact tables can return more rows that requested (CASSANDRA-7052)
- * USING TIMESTAMP for batches does not work (CASSANDRA-7053)
-Merged from 1.2:
- * Fix batchlog to account for CF truncation records (CASSANDRA-6999)
- * Fix CQLSH parsing of functions and BLOB literals (CASSANDRA-7018)
+2.1.0-beta2
+ * Fix BTree.clear for large updates (CASSANDRA-6943)
+ * Fail write instead of logging a warning when unable to append to CL
+ (CASSANDRA-6764)
+ * Eliminate possibility of CL segment appearing twice in active list
+ (CASSANDRA-6557)
+ * Apply DONTNEED fadvise to commitlog segments (CASSANDRA-6759)
+ * Switch CRC component to Adler and include it for compressed sstables
+ (CASSANDRA-4165)
+ * Allow cassandra-stress to set compaction strategy options (CASSANDRA-6451)
+ * Add broadcast_rpc_address option to cassandra.yaml (CASSANDRA-5899)
+ * Auto reload GossipingPropertyFileSnitch config (CASSANDRA-5897)
+ * Fix overflow of memtable_total_space_in_mb (CASSANDRA-6573)
+ * Fix ABTC NPE and apply update function correctly (CASSANDRA-6692)
+ * Allow nodetool to use a file or prompt for password (CASSANDRA-6660)
+ * Fix AIOOBE when concurrently accessing ABSC (CASSANDRA-6742)
+ * Fix assertion error in ALTER TYPE RENAME (CASSANDRA-6705)
+ * Scrub should not always clear out repaired status (CASSANDRA-5351)
+ * Improve handling of range tombstone for wide partitions (CASSANDRA-6446)
+ * Fix ClassCastException for compact table with composites (CASSANDRA-6738)
+ * Fix potentially repairing with wrong nodes (CASSANDRA-6808)
+ * Change caching option syntax (CASSANDRA-6745)
+ * Fix stress to do proper counter reads (CASSANDRA-6835)
+ * Fix help message for stress counter_write (CASSANDRA-6824)
+ * Fix stress smart Thrift client to pick servers correctly (CASSANDRA-6848)
+ * Add logging levels (minimal, normal or verbose) to stress tool (CASSANDRA-6849)
+ * Fix race condition in Batch CLE (CASSANDRA-6860)
+ * Improve cleanup/scrub/upgradesstables failure handling (CASSANDRA-6774)
+ * ByteBuffer write() methods for serializing sstables (CASSANDRA-6781)
+ * Proper compare function for CollectionType (CASSANDRA-6783)
+ * Update native server to Netty 4 (CASSANDRA-6236)
+ * Fix off-by-one error in stress (CASSANDRA-6883)
+ * Make OpOrder AutoCloseable (CASSANDRA-6901)
+ * Remove sync repair JMX interface (CASSANDRA-6900)
+ * Add multiple memory allocation options for memtables (CASSANDRA-6689)
+ * Remove adjusted op rate from stress output (CASSANDRA-6921)
+ * Add optimized CF.hasColumns() implementations (CASSANDRA-6941)
+ * Serialize batchlog mutations with the version of the target node
+ (CASSANDRA-6931)
+ * Optimize CounterColumn#reconcile() (CASSANDRA-6953)
+ * Properly remove 1.2 sstable support in 2.1 (CASSANDRA-6869)
+ * Lock counter cells, not partitions (CASSANDRA-6880)
+ * Track presence of legacy counter shards in sstables (CASSANDRA-6888)
+ * Ensure safe resource cleanup when replacing sstables (CASSANDRA-6912)
+ * Add failure handler to async callback (CASSANDRA-6747)
+ * Fix AE when closing SSTable without releasing reference (CASSANDRA-7000)
+ * Clean up IndexInfo on keyspace/table drops (CASSANDRA-6924)
+ * Only snapshot relative SSTables when sequential repair (CASSANDRA-7024)
* Require nodetool rebuild_index to specify index names (CASSANDRA-7038)
-
-
-2.0.7
+Merged from 2.0:
* Put nodes in hibernate when join_ring is false (CASSANDRA-6961)
- * Allow compaction of system tables during startup (CASSANDRA-6913)
+ * Avoid early loading of non-system keyspaces before compaction-leftovers
+ cleanup at startup (CASSANDRA-6913)
* Restrict Windows to parallel repairs (CASSANDRA-6907)
* (Hadoop) Allow manually specifying start/end tokens in CFIF (CASSANDRA-6436)
* Fix NPE in MeteredFlusher (CASSANDRA-6820)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/4305bd40/src/java/org/apache/cassandra/db/DeletionTime.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/DeletionTime.java
index e3e18f1,a1b9f17..f08196d
--- a/src/java/org/apache/cassandra/db/DeletionTime.java
+++ b/src/java/org/apache/cassandra/db/DeletionTime.java
@@@ -125,17 -122,11 +125,16 @@@ public class DeletionTime implements Co
{
int ldt = in.readInt();
long mfda = in.readLong();
- if (mfda == Long.MIN_VALUE && ldt == Integer.MAX_VALUE)
- return LIVE;
- else
- return new DeletionTime(mfda, ldt);
+ return mfda == Long.MIN_VALUE && ldt == Integer.MAX_VALUE
+ ? LIVE
+ : new DeletionTime(mfda, ldt);
}
+ public void skip(DataInput in) throws IOException
+ {
+ FileUtils.skipBytesFully(in, 4 + 8);
+ }
+
public long serializedSize(DeletionTime delTime, TypeSizes typeSizes)
{
return typeSizes.sizeof(delTime.localDeletionTime)
[08/19] git commit: merge
Posted by jb...@apache.org.
merge
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/cdfe4e03
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/cdfe4e03
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/cdfe4e03
Branch: refs/heads/cassandra-2.1
Commit: cdfe4e0338bcb0f7f8d04af4b328a1e86c481ce2
Parents: 75b87ce 7dbbe92
Author: Jonathan Ellis <jb...@apache.org>
Authored: Thu Apr 17 23:14:25 2014 +0200
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Thu Apr 17 23:14:25 2014 +0200
----------------------------------------------------------------------
CHANGES.txt | 9 +-
NEWS.txt | 11 +-
build.xml | 4 +-
debian/changelog | 6 +
.../apache/cassandra/db/BatchlogManager.java | 2 +-
.../cassandra/net/OutboundTcpConnection.java | 12 +-
.../cassandra/service/MigrationManager.java | 12 +-
.../cassandra/service/StorageService.java | 138 +++++++++++--------
.../cassandra/streaming/ConnectionHandler.java | 2 +-
.../cassandra/streaming/StreamSession.java | 6 +-
.../cassandra/streaming/StreamTransferTask.java | 4 +-
11 files changed, 136 insertions(+), 70 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/cdfe4e03/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index b642908,451d046..01830ef
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,6 -1,6 +1,7 @@@
2.0.7
+ * Put nodes in hibernate when join_ring is false (CASSANDRA-6961)
- * Allow compaction of system tables during startup (CASSANDRA-6913)
+ * Avoid early loading of non-system keyspaces before compaction-leftovers
+ cleanup at startup (CASSANDRA-6913)
* Restrict Windows to parallel repairs (CASSANDRA-6907)
* (Hadoop) Allow manually specifying start/end tokens in CFIF (CASSANDRA-6436)
* Fix NPE in MeteredFlusher (CASSANDRA-6820)
[03/19] git commit: CHANGES
Posted by jb...@apache.org.
CHANGES
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/75b87ce8
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/75b87ce8
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/75b87ce8
Branch: refs/heads/cassandra-2.1
Commit: 75b87ce86bb729c38832acfb0edb6ab84a0deefd
Parents: 655ae7a
Author: Jonathan Ellis <jb...@apache.org>
Authored: Fri Apr 4 15:33:47 2014 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Wed Apr 9 09:07:04 2014 -0500
----------------------------------------------------------------------
CHANGES.txt | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/75b87ce8/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 38a6c3c..b642908 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,5 +1,6 @@
2.0.7
- * Allow compaction of system tables during startup (CASSANDRA-6913)
+ * Avoid early loading of non-system keyspaces before compaction-leftovers
+ cleanup at startup (CASSANDRA-6913)
* Restrict Windows to parallel repairs (CASSANDRA-6907)
* (Hadoop) Allow manually specifying start/end tokens in CFIF (CASSANDRA-6436)
* Fix NPE in MeteredFlusher (CASSANDRA-6820)
[11/19] git commit: Merge remote-tracking branch
'origin/cassandra-2.0' into cassandra-2.0
Posted by jb...@apache.org.
Merge remote-tracking branch 'origin/cassandra-2.0' 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/364282a7
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/364282a7
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/364282a7
Branch: refs/heads/cassandra-2.1
Commit: 364282a7d43c475b82fc169cec751fba899e3101
Parents: cdfe4e0 48d7e40
Author: Jonathan Ellis <jb...@apache.org>
Authored: Tue Apr 22 07:20:32 2014 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Tue Apr 22 07:20:32 2014 -0500
----------------------------------------------------------------------
CHANGES.txt | 14 ++-
doc/cql3/CQL.textile | 16 ++-
pylib/cqlshlib/cql3handling.py | 24 +++--
.../apache/cassandra/cql3/QueryProcessor.java | 2 +-
.../cql3/statements/BatchStatement.java | 3 +-
.../cql3/statements/SelectStatement.java | 34 ++++---
.../apache/cassandra/db/BatchlogManager.java | 102 +++++++++++--------
.../apache/cassandra/db/ColumnFamilyStore.java | 6 --
.../cassandra/db/HintedHandOffManager.java | 21 +---
.../org/apache/cassandra/db/SystemKeyspace.java | 60 +++++++----
.../db/commitlog/CommitLogReplayer.java | 12 +--
.../apache/cassandra/service/StorageProxy.java | 9 +-
.../cassandra/service/pager/QueryPager.java | 2 +-
.../org/apache/cassandra/tools/NodeCmd.java | 5 +-
.../apache/cassandra/tools/NodeToolHelp.yaml | 2 +-
.../cassandra/db/BatchlogManagerTest.java | 78 ++++++++++++--
.../apache/cassandra/db/HintedHandOffTest.java | 19 ++--
17 files changed, 272 insertions(+), 137 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/364282a7/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 01830ef,5d47cfa..791586c
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,7 -1,15 +1,16 @@@
+ 2.0.8
+ * Queries on compact tables can return more rows that requested (CASSANDRA-7052)
+ * USING TIMESTAMP for batches does not work (CASSANDRA-7053)
+ Merged from 1.2:
+ * Fix batchlog to account for CF truncation records (CASSANDRA-6999)
+ * Fix CQLSH parsing of functions and BLOB literals (CASSANDRA-7018)
+ * Require nodetool rebuild_index to specify index names (CASSANDRA-7038)
+
+
2.0.7
* Put nodes in hibernate when join_ring is false (CASSANDRA-6961)
- * Allow compaction of system tables during startup (CASSANDRA-6913)
+ * Avoid early loading of non-system keyspaces before compaction-leftovers
+ cleanup at startup (CASSANDRA-6913)
* Restrict Windows to parallel repairs (CASSANDRA-6907)
* (Hadoop) Allow manually specifying start/end tokens in CFIF (CASSANDRA-6436)
* Fix NPE in MeteredFlusher (CASSANDRA-6820)
[05/19] git commit: CHANGES
Posted by jb...@apache.org.
CHANGES
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/75b87ce8
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/75b87ce8
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/75b87ce8
Branch: refs/heads/trunk
Commit: 75b87ce86bb729c38832acfb0edb6ab84a0deefd
Parents: 655ae7a
Author: Jonathan Ellis <jb...@apache.org>
Authored: Fri Apr 4 15:33:47 2014 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Wed Apr 9 09:07:04 2014 -0500
----------------------------------------------------------------------
CHANGES.txt | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/75b87ce8/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 38a6c3c..b642908 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,5 +1,6 @@
2.0.7
- * Allow compaction of system tables during startup (CASSANDRA-6913)
+ * Avoid early loading of non-system keyspaces before compaction-leftovers
+ cleanup at startup (CASSANDRA-6913)
* Restrict Windows to parallel repairs (CASSANDRA-6907)
* (Hadoop) Allow manually specifying start/end tokens in CFIF (CASSANDRA-6436)
* Fix NPE in MeteredFlusher (CASSANDRA-6820)
[19/19] 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/498eb2ab
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/498eb2ab
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/498eb2ab
Branch: refs/heads/trunk
Commit: 498eb2ab77d748b5b638b82450edd968fe5ca73a
Parents: 68aa62b a2e7435
Author: Jonathan Ellis <jb...@apache.org>
Authored: Tue Apr 22 07:27:42 2014 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Tue Apr 22 07:27:42 2014 -0500
----------------------------------------------------------------------
CHANGES.txt | 4 +-
.../org/apache/cassandra/db/ColumnFamily.java | 5 ++
.../org/apache/cassandra/db/DeletionInfo.java | 34 +++++++++-
.../org/apache/cassandra/db/DeletionTime.java | 7 +-
src/java/org/apache/cassandra/db/Keyspace.java | 2 +-
.../apache/cassandra/db/RangeTombstoneList.java | 68 ++++++++++++++++++--
.../apache/cassandra/net/MessagingService.java | 32 ++++++++-
test/unit/org/apache/cassandra/Util.java | 7 ++
.../apache/cassandra/db/ColumnFamilyTest.java | 46 ++++++++++++-
test/unit/org/apache/cassandra/db/RowTest.java | 40 ++++++++++--
10 files changed, 228 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/498eb2ab/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index d889278,495dab2..742f7de
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,13 -1,5 +1,14 @@@
+3.0
+ * Move sstable RandomAccessReader to nio2, which allows using the
+ FILE_SHARE_DELETE flag on Windows (CASSANDRA-4050)
+ * Remove CQL2 (CASSANDRA-5918)
+ * Add Thrift get_multi_slice call (CASSANDRA-6757)
+ * Optimize fetching multiple cells by name (CASSANDRA-6933)
+ * Allow compilation in java 8 (CASSANDRA-7208)
+
+
2.1.0-beta2
+ * Add range tombstones to read repair digests (CASSANDRA-6863)
* Fix BTree.clear for large updates (CASSANDRA-6943)
* Fail write instead of logging a warning when unable to append to CL
(CASSANDRA-6764)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/498eb2ab/src/java/org/apache/cassandra/db/ColumnFamily.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/498eb2ab/src/java/org/apache/cassandra/net/MessagingService.java
----------------------------------------------------------------------
[09/19] git commit: merge
Posted by jb...@apache.org.
merge
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/cdfe4e03
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/cdfe4e03
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/cdfe4e03
Branch: refs/heads/trunk
Commit: cdfe4e0338bcb0f7f8d04af4b328a1e86c481ce2
Parents: 75b87ce 7dbbe92
Author: Jonathan Ellis <jb...@apache.org>
Authored: Thu Apr 17 23:14:25 2014 +0200
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Thu Apr 17 23:14:25 2014 +0200
----------------------------------------------------------------------
CHANGES.txt | 9 +-
NEWS.txt | 11 +-
build.xml | 4 +-
debian/changelog | 6 +
.../apache/cassandra/db/BatchlogManager.java | 2 +-
.../cassandra/net/OutboundTcpConnection.java | 12 +-
.../cassandra/service/MigrationManager.java | 12 +-
.../cassandra/service/StorageService.java | 138 +++++++++++--------
.../cassandra/streaming/ConnectionHandler.java | 2 +-
.../cassandra/streaming/StreamSession.java | 6 +-
.../cassandra/streaming/StreamTransferTask.java | 4 +-
11 files changed, 136 insertions(+), 70 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/cdfe4e03/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index b642908,451d046..01830ef
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,6 -1,6 +1,7 @@@
2.0.7
+ * Put nodes in hibernate when join_ring is false (CASSANDRA-6961)
- * Allow compaction of system tables during startup (CASSANDRA-6913)
+ * Avoid early loading of non-system keyspaces before compaction-leftovers
+ cleanup at startup (CASSANDRA-6913)
* Restrict Windows to parallel repairs (CASSANDRA-6907)
* (Hadoop) Allow manually specifying start/end tokens in CFIF (CASSANDRA-6436)
* Fix NPE in MeteredFlusher (CASSANDRA-6820)
[15/19] git commit: remove invalid assert patch by Benedict Elliott
Smith; reviewed by jbellis for CASSANDRA-6987
Posted by jb...@apache.org.
remove invalid assert
patch by Benedict Elliott Smith; reviewed by jbellis for CASSANDRA-6987
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/be2686dd
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/be2686dd
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/be2686dd
Branch: refs/heads/trunk
Commit: be2686dd94582abbdd20e0b1b3088d52eae4fbf2
Parents: 4305bd4
Author: Jonathan Ellis <jb...@apache.org>
Authored: Tue Apr 22 07:23:30 2014 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Tue Apr 22 07:23:30 2014 -0500
----------------------------------------------------------------------
src/java/org/apache/cassandra/db/Keyspace.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/be2686dd/src/java/org/apache/cassandra/db/Keyspace.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/Keyspace.java b/src/java/org/apache/cassandra/db/Keyspace.java
index 1c3df77..31e68c1 100644
--- a/src/java/org/apache/cassandra/db/Keyspace.java
+++ b/src/java/org/apache/cassandra/db/Keyspace.java
@@ -99,9 +99,9 @@ public class Keyspace
return open(keyspaceName, Schema.instance, true);
}
+ // to only be used by org.apache.cassandra.tools.Standalone* classes
public static Keyspace openWithoutSSTables(String keyspaceName)
{
- assert initialized || keyspaceName.equals(SYSTEM_KS);
return open(keyspaceName, Schema.instance, false);
}
[12/19] git commit: Merge remote-tracking branch
'origin/cassandra-2.0' into cassandra-2.0
Posted by jb...@apache.org.
Merge remote-tracking branch 'origin/cassandra-2.0' 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/364282a7
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/364282a7
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/364282a7
Branch: refs/heads/trunk
Commit: 364282a7d43c475b82fc169cec751fba899e3101
Parents: cdfe4e0 48d7e40
Author: Jonathan Ellis <jb...@apache.org>
Authored: Tue Apr 22 07:20:32 2014 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Tue Apr 22 07:20:32 2014 -0500
----------------------------------------------------------------------
CHANGES.txt | 14 ++-
doc/cql3/CQL.textile | 16 ++-
pylib/cqlshlib/cql3handling.py | 24 +++--
.../apache/cassandra/cql3/QueryProcessor.java | 2 +-
.../cql3/statements/BatchStatement.java | 3 +-
.../cql3/statements/SelectStatement.java | 34 ++++---
.../apache/cassandra/db/BatchlogManager.java | 102 +++++++++++--------
.../apache/cassandra/db/ColumnFamilyStore.java | 6 --
.../cassandra/db/HintedHandOffManager.java | 21 +---
.../org/apache/cassandra/db/SystemKeyspace.java | 60 +++++++----
.../db/commitlog/CommitLogReplayer.java | 12 +--
.../apache/cassandra/service/StorageProxy.java | 9 +-
.../cassandra/service/pager/QueryPager.java | 2 +-
.../org/apache/cassandra/tools/NodeCmd.java | 5 +-
.../apache/cassandra/tools/NodeToolHelp.yaml | 2 +-
.../cassandra/db/BatchlogManagerTest.java | 78 ++++++++++++--
.../apache/cassandra/db/HintedHandOffTest.java | 19 ++--
17 files changed, 272 insertions(+), 137 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/364282a7/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 01830ef,5d47cfa..791586c
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,7 -1,15 +1,16 @@@
+ 2.0.8
+ * Queries on compact tables can return more rows that requested (CASSANDRA-7052)
+ * USING TIMESTAMP for batches does not work (CASSANDRA-7053)
+ Merged from 1.2:
+ * Fix batchlog to account for CF truncation records (CASSANDRA-6999)
+ * Fix CQLSH parsing of functions and BLOB literals (CASSANDRA-7018)
+ * Require nodetool rebuild_index to specify index names (CASSANDRA-7038)
+
+
2.0.7
* Put nodes in hibernate when join_ring is false (CASSANDRA-6961)
- * Allow compaction of system tables during startup (CASSANDRA-6913)
+ * Avoid early loading of non-system keyspaces before compaction-leftovers
+ cleanup at startup (CASSANDRA-6913)
* Restrict Windows to parallel repairs (CASSANDRA-6907)
* (Hadoop) Allow manually specifying start/end tokens in CFIF (CASSANDRA-6436)
* Fix NPE in MeteredFlusher (CASSANDRA-6820)
[10/19] git commit: Merge remote-tracking branch
'origin/cassandra-2.0' into cassandra-2.0
Posted by jb...@apache.org.
Merge remote-tracking branch 'origin/cassandra-2.0' 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/364282a7
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/364282a7
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/364282a7
Branch: refs/heads/cassandra-2.0
Commit: 364282a7d43c475b82fc169cec751fba899e3101
Parents: cdfe4e0 48d7e40
Author: Jonathan Ellis <jb...@apache.org>
Authored: Tue Apr 22 07:20:32 2014 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Tue Apr 22 07:20:32 2014 -0500
----------------------------------------------------------------------
CHANGES.txt | 14 ++-
doc/cql3/CQL.textile | 16 ++-
pylib/cqlshlib/cql3handling.py | 24 +++--
.../apache/cassandra/cql3/QueryProcessor.java | 2 +-
.../cql3/statements/BatchStatement.java | 3 +-
.../cql3/statements/SelectStatement.java | 34 ++++---
.../apache/cassandra/db/BatchlogManager.java | 102 +++++++++++--------
.../apache/cassandra/db/ColumnFamilyStore.java | 6 --
.../cassandra/db/HintedHandOffManager.java | 21 +---
.../org/apache/cassandra/db/SystemKeyspace.java | 60 +++++++----
.../db/commitlog/CommitLogReplayer.java | 12 +--
.../apache/cassandra/service/StorageProxy.java | 9 +-
.../cassandra/service/pager/QueryPager.java | 2 +-
.../org/apache/cassandra/tools/NodeCmd.java | 5 +-
.../apache/cassandra/tools/NodeToolHelp.yaml | 2 +-
.../cassandra/db/BatchlogManagerTest.java | 78 ++++++++++++--
.../apache/cassandra/db/HintedHandOffTest.java | 19 ++--
17 files changed, 272 insertions(+), 137 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/364282a7/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 01830ef,5d47cfa..791586c
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,7 -1,15 +1,16 @@@
+ 2.0.8
+ * Queries on compact tables can return more rows that requested (CASSANDRA-7052)
+ * USING TIMESTAMP for batches does not work (CASSANDRA-7053)
+ Merged from 1.2:
+ * Fix batchlog to account for CF truncation records (CASSANDRA-6999)
+ * Fix CQLSH parsing of functions and BLOB literals (CASSANDRA-7018)
+ * Require nodetool rebuild_index to specify index names (CASSANDRA-7038)
+
+
2.0.7
* Put nodes in hibernate when join_ring is false (CASSANDRA-6961)
- * Allow compaction of system tables during startup (CASSANDRA-6913)
+ * Avoid early loading of non-system keyspaces before compaction-leftovers
+ cleanup at startup (CASSANDRA-6913)
* Restrict Windows to parallel repairs (CASSANDRA-6907)
* (Hadoop) Allow manually specifying start/end tokens in CFIF (CASSANDRA-6436)
* Fix NPE in MeteredFlusher (CASSANDRA-6820)
[04/19] git commit: cleanup
Posted by jb...@apache.org.
cleanup
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/655ae7a8
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/655ae7a8
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/655ae7a8
Branch: refs/heads/cassandra-2.1
Commit: 655ae7a8f9c4582eb6c303e005df6edbe76bd732
Parents: 2dd0907
Author: Jonathan Ellis <jb...@apache.org>
Authored: Fri Apr 4 12:34:12 2014 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Wed Apr 9 09:07:04 2014 -0500
----------------------------------------------------------------------
src/java/org/apache/cassandra/db/DeletionTime.java | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/655ae7a8/src/java/org/apache/cassandra/db/DeletionTime.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/DeletionTime.java b/src/java/org/apache/cassandra/db/DeletionTime.java
index b80422c..a1b9f17 100644
--- a/src/java/org/apache/cassandra/db/DeletionTime.java
+++ b/src/java/org/apache/cassandra/db/DeletionTime.java
@@ -122,10 +122,9 @@ public class DeletionTime implements Comparable<DeletionTime>
{
int ldt = in.readInt();
long mfda = in.readLong();
- if (mfda == Long.MIN_VALUE && ldt == Integer.MAX_VALUE)
- return LIVE;
- else
- return new DeletionTime(mfda, ldt);
+ return mfda == Long.MIN_VALUE && ldt == Integer.MAX_VALUE
+ ? LIVE
+ : new DeletionTime(mfda, ldt);
}
public long serializedSize(DeletionTime delTime, TypeSizes typeSizes)