Updated Branches: refs/heads/trunk bdf08364a -> a7b80d78a
give CAS a minimum TTL of 3h Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/a7b80d78 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/a7b80d78 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/a7b80d78 Branch: refs/heads/trunk Commit: a7b80d78ab181c3eb1c51b94621a74023bc5d76f Parents: bdf0836 Author: Jonathan Ellis <[email protected]> Authored: Fri May 3 09:30:31 2013 -0500 Committer: Jonathan Ellis <[email protected]> Committed: Fri May 3 09:30:31 2013 -0500 ---------------------------------------------------------------------- NEWS.txt | 2 ++ src/java/org/apache/cassandra/db/SystemTable.java | 14 +++++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/a7b80d78/NEWS.txt ---------------------------------------------------------------------- diff --git a/NEWS.txt b/NEWS.txt index cb2437a..0ce07e8 100644 --- a/NEWS.txt +++ b/NEWS.txt @@ -52,6 +52,8 @@ Operations - ALTER TABLE DROP has been reenabled for CQL3 tables and has new semantics now. See https://cassandra.apache.org/doc/cql3/CQL.html#alterTableStmt and https://issues.apache.org/jira/browse/CASSANDRA-3919 for details. + - CAS uses gc_grace_seconds to determine how long to keep unused paxos + state around for, or a minimum of three hours. 1.2.4 http://git-wip-us.apache.org/repos/asf/cassandra/blob/a7b80d78/src/java/org/apache/cassandra/db/SystemTable.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/SystemTable.java b/src/java/org/apache/cassandra/db/SystemTable.java index dc99bc8..dd818b2 100644 --- a/src/java/org/apache/cassandra/db/SystemTable.java +++ b/src/java/org/apache/cassandra/db/SystemTable.java @@ -21,9 +21,7 @@ import java.io.DataInputStream; import java.io.IOException; import java.net.InetAddress; import java.nio.ByteBuffer; -import java.nio.charset.CharacterCodingException; import java.util.*; -import java.util.concurrent.ExecutionException; import com.google.common.base.Function; import com.google.common.collect.HashMultimap; @@ -762,7 +760,7 @@ public class SystemTable processInternal(String.format(req, PAXOS_CF, UUIDGen.microsTimestamp(promise.ballot), - promise.update.metadata().getGcGraceSeconds(), + paxosTtl(promise.update.metadata), promise.ballot, ByteBufferUtil.bytesToHex(promise.key), promise.update.id())); @@ -773,12 +771,18 @@ public class SystemTable processInternal(String.format("UPDATE %s USING TIMESTAMP %d AND TTL %d SET proposal = 0x%s WHERE row_key = 0x%s AND cf_id = %s", PAXOS_CF, UUIDGen.microsTimestamp(commit.ballot), - commit.update.metadata().getGcGraceSeconds(), + paxosTtl(commit.update.metadata), ByteBufferUtil.bytesToHex(commit.update.toBytes()), ByteBufferUtil.bytesToHex(commit.key), commit.update.id())); } + private static int paxosTtl(CFMetaData metadata) + { + // keep paxos state around for at least 3h + return Math.max(3 * 3600, metadata.getGcGraceSeconds()); + } + public static void savePaxosCommit(Commit commit, boolean eraseInProgressProposal) { String preserveCql = "UPDATE %s USING TIMESTAMP %d AND TTL %d SET most_recent_commit_at = %s, most_recent_commit = 0x%s WHERE row_key = 0x%s AND cf_id = %s"; @@ -787,7 +791,7 @@ public class SystemTable processInternal(String.format(eraseInProgressProposal ? eraseCql : preserveCql, PAXOS_CF, UUIDGen.microsTimestamp(commit.ballot), - commit.update.metadata().getGcGraceSeconds(), + paxosTtl(commit.update.metadata), commit.ballot, ByteBufferUtil.bytesToHex(commit.update.toBytes()), ByteBufferUtil.bytesToHex(commit.key),
