[jira] [Updated] (CASSANDRA-6488) Batchlog writes consume unnecessarily large amounts of CPU on vnodes clusters
[ https://issues.apache.org/jira/browse/CASSANDRA-6488?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Aleksey Yeschenko updated CASSANDRA-6488: - Fix Version/s: 2.0.4 1.2.13 Batchlog writes consume unnecessarily large amounts of CPU on vnodes clusters - Key: CASSANDRA-6488 URL: https://issues.apache.org/jira/browse/CASSANDRA-6488 Project: Cassandra Issue Type: Bug Reporter: Rick Branson Assignee: Aleksey Yeschenko Fix For: 1.2.13, 2.0.4 Attachments: 6488-rbranson-patch.txt, 6488-v2.txt, 6488-v3.txt, graph (21).png The cloneTokenOnlyMap call in StorageProxy.getBatchlogEndpoints causes enormous amounts of CPU to be consumed on clusters with many vnodes. I created a patch to cache this data as a workaround and deployed it to a production cluster with 15,000 tokens. CPU consumption drop to 1/5th. This highlights the overall issues with cloneOnlyTokenMap() calls on vnodes clusters. I'm including the maybe-not-the-best-quality workaround patch to use as a reference, but cloneOnlyTokenMap is a systemic issue and every place it's called should probably be investigated. -- This message was sent by Atlassian JIRA (v6.1.4#6159)
[jira] [Updated] (CASSANDRA-6488) Batchlog writes consume unnecessarily large amounts of CPU on vnodes clusters
[ https://issues.apache.org/jira/browse/CASSANDRA-6488?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Aleksey Yeschenko updated CASSANDRA-6488: - Attachment: 6488-v3.txt v3 merges both and has some minor (stylistic) changes to SP on top. Batchlog writes consume unnecessarily large amounts of CPU on vnodes clusters - Key: CASSANDRA-6488 URL: https://issues.apache.org/jira/browse/CASSANDRA-6488 Project: Cassandra Issue Type: Bug Reporter: Rick Branson Assignee: Aleksey Yeschenko Fix For: 1.2.13, 2.0.4 Attachments: 6488-rbranson-patch.txt, 6488-v2.txt, 6488-v3.txt, graph (21).png The cloneTokenOnlyMap call in StorageProxy.getBatchlogEndpoints causes enormous amounts of CPU to be consumed on clusters with many vnodes. I created a patch to cache this data as a workaround and deployed it to a production cluster with 15,000 tokens. CPU consumption drop to 1/5th. This highlights the overall issues with cloneOnlyTokenMap() calls on vnodes clusters. I'm including the maybe-not-the-best-quality workaround patch to use as a reference, but cloneOnlyTokenMap is a systemic issue and every place it's called should probably be investigated. -- This message was sent by Atlassian JIRA (v6.1.4#6159)
git commit: Improve batchlog write performance with vnodes
Updated Branches: refs/heads/cassandra-1.2 a3d91dc9d - 4be9e6720 Improve batchlog write performance with vnodes patch by Jonathan Ellis and Rick Branson; reviewed by Aleksey Yeschenko for CASSANDRA-6488 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/4be9e672 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/4be9e672 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/4be9e672 Branch: refs/heads/cassandra-1.2 Commit: 4be9e6720d9f94a83aa42153c3e71ae1e557d2d9 Parents: a3d91dc Author: Aleksey Yeschenko alek...@apache.org Authored: Sun Dec 15 13:29:56 2013 +0300 Committer: Aleksey Yeschenko alek...@apache.org Committed: Sun Dec 15 13:29:56 2013 +0300 -- CHANGES.txt | 1 + .../locator/AbstractReplicationStrategy.java| 35 -- .../apache/cassandra/locator/TokenMetadata.java | 35 +- .../apache/cassandra/service/StorageProxy.java | 39 +--- 4 files changed, 53 insertions(+), 57 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/4be9e672/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index e586592..b55393b 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -17,6 +17,7 @@ (CASSANDRA-6413) * (Hadoop) add describe_local_ring (CASSANDRA-6268) * Fix handling of concurrent directory creation failure (CASSANDRA-6459) + * Improve batchlog write performance with vnodes (CASSANDRA-6488) 1.2.12 http://git-wip-us.apache.org/repos/asf/cassandra/blob/4be9e672/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java -- diff --git a/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java b/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java index c36fde4..85e229c 100644 --- a/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java +++ b/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java @@ -20,12 +20,10 @@ package org.apache.cassandra.locator; import java.lang.reflect.Constructor; import java.net.InetAddress; import java.util.*; -import java.util.concurrent.locks.Lock; import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; -import com.google.common.util.concurrent.Striped; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -56,14 +54,8 @@ public abstract class AbstractReplicationStrategy public final MapString, String configOptions; private final TokenMetadata tokenMetadata; -// We want to make updating our replicas asynchronous vs the master TokenMetadata instance, -// so that our ownership calculations never block Gossip from processing an ownership change. -// But, we also can't afford to re-clone TM for each range after cache invalidation (CASSANDRA-6345), -// so we keep our own copy here. -// -// Writes to tokenMetadataClone should be synchronized. -private volatile TokenMetadata tokenMetadataClone = null; -private volatile long clonedTokenMetadataVersion = 0; +// track when the token range changes, signaling we need to invalidate our endpoint cache +private volatile long lastInvalidatedVersion = 0; public IEndpointSnitch snitch; @@ -85,16 +77,15 @@ public abstract class AbstractReplicationStrategy { long lastVersion = tokenMetadata.getRingVersion(); -if (lastVersion clonedTokenMetadataVersion) +if (lastVersion lastInvalidatedVersion) { synchronized (this) { -if (lastVersion clonedTokenMetadataVersion) +if (lastVersion lastInvalidatedVersion) { logger.debug(clearing cached endpoints); -tokenMetadataClone = null; cachedEndpoints.clear(); -clonedTokenMetadataVersion = lastVersion; +lastInvalidatedVersion = lastVersion; } } } @@ -116,19 +107,9 @@ public abstract class AbstractReplicationStrategy ArrayListInetAddress endpoints = getCachedEndpoints(keyToken); if (endpoints == null) { -TokenMetadata tm; // local reference in case another thread nulls tMC out from under us -if ((tm = tokenMetadataClone) == null) -{ -// synchronize to prevent thundering herd post-invalidation -synchronized (this) -{ -if ((tm = tokenMetadataClone) == null) -tm = tokenMetadataClone =
[2/2] git commit: Merge branch 'cassandra-1.2' into cassandra-2.0
Merge branch 'cassandra-1.2' into cassandra-2.0 Conflicts: CHANGES.txt Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/bdff106a Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/bdff106a Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/bdff106a Branch: refs/heads/cassandra-2.0 Commit: bdff106aa9698849ba4a82d8a19715e2dbbb7f62 Parents: bb09d3c 4be9e67 Author: Aleksey Yeschenko alek...@apache.org Authored: Sun Dec 15 13:36:18 2013 +0300 Committer: Aleksey Yeschenko alek...@apache.org Committed: Sun Dec 15 13:36:18 2013 +0300 -- CHANGES.txt | 1 + .../locator/AbstractReplicationStrategy.java| 35 -- .../apache/cassandra/locator/TokenMetadata.java | 35 +- .../apache/cassandra/service/StorageProxy.java | 39 +--- 4 files changed, 53 insertions(+), 57 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/bdff106a/CHANGES.txt -- diff --cc CHANGES.txt index a54231e,b55393b..89ef6e1 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -25,46 -17,10 +25,47 @@@ Merged from 1.2 (CASSANDRA-6413) * (Hadoop) add describe_local_ring (CASSANDRA-6268) * Fix handling of concurrent directory creation failure (CASSANDRA-6459) + * Randomize batchlog candidates selection (CASSANDRA-6481) + * Improve batchlog write performance with vnodes (CASSANDRA-6488) -1.2.12 +2.0.3 + * Fix FD leak on slice read path (CASSANDRA-6275) + * Cancel read meter task when closing SSTR (CASSANDRA-6358) + * free off-heap IndexSummary during bulk (CASSANDRA-6359) + * Recover from IOException in accept() thread (CASSANDRA-6349) + * Improve Gossip tolerance of abnormally slow tasks (CASSANDRA-6338) + * Fix trying to hint timed out counter writes (CASSANDRA-6322) + * Allow restoring specific columnfamilies from archived CL (CASSANDRA-4809) + * Avoid flushing compaction_history after each operation (CASSANDRA-6287) + * Fix repair assertion error when tombstones expire (CASSANDRA-6277) + * Skip loading corrupt key cache (CASSANDRA-6260) + * Fixes for compacting larger-than-memory rows (CASSANDRA-6274) + * Compact hottest sstables first and optionally omit coldest from + compaction entirely (CASSANDRA-6109) + * Fix modifying column_metadata from thrift (CASSANDRA-6182) + * cqlsh: fix LIST USERS output (CASSANDRA-6242) + * Add IRequestSink interface (CASSANDRA-6248) + * Update memtable size while flushing (CASSANDRA-6249) + * Provide hooks around CQL2/CQL3 statement execution (CASSANDRA-6252) + * Require Permission.SELECT for CAS updates (CASSANDRA-6247) + * New CQL-aware SSTableWriter (CASSANDRA-5894) + * Reject CAS operation when the protocol v1 is used (CASSANDRA-6270) + * Correctly throw error when frame too large (CASSANDRA-5981) + * Fix serialization bug in PagedRange with 2ndary indexes (CASSANDRA-6299) + * Fix CQL3 table validation in Thrift (CASSANDRA-6140) + * Fix bug missing results with IN clauses (CASSANDRA-6327) + * Fix paging with reversed slices (CASSANDRA-6343) + * Set minTimestamp correctly to be able to drop expired sstables (CASSANDRA-6337) + * Support NaN and Infinity as float literals (CASSANDRA-6003) + * Remove RF from nodetool ring output (CASSANDRA-6289) + * Fix attempting to flush empty rows (CASSANDRA-6374) + * Fix potential out of bounds exception when paging (CASSANDRA-6333) +Merged from 1.2: + * Optimize FD phi calculation (CASSANDRA-6386) + * Improve initial FD phi estimate when starting up (CASSANDRA-6385) + * Don't list CQL3 table in CLI describe even if named explicitely + (CASSANDRA-5750) * Invalidate row cache when dropping CF (CASSANDRA-6351) * add non-jamm path for cached statements (CASSANDRA-6293) * (Hadoop) Require CFRR batchSize to be at least 2 (CASSANDRA-6114) http://git-wip-us.apache.org/repos/asf/cassandra/blob/bdff106a/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/bdff106a/src/java/org/apache/cassandra/locator/TokenMetadata.java -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/bdff106a/src/java/org/apache/cassandra/service/StorageProxy.java -- diff --cc src/java/org/apache/cassandra/service/StorageProxy.java index 9957a37,376edb6..7f97da9 --- a/src/java/org/apache/cassandra/service/StorageProxy.java +++ b/src/java/org/apache/cassandra/service/StorageProxy.java @@@ -767,30 -415,32 +768,32 @@@ public class StorageProxy implements St * -
[1/2] git commit: Improve batchlog write performance with vnodes
Updated Branches: refs/heads/cassandra-2.0 bb09d3c1b - bdff106aa Improve batchlog write performance with vnodes patch by Jonathan Ellis and Rick Branson; reviewed by Aleksey Yeschenko for CASSANDRA-6488 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/4be9e672 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/4be9e672 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/4be9e672 Branch: refs/heads/cassandra-2.0 Commit: 4be9e6720d9f94a83aa42153c3e71ae1e557d2d9 Parents: a3d91dc Author: Aleksey Yeschenko alek...@apache.org Authored: Sun Dec 15 13:29:56 2013 +0300 Committer: Aleksey Yeschenko alek...@apache.org Committed: Sun Dec 15 13:29:56 2013 +0300 -- CHANGES.txt | 1 + .../locator/AbstractReplicationStrategy.java| 35 -- .../apache/cassandra/locator/TokenMetadata.java | 35 +- .../apache/cassandra/service/StorageProxy.java | 39 +--- 4 files changed, 53 insertions(+), 57 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/4be9e672/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index e586592..b55393b 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -17,6 +17,7 @@ (CASSANDRA-6413) * (Hadoop) add describe_local_ring (CASSANDRA-6268) * Fix handling of concurrent directory creation failure (CASSANDRA-6459) + * Improve batchlog write performance with vnodes (CASSANDRA-6488) 1.2.12 http://git-wip-us.apache.org/repos/asf/cassandra/blob/4be9e672/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java -- diff --git a/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java b/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java index c36fde4..85e229c 100644 --- a/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java +++ b/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java @@ -20,12 +20,10 @@ package org.apache.cassandra.locator; import java.lang.reflect.Constructor; import java.net.InetAddress; import java.util.*; -import java.util.concurrent.locks.Lock; import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; -import com.google.common.util.concurrent.Striped; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -56,14 +54,8 @@ public abstract class AbstractReplicationStrategy public final MapString, String configOptions; private final TokenMetadata tokenMetadata; -// We want to make updating our replicas asynchronous vs the master TokenMetadata instance, -// so that our ownership calculations never block Gossip from processing an ownership change. -// But, we also can't afford to re-clone TM for each range after cache invalidation (CASSANDRA-6345), -// so we keep our own copy here. -// -// Writes to tokenMetadataClone should be synchronized. -private volatile TokenMetadata tokenMetadataClone = null; -private volatile long clonedTokenMetadataVersion = 0; +// track when the token range changes, signaling we need to invalidate our endpoint cache +private volatile long lastInvalidatedVersion = 0; public IEndpointSnitch snitch; @@ -85,16 +77,15 @@ public abstract class AbstractReplicationStrategy { long lastVersion = tokenMetadata.getRingVersion(); -if (lastVersion clonedTokenMetadataVersion) +if (lastVersion lastInvalidatedVersion) { synchronized (this) { -if (lastVersion clonedTokenMetadataVersion) +if (lastVersion lastInvalidatedVersion) { logger.debug(clearing cached endpoints); -tokenMetadataClone = null; cachedEndpoints.clear(); -clonedTokenMetadataVersion = lastVersion; +lastInvalidatedVersion = lastVersion; } } } @@ -116,19 +107,9 @@ public abstract class AbstractReplicationStrategy ArrayListInetAddress endpoints = getCachedEndpoints(keyToken); if (endpoints == null) { -TokenMetadata tm; // local reference in case another thread nulls tMC out from under us -if ((tm = tokenMetadataClone) == null) -{ -// synchronize to prevent thundering herd post-invalidation -synchronized (this) -{ -if ((tm = tokenMetadataClone) == null) -tm = tokenMetadataClone =
[3/3] git commit: Merge branch 'cassandra-2.0' into trunk
Merge branch 'cassandra-2.0' into trunk Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/2ee6b8fd Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/2ee6b8fd Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/2ee6b8fd Branch: refs/heads/trunk Commit: 2ee6b8fd91db261dedae6e9a3539342b084056bd Parents: 5d167cf bdff106 Author: Aleksey Yeschenko alek...@apache.org Authored: Sun Dec 15 13:37:13 2013 +0300 Committer: Aleksey Yeschenko alek...@apache.org Committed: Sun Dec 15 13:37:13 2013 +0300 -- CHANGES.txt | 1 + .../locator/AbstractReplicationStrategy.java| 35 -- .../apache/cassandra/locator/TokenMetadata.java | 35 +- .../apache/cassandra/service/StorageProxy.java | 39 +--- 4 files changed, 53 insertions(+), 57 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/2ee6b8fd/CHANGES.txt -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/2ee6b8fd/src/java/org/apache/cassandra/locator/TokenMetadata.java -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/2ee6b8fd/src/java/org/apache/cassandra/service/StorageProxy.java --
[2/3] git commit: Merge branch 'cassandra-1.2' into cassandra-2.0
Merge branch 'cassandra-1.2' into cassandra-2.0 Conflicts: CHANGES.txt Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/bdff106a Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/bdff106a Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/bdff106a Branch: refs/heads/trunk Commit: bdff106aa9698849ba4a82d8a19715e2dbbb7f62 Parents: bb09d3c 4be9e67 Author: Aleksey Yeschenko alek...@apache.org Authored: Sun Dec 15 13:36:18 2013 +0300 Committer: Aleksey Yeschenko alek...@apache.org Committed: Sun Dec 15 13:36:18 2013 +0300 -- CHANGES.txt | 1 + .../locator/AbstractReplicationStrategy.java| 35 -- .../apache/cassandra/locator/TokenMetadata.java | 35 +- .../apache/cassandra/service/StorageProxy.java | 39 +--- 4 files changed, 53 insertions(+), 57 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/bdff106a/CHANGES.txt -- diff --cc CHANGES.txt index a54231e,b55393b..89ef6e1 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -25,46 -17,10 +25,47 @@@ Merged from 1.2 (CASSANDRA-6413) * (Hadoop) add describe_local_ring (CASSANDRA-6268) * Fix handling of concurrent directory creation failure (CASSANDRA-6459) + * Randomize batchlog candidates selection (CASSANDRA-6481) + * Improve batchlog write performance with vnodes (CASSANDRA-6488) -1.2.12 +2.0.3 + * Fix FD leak on slice read path (CASSANDRA-6275) + * Cancel read meter task when closing SSTR (CASSANDRA-6358) + * free off-heap IndexSummary during bulk (CASSANDRA-6359) + * Recover from IOException in accept() thread (CASSANDRA-6349) + * Improve Gossip tolerance of abnormally slow tasks (CASSANDRA-6338) + * Fix trying to hint timed out counter writes (CASSANDRA-6322) + * Allow restoring specific columnfamilies from archived CL (CASSANDRA-4809) + * Avoid flushing compaction_history after each operation (CASSANDRA-6287) + * Fix repair assertion error when tombstones expire (CASSANDRA-6277) + * Skip loading corrupt key cache (CASSANDRA-6260) + * Fixes for compacting larger-than-memory rows (CASSANDRA-6274) + * Compact hottest sstables first and optionally omit coldest from + compaction entirely (CASSANDRA-6109) + * Fix modifying column_metadata from thrift (CASSANDRA-6182) + * cqlsh: fix LIST USERS output (CASSANDRA-6242) + * Add IRequestSink interface (CASSANDRA-6248) + * Update memtable size while flushing (CASSANDRA-6249) + * Provide hooks around CQL2/CQL3 statement execution (CASSANDRA-6252) + * Require Permission.SELECT for CAS updates (CASSANDRA-6247) + * New CQL-aware SSTableWriter (CASSANDRA-5894) + * Reject CAS operation when the protocol v1 is used (CASSANDRA-6270) + * Correctly throw error when frame too large (CASSANDRA-5981) + * Fix serialization bug in PagedRange with 2ndary indexes (CASSANDRA-6299) + * Fix CQL3 table validation in Thrift (CASSANDRA-6140) + * Fix bug missing results with IN clauses (CASSANDRA-6327) + * Fix paging with reversed slices (CASSANDRA-6343) + * Set minTimestamp correctly to be able to drop expired sstables (CASSANDRA-6337) + * Support NaN and Infinity as float literals (CASSANDRA-6003) + * Remove RF from nodetool ring output (CASSANDRA-6289) + * Fix attempting to flush empty rows (CASSANDRA-6374) + * Fix potential out of bounds exception when paging (CASSANDRA-6333) +Merged from 1.2: + * Optimize FD phi calculation (CASSANDRA-6386) + * Improve initial FD phi estimate when starting up (CASSANDRA-6385) + * Don't list CQL3 table in CLI describe even if named explicitely + (CASSANDRA-5750) * Invalidate row cache when dropping CF (CASSANDRA-6351) * add non-jamm path for cached statements (CASSANDRA-6293) * (Hadoop) Require CFRR batchSize to be at least 2 (CASSANDRA-6114) http://git-wip-us.apache.org/repos/asf/cassandra/blob/bdff106a/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/bdff106a/src/java/org/apache/cassandra/locator/TokenMetadata.java -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/bdff106a/src/java/org/apache/cassandra/service/StorageProxy.java -- diff --cc src/java/org/apache/cassandra/service/StorageProxy.java index 9957a37,376edb6..7f97da9 --- a/src/java/org/apache/cassandra/service/StorageProxy.java +++ b/src/java/org/apache/cassandra/service/StorageProxy.java @@@ -767,30 -415,32 +768,32 @@@ public class StorageProxy implements St * - replicas
[1/3] git commit: Improve batchlog write performance with vnodes
Updated Branches: refs/heads/trunk 5d167cf3d - 2ee6b8fd9 Improve batchlog write performance with vnodes patch by Jonathan Ellis and Rick Branson; reviewed by Aleksey Yeschenko for CASSANDRA-6488 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/4be9e672 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/4be9e672 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/4be9e672 Branch: refs/heads/trunk Commit: 4be9e6720d9f94a83aa42153c3e71ae1e557d2d9 Parents: a3d91dc Author: Aleksey Yeschenko alek...@apache.org Authored: Sun Dec 15 13:29:56 2013 +0300 Committer: Aleksey Yeschenko alek...@apache.org Committed: Sun Dec 15 13:29:56 2013 +0300 -- CHANGES.txt | 1 + .../locator/AbstractReplicationStrategy.java| 35 -- .../apache/cassandra/locator/TokenMetadata.java | 35 +- .../apache/cassandra/service/StorageProxy.java | 39 +--- 4 files changed, 53 insertions(+), 57 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/4be9e672/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index e586592..b55393b 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -17,6 +17,7 @@ (CASSANDRA-6413) * (Hadoop) add describe_local_ring (CASSANDRA-6268) * Fix handling of concurrent directory creation failure (CASSANDRA-6459) + * Improve batchlog write performance with vnodes (CASSANDRA-6488) 1.2.12 http://git-wip-us.apache.org/repos/asf/cassandra/blob/4be9e672/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java -- diff --git a/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java b/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java index c36fde4..85e229c 100644 --- a/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java +++ b/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java @@ -20,12 +20,10 @@ package org.apache.cassandra.locator; import java.lang.reflect.Constructor; import java.net.InetAddress; import java.util.*; -import java.util.concurrent.locks.Lock; import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; -import com.google.common.util.concurrent.Striped; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -56,14 +54,8 @@ public abstract class AbstractReplicationStrategy public final MapString, String configOptions; private final TokenMetadata tokenMetadata; -// We want to make updating our replicas asynchronous vs the master TokenMetadata instance, -// so that our ownership calculations never block Gossip from processing an ownership change. -// But, we also can't afford to re-clone TM for each range after cache invalidation (CASSANDRA-6345), -// so we keep our own copy here. -// -// Writes to tokenMetadataClone should be synchronized. -private volatile TokenMetadata tokenMetadataClone = null; -private volatile long clonedTokenMetadataVersion = 0; +// track when the token range changes, signaling we need to invalidate our endpoint cache +private volatile long lastInvalidatedVersion = 0; public IEndpointSnitch snitch; @@ -85,16 +77,15 @@ public abstract class AbstractReplicationStrategy { long lastVersion = tokenMetadata.getRingVersion(); -if (lastVersion clonedTokenMetadataVersion) +if (lastVersion lastInvalidatedVersion) { synchronized (this) { -if (lastVersion clonedTokenMetadataVersion) +if (lastVersion lastInvalidatedVersion) { logger.debug(clearing cached endpoints); -tokenMetadataClone = null; cachedEndpoints.clear(); -clonedTokenMetadataVersion = lastVersion; +lastInvalidatedVersion = lastVersion; } } } @@ -116,19 +107,9 @@ public abstract class AbstractReplicationStrategy ArrayListInetAddress endpoints = getCachedEndpoints(keyToken); if (endpoints == null) { -TokenMetadata tm; // local reference in case another thread nulls tMC out from under us -if ((tm = tokenMetadataClone) == null) -{ -// synchronize to prevent thundering herd post-invalidation -synchronized (this) -{ -if ((tm = tokenMetadataClone) == null) -tm = tokenMetadataClone =
[jira] [Commented] (CASSANDRA-6453) Improve error message for invalid property values during parsing.
[ https://issues.apache.org/jira/browse/CASSANDRA-6453?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13848578#comment-13848578 ] Aleksey Yeschenko commented on CASSANDRA-6453: -- I'm afraid I don't follow. Doesn't it only affect CREATE/ALTER KEYSPACE/TABLE statements, that aren't exactly large, and aren't usually prepared, in the first place? Improve error message for invalid property values during parsing. - Key: CASSANDRA-6453 URL: https://issues.apache.org/jira/browse/CASSANDRA-6453 Project: Cassandra Issue Type: Improvement Components: Core Reporter: Brian ONeill Assignee: Brian ONeill Priority: Trivial Attachments: CASSANDRA-6354-patch.txt Trivial change to the error message returned for invalid property values. Previously, it would just say Invalid property value : ?. If you were constructing a large prepared statement, with multiple question marks, it was difficult to track down which one the server was complaining about. This enhancement tells you which one. =) -- This message was sent by Atlassian JIRA (v6.1.4#6159)
[jira] [Created] (CASSANDRA-6489) ClassCastException when using EACH_QUORUM with SimpleStrategy
DOAN DuyHai created CASSANDRA-6489: -- Summary: ClassCastException when using EACH_QUORUM with SimpleStrategy Key: CASSANDRA-6489 URL: https://issues.apache.org/jira/browse/CASSANDRA-6489 Project: Cassandra Issue Type: Bug Components: Core Environment: Cassandra 2.0.3 Java Driver Core 2.0.0-rc2 Reporter: DOAN DuyHai Priority: Minor When sending requests with EACH_QUORUM consistency and SimpleStrategy, the Java driver reports the following exception: pre ERROR [11:38:36,075][] org.apache.cassandra.transport.messages.ErrorMessage@:fromException Unexpected exception during request java.lang.ClassCastException: org.apache.cassandra.locator.SimpleStrategy cannot be cast to org.apache.cassandra.locator.NetworkTopologyStrategy at org.apache.cassandra.service.DatacenterSyncWriteResponseHandler.init(DatacenterSyncWriteResponseHandler.java:55) at org.apache.cassandra.locator.AbstractReplicationStrategy.getWriteResponseHandler(AbstractReplicationStrategy.java:132) at org.apache.cassandra.service.StorageProxy.performWrite(StorageProxy.java:731) at org.apache.cassandra.service.StorageProxy.mutate(StorageProxy.java:508) at org.apache.cassandra.service.StorageProxy.mutateWithTriggers(StorageProxy.java:578) at org.apache.cassandra.cql3.statements.BatchStatement.execute(BatchStatement.java:171) at org.apache.cassandra.cql3.statements.BatchStatement.executeWithPerStatementVariables(BatchStatement.java:165) at org.apache.cassandra.cql3.QueryProcessor.processBatch(QueryProcessor.java:369) at org.apache.cassandra.transport.messages.BatchMessage.execute(BatchMessage.java:207) at org.apache.cassandra.transport.Message$Dispatcher.messageReceived(Message.java:304) at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70) at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791) at org.jboss.netty.handler.execution.ChannelUpstreamEventRunnable.doRun(ChannelUpstreamEventRunnable.java:43) at org.jboss.netty.handler.execution.ChannelEventRunnable.run(ChannelEventRunnable.java:67) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:724) /pre There should be proper error message instead of a ClassCastException. This is a minor issue though. -- This message was sent by Atlassian JIRA (v6.1.4#6159)
[jira] [Updated] (CASSANDRA-6489) ClassCastException when using EACH_QUORUM with SimpleStrategy
[ https://issues.apache.org/jira/browse/CASSANDRA-6489?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] DOAN DuyHai updated CASSANDRA-6489: --- Issue Type: Improvement (was: Bug) ClassCastException when using EACH_QUORUM with SimpleStrategy - Key: CASSANDRA-6489 URL: https://issues.apache.org/jira/browse/CASSANDRA-6489 Project: Cassandra Issue Type: Improvement Components: Core Environment: Cassandra 2.0.3 Java Driver Core 2.0.0-rc2 Reporter: DOAN DuyHai Priority: Minor When sending requests with EACH_QUORUM consistency and SimpleStrategy, the Java driver reports the following exception: {code} ERROR [11:38:36,075][] org.apache.cassandra.transport.messages.ErrorMessage@:fromException Unexpected exception during request java.lang.ClassCastException: org.apache.cassandra.locator.SimpleStrategy cannot be cast to org.apache.cassandra.locator.NetworkTopologyStrategy at org.apache.cassandra.service.DatacenterSyncWriteResponseHandler.init(DatacenterSyncWriteResponseHandler.java:55) at org.apache.cassandra.locator.AbstractReplicationStrategy.getWriteResponseHandler(AbstractReplicationStrategy.java:132) at org.apache.cassandra.service.StorageProxy.performWrite(StorageProxy.java:731) at org.apache.cassandra.service.StorageProxy.mutate(StorageProxy.java:508) at org.apache.cassandra.service.StorageProxy.mutateWithTriggers(StorageProxy.java:578) at org.apache.cassandra.cql3.statements.BatchStatement.execute(BatchStatement.java:171) at org.apache.cassandra.cql3.statements.BatchStatement.executeWithPerStatementVariables(BatchStatement.java:165) at org.apache.cassandra.cql3.QueryProcessor.processBatch(QueryProcessor.java:369) at org.apache.cassandra.transport.messages.BatchMessage.execute(BatchMessage.java:207) at org.apache.cassandra.transport.Message$Dispatcher.messageReceived(Message.java:304) at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70) at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791) at org.jboss.netty.handler.execution.ChannelUpstreamEventRunnable.doRun(ChannelUpstreamEventRunnable.java:43) at org.jboss.netty.handler.execution.ChannelEventRunnable.run(ChannelEventRunnable.java:67) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:724) {code} There should be proper error message instead of a ClassCastException. This is a minor issue though. -- This message was sent by Atlassian JIRA (v6.1.4#6159)
[jira] [Updated] (CASSANDRA-6489) ClassCastException when using EACH_QUORUM with SimpleStrategy
[ https://issues.apache.org/jira/browse/CASSANDRA-6489?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] DOAN DuyHai updated CASSANDRA-6489: --- Description: When sending requests with EACH_QUORUM consistency and SimpleStrategy, the Java driver reports the following exception: {code} ERROR [11:38:36,075][] org.apache.cassandra.transport.messages.ErrorMessage@:fromException Unexpected exception during request java.lang.ClassCastException: org.apache.cassandra.locator.SimpleStrategy cannot be cast to org.apache.cassandra.locator.NetworkTopologyStrategy at org.apache.cassandra.service.DatacenterSyncWriteResponseHandler.init(DatacenterSyncWriteResponseHandler.java:55) at org.apache.cassandra.locator.AbstractReplicationStrategy.getWriteResponseHandler(AbstractReplicationStrategy.java:132) at org.apache.cassandra.service.StorageProxy.performWrite(StorageProxy.java:731) at org.apache.cassandra.service.StorageProxy.mutate(StorageProxy.java:508) at org.apache.cassandra.service.StorageProxy.mutateWithTriggers(StorageProxy.java:578) at org.apache.cassandra.cql3.statements.BatchStatement.execute(BatchStatement.java:171) at org.apache.cassandra.cql3.statements.BatchStatement.executeWithPerStatementVariables(BatchStatement.java:165) at org.apache.cassandra.cql3.QueryProcessor.processBatch(QueryProcessor.java:369) at org.apache.cassandra.transport.messages.BatchMessage.execute(BatchMessage.java:207) at org.apache.cassandra.transport.Message$Dispatcher.messageReceived(Message.java:304) at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70) at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791) at org.jboss.netty.handler.execution.ChannelUpstreamEventRunnable.doRun(ChannelUpstreamEventRunnable.java:43) at org.jboss.netty.handler.execution.ChannelEventRunnable.run(ChannelEventRunnable.java:67) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:724) {code} There should be proper error message instead of a ClassCastException. This is a minor issue though. was: When sending requests with EACH_QUORUM consistency and SimpleStrategy, the Java driver reports the following exception: pre ERROR [11:38:36,075][] org.apache.cassandra.transport.messages.ErrorMessage@:fromException Unexpected exception during request java.lang.ClassCastException: org.apache.cassandra.locator.SimpleStrategy cannot be cast to org.apache.cassandra.locator.NetworkTopologyStrategy at org.apache.cassandra.service.DatacenterSyncWriteResponseHandler.init(DatacenterSyncWriteResponseHandler.java:55) at org.apache.cassandra.locator.AbstractReplicationStrategy.getWriteResponseHandler(AbstractReplicationStrategy.java:132) at org.apache.cassandra.service.StorageProxy.performWrite(StorageProxy.java:731) at org.apache.cassandra.service.StorageProxy.mutate(StorageProxy.java:508) at org.apache.cassandra.service.StorageProxy.mutateWithTriggers(StorageProxy.java:578) at org.apache.cassandra.cql3.statements.BatchStatement.execute(BatchStatement.java:171) at org.apache.cassandra.cql3.statements.BatchStatement.executeWithPerStatementVariables(BatchStatement.java:165) at org.apache.cassandra.cql3.QueryProcessor.processBatch(QueryProcessor.java:369) at org.apache.cassandra.transport.messages.BatchMessage.execute(BatchMessage.java:207) at org.apache.cassandra.transport.Message$Dispatcher.messageReceived(Message.java:304) at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70) at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791) at org.jboss.netty.handler.execution.ChannelUpstreamEventRunnable.doRun(ChannelUpstreamEventRunnable.java:43) at org.jboss.netty.handler.execution.ChannelEventRunnable.run(ChannelEventRunnable.java:67) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:724) /pre There should be proper error message instead of a ClassCastException. This is a minor issue though. ClassCastException when using EACH_QUORUM with SimpleStrategy
[jira] [Commented] (CASSANDRA-4268) Expose full stop() operation through JMX
[ https://issues.apache.org/jira/browse/CASSANDRA-4268?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13848585#comment-13848585 ] Lyuben Todorov commented on CASSANDRA-4268: --- Would it be useful to add a nodetool command that can use stop() once its exposed to JMX aswell? Something like *stopserver* or *stopcassandra*. Expose full stop() operation through JMX Key: CASSANDRA-4268 URL: https://issues.apache.org/jira/browse/CASSANDRA-4268 Project: Cassandra Issue Type: Improvement Components: Core Reporter: Tyler Hobbs Assignee: Lyuben Todorov Priority: Minor Labels: jmx Fix For: 2.0.4 We already expose ways to stop just the RPC server or gossip. This would fully shutdown the process. -- This message was sent by Atlassian JIRA (v6.1.4#6159)
[jira] [Commented] (CASSANDRA-6453) Improve error message for invalid property values during parsing.
[ https://issues.apache.org/jira/browse/CASSANDRA-6453?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13848609#comment-13848609 ] Brian ONeill commented on CASSANDRA-6453: - Honestly, I didn't look deep enough to see where this part of the grammar is used. I think you are right. It will likely affect only people trying to create generic frameworks that allow people to manipulate schemas. That is my case... I'm updating Virgil (a general REST interface for C*). I have a REST call that allows people to create/alter schemas, which is why I was trying to use a prepared statement (with binding). Improve error message for invalid property values during parsing. - Key: CASSANDRA-6453 URL: https://issues.apache.org/jira/browse/CASSANDRA-6453 Project: Cassandra Issue Type: Improvement Components: Core Reporter: Brian ONeill Assignee: Brian ONeill Priority: Trivial Attachments: CASSANDRA-6354-patch.txt Trivial change to the error message returned for invalid property values. Previously, it would just say Invalid property value : ?. If you were constructing a large prepared statement, with multiple question marks, it was difficult to track down which one the server was complaining about. This enhancement tells you which one. =) -- This message was sent by Atlassian JIRA (v6.1.4#6159)
[jira] [Updated] (CASSANDRA-6199) Improve Stress Tool
[ https://issues.apache.org/jira/browse/CASSANDRA-6199?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Pavel Yaskevich updated CASSANDRA-6199: --- Reviewer: Pavel Yaskevich Improve Stress Tool --- Key: CASSANDRA-6199 URL: https://issues.apache.org/jira/browse/CASSANDRA-6199 Project: Cassandra Issue Type: Improvement Components: Tools Reporter: Benedict Assignee: Benedict Priority: Minor Attachments: new.read.latency.svg, new.read.rate.distribution.svg, new.write.latency.svg, new.write.rate.distribution.svg, old.read.latency.svg, old.read.rate.distribution.svg, old.write.latency.svg, old.write.rate.distribution.svg, ops.read.svg, ops.write.svg The stress tool could do with sprucing up. The following is a list of essential improvements and things that would be nice to have. Essential: - Reduce variability of results, especially start/end tails. Do not trash first/last 10% of readings - Reduce contention/overhead in stress to increase overall throughput - Short warm-up period, which is ignored for summary (or summarised separately), though prints progress as usual. Potentially automatic detection of rate levelling. - Better configurability and defaults for data generation - current column generation populates columns with the same value for every row, which is very easily compressible. Possibly introduce partial random data generator (possibly dictionary-based random data generator) Nice to have: - Calculate and print stdev and mean - Add batched sequential access mode (where a single thread performs batch-size sequential requests before selecting another random key) to test how key proximity affects performance - Auto-mode which attempts to establish the maximum throughput rate, by varying the thread count (or otherwise gating the number of parallel requests) for some period, then configures rate limit or thread count to test performance at e.g. 30%, 50%, 70%, 90%, 120%, 150% and unconstrained. - Auto-mode could have a target variance ratio for mean throughput and/or latency, and completes a test once this target is hit for x intervals - Fix key representation so independent of number of keys (possibly switch to 10 digit hex), and don't use String.format().getBytes() to construct it (expensive) Also, remove the skip-key setting, as it is currently ignored. Unless somebody knows the reason for it. - Fix latency stats - Read/write mode, with configurable recency-of-reads distribution - Add new exponential/extreme value distribution for value size, column count and recency-of-reads - Support more than 2^31 keys - Supports multiple concurrent stress inserts via key-offset parameter or similar -- This message was sent by Atlassian JIRA (v6.1.4#6159)
[jira] [Comment Edited] (CASSANDRA-4268) Expose full stop() operation through JMX
[ https://issues.apache.org/jira/browse/CASSANDRA-4268?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13848585#comment-13848585 ] Lyuben Todorov edited comment on CASSANDRA-4268 at 12/15/13 11:09 PM: -- Would it be useful to add a nodetool command that can use stop() once its exposed to JMX aswell? Something like *stop server* or *stop cassandra*. was (Author: lyubent): Would it be useful to add a nodetool command that can use stop() once its exposed to JMX aswell? Something like *stopserver* or *stopcassandra*. Expose full stop() operation through JMX Key: CASSANDRA-4268 URL: https://issues.apache.org/jira/browse/CASSANDRA-4268 Project: Cassandra Issue Type: Improvement Components: Core Reporter: Tyler Hobbs Assignee: Lyuben Todorov Priority: Minor Labels: jmx Fix For: 2.0.4 We already expose ways to stop just the RPC server or gossip. This would fully shutdown the process. -- This message was sent by Atlassian JIRA (v6.1.4#6159)
[jira] [Created] (CASSANDRA-6490) Please delete old releases from mirroring system
Sebb created CASSANDRA-6490: --- Summary: Please delete old releases from mirroring system Key: CASSANDRA-6490 URL: https://issues.apache.org/jira/browse/CASSANDRA-6490 Project: Cassandra Issue Type: Bug Environment: http://www.apache.org/dist/cassandra/ Reporter: Sebb To reduce the load on the ASF mirrors, projects are required to delete old releases [1] Please can you remove all non-current releases? Thanks! [Note that older releases are always available from the ASF archive server] Any links to older releases on download pages should first be adjusted to point to the archive server. Please note that the stable directory currently links to 0.6.0 which seems incorrect as 0.6.0 is not even listed in the Releases drop-down menu whereas 0.7.0 is listed. There is no indication that 0.7.0 is not stable. [1] http://www.apache.org/dev/release.html#when-to-archive -- This message was sent by Atlassian JIRA (v6.1.4#6159)
[jira] [Commented] (CASSANDRA-6490) Please delete old releases from mirroring system
[ https://issues.apache.org/jira/browse/CASSANDRA-6490?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13848728#comment-13848728 ] Sebb commented on CASSANDRA-6490: - The download page [1] shows that the only supported releases are 2.0.x 1.2.x and 1.1.x Please delete all the older releases from http://www.apache.org/dist/cassandra/ [1] http://cassandra.apache.org/download/ Please delete old releases from mirroring system Key: CASSANDRA-6490 URL: https://issues.apache.org/jira/browse/CASSANDRA-6490 Project: Cassandra Issue Type: Bug Environment: http://www.apache.org/dist/cassandra/ Reporter: Sebb To reduce the load on the ASF mirrors, projects are required to delete old releases [1] Please can you remove all non-current releases? Thanks! [Note that older releases are always available from the ASF archive server] Any links to older releases on download pages should first be adjusted to point to the archive server. Please note that the stable directory currently links to 0.6.0 which seems incorrect as 0.6.0 is not even listed in the Releases drop-down menu whereas 0.7.0 is listed. There is no indication that 0.7.0 is not stable. [1] http://www.apache.org/dev/release.html#when-to-archive -- This message was sent by Atlassian JIRA (v6.1.4#6159)
[jira] [Updated] (CASSANDRA-6490) Please delete old releases from mirroring system
[ https://issues.apache.org/jira/browse/CASSANDRA-6490?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Sebb updated CASSANDRA-6490: Description: To reduce the load on the ASF mirrors, projects are required to delete old releases [1] Please can you remove all non-current releases? Thanks! [Note that older releases are always available from the ASF archive server] Any links to older releases on download pages should first be adjusted to point to the archive server. [1] http://www.apache.org/dev/release.html#when-to-archive was: To reduce the load on the ASF mirrors, projects are required to delete old releases [1] Please can you remove all non-current releases? Thanks! [Note that older releases are always available from the ASF archive server] Any links to older releases on download pages should first be adjusted to point to the archive server. Please note that the stable directory currently links to 0.6.0 which seems incorrect as 0.6.0 is not even listed in the Releases drop-down menu whereas 0.7.0 is listed. There is no indication that 0.7.0 is not stable. [1] http://www.apache.org/dev/release.html#when-to-archive Please delete old releases from mirroring system Key: CASSANDRA-6490 URL: https://issues.apache.org/jira/browse/CASSANDRA-6490 Project: Cassandra Issue Type: Bug Environment: http://www.apache.org/dist/cassandra/ Reporter: Sebb To reduce the load on the ASF mirrors, projects are required to delete old releases [1] Please can you remove all non-current releases? Thanks! [Note that older releases are always available from the ASF archive server] Any links to older releases on download pages should first be adjusted to point to the archive server. [1] http://www.apache.org/dev/release.html#when-to-archive -- This message was sent by Atlassian JIRA (v6.1.4#6159)
[jira] [Assigned] (CASSANDRA-6490) Please delete old releases from mirroring system
[ https://issues.apache.org/jira/browse/CASSANDRA-6490?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Brandon Williams reassigned CASSANDRA-6490: --- Assignee: Sylvain Lebresne Please delete old releases from mirroring system Key: CASSANDRA-6490 URL: https://issues.apache.org/jira/browse/CASSANDRA-6490 Project: Cassandra Issue Type: Bug Environment: http://www.apache.org/dist/cassandra/ Reporter: Sebb Assignee: Sylvain Lebresne To reduce the load on the ASF mirrors, projects are required to delete old releases [1] Please can you remove all non-current releases? Thanks! [Note that older releases are always available from the ASF archive server] Any links to older releases on download pages should first be adjusted to point to the archive server. [1] http://www.apache.org/dev/release.html#when-to-archive -- This message was sent by Atlassian JIRA (v6.1.4#6159)