This is an automated email from the ASF dual-hosted git repository.

gian pushed a commit to branch 0.12.2
in repository https://gitbox.apache.org/repos/asf/incubator-druid.git


The following commit(s) were added to refs/heads/0.12.2 by this push:
     new eeb4bfe  Fix cache bug in stats module (#5650) (#5962)
eeb4bfe is described below

commit eeb4bfe0d1eda4ca3670b55d61b51eb9fe0fd220
Author: Jihoon Son <jihoon...@apache.org>
AuthorDate: Mon Jul 9 11:23:06 2018 -0700

    Fix cache bug in stats module (#5650) (#5962)
---
 .../variance/StandardDeviationPostAggregator.java  |  4 +-
 .../variance/VarianceAggregatorCollector.java      | 24 +++--------
 .../variance/VarianceAggregatorFactory.java        | 49 ++++++++--------------
 3 files changed, 27 insertions(+), 50 deletions(-)

diff --git 
a/extensions-core/stats/src/main/java/io/druid/query/aggregation/variance/StandardDeviationPostAggregator.java
 
b/extensions-core/stats/src/main/java/io/druid/query/aggregation/variance/StandardDeviationPostAggregator.java
index 443d012..f703484 100644
--- 
a/extensions-core/stats/src/main/java/io/druid/query/aggregation/variance/StandardDeviationPostAggregator.java
+++ 
b/extensions-core/stats/src/main/java/io/druid/query/aggregation/variance/StandardDeviationPostAggregator.java
@@ -107,7 +107,8 @@ public class StandardDeviationPostAggregator implements 
PostAggregator
     return "StandardDeviationPostAggregator{" +
            "name='" + name + '\'' +
            ", fieldName='" + fieldName + '\'' +
-           ", isVariancePop='" + isVariancePop + '\'' +
+           ", estimator='" + estimator + '\'' +
+           ", isVariancePop=" + isVariancePop +
            '}';
   }
 
@@ -116,6 +117,7 @@ public class StandardDeviationPostAggregator implements 
PostAggregator
   {
     return new CacheKeyBuilder(PostAggregatorIds.VARIANCE_STANDARD_DEVIATION)
         .appendString(fieldName)
+        .appendString(estimator)
         .appendBoolean(isVariancePop)
         .build();
   }
diff --git 
a/extensions-core/stats/src/main/java/io/druid/query/aggregation/variance/VarianceAggregatorCollector.java
 
b/extensions-core/stats/src/main/java/io/druid/query/aggregation/variance/VarianceAggregatorCollector.java
index a6c8aad..ee7e6c9 100644
--- 
a/extensions-core/stats/src/main/java/io/druid/query/aggregation/variance/VarianceAggregatorCollector.java
+++ 
b/extensions-core/stats/src/main/java/io/druid/query/aggregation/variance/VarianceAggregatorCollector.java
@@ -59,20 +59,15 @@ public class VarianceAggregatorCollector
     return new VarianceAggregatorCollector(buffer.getLong(), 
buffer.getDouble(), buffer.getDouble());
   }
 
