You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by vi...@apache.org on 2013/06/28 06:21:19 UTC
git commit: Convert speculative retry from milli second to micro
second. patch by Vijay; reviewed by slebresne for CASSANDRA-5014
Updated Branches:
refs/heads/trunk c1f10f823 -> c432e6733
Convert speculative retry from milli second to micro second.
patch by Vijay; reviewed by slebresne for CASSANDRA-5014
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/c432e673
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/c432e673
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/c432e673
Branch: refs/heads/trunk
Commit: c432e673377d0b4b8f265fdb2e90fa7c77745260
Parents: c1f10f8
Author: Vijay Parthasarathy <vi...@gmail.com>
Authored: Thu Jun 27 21:08:38 2013 -0700
Committer: Vijay Parthasarathy <vi...@gmail.com>
Committed: Thu Jun 27 21:08:38 2013 -0700
----------------------------------------------------------------------
src/java/org/apache/cassandra/config/CFMetaData.java | 12 ++++++------
src/java/org/apache/cassandra/db/ColumnFamilyStore.java | 9 +++++----
.../apache/cassandra/service/AbstractReadExecutor.java | 4 ++--
3 files changed, 13 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/c432e673/src/java/org/apache/cassandra/config/CFMetaData.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/config/CFMetaData.java b/src/java/org/apache/cassandra/config/CFMetaData.java
index 38692b8..cf1c179 100644
--- a/src/java/org/apache/cassandra/config/CFMetaData.java
+++ b/src/java/org/apache/cassandra/config/CFMetaData.java
@@ -285,9 +285,9 @@ public final class CFMetaData
}
public final RetryType type;
- public final long value;
+ public final double value;
- private SpeculativeRetry(RetryType type, long value)
+ private SpeculativeRetry(RetryType type, double value)
{
this.type = type;
this.value = value;
@@ -300,14 +300,14 @@ public final class CFMetaData
{
if (name.endsWith(RetryType.PERCENTILE.toString()))
{
- long value = Long.parseLong(name.substring(0, name.length() - 10));
+ double value = Double.parseDouble(name.substring(0, name.length() - 10));
if (value > 100 || value < 0)
throw new ConfigurationException("PERCENTILE should be between 0 and 100");
- return new SpeculativeRetry(RetryType.PERCENTILE, value);
+ return new SpeculativeRetry(RetryType.PERCENTILE, (value / 100));
}
else if (name.endsWith("MS"))
{
- long value = Long.parseLong(name.substring(0, name.length() - 2));
+ double value = Double.parseDouble(name.substring(0, name.length() - 2));
return new SpeculativeRetry(RetryType.CUSTOM, value);
}
else
@@ -339,7 +339,7 @@ public final class CFMetaData
case PERCENTILE:
return value + "PERCENTILE";
case CUSTOM:
- return value + "MS";
+ return value + "ms";
default:
return type.toString();
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/c432e673/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
index 0a40457..643f405 100644
--- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
+++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
@@ -303,12 +303,13 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
switch (retryPolicy.type)
{
case PERCENTILE:
- double percentile = retryPolicy.value / 100d;
- // get percentile and convert it to MS insted of dealing with micro
- sampleLatency = (long) (metric.readLatency.latency.getSnapshot().getValue(percentile) / 1000);
+ // get percentile in nanos
+ assert metric.readLatency.latency.durationUnit() == TimeUnit.MICROSECONDS;
+ sampleLatency = (long) (metric.readLatency.latency.getSnapshot().getValue(retryPolicy.value) * 1000d);
break;
case CUSTOM:
- sampleLatency = retryPolicy.value;
+ // convert to nanos, since configuration is in millisecond
+ sampleLatency = (long) (retryPolicy.value * 1000d * 1000d);
break;
default:
sampleLatency = Long.MAX_VALUE;
http://git-wip-us.apache.org/repos/asf/cassandra/blob/c432e673/src/java/org/apache/cassandra/service/AbstractReadExecutor.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/AbstractReadExecutor.java b/src/java/org/apache/cassandra/service/AbstractReadExecutor.java
index 051085b..2ebc0b3 100644
--- a/src/java/org/apache/cassandra/service/AbstractReadExecutor.java
+++ b/src/java/org/apache/cassandra/service/AbstractReadExecutor.java
@@ -177,10 +177,10 @@ public abstract class AbstractReadExecutor
void speculate()
{
// no latency information, or we're overloaded
- if (cfs.sampleLatency > command.getTimeout())
+ if (cfs.sampleLatency > TimeUnit.MILLISECONDS.toNanos(command.getTimeout()))
return;
- if (!handler.await(cfs.sampleLatency, TimeUnit.MILLISECONDS))
+ if (!handler.await(cfs.sampleLatency, TimeUnit.NANOSECONDS))
{
InetAddress endpoint = unfiltered.get(handler.endpoints.size());