Compare commits

...

17 Commits

Author SHA1 Message Date
Pekka Enberg
1c249f9917 release: prepare for 1.7.5 2017-09-11 14:03:49 +03:00
Shlomi Livne
51ba6ea4e5 release: prepare for 1.7.4
Signed-off-by: Shlomi Livne <shlomi@scylladb.com>
2017-07-26 17:25:17 +03:00
Pekka Enberg
a2d7c777e3 release: prepare for 1.7.3 2017-07-18 17:35:09 +03:00
Shlomi Livne
84fd0eff69 release: prepare for 1.7.2
Signed-off-by: Shlomi Livne <shlomi@scylladb.com>
2017-06-21 22:10:11 +03:00
Calle Wilund
671fa173db TableMetrics: bugfix: local metrics registry is a proxy. It must proxy
Refs scylladb/scylla#2340 (trunk/1.7)

Must proxy "register" call, otherwise unregistration of mbeans
will instead try to double-register. Code for this somehow fell away.

Message-Id: <1494417610-9720-1-git-send-email-calle@scylladb.com>
(cherry picked from commit e954db8444)
2017-05-28 14:02:50 +03:00
Shlomi Livne
aeb89f535e release: prepare for 1.7.1
Signed-off-by: Shlomi Livne <shlomi@scylladb.com>
2017-05-23 22:41:57 +03:00
Pekka Enberg
ea1da250ca release: prepare for 1.7.0 2017-05-04 15:29:29 +03:00
Shlomi Livne
21091b6d4d release: prepare for 1.7.rc3
Signed-off-by: Shlomi Livne <shlomi@scylladb.com>
2017-05-01 09:54:33 +03:00
Tomasz Grabiec
c20ddc47b3 Bring back old forceKeyspaceCompaction() overload
nodetool from scylla-tools-java still uses it. Currently `nodetool compact` fails like this:

error: forceKeyspaceCompaction(java.lang.String, [Ljava.lang.String;)
-- StackTrace --
java.lang.NoSuchMethodException: forceKeyspaceCompaction(java.lang.String, [Ljava.lang.String;)

Fixes scylladb/scylla#2261

Probably broken by 3e146845b4

Message-Id: <1491470483-6147-1-git-send-email-tgrabiec@scylladb.com>
(cherry picked from commit 8176d5729f)
2017-04-06 13:00:12 +03:00
Pekka Enberg
c252dcbdad release: prepare for 1.7.rc2 2017-03-23 13:23:19 +02:00
Amnon Heiman
4b367372a6 MetricsRegistry: Solving empty histograms in nodetool
This patch fixes two issues with the histogram implementation:
* Need to all update before trying to read values from the histogram.
* The histogram values return from the API in microseconds and not nano.

See Scylladb/scylla#2155

Signed-off-by: Amnon Heiman <amnon@scylladb.com>
Message-Id: <20170315130725.22261-1-amnon@scylladb.com>
(cherry picked from commit 0c541d73e7)
2017-03-20 12:34:08 +02:00
Pekka Enberg
4586c90544 release: prepare for 1.7.rc1 2017-03-08 12:26:02 +02:00
Amnon Heiman
7674fa8082 APIClient: Snapshot disk size should be long
When parsing the snapshot disk sizes, it should be long and not int.

See scylladb/scylla#2104

Signed-off-by: Amnon Heiman <amnon@scylladb.com>
Message-Id: <1487760019-1354-1-git-send-email-amnon@scylladb.com>
(cherry picked from commit 9c11768b9d)
2017-02-22 15:15:11 +02:00
Takuya ASADA
8b8fe07298 dist/debian: install ca-certificates-java/jessie-backports for Debian8
openjdk-8-jre-headless/jessie-backports requires
ca-certificates-java/jessie-backports, but apt doesn't override
ca-certificates-java/jessie by default.

So install it before installing openjdk-8.

Fixes #40

Signed-off-by: Takuya ASADA <syuu@scylladb.com>
Message-Id: <1487269613-21196-1-git-send-email-syuu@scylladb.com>
(cherry picked from commit 962a42dbd5)
2017-02-16 23:23:10 +02:00
Takuya ASADA
a1ea187aa6 dist/debian: install python for git-archive-all
Since git-archive-all is python script, we need to install python if it's
unavailable.

Signed-off-by: Takuya ASADA <syuu@scylladb.com>
Message-Id: <1487054303-11556-1-git-send-email-syuu@scylladb.com>
(cherry picked from commit db711b4b53)
2017-02-14 09:09:13 +02:00
Calle Wilund
c947223b96 scylla-jmx: Fix RMI bind address when using local only connector
Message-Id: <1486382699-25556-1-git-send-email-calle@scylladb.com>
(cherry picked from commit 2ae7ccf945)
2017-02-06 14:15:54 +02:00
Pekka Enberg
2581642a5b release: prepare for 1.7.rc0 2017-02-04 11:05:05 +02:00
8 changed files with 40 additions and 6 deletions

View File

@ -1,6 +1,6 @@
#!/bin/sh #!/bin/sh
VERSION=666.development VERSION=1.7.5
if test -f version if test -f version
then then

View File

@ -15,6 +15,9 @@ fi
if [ ! -f /usr/bin/lsb_release ]; then if [ ! -f /usr/bin/lsb_release ]; then
sudo apt-get -y install lsb-release sudo apt-get -y install lsb-release
fi fi
if [ ! -f /usr/bin/python ]; then
sudo apt-get -y install python
fi
DISTRIBUTION=`lsb_release -i|awk '{print $3}'` DISTRIBUTION=`lsb_release -i|awk '{print $3}'`
RELEASE=`lsb_release -r|awk '{print $2}'` RELEASE=`lsb_release -r|awk '{print $2}'`
CODENAME=`lsb_release -c|awk '{print $2}'` CODENAME=`lsb_release -c|awk '{print $2}'`
@ -28,6 +31,7 @@ fi
if [ "$CODENAME" = "jessie" ]; then if [ "$CODENAME" = "jessie" ]; then
sudo sh -c 'echo deb "http://httpredir.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/jessie-backports.list' sudo sh -c 'echo deb "http://httpredir.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/jessie-backports.list'
sudo apt-get -y update sudo apt-get -y update
sudo apt-get install -t jessie-backports -y ca-certificates-java
fi fi
VERSION=$(./SCYLLA-VERSION-GEN) VERSION=$(./SCYLLA-VERSION-GEN)

View File

@ -98,6 +98,7 @@ do
;; ;;
-Dcom.sun.management.jmxremote.host=*) -Dcom.sun.management.jmxremote.host=*)
JMX_ADDR=$1 JMX_ADDR=$1
HOSTNAME=${1:36}
shift shift
;; ;;
-Dcom.sun.management.jmxremote.authenticate=*) -Dcom.sun.management.jmxremote.authenticate=*)
@ -127,6 +128,7 @@ if [ $REMOTE -eq 0 ]; then
if [ -z $JMX_ADDR ]; then if [ -z $JMX_ADDR ]; then
JMX_ADDR=-Dcom.sun.management.jmxremote.host=localhost JMX_ADDR=-Dcom.sun.management.jmxremote.host=localhost
fi fi
HOSTNAME=localhost
else else
if [ -z $JMX_LOCAL ]; then if [ -z $JMX_LOCAL ]; then
JMX_LOCAL=-Dcom.sun.management.jmxremote.local.only=false JMX_LOCAL=-Dcom.sun.management.jmxremote.local.only=false