-  public static final Comparator<VarianceAggregatorCollector> COMPARATOR = new 
Comparator<VarianceAggregatorCollector>()
-  {
-    @Override
-    public int compare(VarianceAggregatorCollector o1, 
VarianceAggregatorCollector o2)
-    {
-      int compare = Longs.compare(o1.count, o2.count);
+  public static final Comparator<VarianceAggregatorCollector> COMPARATOR = 
(o1, o2) -> {
+    int compare = Longs.compare(o1.count, o2.count);
+    if (compare == 0) {
+      compare = Doubles.compare(o1.sum, o2.sum);
       if (compare == 0) {
-        compare = Doubles.compare(o1.sum, o2.sum);
-        if (compare == 0) {
-          compare = Doubles.compare(o1.nvariance, o2.nvariance);
-        }
+        compare = Doubles.compare(o1.nvariance, o2.nvariance);
       }
-      return compare;
     }
+    return compare;
   };
 
   void fold(@Nullable VarianceAggregatorCollector other)
@@ -114,13 +109,6 @@ public class VarianceAggregatorCollector
     this(0, 0, 0);
   }
 
-  public void reset()
-  {
-    count = 0;
-    sum = 0;
-    nvariance = 0;
-  }
-
   void copyFrom(VarianceAggregatorCollector other)
   {
     this.count = other.count;
diff --git 
a/extensions-core/stats/src/main/java/io/druid/query/aggregation/variance/VarianceAggregatorFactory.java
 
b/extensions-core/stats/src/main/java/io/druid/query/aggregation/variance/VarianceAggregatorFactory.java
index aa86844..8665797 100644
--- 
a/extensions-core/stats/src/main/java/io/druid/query/aggregation/variance/VarianceAggregatorFactory.java
+++ 
b/extensions-core/stats/src/main/java/io/druid/query/aggregation/variance/VarianceAggregatorFactory.java
@@ -34,13 +34,13 @@ import io.druid.query.aggregation.BufferAggregator;
 import io.druid.query.aggregation.NoopAggregator;
 import io.druid.query.aggregation.NoopBufferAggregator;
 import io.druid.query.aggregation.ObjectAggregateCombiner;
+import io.druid.query.cache.CacheKeyBuilder;
 import io.druid.segment.ColumnSelectorFactory;
 import io.druid.segment.ColumnValueSelector;
 import io.druid.segment.NilColumnValueSelector;
 import org.apache.commons.codec.binary.Base64;
 
 import java.nio.ByteBuffer;
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
@@ -184,7 +184,7 @@ public class VarianceAggregatorFactory extends 
AggregatorFactory
   @Override
   public List<AggregatorFactory> getRequiredColumns()
   {
-    return Arrays.<AggregatorFactory>asList(new 
VarianceAggregatorFactory(fieldName, fieldName, estimator, inputType));
+    return Collections.singletonList(new VarianceAggregatorFactory(fieldName, 
fieldName, estimator, inputType));
   }
 
   @Override
@@ -258,25 +258,23 @@ public class VarianceAggregatorFactory extends 
AggregatorFactory
   @Override
   public byte[] getCacheKey()
   {
-    byte[] fieldNameBytes = StringUtils.toUtf8(fieldName);
-    byte[] inputTypeBytes = StringUtils.toUtf8(inputType);
-    return ByteBuffer.allocate(2 + fieldNameBytes.length + 1 + 
inputTypeBytes.length)
-                     .put(AggregatorUtil.VARIANCE_CACHE_TYPE_ID)
-                     .put(isVariancePop ? (byte) 1 : 0)
-                     .put(fieldNameBytes)
-                     .put((byte) 0xFF)
-                     .put(inputTypeBytes)
-                     .array();
+    return new CacheKeyBuilder(AggregatorUtil.VARIANCE_CACHE_TYPE_ID)
+        .appendString(fieldName)
+        .appendString(inputType)
+        .appendBoolean(isVariancePop)
+        .appendString(estimator)
+        .build();
   }
 
   @Override
   public String toString()
   {
-    return getClass().getSimpleName() + "{" +
+    return "VarianceAggregatorFactory{" +
            "fieldName='" + fieldName + '\'' +
            ", name='" + name + '\'' +
-           ", isVariancePop='" + isVariancePop + '\'' +
+           ", estimator='" + estimator + '\'' +
            ", inputType='" + inputType + '\'' +
+           ", isVariancePop=" + isVariancePop +
            '}';
   }
 
@@ -289,29 +287,18 @@ public class VarianceAggregatorFactory extends 
AggregatorFactory
     if (o == null || getClass() != o.getClass()) {
       return false;
     }
-
     VarianceAggregatorFactory that = (VarianceAggregatorFactory) o;
-
-    if (!Objects.equals(name, that.name)) {
-      return false;
-    }
-    if (!Objects.equals(isVariancePop, that.isVariancePop)) {
-      return false;
-    }
-    if (!Objects.equals(inputType, that.inputType)) {
-      return false;
-    }
-
-    return true;
+    return isVariancePop == that.isVariancePop &&
+           Objects.equals(fieldName, that.fieldName) &&
+           Objects.equals(name, that.name) &&
+           Objects.equals(estimator, that.estimator) &&
+           Objects.equals(inputType, that.inputType);
   }
 
   @Override
   public int hashCode()
   {
-    int result = fieldName.hashCode();
-    result = 31 * result + Objects.hashCode(name);
-    result = 31 * result + Objects.hashCode(isVariancePop);
-    result = 31 * result + Objects.hashCode(inputType);
-    return result;
+
+    return Objects.hash(fieldName, name, estimator, inputType, isVariancePop);
   }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@druid.apache.org
For additional commands, e-mail: dev-h...@druid.apache.org

Reply via email to