diff --git a/.travis.yml b/.travis.yml
index 5bae0a9..92dd487 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -11,7 +11,7 @@ addons:
- rpm
env:
global:
- - TARGE=install
+ - TARGET=install
- secure: aANugu/1kR5uZl2nzd6Cm4hn6aA1eIPNrpUlQ7pI5aFZkkhPQ1g3qxR2e0z5sfKlpOV8iKbVEk+XrnnR2yJiJS3tDma6AHm/8CcvyB+2oEWZroumE/cva914uvwo15wfhNBQPPt6uAjBU8qPRpjrSmbTr/yiwSPQiwYmCYzYatpMLzCw/xjUQSnpu1Q85WJU0bcQe4yYO6xazrdpJgM2XUTvRybq4SEfEcpshm5KV/k3ux/xvwE6QBUYUgU+Cnm1p2jv2wgh3DrYJUVyokMKiwWoBvh21lmXm026T8+nHVvxpdUdXE69YJD250zLrvzLmv4C9sYYcQZGwzuBOWZa+tS4MPSu0kVcgFohC3Y8/fj0nTGmF3RKABGJwwAaq5ZsAGRL4SIBBr+zALdlRMy8dEQsVCc3O8TzQ/hmLVzQj/xmHimbP8KQgSXnFIfj4FyrLDZr/b8Yqo26UQ7n9wzjLcLZ2qPfkF+WHX7YuGSNTgtFDCMx55ukgGD/G57eqgR14052QQxAvAAWMkdJOxw0nJXEtJfRx8LBgVFH17a3FfWAB5x2/1Im4z9yMjTDIMtEP8ruqGwokcvMQXTUha+ye7xZCrLhzSI45dDRxmLcz4z0CLM9nrsJ1OqkY2JPNxhTUI74bJaTDLVGBP9nLsfbaxm8uPGZX93LmiozgXYZ1mE=
- secure: CTP8oAraFI2rW5lmeHoZcZ9pS3dDaF9/pKn6CTakkpaAdR0PAeo/NHVGbNE/VSOAyl8VCa9NkNkCO2FESckWcliwJAriposs9MKLrfeWk2MfKSTQKNgDH65BXFaeHRB5WUMW7Vy0upkPpu4a+aB0BqZJfp+bTfKC0Eyhyhiz4oB9PUEwy7jIy+zGDAhU48DXLrj1oS2MOM72hwYhWcnrs5Mrdj987mfrZglq95qXN5qIee8A9JBiPoY/qu7rVYxJ4Nru1S5i57yxwvoz62nn9zrax6kincjQ3w53VL8D8C5bOUaOavFiwrAWC0m/B1MoMNLc+fpzmDZuExM5moJSsIyb3//gWJ0b9FetdK79ET2JGRJwcvtiJTIr/chGDSzdnCOimY4NTwR+FlUGYeJXEm4BhIAtGbttXw0xgknKnDpfAptGUv8+pydJJlN4ytaJ0gPOePGYVxIWbzZEocq6Tg7ZPMjW7CZwiYrF7KcvHSGHJ52Mc6xDf+uts72F/CXG/iAHWwIUsSFRYEWLOO14Jaf+RpdNsT4AHTTY8hAn25GFFO+P/EIkjb2zRZp9ld80kaDNKt7zoXn39ORnc7Ylx20SoIOQtAjaKz5+USx2OWVZ+Za9F7xm74iiR19ceOfL7kK//r+lSZmVAibH5HF9b5TTJoyTDEqHUjK9eAHc0N0=
- secure: BdNEBuKIoqqj1ibPMmyT1VLcEvxhrGYlNKOhEa1KPQ6vdORbZICWwXM0HcD59g5W+KMv+5/UcNEqghabXgseH1aytgNN0d5XbFgzojN2C3ZftU2fOAguGrFjkDIcT8ASnmVzi+qz7E8LIDio/4gcooLwU5KvxWeyB++1pyFhW9PsGZ0hMGRq9nzxWYA29LxbhXIhawd7kI5MvbAKQGjY2zAJTPk1ymT4MbFMk8N7qV9bpIo2nE5g0tNmyllPVrG+rwo6uEV9TNnBO05ktHWxl4pctvgBtCLNCMwEE0Y1rcJ8/yFVQu+uVy5wmRCSVm7sJASc6lfG0Ajnonx5lXlmSEKS6PGBoO0JJgHx4HwMuZf9RwBqIU3qItFbURBOGxiO/xiyp8yENgLAuYMGxuYz58Ro5CeGJthrptfHOmprVPFwnJWXwVaWiZSj5zZDK0x/Fw+B6qUjmxEUvyEQ19vMbjPQT3L0tICROuFN/7c1L6Y9CoRsRhLj+nXYIbZCXaahf4yGuskOwRKFphRYN5uflkP7ilFIuhFTu755yX7Ges2dXRQhCUBKCXICIjlikoiWlWnpIJFqnA02AQOHoeCIhkj9NL9Ffixh1g4sNfVThbQFMtOOvhgP9K3cKlaTDD/blMZqJKwN+yz9gR8kB372vAM6Du3UHv8/GY+W3RTDUUY=
diff --git a/pom.xml b/pom.xml
index 34e62f8..b6bee48 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,7 +28,7 @@
jar
KairosDB Extensions
Extensions for KairosDB.
- 2.1.8-SNAPSHOT
+ 2.1.10-SNAPSHOT
diff --git a/src/main/java/io/inscopemetrics/kairosdb/HistogramDataPoint.java b/src/main/java/io/inscopemetrics/kairosdb/HistogramDataPoint.java
index 422a8f4..09e5012 100644
--- a/src/main/java/io/inscopemetrics/kairosdb/HistogramDataPoint.java
+++ b/src/main/java/io/inscopemetrics/kairosdb/HistogramDataPoint.java
@@ -29,13 +29,13 @@ public interface HistogramDataPoint extends DataPoint {
* Getter the number of data points originally contained in this HistogramDataPoint.
* @return datapoint sample count
*/
- int getOriginalCount();
+ long getOriginalCount();
/**
* Getter for sample count contained in this HistogramDataPoint.
* @return datapoint sample count
*/
- int getSampleCount();
+ long getSampleCount();
/**
* Getter for the sum of all samples contained in this HistogramDataPoint.
diff --git a/src/main/java/io/inscopemetrics/kairosdb/HistogramDataPointImpl.java b/src/main/java/io/inscopemetrics/kairosdb/HistogramDataPointImpl.java
index 647f511..085eb30 100644
--- a/src/main/java/io/inscopemetrics/kairosdb/HistogramDataPointImpl.java
+++ b/src/main/java/io/inscopemetrics/kairosdb/HistogramDataPointImpl.java
@@ -41,7 +41,7 @@ public class HistogramDataPointImpl extends DataPointHelper implements Histogram
private final double max;
private final double mean;
private final double sum;
- private final int originalCount;
+ private final long originalCount;
/**
* Public constructor.
@@ -88,7 +88,7 @@ public HistogramDataPointImpl(
final double max,
final double mean,
final double sum,
- final int originalCount) {
+ final long originalCount) {
this(
timestamp,
DEFAULT_PRECISION,
@@ -151,7 +151,7 @@ public HistogramDataPointImpl(
final double max,
final double mean,
final double sum,
- final int originalCount) {
+ final long originalCount) {
super(timestamp);
this.precision = precision;
this.map = map;
@@ -222,7 +222,7 @@ public double getDoubleValue() {
}
@Override
- public int getOriginalCount() {
+ public long getOriginalCount() {
return originalCount;
}
@@ -232,7 +232,7 @@ public int getOriginalCount() {
* @return the number of samples
*/
@Override
- public int getSampleCount() {
+ public long getSampleCount() {
int count = 0;
for (Integer binSamples : map.values()) {
count += binSamples;
diff --git a/src/main/java/io/inscopemetrics/kairosdb/aggregators/HistogramCountAggregator.java b/src/main/java/io/inscopemetrics/kairosdb/aggregators/HistogramCountAggregator.java
index 605ff4b..b459cbb 100644
--- a/src/main/java/io/inscopemetrics/kairosdb/aggregators/HistogramCountAggregator.java
+++ b/src/main/java/io/inscopemetrics/kairosdb/aggregators/HistogramCountAggregator.java
@@ -68,7 +68,7 @@ private final class HistogramMeanDataPointAggregator implements RangeSubAggregat
@Override
public Iterable getNextDataPoints(final long returnTime, final Iterator dataPointRange) {
- int count = 0;
+ long count = 0;
while (dataPointRange.hasNext()) {
final DataPoint dp = dataPointRange.next();
if (dp instanceof HistogramDataPoint) {
diff --git a/src/main/java/io/inscopemetrics/kairosdb/aggregators/HistogramFilterAggregator.java b/src/main/java/io/inscopemetrics/kairosdb/aggregators/HistogramFilterAggregator.java
index 1b64e70..a6b3134 100644
--- a/src/main/java/io/inscopemetrics/kairosdb/aggregators/HistogramFilterAggregator.java
+++ b/src/main/java/io/inscopemetrics/kairosdb/aggregators/HistogramFilterAggregator.java
@@ -207,7 +207,7 @@ private HistogramDataPoint filterBins(final DataPoint dp) {
double max = -Double.MAX_VALUE;
double sum = 0;
long count = 0;
- int originalCount = 0;
+ long originalCount = 0;
if (dp instanceof HistogramDataPoint) {
final HistogramDataPoint hist = (HistogramDataPoint) dp;
diff --git a/src/main/java/io/inscopemetrics/kairosdb/aggregators/MovingWindowAggregator.java b/src/main/java/io/inscopemetrics/kairosdb/aggregators/MovingWindowAggregator.java
index 0b37ef4..a365285 100644
--- a/src/main/java/io/inscopemetrics/kairosdb/aggregators/MovingWindowAggregator.java
+++ b/src/main/java/io/inscopemetrics/kairosdb/aggregators/MovingWindowAggregator.java
@@ -406,12 +406,12 @@ public void setDataPointGroup(final DataPointGroup dataPointGroup) {
}
@Override
- public int getOriginalCount() {
+ public long getOriginalCount() {
return wrappedDataPoint.getOriginalCount();
}
@Override
- public int getSampleCount() {
+ public long getSampleCount() {
return wrappedDataPoint.getSampleCount();
}
diff --git a/src/test/java/io/inscopemetrics/kairosdb/Histogram.java b/src/test/java/io/inscopemetrics/kairosdb/Histogram.java
index 40bb724..68e8e47 100644
--- a/src/test/java/io/inscopemetrics/kairosdb/Histogram.java
+++ b/src/test/java/io/inscopemetrics/kairosdb/Histogram.java
@@ -31,11 +31,11 @@
*/
@SuppressFBWarnings("FE_FLOATING_POINT_EQUALITY")
public class Histogram {
- private final TreeMap bins = new TreeMap<>();
+ private final TreeMap bins = new TreeMap<>();
private double min;
private double max;
private double sum;
- private int count;
+ private long count;
/**
* Public constructor.
@@ -70,7 +70,7 @@ public Histogram(final JSONObject json) throws JSONException {
final JSONObject binsJson = json.getJSONObject("bins");
for (final Iterator it = (Iterator) binsJson.keys(); it.hasNext();) {
final String key = it.next();
- final int value = binsJson.getInt(key);
+ final long value = binsJson.getLong(key);
bins.put(Double.valueOf(key), value);
count += value;
@@ -143,7 +143,11 @@ public double getSum() {
return sum;
}
- public TreeMap getBins() {
+ public long getCount() {
+ return count;
+ }
+
+ public TreeMap getBins() {
return bins;
}
}
diff --git a/src/test/java/io/inscopemetrics/kairosdb/HistogramTest.java b/src/test/java/io/inscopemetrics/kairosdb/HistogramTest.java
new file mode 100644
index 0000000..6939cf6
--- /dev/null
+++ b/src/test/java/io/inscopemetrics/kairosdb/HistogramTest.java
@@ -0,0 +1,30 @@
+package io.inscopemetrics.kairosdb;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.util.TreeMap;
+
+public class HistogramTest {
+ @Test
+ public void testDecodeLargeHistogram() throws JSONException {
+ final JSONObject serialized = new JSONObject();
+ serialized.put("min", 1337d);
+ serialized.put("max", 1337d);
+ serialized.put("sum", 11484742549504d);
+ final JSONObject bins = new JSONObject();
+ bins.put("1337", 8589934592d);
+ serialized.put("bins", bins);
+
+ final Histogram h = new Histogram(serialized);
+
+ Assert.assertEquals(1337, (long) h.getMin());
+ Assert.assertEquals(1337, (long) h.getMax());
+ Assert.assertEquals(11484742549504L, (long) h.getSum());
+ Assert.assertEquals(8589934592L, h.getCount());
+ final TreeMap actualBins = h.getBins();
+ Assert.assertEquals(8589934592L, actualBins.get(1337d).longValue());
+ }
+}
diff --git a/src/test/java/io/inscopemetrics/kairosdb/aggregators/HistogramCountAggregatorTest.java b/src/test/java/io/inscopemetrics/kairosdb/aggregators/HistogramCountAggregatorTest.java
new file mode 100644
index 0000000..5a72f54
--- /dev/null
+++ b/src/test/java/io/inscopemetrics/kairosdb/aggregators/HistogramCountAggregatorTest.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2020 Dropbox Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package io.inscopemetrics.kairosdb.aggregators;
+
+import com.google.common.collect.Maps;
+import io.inscopemetrics.kairosdb.HistogramDataPoint;
+import io.inscopemetrics.kairosdb.HistogramDataPointImpl;
+import org.junit.Assert;
+import org.junit.Test;
+import org.kairosdb.core.datapoints.DoubleDataPoint;
+import org.kairosdb.core.datapoints.DoubleDataPointFactoryImpl;
+import org.kairosdb.core.datastore.DataPointGroup;
+import org.kairosdb.core.exception.KairosDBException;
+import org.kairosdb.testing.ListDataPointGroup;
+
+import java.util.TreeMap;
+
+public class HistogramCountAggregatorTest {
+
+ @Test
+ public void testCombineLargeValues() throws KairosDBException {
+ final double min = Double.MAX_VALUE;
+ final double max = -Double.MAX_VALUE;
+ final double sum = 0;
+ final TreeMap bins = Maps.newTreeMap();
+ bins.put(1337d, 2147483647);
+ final double mean = 1337d;
+
+ final HistogramDataPoint dp = new HistogramDataPointImpl(
+ 1L, bins, min, max, mean, sum);
+ final ListDataPointGroup group = new ListDataPointGroup("testCombineLargeValues");
+ group.addDataPoint(dp);
+ group.addDataPoint(dp);
+ group.addDataPoint(dp);
+ group.addDataPoint(dp);
+
+ final HistogramCountAggregator aggregator = new HistogramCountAggregator(new DoubleDataPointFactoryImpl());
+ final DataPointGroup result = aggregator.aggregate(group);
+
+ Assert.assertTrue(result.hasNext());
+ final DoubleDataPoint resultDataPoint = (DoubleDataPoint) result.next();
+ Assert.assertEquals(8589934588L, resultDataPoint.getLongValue());
+ }
+}
diff --git a/src/test/java/io/inscopemetrics/kairosdb/integration/AggregationIT.java b/src/test/java/io/inscopemetrics/kairosdb/integration/AggregationIT.java
index 8caeae7..d975f15 100644
--- a/src/test/java/io/inscopemetrics/kairosdb/integration/AggregationIT.java
+++ b/src/test/java/io/inscopemetrics/kairosdb/integration/AggregationIT.java
@@ -225,7 +225,7 @@ public void testMergeAggregatorSingle() throws IOException, JSONException {
public void testMergeAggregatorMulti() throws IOException, JSONException {
final List numbers = Lists.newArrayList();
for (Histogram histogram : MULTI_HIST_TEST_DATA) {
- for (final Map.Entry entry : histogram.getBins().entrySet()) {
+ for (final Map.Entry entry : histogram.getBins().entrySet()) {
for (int count = 0; count < entry.getValue(); count++) {
numbers.add(entry.getKey());
}