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 2011/01/05 23:35:10 UTC
svn commit: r1055669 - in /cassandra/trunk: ./
interface/thrift/gen-java/org/apache/cassandra/thrift/
src/java/org/apache/cassandra/db/ src/java/org/apache/cassandra/db/marshal/
src/java/org/apache/cassandra/service/ src/java/org/apache/cassandra/utils...
Author: jbellis
Date: Wed Jan 5 22:35:09 2011
New Revision: 1055669
URL: http://svn.apache.org/viewvc?rev=1055669&view=rev
Log:
merge from 0.7
Modified:
cassandra/trunk/ (props changed)
cassandra/trunk/CHANGES.txt
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java (props changed)
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java (props changed)
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java (props changed)
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java (props changed)
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java (props changed)
cassandra/trunk/src/java/org/apache/cassandra/db/DeletedColumn.java
cassandra/trunk/src/java/org/apache/cassandra/db/marshal/LongType.java
cassandra/trunk/src/java/org/apache/cassandra/service/ReadResponseResolver.java
cassandra/trunk/src/java/org/apache/cassandra/utils/UUIDGen.java
cassandra/trunk/test/unit/org/apache/cassandra/db/NameSortTest.java
cassandra/trunk/test/unit/org/apache/cassandra/db/marshal/TypeCompareTest.java
Propchange: cassandra/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jan 5 22:35:09 2011
@@ -1,6 +1,6 @@
/cassandra/branches/cassandra-0.6:922689-1052356,1052358-1053452,1053454,1053456-1055311
-/cassandra/branches/cassandra-0.7:1026516-1055624
-/cassandra/branches/cassandra-0.7.0:1053690-1054631
+/cassandra/branches/cassandra-0.7:1026516-1055668
+/cassandra/branches/cassandra-0.7.0:1053690-1055654
/cassandra/tags/cassandra-0.7.0-rc3:1051699-1053689
/incubator/cassandra/branches/cassandra-0.3:774578-796573
/incubator/cassandra/branches/cassandra-0.4:810145-834239,834349-834350
Modified: cassandra/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/cassandra/trunk/CHANGES.txt?rev=1055669&r1=1055668&r2=1055669&view=diff
==============================================================================
--- cassandra/trunk/CHANGES.txt (original)
+++ cassandra/trunk/CHANGES.txt Wed Jan 5 22:35:09 2011
@@ -3,7 +3,7 @@
* adds support for columns that act as incr/decr counters (CASSANDRA-1072)
-0.7-dev
+0.7.1-dev
* buffer network stack to avoid inefficient small TCP messages while avoiding
the nagle/delayed ack problem (CASSANDRA-1896)
* check log4j configuration for changes every 10s (CASSANDRA-1525, 1907)
@@ -20,6 +20,10 @@
* distributed test harness (CASSANDRA-1859)
+0.7.0-dev
+ * fix offsets to ByteBuffer.get (CASSANDRA-1939)
+
+
0.7.0-rc4
* fix cli crash after backgrounding (CASSANDRA-1875)
* count timeouts in storageproxy latencies, and include latency
Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jan 5 22:35:09 2011
@@ -1,6 +1,6 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:922689-1052356,1052358-1053452,1053454,1053456-1055311
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026516-1055624
-/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1053690-1054631
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026516-1055668
+/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1053690-1055654
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1051699-1053689
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/Cassandra.java:774578-796573
/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/Cassandra.java:810145-834239,834349-834350
Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jan 5 22:35:09 2011
@@ -1,6 +1,6 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:922689-1052356,1052358-1053452,1053454,1053456-1055311
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1026516-1055624
-/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1053690-1054631
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1026516-1055668
+/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1053690-1055654
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1051699-1053689
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/column_t.java:774578-792198
/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/Column.java:810145-834239,834349-834350
Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jan 5 22:35:09 2011
@@ -1,6 +1,6 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:922689-1052356,1052358-1053452,1053454,1053456-1055311
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1026516-1055624
-/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1053690-1054631
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1026516-1055668
+/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1053690-1055654
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1051699-1053689
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java:774578-796573
/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java:810145-834239,834349-834350
Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jan 5 22:35:09 2011
@@ -1,6 +1,6 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:922689-1052356,1052358-1053452,1053454,1053456-1055311
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1026516-1055624
-/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1053690-1054631
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1026516-1055668
+/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1053690-1055654
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1051699-1053689
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/NotFoundException.java:774578-796573
/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/NotFoundException.java:810145-834239,834349-834350
Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jan 5 22:35:09 2011
@@ -1,6 +1,6 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:922689-1052356,1052358-1053452,1053454,1053456-1055311
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1026516-1055624
-/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1053690-1054631
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1026516-1055668
+/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1053690-1055654
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1051699-1053689
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/superColumn_t.java:774578-792198
/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/SuperColumn.java:810145-834239,834349-834350
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/DeletedColumn.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/DeletedColumn.java?rev=1055669&r1=1055668&r2=1055669&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/DeletedColumn.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/DeletedColumn.java Wed Jan 5 22:35:09 2011
@@ -55,7 +55,7 @@ public class DeletedColumn extends Colum
@Override
public int getLocalDeletionTime()
{
- return value.getInt(value.position()+value.arrayOffset() );
+ return value.getInt(value.position());
}
@Override
Modified: cassandra/trunk/src/java/org/apache/cassandra/db/marshal/LongType.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/marshal/LongType.java?rev=1055669&r1=1055668&r2=1055669&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/marshal/LongType.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/marshal/LongType.java Wed Jan 5 22:35:09 2011
@@ -63,7 +63,7 @@ public class LongType extends AbstractTy
}
- return String.valueOf(bytes.getLong(bytes.position()+bytes.arrayOffset()));
+ return String.valueOf(bytes.getLong(bytes.position()));
}
public ByteBuffer fromString(String source)
Modified: cassandra/trunk/src/java/org/apache/cassandra/service/ReadResponseResolver.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/service/ReadResponseResolver.java?rev=1055669&r1=1055668&r2=1055669&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/service/ReadResponseResolver.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/service/ReadResponseResolver.java Wed Jan 5 22:35:09 2011
@@ -93,7 +93,7 @@ public class ReadResponseResolver implem
List<ColumnFamily> versions = new ArrayList<ColumnFamily>();
List<InetAddress> endpoints = new ArrayList<InetAddress>();
- // validate digests against each other; throw immediately on mismatch.
+ // case 1: validate digests against each other; throw immediately on mismatch.
// also, collects data results into versions/endpoints lists.
//
// results are cleared as we process them, to avoid unnecessary duplication of work
@@ -103,13 +103,20 @@ public class ReadResponseResolver implem
{
ReadResponse result = entry.getValue();
Message message = entry.getKey();
- ByteBuffer resultDigest = result.isDigestQuery() ? result.digest() : ColumnFamily.digest(result.row().cf);
- if (digest == null)
- digest = resultDigest;
- else if (!digest.equals(resultDigest))
- throw new DigestMismatchException(key, digest, resultDigest);
-
- if (!result.isDigestQuery())
+ if (result.isDigestQuery())
+ {
+ if (digest == null)
+ {
+ digest = result.digest();
+ }
+ else
+ {
+ ByteBuffer digest2 = result.digest();
+ if (!digest.equals(digest2))
+ throw new DigestMismatchException(key, digest, digest2);
+ }
+ }
+ else
{
ColumnFamily cf = result.row().cf;
InetAddress from = message.getFrom();
@@ -130,8 +137,23 @@ public class ReadResponseResolver implem
results.remove(message);
}
- if (logger_.isDebugEnabled())
- logger_.debug("digests verified");
+ // If there was a digest query compare it with all the data digests
+ // If there is a mismatch then throw an exception so that read repair can happen.
+ //
+ // It's important to note that we do not compare the digests of multiple data responses --
+ // if we are in that situation we know there was a previous mismatch and now we're doing a repair,
+ // so our job is now case 2: figure out what the most recent version is and update everyone to that version.
+ if (digest != null)
+ {
+ for (ColumnFamily cf : versions)
+ {
+ ByteBuffer digest2 = ColumnFamily.digest(cf);
+ if (!digest.equals(digest2))
+ throw new DigestMismatchException(key, digest, digest2);
+ }
+ if (logger_.isDebugEnabled())
+ logger_.debug("digests verified");
+ }
ColumnFamily resolved;
if (versions.size() > 1)
Modified: cassandra/trunk/src/java/org/apache/cassandra/utils/UUIDGen.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/utils/UUIDGen.java?rev=1055669&r1=1055668&r2=1055669&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/utils/UUIDGen.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/utils/UUIDGen.java Wed Jan 5 22:35:09 2011
@@ -56,7 +56,7 @@ public class UUIDGen
/** creates a type 1 uuid from raw bytes. */
public static UUID getUUID(ByteBuffer raw)
{
- return new UUID(raw.getLong(raw.position() + raw.arrayOffset()), raw.getLong(raw.position() + raw.arrayOffset() + 8));
+ return new UUID(raw.getLong(raw.position()), raw.getLong(raw.position() + 8));
}
/** decomposes a uuid into raw bytes. */
Modified: cassandra/trunk/test/unit/org/apache/cassandra/db/NameSortTest.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/db/NameSortTest.java?rev=1055669&r1=1055668&r2=1055669&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/db/NameSortTest.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/db/NameSortTest.java Wed Jan 5 22:35:09 2011
@@ -124,7 +124,7 @@ public class NameSortTest extends Cleanu
assert subColumns.size() == 4;
for (IColumn subColumn : subColumns)
{
- long k = subColumn.name().getLong(subColumn.name().position() + subColumn.name().arrayOffset());
+ long k = subColumn.name().getLong(subColumn.name().position());
byte[] bytes = (j + k) % 2 == 0 ? "a".getBytes() : "b".getBytes();
assertEquals(new String(bytes), ByteBufferUtil.string(subColumn.value()));
}
Modified: cassandra/trunk/test/unit/org/apache/cassandra/db/marshal/TypeCompareTest.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/db/marshal/TypeCompareTest.java?rev=1055669&r1=1055668&r2=1055669&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/db/marshal/TypeCompareTest.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/db/marshal/TypeCompareTest.java Wed Jan 5 22:35:09 2011
@@ -89,8 +89,8 @@ public class TypeCompareTest
for (int i = 1; i < data.length; i++)
{
- long l0 = data[i - 1].getLong(data[i - 1].position()+data[i - 1].arrayOffset());
- long l1 = data[i].getLong(data[i].position()+data[i].arrayOffset());
+ long l0 = data[i - 1].getLong(data[i - 1].position());
+ long l1 = data[i].getLong(data[i].position());
assert l0 <= l1;
}
}