diff --git a/.gitignore b/.gitignore
index b151feb29..05efb459e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -26,12 +26,16 @@ jarsIn/
*.jar
build.xml
.idea
-*.iml
*.properties
*.releaseBackup
*.next
*.tag
+# IntelliJ project files
+*.iml
+*.ipr
+*.iws
+
# Jekyll
Gemfile
Gemfile.lock
diff --git a/pom.xml b/pom.xml
index 5a235bbd6..f650fd20b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -450,7 +450,7 @@
com.versioneye
versioneye-maven-plugin
- 3.11.1
+ 3.11.2
diff --git a/sketches/src/main/java/com/yahoo/sketches/quantiles/CompactDoublesSketch.java b/sketches/src/main/java/com/yahoo/sketches/quantiles/CompactDoublesSketch.java
index e28d92468..0a13a3e8b 100644
--- a/sketches/src/main/java/com/yahoo/sketches/quantiles/CompactDoublesSketch.java
+++ b/sketches/src/main/java/com/yahoo/sketches/quantiles/CompactDoublesSketch.java
@@ -1,3 +1,8 @@
+/*
+ * Copyright 2017, Yahoo! Inc.
+ * Licensed under the terms of the Apache License 2.0. See LICENSE file at the project root for terms.
+ */
+
package com.yahoo.sketches.quantiles;
import com.yahoo.memory.Memory;
diff --git a/sketches/src/main/java/com/yahoo/sketches/quantiles/DoublesArrayAccessor.java b/sketches/src/main/java/com/yahoo/sketches/quantiles/DoublesArrayAccessor.java
index 0d1d435df..1a82c9c28 100644
--- a/sketches/src/main/java/com/yahoo/sketches/quantiles/DoublesArrayAccessor.java
+++ b/sketches/src/main/java/com/yahoo/sketches/quantiles/DoublesArrayAccessor.java
@@ -1,3 +1,8 @@
+/*
+ * Copyright 2017, Yahoo! Inc.
+ * Licensed under the terms of the Apache License 2.0. See LICENSE file at the project root for terms.
+ */
+
package com.yahoo.sketches.quantiles;
import java.util.Arrays;
diff --git a/sketches/src/main/java/com/yahoo/sketches/quantiles/DoublesBufferAccessor.java b/sketches/src/main/java/com/yahoo/sketches/quantiles/DoublesBufferAccessor.java
index 72fcd2c3f..f346d1143 100644
--- a/sketches/src/main/java/com/yahoo/sketches/quantiles/DoublesBufferAccessor.java
+++ b/sketches/src/main/java/com/yahoo/sketches/quantiles/DoublesBufferAccessor.java
@@ -1,3 +1,8 @@
+/*
+ * Copyright 2017, Yahoo! Inc.
+ * Licensed under the terms of the Apache License 2.0. See LICENSE file at the project root for terms.
+ */
+
package com.yahoo.sketches.quantiles;
/**
diff --git a/sketches/src/main/java/com/yahoo/sketches/quantiles/DoublesSketchAccessor.java b/sketches/src/main/java/com/yahoo/sketches/quantiles/DoublesSketchAccessor.java
index 63c2a2373..6e15c9021 100644
--- a/sketches/src/main/java/com/yahoo/sketches/quantiles/DoublesSketchAccessor.java
+++ b/sketches/src/main/java/com/yahoo/sketches/quantiles/DoublesSketchAccessor.java
@@ -1,3 +1,8 @@
+/*
+ * Copyright 2017, Yahoo! Inc.
+ * Licensed under the terms of the Apache License 2.0. See LICENSE file at the project root for terms.
+ */
+
package com.yahoo.sketches.quantiles;
import static com.yahoo.sketches.quantiles.PreambleUtil.COMBINED_BUFFER;
diff --git a/sketches/src/main/java/com/yahoo/sketches/quantiles/UpdateDoublesSketch.java b/sketches/src/main/java/com/yahoo/sketches/quantiles/UpdateDoublesSketch.java
index 382d35ee1..50ae5220a 100644
--- a/sketches/src/main/java/com/yahoo/sketches/quantiles/UpdateDoublesSketch.java
+++ b/sketches/src/main/java/com/yahoo/sketches/quantiles/UpdateDoublesSketch.java
@@ -1,3 +1,8 @@
+/*
+ * Copyright 2017, Yahoo! Inc.
+ * Licensed under the terms of the Apache License 2.0. See LICENSE file at the project root for terms.
+ */
+
package com.yahoo.sketches.quantiles;
import com.yahoo.memory.Memory;
diff --git a/sketches/src/main/java/com/yahoo/sketches/sampling/VarOptItemsSamples.java b/sketches/src/main/java/com/yahoo/sketches/sampling/VarOptItemsSamples.java
index 9484755d5..82078cbaf 100644
--- a/sketches/src/main/java/com/yahoo/sketches/sampling/VarOptItemsSamples.java
+++ b/sketches/src/main/java/com/yahoo/sketches/sampling/VarOptItemsSamples.java
@@ -29,7 +29,7 @@
*
* @author Jon Malkin
*/
-public class VarOptItemsSamples implements Iterable.WeightedSample> {
+class VarOptItemsSamples implements Iterable.WeightedSample> {
private final VarOptItemsSketch sketch_;
private VarOptItemsSketch.Result sampleLists;
diff --git a/sketches/src/main/java/com/yahoo/sketches/sampling/VarOptItemsSketch.java b/sketches/src/main/java/com/yahoo/sketches/sampling/VarOptItemsSketch.java
index 5026f25fa..c30e15822 100644
--- a/sketches/src/main/java/com/yahoo/sketches/sampling/VarOptItemsSketch.java
+++ b/sketches/src/main/java/com/yahoo/sketches/sampling/VarOptItemsSketch.java
@@ -47,7 +47,7 @@
* @author Jon Malkin
* @author Kevin Lang
*/
-public final class VarOptItemsSketch {
+final class VarOptItemsSketch {
/**
* The smallest sampling array allocated: 16
*/
diff --git a/sketches/src/test/java/com/yahoo/sketches/sampling/ReservoirItemsUnionTest.java b/sketches/src/test/java/com/yahoo/sketches/sampling/ReservoirItemsUnionTest.java
index 08a64037e..6135885ed 100644
--- a/sketches/src/test/java/com/yahoo/sketches/sampling/ReservoirItemsUnionTest.java
+++ b/sketches/src/test/java/com/yahoo/sketches/sampling/ReservoirItemsUnionTest.java
@@ -225,6 +225,29 @@ public void checkDownsampledUpdate() {
assertEquals(riu.getResult().getNumSamples(), smallK);
}
+ @Test
+ public void checkUnionResetWithInitialSmallK() {
+ final int maxK = 25;
+ final int sketchK = 10;
+ final ReservoirItemsUnion riu = ReservoirItemsUnion.getInstance(maxK);
+
+ ReservoirItemsSketch ris = getBasicSketch(2 * sketchK, sketchK); // in sampling mode
+ riu.update(ris);
+ assertEquals(riu.getMaxK(), maxK);
+ assertNotNull(riu.getResult());
+ assertEquals(riu.getResult().getK(), sketchK);
+
+ riu.reset();
+ assertNotNull(riu.getResult());
+
+ // feed in sketch in sampling mode, with larger k than old gadget
+ ris = getBasicSketch(2 * maxK, maxK + 1);
+ riu.update(ris);
+ assertEquals(riu.getMaxK(), maxK);
+ assertNotNull(riu.getResult());
+ assertEquals(riu.getResult().getK(), maxK);
+ }
+
@Test
public void checkNewGadget() {
final int maxK = 1024;
diff --git a/sketches/src/test/java/com/yahoo/sketches/sampling/ReservoirLongsUnionTest.java b/sketches/src/test/java/com/yahoo/sketches/sampling/ReservoirLongsUnionTest.java
index 2d72e1da5..2741a4c26 100644
--- a/sketches/src/test/java/com/yahoo/sketches/sampling/ReservoirLongsUnionTest.java
+++ b/sketches/src/test/java/com/yahoo/sketches/sampling/ReservoirLongsUnionTest.java
@@ -208,6 +208,29 @@ public void checkDownsampledUpdate() {
assertEquals(rlu.getResult().getNumSamples(), smallK);
}
+ @Test
+ public void checkUnionResetWithInitialSmallK() {
+ final int maxK = 25;
+ final int sketchK = 10;
+ final ReservoirLongsUnion rlu = ReservoirLongsUnion.getInstance(maxK);
+
+ ReservoirLongsSketch rls = getBasicSketch(2 * sketchK, sketchK); // in sampling mode
+ rlu.update(rls);
+ assertEquals(rlu.getMaxK(), maxK);
+ assertNotNull(rlu.getResult());
+ assertEquals(rlu.getResult().getK(), sketchK);
+
+ rlu.reset();
+ assertNotNull(rlu.getResult());
+
+ // feed in sketch in sampling mode, with larger k than old gadget
+ rls = getBasicSketch(2 * maxK, maxK + 1);
+ rlu.update(rls);
+ assertEquals(rlu.getMaxK(), maxK);
+ assertNotNull(rlu.getResult());
+ assertEquals(rlu.getResult().getK(), maxK);
+ }
+
@Test
public void checkNewGadget() {
final int maxK = 1024;
@@ -219,34 +242,34 @@ public void checkNewGadget() {
final byte[] bigKBytes = bigKSketch.toByteArray();
final Memory bigKMem = new NativeMemory(bigKBytes);
- ReservoirLongsUnion riu = ReservoirLongsUnion.getInstance(maxK);
- riu.update(bigKMem);
- assertNotNull(riu.getResult());
- assertEquals(riu.getResult().getK(), maxK);
- assertEquals(riu.getResult().getN(), maxK / 2);
+ ReservoirLongsUnion rlu = ReservoirLongsUnion.getInstance(maxK);
+ rlu.update(bigKMem);
+ assertNotNull(rlu.getResult());
+ assertEquals(rlu.getResult().getK(), maxK);
+ assertEquals(rlu.getResult().getN(), maxK / 2);
// sketch k < maxK but in sampling mode
final ReservoirLongsSketch smallKSketch = getBasicSketch(maxK, smallK);
final byte[] smallKBytes = smallKSketch.toByteArray();
final Memory smallKMem = new NativeMemory(smallKBytes);
- riu = ReservoirLongsUnion.getInstance(maxK);
- riu.update(smallKMem);
- assertNotNull(riu.getResult());
- assertTrue(riu.getResult().getK() < maxK);
- assertEquals(riu.getResult().getK(), smallK);
- assertEquals(riu.getResult().getN(), maxK);
+ rlu = ReservoirLongsUnion.getInstance(maxK);
+ rlu.update(smallKMem);
+ assertNotNull(rlu.getResult());
+ assertTrue(rlu.getResult().getK() < maxK);
+ assertEquals(rlu.getResult().getK(), smallK);
+ assertEquals(rlu.getResult().getN(), maxK);
// sketch k < maxK and in exact mode
final ReservoirLongsSketch smallKExactSketch = getBasicSketch(smallK, smallK);
final byte[] smallKExactBytes = smallKExactSketch.toByteArray();
final Memory smallKExactMem = new NativeMemory(smallKExactBytes);
- riu = ReservoirLongsUnion.getInstance(maxK);
- riu.update(smallKExactMem);
- assertNotNull(riu.getResult());
- assertEquals(riu.getResult().getK(), maxK);
- assertEquals(riu.getResult().getN(), smallK);
+ rlu = ReservoirLongsUnion.getInstance(maxK);
+ rlu.update(smallKExactMem);
+ assertNotNull(rlu.getResult());
+ assertEquals(rlu.getResult().getK(), maxK);
+ assertEquals(rlu.getResult().getN(), smallK);
}
@Test