You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by al...@apache.org on 2019/01/14 18:06:53 UTC
[cassandra] branch cassandra-3.0 updated: Counters fail to
increment in 2.1/2.2 to 3.X mixed version clusters
This is an automated email from the ASF dual-hosted git repository.
aleksey pushed a commit to branch cassandra-3.0
in repository https://gitbox.apache.org/repos/asf/cassandra.git
The following commit(s) were added to refs/heads/cassandra-3.0 by this push:
new ebfa280 Counters fail to increment in 2.1/2.2 to 3.X mixed version clusters
ebfa280 is described below
commit ebfa280fac2f43fb88e2e87d81f35b8017222a12
Author: Aleksey Yeshchenko <al...@apple.com>
AuthorDate: Fri Jan 11 17:58:35 2019 +0000
Counters fail to increment in 2.1/2.2 to 3.X mixed version clusters
patch by Aleksey Yeschenko; reviewed by Benedict Elliott Smith for
CASSANDRA-14958
---
CHANGES.txt | 1 +
src/java/org/apache/cassandra/db/LegacyLayout.java | 4 ++--
.../org/apache/cassandra/db/context/CounterContext.java | 16 ++++++++--------
3 files changed, 11 insertions(+), 10 deletions(-)
diff --git a/CHANGES.txt b/CHANGES.txt
index 025d4b0..063e8fb 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
3.0.18
+ * Counters fail to increment in 2.1/2.2 to 3.X mixed version clusters (CASSANDRA-14958)
* Streaming needs to synchronise access to LifecycleTransaction (CASSANDRA-14554)
* Fix cassandra-stress write hang with default options (CASSANDRA-14616)
* Differentiate between slices and RTs when decoding legacy bounds (CASSANDRA-14919)
diff --git a/src/java/org/apache/cassandra/db/LegacyLayout.java b/src/java/org/apache/cassandra/db/LegacyLayout.java
index 9600355..0044959 100644
--- a/src/java/org/apache/cassandra/db/LegacyLayout.java
+++ b/src/java/org/apache/cassandra/db/LegacyLayout.java
@@ -514,7 +514,7 @@ public abstract class LegacyLayout
else if (cell.isCounterUpdate())
{
out.writeLong(cell.timestamp);
- long count = CounterContext.instance().getLocalCount(cell.value);
+ long count = CounterContext.instance().getUpdateCount(cell.value);
ByteBufferUtil.writeWithLength(ByteBufferUtil.bytes(count), out);
continue;
}
@@ -585,7 +585,7 @@ public abstract class LegacyLayout
else if (cell.isCounterUpdate())
{
size += TypeSizes.sizeof(cell.timestamp);
- long count = CounterContext.instance().getLocalCount(cell.value);
+ long count = CounterContext.instance().getUpdateCount(cell.value);
size += ByteBufferUtil.serializedSizeWithLength(ByteBufferUtil.bytes(count));
continue;
}
diff --git a/src/java/org/apache/cassandra/db/context/CounterContext.java b/src/java/org/apache/cassandra/db/context/CounterContext.java
index b402464..d0952d0 100644
--- a/src/java/org/apache/cassandra/db/context/CounterContext.java
+++ b/src/java/org/apache/cassandra/db/context/CounterContext.java
@@ -137,6 +137,14 @@ public class CounterContext
}
/**
+ * Returns the count associated with the update counter id, or 0 if no such shard is present.
+ */
+ public long getUpdateCount(ByteBuffer context)
+ {
+ return getClockAndCountOf(context, UPDATE_CLOCK_ID).count;
+ }
+
+ /**
* Creates a counter context with a single global, 2.1+ shard (a result of increment).
*/
public ByteBuffer createGlobal(CounterId id, long clock, long count)
@@ -709,14 +717,6 @@ public class CounterContext
}
/**
- * Returns the count associated with the local counter id, or 0 if no such shard is present.
- */
- public long getLocalCount(ByteBuffer context)
- {
- return getLocalClockAndCount(context).count;
- }
-
- /**
* Returns the clock and the count associated with the given counter id, or (0, 0) if no such shard is present.
*/
@VisibleForTesting
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org