View File

@ -472,8 +472,8 @@ public class APIClient {
for (int i = 0; i < arr.size(); i++) { for (int i = 0; i < arr.size(); i++) {
JsonObject obj = arr.getJsonObject(i); JsonObject obj = arr.getJsonObject(i);
if (obj.containsKey("ks") && obj.containsKey("cf")) { if (obj.containsKey("ks") && obj.containsKey("cf")) {
SnapshotDetailsTabularData.from(key, obj.getString("ks"), obj.getString("cf"), obj.getInt("total"), SnapshotDetailsTabularData.from(key, obj.getString("ks"), obj.getString("cf"), obj.getJsonNumber("total").longValue(),
obj.getInt("live"), data); obj.getJsonNumber("live").longValue(), data);
} }
} }
return data; return data;

View File

@ -196,11 +196,11 @@ public class MetricsRegistry {
private static final TimeUnit RATE_UNIT = TimeUnit.SECONDS; private static final TimeUnit RATE_UNIT = TimeUnit.SECONDS;
private static final TimeUnit DURATION_UNIT = TimeUnit.MICROSECONDS; private static final TimeUnit DURATION_UNIT = TimeUnit.MICROSECONDS;
private static final TimeUnit API_DURATION_UNIT = TimeUnit.NANOSECONDS; private static final TimeUnit API_DURATION_UNIT = TimeUnit.MICROSECONDS;
private static final double DURATION_FACTOR = 1.0 / API_DURATION_UNIT.convert(1, DURATION_UNIT); private static final double DURATION_FACTOR = 1.0 / API_DURATION_UNIT.convert(1, DURATION_UNIT);
private static double toDuration(double nanos) { private static double toDuration(double micro) {
return nanos * DURATION_FACTOR; return micro * DURATION_FACTOR;
} }
private static String unitString(TimeUnit u) { private static String unitString(TimeUnit u) {
@ -650,61 +650,73 @@ public class MetricsRegistry {
@Override @Override
public double getMin() { public double getMin() {
update();
return toDuration(histogram.getMin()); return toDuration(histogram.getMin());
} }
@Override @Override
public double getMax() { public double getMax() {
update();
return toDuration(histogram.getMax()); return toDuration(histogram.getMax());
} }
@Override @Override
public double getMean() { public double getMean() {
update();
return toDuration(histogram.getMean()); return toDuration(histogram.getMean());
} }
@Override @Override
public double getStdDev() { public double getStdDev() {
update();
return toDuration(histogram.getStdDev()); return toDuration(histogram.getStdDev());
} }
@Override @Override
public double get50thPercentile() { public double get50thPercentile() {
update();
return toDuration(histogram.getValue(.5)); return toDuration(histogram.getValue(.5));
} }
@Override @Override
public double get75thPercentile() { public double get75thPercentile() {
update();
return toDuration(histogram.getValue(.75)); return toDuration(histogram.getValue(.75));
} }
@Override @Override
public double get95thPercentile() { public double get95thPercentile() {
update();
return toDuration(histogram.getValue(.95)); return toDuration(histogram.getValue(.95));
} }
@Override @Override
public double get98thPercentile() { public double get98thPercentile() {
update();
return toDuration(histogram.getValue(.98)); return toDuration(histogram.getValue(.98));
} }
@Override @Override
public double get99thPercentile() { public double get99thPercentile() {
update();
return toDuration(histogram.getValue(.99)); return toDuration(histogram.getValue(.99));
} }
@Override @Override
public double get999thPercentile() { public double get999thPercentile() {
update();
return toDuration(histogram.getValue(.999)); return toDuration(histogram.getValue(.999));
} }
@Override @Override
public long[] values() { public long[] values() {
update();
return histogram.getValues(); return histogram.getValues();
} }
@Override @Override
public String getDurationUnit() { public String getDurationUnit() {
update();
return DURATION_UNIT.toString().toLowerCase(Locale.US); return DURATION_UNIT.toString().toLowerCase(Locale.US);
} }
} }

View File

@ -21,11 +21,13 @@ import static com.scylladb.jmx.api.APIClient.getReader;
import java.util.function.BiFunction; import java.util.function.BiFunction;
import java.util.function.Function; import java.util.function.Function;
import java.util.function.Supplier;
import javax.management.MalformedObjectNameException; import javax.management.MalformedObjectNameException;
import javax.management.ObjectName; import javax.management.ObjectName;
import org.apache.cassandra.db.ColumnFamilyStore; import org.apache.cassandra.db.ColumnFamilyStore;
import org.apache.cassandra.metrics.MetricsRegistry.MetricMBean;
import com.scylladb.jmx.api.APIClient; import com.scylladb.jmx.api.APIClient;
@ -110,15 +112,22 @@ public class TableMetrics implements Metrics {
final MetricNameFactory factory; final MetricNameFactory factory;
final MetricNameFactory aliasFactory; final MetricNameFactory aliasFactory;
final String cfName; final String cfName;
final MetricsRegistry other;
public Registry(MetricsRegistry other, MetricNameFactory factory, MetricNameFactory aliasFactory, public Registry(MetricsRegistry other, MetricNameFactory factory, MetricNameFactory aliasFactory,
String cfName) { String cfName) {
super(other); super(other);
this.other = other;
this.cfName = cfName; this.cfName = cfName;
this.factory = factory; this.factory = factory;
this.aliasFactory = aliasFactory; this.aliasFactory = aliasFactory;
} }
@Override
public void register(Supplier<MetricMBean> f, ObjectName... objectNames) {
other.register(f, objectNames);
}
public void createTableGauge(String name, String uri) throws MalformedObjectNameException { public void createTableGauge(String name, String uri) throws MalformedObjectNameException {
createTableGauge(name, name, uri); createTableGauge(name, name, uri);
} }

View File

@ -582,6 +582,7 @@ public class StorageService extends MetricsMBean implements StorageServiceMBean,
/** /**
* Forces major compaction of a single keyspace * Forces major compaction of a single keyspace
*/ */
@Override
public void forceKeyspaceCompaction(String keyspaceName, String... columnFamilies) public void forceKeyspaceCompaction(String keyspaceName, String... columnFamilies)
throws IOException, ExecutionException, InterruptedException { throws IOException, ExecutionException, InterruptedException {
log(" forceKeyspaceCompaction(String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException"); log(" forceKeyspaceCompaction(String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException");

View File

@ -291,6 +291,12 @@ public interface StorageServiceMBean extends NotificationEmitter {
public void forceKeyspaceCompaction(boolean splitOutput, String keyspaceName, String... tableNames) public void forceKeyspaceCompaction(boolean splitOutput, String keyspaceName, String... tableNames)
throws IOException, ExecutionException, InterruptedException; throws IOException, ExecutionException, InterruptedException;
/**
* Forces major compaction of a single keyspace.
*/
public void forceKeyspaceCompaction(String keyspaceName, String... tableNames)
throws IOException, ExecutionException, InterruptedException;
/** /**
* Trigger a cleanup of keys on a single keyspace * Trigger a cleanup of keys on a single keyspace
*/ */