You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pinot.apache.org by jl...@apache.org on 2020/08/18 00:36:43 UTC

[incubator-pinot] branch add-metrics-jmx updated (fd6b840 -> b998800)

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

jlli pushed a change to branch add-metrics-jmx
in repository https://gitbox.apache.org/repos/asf/incubator-pinot.git.


 discard fd6b840  Bump up dropwizard metrics version to 4.1.2
     add e7e4d19  Refreshing the Pinot project README to match docs. (#5731)
     add cd26b24  Enhance DataTypeTransformer to handle nested Map/List/Object[] (#5760)
     add bc2c066  [TE] frontend - harleyjj/rca - Phase 1 of custom baseline selector (#5752)
     add a910c04  adding zookeeper browser module in UI (#5763)
     add a8fbdae  Optimize DistinctCount to store dictIds within segment (#5765)
     add 0c4a673  [TE] add enpoints to save dimension filter for RCA v2 POC (#5735)
     add ba9e14f  [TE] add auto-loading dimension filters on RCA frontend (#5767)
     add 1f69041  [Part 2] Add geo support  - add a geo aggregate function st_union (#5744)
     add b1ab891  [TE] Embed cube algorithm results in email (#5770)
     add 10117ae  Add untar failure server meter (#5768)
     add cb7de23  [TE] Added a backfill start date for Anomaly Detection (#5740)
     add 0fc0811  add user info in url to auth header in HTTP getDownloadFileRequest (#5772)
     add 2c0b999  Add segment lineage based segment selector (#5728)
     add 097fce6  Lazy initialization of ForwardIndexReaderContext. (#5781)
     add 32348be  [TE] remove linkedin bintray from pom and add override (#5773) (#5775)
     add 31d4194  Avoid redundant merge of empty sketches. (#5783)
     add 271ea9f  Emit server metric when retry attempts exceeded (#5784)
     add a3efba4  Add DistinctCountBitmap aggregation function (#5766)
     add e286991  Add missing null check before closing reader context. (#5785)
     add 0e95a67  Do not apply shade plugin on parent modules (#5761)
     add 47623c0  [TE] Error handling refactor of EntityManagerResource (#5788)
     add c2c623a  Refactor TableCache (#5780)
     add 657e245  Add SegmentPartitionedDistinctCount aggregation function (#5786)
     add 81504cd  Bug fix: PinotSegmentToAvroConverter does not handle BYTES data type. (#5789)
     add d1b4586  New endpoint to get routing table for sql query (#5791)
     add 999f567  [TE] Guice Injection for Dashboard Server (#5792)
     add 7cc75ad  [TE] make rca insights in email resilient to issues in rca response (#5794)
     add 5d66b9e  [TE] The endpoint for searching anomalies and pagination (#5778)
     add f2a990b  Move request optimizers and parser factory to pinot-core (#5796)
     add 17a3873  Improve performance of DistinctCountThetaSketch by eliminating empty sketches and unions. (#5798)
     add 43b01ef  Fixing codecov (#5806)
     add 336131a  Fix theta-sketch missing break in switch statement (#5811)
     add bf928e9  [TE] Fix issue of not loading RCA template when metricid is not specified (#5799)
     add 71c77a5  Create reader context only once in ColumnValueReader (#5813)
     add 23889f0  Message from exception in Schema add/validate (#5815)
     add 4153958  Enhancing the segment replacement api (#5782)
     add ffa9541  Pre-generate aggregation functions in QueryContext (#5805)
     add f68b82e  Enhance VarByteChunkSVForwardIndexReader to directly read from data buffer for uncompressed data (#5816)
     add 2e08602  Pradeep/sr ssl fix (#5758)
     add ae2bd2f  Avoid variable substitution in metadata (#5822)
     add 48d1653  Support aggregation function name with underscore inside (#5795)
     add 1d4d47a  Use AvroRecordExtractor in ParquetRecordReader (#5830)
     add 373ceb1  Retire travis from CI for testing (#5834)
     add 6085578  Enable segment decryption for encrypted segments in Minion (#5821)
     add fd0130b  Enhance sql parser for having and post-aggregation (#5825)
     add 8a3cecb  [TE] frontend - harleyjj/forecast - show tool tip for fit and forecast (#5812)
     add ce32362  Addressed issues in code review: (#5774)
     add cc7a344  [TE] UI changes for anomalies page v3(#5824)
     add 7f8e65c  [TE] Fix template rendering errors (#5839)
     add debadaa  [TE] enchance anomaly api to propagate feedback (#5823)
     add 63a4fd4  Clarifications in realtime provisioning helper (#5838)
     add de14078  Support post-aggregation in QueryContext (#5827)
     add 9f23e18  Tiered storage (#5793)
     add 57d4b71  [TE] Presto JDBC lib upgrade (#5841)
     add 3785aa7  Improving retention manager to handle segment lineage clean-up (#5828)
     add c04b8b3  Move quickstart tests to use Java 14 release (#5844)
     add d8264c1  Fix data ingestion from Amazon S3 bucket (#5836)
     add 9551062  update Swagger (OpenAPI) configuration for HTTP+HTTPS (#5817)
     add b268012  [TE] add anomaly detection as a service - Phase 1 (#5769)
     add 1c754f8  Added set-diff operators and changed distinctCountThetaSketch syntax (#5832)
     add 47323de  [TE] Dashboard Resource Refactor (#5808)
     add db48107  Adding controller healthcheck endpoint: /health (#5846)
     add f4949e9  [TE] Added reset application API +refactor (#5847)
     add bb8b19e  DataGenerator to tolerate DATE_TIME and COMPLEX fields (#5848)
     add d28c5cf  Add pinot-spark-connector (#5787)
     add 8ab032f  Makes Pinot work on Alpine Linux or Distroless + BusyBox (#5818)
     add eb0f713  Fix encrypted file path in Segment Fetcher (#5854)
     add 0b6ef98  Support multi-value non-dictionary group by (#5851)
     add 2cfaed3  Support type conversion for all scalar functions (#5849)
     add 09e9804  [TE] Fix wrong task pickup logic (#5855)
     add 5469a84  add timeColumnName to tableConfig to enable TE auto-detection (#5860)
     add 449bf94  Fix NPE for aggregate metrics (#5862)
     add 45d5d29  Add additional datetime functionality (#5438)
     add 6dd54f8  Fix the variable names for off-heap alloc configs (#5852)
     add 2b58bfb  [TE] clean up legacy code (#5842)
     add da1fe59  [TE] frontend - harleyjj/rca - fix heatmap click bug (#5880)
     add 81e858b  Adding integration test for null handling from realtime source (#5870)
     add 2d94cb9  Support post-aggregation in ORDER-BY (#5856)
     add bae21bf  [TE] anomaly search - hide child anomaly unless queried with anomaly ids (#5865)
     add 7eff806  [TE] merge time series snapshot when merging anomalies (#5861)
     add 3173983  [TE] change dimension explore early stop to be 10% of top k (#5882)
     add aab087c  Fixing backward-compatible issue of schema fetch call (#5885)
     add ed2daaa  Change group key delimiter from '\t' to '\0' (#5858)
     new b998800  Fix race condition in MetricsHelper Bump up dropwizard metrics version to 4.1.2

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (fd6b840)
            \
             N -- N -- N   refs/heads/add-metrics-jmx (b998800)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .github/workflows/pinot_tests.yml                  |  16 +-
 .travis/.travis_te_nightly_build.sh                |   2 +-
 LICENSE-binary                                     |   2 +-
 README.md                                          |  98 +--
 docs/pluggable_streams.rst                         |  56 ++
 .../broker/api/resources/PinotBrokerDebug.java     |  25 +-
 .../broker/broker/BrokerAdminApiApplication.java   |   4 +-
 .../BrokerUserDefinedMessageHandlerFactory.java    |  27 +
 .../broker/broker/helix/HelixBrokerStarter.java    |  35 +-
 .../requesthandler/BaseBrokerRequestHandler.java   | 169 ++---
 .../SingleConnectionBrokerRequestHandler.java      |  11 +-
 .../pinot/broker/routing/RoutingManager.java       |  30 +-
 .../SegmentLineageBasedSegmentPreSelector.java     |  61 ++
 .../segmentselector/SegmentPreSelector.java        |  28 +-
 .../SegmentPreSelectorFactory.java}                |  30 +-
 .../request/PqlAndCalciteSqlCompatibilityTest.java |   2 +-
 .../broker/requesthandler/FilterOptimizerTest.java |   2 +
 .../LiteralOnlyBrokerRequestTest.java              |  16 +-
 ...tiesToInClauseFilterQueryTreeOptimizerTest.java |   5 +-
 .../requesthandler/OptimizationFlagsTest.java      |   2 +
 .../requesthandler/QueryLimitOverrideTest.java     |   1 +
 .../requesthandler/RangeMergeOptimizerTest.java    |   2 +
 .../segmentselector/SegmentPreSelectorTest.java    |  98 +++
 .../common/assignment/InstancePartitionsUtils.java |  23 +-
 .../common/function/AggregationFunctionType.java   |  15 +-
 .../pinot/common/function/DateTimeFunctions.java   | 262 -------
 .../common/function/DateTimePatternHandler.java    |   4 +-
 .../apache/pinot/common/function/FunctionInfo.java |  44 +-
 .../pinot/common/function/FunctionInvoker.java     | 137 ++--
 .../pinot/common/function/FunctionRegistry.java    |  29 +-
 .../pinot/common/function/FunctionUtils.java       | 118 ++++
 .../common/function/TransformFunctionType.java     |   2 +-
 .../function/annotations/ScalarFunction.java       |  23 +-
 .../function/scalar/ArithmeticFunctions.java       |  95 +++
 .../common/function/scalar/DateTimeFunctions.java  | 555 +++++++++++++++
 .../function/{ => scalar}/JsonFunctions.java       |   9 +-
 .../function/{ => scalar}/StringFunctions.java     |  40 +-
 .../messages/RoutingTableRebuildMessage.java       |  66 ++
 .../pinot/common/metadata/ZKMetadataProvider.java  |   5 +-
 .../pinot/common/metrics/ControllerMeter.java      |   2 +
 .../apache/pinot/common/metrics/MetricsHelper.java |  26 +-
 .../apache/pinot/common/metrics/ServerMeter.java   |   2 +
 .../pinot/common/tier/PinotServerTierStorage.java  |  31 +-
 .../java/org/apache/pinot/common/tier/Tier.java    |  50 ++
 .../org/apache/pinot/common/tier/TierFactory.java  |  59 ++
 .../pinot/common/tier/TierSegmentSelector.java     |  26 +-
 .../org/apache/pinot/common/tier/TierStorage.java  |  13 +-
 .../common/tier/TimeBasedTierSegmentSelector.java  |  83 +++
 .../common/utils/FileUploadDownloadClient.java     |   7 +
 .../apache/pinot/common/utils}/PinotDataType.java  |  32 +-
 .../common/utils/config/TableConfigUtils.java      |  14 +-
 .../pinot/common/utils/config/TierConfigUtils.java |  85 +++
 .../utils/fetcher/SegmentFetcherFactory.java       |  27 +-
 .../pinot/common/utils/helix/TableCache.java       | 362 ++++++----
 .../parsers/PinotQuery2BrokerRequestConverter.java |  10 +-
 .../apache/pinot/sql/parsers/CalciteSqlParser.java | 319 +++++----
 .../pinot/common/tier/TierConfigUtilsTest.java     | 135 ++++
 .../pinot/common/tier/TierSegmentSelectorTest.java | 117 ++++
 .../pinot/common/utils}/PinotDataTypeTest.java     |   4 +-
 .../common/utils/config/TableConfigSerDeTest.java  |  44 +-
 .../utils/fetcher/SegmentFetcherFactoryTest.java   |  57 +-
 .../pinot/sql/parsers/CalciteSqlCompilerTest.java  | 383 +++++++++--
 pinot-common/src/test/resources/pql_queries.list   |   8 +-
 pinot-common/src/test/resources/sql_queries.list   |   8 +-
 pinot-connectors/pinot-spark-connector/README.md   |  69 ++
 ...pinot-connector-executor-server-interaction.jpg | Bin 0 -> 100316 bytes
 .../documentation/read_model.md                    | 142 ++++
 pinot-connectors/pinot-spark-connector/pom.xml     | 259 +++++++
 ...org.apache.spark.sql.sources.DataSourceRegister |   1 +
 .../connector/spark/connector/FilterPushDown.scala | 123 ++++
 .../spark/connector/PinotClusterClient.scala       | 203 ++++++
 .../spark/connector/PinotServerDataFetcher.scala   | 135 ++++
 .../connector/spark/connector/PinotSplitter.scala  | 106 +++
 .../connector/spark/connector/PinotUtils.scala     | 121 ++++
 .../spark/connector/query/GeneratedSQLs.scala      |  18 +-
 .../query/SQLSelectionQueryGenerator.scala         |  94 +++
 .../datasource/PinotDataSourceReadOptions.scala    |  99 +++
 .../spark/datasource/PinotDataSourceReader.scala   | 111 +++
 .../spark/datasource/PinotDataSourceV2.scala       |  31 +-
 .../spark/datasource/PinotInputPartition.scala     |  37 +-
 .../datasource/PinotInputPartitionReader.scala     |  59 ++
 .../connector/spark/exceptions/exceptions.scala    |  20 +-
 .../org/apache/pinot/connector/spark/package.scala |  32 +-
 .../pinot/connector/spark/utils/HttpUtils.scala    |  74 ++
 .../pinot/connector/spark/utils/Logging.scala      |  77 +++
 .../src/test/resources/log4j2.xml                  |   0
 .../src/test/resources/schema/pinot-schema.json    |  60 ++
 .../src/test/resources/schema/spark-schema.json    |  86 +++
 .../apache/pinot/connector/spark/BaseTest.scala    |  10 +-
 .../spark/ExampleSparkPinotConnectorTest.scala     | 155 +++++
 .../spark/connector/FilterPushDownTest.scala       |  75 ++
 .../spark/connector/PinotSplitterTest.scala        |  99 +++
 .../connector/spark/connector/PinotUtilsTest.scala | 152 ++++
 .../query/SQLSelectionQueryGeneratorTest.scala     |  92 +++
 .../PinotDataSourceReadOptionsTest.scala           |  87 +++
 .../pom.xml                                        |  36 +-
 .../apache/pinot/controller/ControllerConf.java    |  95 ++-
 .../apache/pinot/controller/ControllerStarter.java |  26 +-
 .../api/ControllerAdminApiApplication.java         |  14 +-
 .../api/resources/PinotControllerHealthCheck.java  |  26 +-
 .../api/resources/PinotSchemaRestletResource.java  |  14 +-
 .../api/resources/PinotTableRestletResource.java   |  13 +
 .../helix/core/PinotHelixResourceManager.java      | 135 +++-
 .../segment/OfflineSegmentAssignment.java          |  78 ++-
 .../segment/RealtimeSegmentAssignment.java         | 147 ++--
 .../core/assignment/segment/SegmentAssignment.java |   8 +-
 .../assignment/segment/SegmentAssignmentUtils.java |  66 ++
 .../helix/core/rebalance/TableRebalancer.java      |  55 +-
 ...SegmentRelocator.java => SegmentRelocator.java} |  56 +-
 .../helix/core/retention/RetentionManager.java     |  79 +++
 .../controller/recommender/RecommenderDriver.java  |  80 +++
 .../exceptions/InvalidInputException.java          |  13 +-
 .../controller/recommender/io/ConfigManager.java   |  63 ++
 .../controller/recommender/io/InputManager.java    | 682 ++++++++++++++++++
 .../recommender/io/metadata/FieldMetadata.java     |  71 ++
 .../io/metadata/SchemaWithMetaData.java            |  69 ++
 .../io/metadata/TimeFieldSpecMetadata.java         |  78 +++
 .../controller/recommender/rules/AbstractRule.java |  21 +-
 .../recommender/rules/RulesToExecute.java          | 148 ++++
 .../recommender/rules/impl/BloomFilterRule.java    | 127 ++++
 .../recommender/rules/impl/FlagQueryRule.java      |  75 ++
 .../rules/impl/InvertedSortedIndexJointRule.java   | 267 ++++++++
 .../recommender/rules/impl/KafkaPartitionRule.java |  65 ++
 .../NoDictionaryOnHeapDictionaryJointRule.java     | 241 +++++++
 .../rules/impl/PinotTablePartitionRule.java        | 240 +++++++
 .../rules/impl/VariedLengthDictionaryRule.java     |  50 ++
 .../recommender/rules/io/FlaggedQueries.java       |  54 ++
 .../recommender/rules/io/configs/IndexConfig.java  | 120 ++++
 .../rules/io/configs/PartitionConfig.java          |  78 +++
 .../rules/io/params/BloomFilterRuleParams.java     |  52 ++
 .../rules/io/params/FlagQueryRuleParams.java       |  41 ++
 .../params/InvertedSortedIndexJointRuleParams.java | 153 +++++
 ...oDictionaryOnHeapDictionaryJointRuleParams.java | 119 ++++
 .../rules/io/params/PartitionRuleParams.java       | 108 +++
 .../rules/io/params/RecommenderConstants.java      | 109 +++
 .../recommender/rules/utils/FixedLenBitset.java    | 174 +++++
 .../rules/utils/PredicateParseResult.java          | 153 +++++
 .../utils/QueryInvertedSortedIndexRecommender.java | 761 +++++++++++++++++++++
 .../pinot/controller/util/ListenerConfigUtil.java  |  17 -
 .../main/resources/app/components/AppLoader.tsx    |  16 +-
 .../main/resources/app/components/Breadcrumbs.tsx  |   3 +-
 .../src/main/resources/app/components/Layout.tsx   |   4 +-
 .../main/resources/app/components/MaterialTree.tsx | 122 ++++
 .../app/components/Query/QuerySideBar.tsx          |   3 +-
 .../src/main/resources/app/components/SideBar.tsx  |   2 +-
 .../app/components/SvgIcons/ZookeeperIcon.tsx      |  44 ++
 .../app/components/{AppLoader.tsx => TabPanel.tsx} |  45 +-
 .../app/components/Zookeeper/TreeDirectory.tsx     | 175 +++++
 pinot-controller/src/main/resources/app/index.html |   2 +-
 .../src/main/resources/app/interfaces/types.d.ts   |   4 +-
 .../main/resources/app/pages/InstanceDetails.tsx   |   2 +-
 .../src/main/resources/app/pages/Query.tsx         |   6 +-
 .../src/main/resources/app/pages/ZookeeperPage.tsx | 207 ++++++
 .../src/main/resources/app/requests/index.ts       |  14 +-
 pinot-controller/src/main/resources/app/router.tsx |   4 +-
 .../src/main/resources/app/styles/styles.css       |   2 +-
 .../src/main/resources/app/theme/typography.ts     |   3 +-
 .../main/resources/app/utils/PinotMethodUtils.ts   |  65 +-
 .../src/main/resources/app/utils/Utils.tsx         |  14 +-
 pinot-controller/src/main/resources/package.json   |   1 +
 .../pinot/controller/helix/TableCacheTest.java     | 142 ++++
 .../helix/core/PinotHelixResourceManagerTest.java  |   2 +-
 ...fflineNonReplicaGroupSegmentAssignmentTest.java |   5 +-
 ...NonReplicaGroupTieredSegmentAssignmentTest.java | 297 ++++++++
 .../OfflineReplicaGroupSegmentAssignmentTest.java  |   8 +-
 ...altimeNonReplicaGroupSegmentAssignmentTest.java |  23 +-
 ...NonReplicaGroupTieredSegmentAssignmentTest.java | 366 ++++++++++
 .../RealtimeReplicaGroupSegmentAssignmentTest.java |  23 +-
 .../core/rebalance/TableRebalancerClusterTest.java | 101 +++
 .../core/retention/SegmentLineageCleanupTest.java  | 182 +++++
 .../controller/recommender/TestConfigEngine.java   | 344 ++++++++++
 .../controller/util/ListenerConfigUtilTest.java    |   6 -
 pinot-controller/src/test/resources/log4j2.xml     |   5 -
 .../recommenderInput/BloomFilterInput.json         | 135 ++++
 .../recommenderInput/DataSizeCalculationInput.json |  69 ++
 .../resources/recommenderInput/FlagQueryInput.json | 130 ++++
 .../resources/recommenderInput/InvalidInput1.json  |  81 +++
 .../resources/recommenderInput/InvalidInput2.json  |  82 +++
 .../recommenderInput/KafkaPartitionRuleInput.json  | 126 ++++
 .../recommenderInput/KafkaPartitionRuleInput2.json | 126 ++++
 ...NoDictionaryOnHeapDictionaryJointRuleInput.json | 147 ++++
 .../PinotTablePartitionRuleInput.json              | 146 ++++
 .../recommenderInput/SortedInvertedIndexInput.json | 157 +++++
 .../VariedLengthDictionaryInput.json               |  82 +++
 .../org/apache/pinot/core/common/BlockValSet.java  |   8 +
 .../apache/pinot/core/common/DataBlockCache.java   |  11 +-
 .../org/apache/pinot/core/common/DataFetcher.java  | 113 +--
 .../apache/pinot/core/common/ObjectSerDeUtils.java |  62 +-
 .../core/common/datatable/DataTableUtils.java      |   7 +-
 .../DistinctCountBitmapValueAggregator.java        |  94 +++
 .../data/aggregator/ValueAggregatorFactory.java    |   7 +-
 .../data/function/FunctionEvaluatorFactory.java    |  15 +-
 .../data/function/InbuiltFunctionEvaluator.java    |  78 +--
 .../manager/config/InstanceDataManagerConfig.java  |   2 +-
 .../realtime/HLRealtimeSegmentDataManager.java     |   6 +-
 .../realtime/LLRealtimeSegmentDataManager.java     |   4 +-
 .../recordtransformer/CompositeTransformer.java    |  18 +-
 .../recordtransformer/DataTypeTransformer.java     |  99 ++-
 .../recordtransformer/NullValueTransformer.java    |   4 +-
 .../apache/pinot/core/data/table/BaseTable.java    |  47 +-
 .../core/data/table/ConcurrentIndexedTable.java    |  26 +-
 .../apache/pinot/core/data/table/IndexedTable.java |  76 +-
 .../pinot/core/data/table/SimpleIndexedTable.java  |  22 +-
 .../org/apache/pinot/core/data/table/Table.java    |   9 +-
 .../apache/pinot/core/data/table/TableResizer.java | 234 +++++--
 .../pinot/core/geospatial/GeometryUtils.java       |   2 +
 .../pinot/core/operator/ProjectionOperator.java    |   9 +-
 .../core/operator/blocks/ProjectionBlock.java      |  39 +-
 .../pinot/core/operator/blocks/TransformBlock.java |   4 -
 .../operator/combine/GroupByCombineOperator.java   |   6 +-
 .../combine/GroupByOrderByCombineOperator.java     |  76 +-
 .../operator/docvalsets/ProjectionBlockValSet.java |  28 +-
 .../operator/docvalsets/TransformBlockValSet.java  |   8 +
 .../query/DictionaryBasedAggregationOperator.java  |   3 +
 .../function/ScalarTransformFunctionWrapper.java   | 331 ++++-----
 .../function/TransformFunctionFactory.java         |  25 +-
 .../plan/AggregationGroupByOrderByPlanNode.java    |   3 +-
 .../core/plan/AggregationGroupByPlanNode.java      |   3 +-
 .../pinot/core/plan/AggregationPlanNode.java       |   3 +-
 .../plan/DictionaryBasedAggregationPlanNode.java   |   4 +-
 .../plan/MetadataBasedAggregationPlanNode.java     |   4 +-
 .../core/plan/maker/InstancePlanMakerImplV2.java   |   8 +-
 .../aggregation/function/AggregationFunction.java  |   9 +-
 .../function/AggregationFunctionFactory.java       |  12 +-
 .../function/AggregationFunctionUtils.java         |  47 +-
 .../function/AggregationFunctionVisitorBase.java   | 102 ---
 .../function/AvgAggregationFunction.java           |   5 -
 .../function/AvgMVAggregationFunction.java         |   5 -
 .../function/CountAggregationFunction.java         |   5 -
 .../function/CountMVAggregationFunction.java       |   5 -
 .../function/DistinctAggregationFunction.java      |   5 -
 .../function/DistinctCountAggregationFunction.java | 217 ++++--
 .../DistinctCountBitmapAggregationFunction.java    | 453 ++++++++++++
 ... DistinctCountBitmapMVAggregationFunction.java} | 130 ++--
 .../DistinctCountHLLAggregationFunction.java       |   5 -
 .../DistinctCountHLLMVAggregationFunction.java     |   5 -
 .../DistinctCountMVAggregationFunction.java        |  51 +-
 .../DistinctCountRawHLLAggregationFunction.java    |   5 -
 ...inctCountRawThetaSketchAggregationFunction.java |   5 -
 ...istinctCountThetaSketchAggregationFunction.java | 270 ++++++--
 .../function/FastHLLAggregationFunction.java       |   5 -
 .../function/MaxAggregationFunction.java           |   5 -
 .../function/MaxMVAggregationFunction.java         |   5 -
 .../function/MinAggregationFunction.java           |   5 -
 .../function/MinMVAggregationFunction.java         |   5 -
 .../function/MinMaxRangeAggregationFunction.java   |   5 -
 .../function/MinMaxRangeMVAggregationFunction.java |   5 -
 .../function/PercentileAggregationFunction.java    |   5 -
 .../function/PercentileEstAggregationFunction.java |   5 -
 .../PercentileEstMVAggregationFunction.java        |   5 -
 .../function/PercentileMVAggregationFunction.java  |   5 -
 .../PercentileTDigestAggregationFunction.java      |   5 -
 .../PercentileTDigestMVAggregationFunction.java    |   5 -
 ...artitionedDistinctCountAggregationFunction.java | 420 ++++++++++++
 .../function/StUnionAggregationFunction.java       | 135 ++++
 .../function/SumAggregationFunction.java           |   5 -
 .../function/SumMVAggregationFunction.java         |   5 -
 .../groupby/AggregationGroupByTrimmingService.java |  81 ++-
 .../aggregation/groupby/GroupKeyGenerator.java     |  14 +-
 .../NoDictionaryMultiColumnGroupKeyGenerator.java  | 157 ++++-
 .../postaggregation/PostAggregationFunction.java   |  81 +++
 .../core/query/reduce/GroupByDataTableReducer.java |  86 ++-
 .../core/query/reduce/ResultReducerFactory.java    |   6 +-
 .../core/query/request/context/QueryContext.java   | 157 ++++-
 .../request/context/utils/QueryContextUtils.java   |  40 +-
 .../requesthandler/BrokerRequestOptimizer.java     |   2 +-
 .../FilterQueryOptimizerRequest.java               |   2 +-
 .../requesthandler/FilterQueryTreeOptimizer.java   |   2 +-
 ...enNestedPredicatesFilterQueryTreeOptimizer.java |   2 +-
 ...ualitiesToInClauseFilterQueryTreeOptimizer.java |   2 +-
 .../core}/requesthandler/OptimizationFlags.java    |   2 +-
 .../requesthandler/PinotQueryParserFactory.java    |   2 +-
 .../core}/requesthandler/PinotQueryRequest.java    |   2 +-
 .../core}/requesthandler/RangeMergeOptimizer.java  |   2 +-
 .../creator/impl/SegmentColumnarIndexCreator.java  |  25 +-
 .../segment/index/loader/IndexLoadingConfig.java   |  16 +-
 .../segment/index/metadata/ColumnMetadata.java     |   9 +-
 .../forward/BaseChunkSVForwardIndexReader.java     |  17 +-
 .../FixedByteChunkSVForwardIndexReader.java        |   4 +
 .../forward/VarByteChunkSVForwardIndexReader.java  | 152 +++-
 .../apache/pinot/core/util/TableConfigUtils.java   |  74 +-
 .../function/InbuiltFunctionEvaluatorTest.java     |  91 +--
 .../core/data/function/InbuiltFunctionsTest.java   | 160 ++++-
 .../recordtransformer/DataTypeTransformerTest.java | 202 ++++++
 .../ExpressionTransformerTest.java                 |   2 +-
 .../recordtransformer/RecordTransformerTest.java   |  30 +-
 .../pinot/core/data/table/IndexedTableTest.java    |  85 +--
 .../pinot/core/data/table/TableResizerTest.java    | 469 +++++--------
 .../ScalarTransformFunctionWrapperTest.java        |   8 +-
 .../function/AggregationFunctionFactoryTest.java   |  21 +
 .../PostAggregationFunctionTest.java               |  62 ++
 .../BrokerRequestToQueryContextConverterTest.java  | 165 ++++-
 .../impl/SegmentColumnarIndexCreatorTest.java      |  12 +-
 .../pinot/core/startree/v2/BaseStarTreeV2Test.java |   3 +-
 .../v2/DistinctCountBitmapStarTreeV2Test.java      |  51 ++
 .../pinot/core/util/TableConfigUtilsTest.java      | 153 ++++-
 .../pinot/queries/BaseMultiValueQueriesTest.java   |   4 +-
 .../queries/DistinctCountBitmapQueriesTest.java    | 248 +++++++
 .../queries/DistinctCountThetaSketchTest.java      |  61 +-
 ...nerSegmentAggregationMultiValueQueriesTest.java |  19 +-
 ...erSegmentAggregationSingleValueQueriesTest.java |  17 +-
 ...terSegmentAggregationMultiValueQueriesTest.java |  36 +-
 ...SegmentPartitionedDistinctCountQueriesTest.java | 253 +++++++
 .../apache/pinot/queries/StUnionQueriesTest.java   | 258 +++++++
 .../DefaultAggregationExecutorTest.java            |   4 +-
 .../AggregationGroupByTrimmingServiceTest.java     |  15 +-
 .../query/aggregation/groupby/GroupKeyTest.java    |  17 +-
 .../AggregateMetricsClusterIntegrationTest.java    | 130 ++++
 .../tests/BaseClusterIntegrationTest.java          |  10 +-
 .../tests/BaseClusterIntegrationTestSet.java       |   6 +
 .../tests/ClusterIntegrationTestUtils.java         |   4 +-
 .../pinot/integration/tests/ClusterTest.java       |   8 +-
 .../ControllerPeriodicTasksIntegrationTest.java    |   4 +-
 .../tests/HybridClusterIntegrationTest.java        |  15 +-
 ...ridClusterIntegrationTestCommandLineRunner.java |   8 +-
 .../tests/NullHandlingIntegrationTest.java         | 145 ++++
 .../tests/OfflineClusterIntegrationTest.java       |  17 +
 .../tests/StarTreeClusterIntegrationTest.java      |   3 +-
 .../tests/ThetaSketchIntegrationTest.java          |  12 +-
 .../src/test/resources/avro_data_with_nulls.tar.gz | Bin 0 -> 2973 bytes
 .../src/test/resources/test_null_handling.schema   |  33 +
 .../BaseMultipleSegmentsConversionExecutor.java    |   3 +-
 .../BaseSingleSegmentConversionExecutor.java       |   4 +-
 .../pinot/minion/executor/BaseTaskExecutor.java    |  10 +
 .../minion/executor/MergeRollupTaskExecutor.java   |   3 +-
 .../pinot/minion/executor/PurgeTaskExecutor.java   |   6 +-
 .../apache/pinot/perf/BenchmarkCombineGroupBy.java |  21 +-
 .../apache/pinot/perf/BenchmarkIndexedTable.java   |  21 +-
 .../apache/pinot/perf/BenchmarkQueryEngine.java    |   2 +-
 .../pinot-batch-ingestion-common/pom.xml           |   1 +
 .../pinot-batch-ingestion-hadoop/pom.xml           |   1 +
 .../pinot-batch-ingestion-spark/pom.xml            |   1 +
 .../pinot-batch-ingestion-standalone/pom.xml       |   1 +
 .../standalone/SegmentGenerationJobRunner.java     |   2 +-
 .../v0_deprecated/pinot-hadoop/pom.xml             |   1 +
 .../v0_deprecated/pinot-ingestion-common/pom.xml   |   1 +
 .../v0_deprecated/pinot-spark/pom.xml              |   1 +
 pinot-plugins/pinot-file-system/pinot-adls/pom.xml |   1 +
 pinot-plugins/pinot-file-system/pinot-gcs/pom.xml  |   1 +
 pinot-plugins/pinot-file-system/pinot-hdfs/pom.xml |   1 +
 pinot-plugins/pinot-file-system/pinot-s3/pom.xml   |   1 +
 .../apache/pinot/plugin/filesystem/S3PinotFS.java  |  13 +-
 .../pinot/plugin/filesystem/S3PinotFSTest.java     |  13 +-
 .../pinot-input-format/pinot-avro-base/pom.xml     |   1 +
 .../pinot-input-format/pinot-avro/pom.xml          |   1 +
 .../pinot-confluent-avro/pom.xml                   |   1 +
 ...aConfluentSchemaRegistryAvroMessageDecoder.java |  49 +-
 pinot-plugins/pinot-input-format/pinot-csv/pom.xml |   1 +
 .../pinot-input-format/pinot-json/pom.xml          |   1 +
 pinot-plugins/pinot-input-format/pinot-orc/pom.xml |   1 +
 .../pinot-input-format/pinot-parquet/pom.xml       |   6 +
 .../parquet/ParquetRecordExtractor.java            |  51 --
 .../inputformat/parquet/ParquetRecordReader.java   |  21 +-
 .../plugin/inputformat/parquet/ParquetUtils.java   | 173 +----
 .../parquet/ParquetRecordExtractorTest.java        |  87 ---
 .../parquet/ParquetRecordReaderTest.java           |   3 +-
 .../pinot-input-format/pinot-protobuf/pom.xml      |   1 +
 .../pinot-input-format/pinot-thrift/pom.xml        |   1 +
 .../pinot-stream-ingestion/pinot-kafka-0.9/pom.xml |   1 +
 .../pinot-stream-ingestion/pinot-kafka-2.0/pom.xml |   1 +
 .../pinot-kafka-base/pom.xml                       |   1 +
 pinot-plugins/pom.xml                              |  18 +-
 .../server/starter/helix/AdminApiApplication.java  |   4 +-
 .../helix/HelixInstanceDataManagerConfig.java      |   4 +-
 .../server/starter/helix/HelixServerStarter.java   |  10 +-
 .../starter/helix/SegmentFetcherAndLoader.java     |  60 +-
 pinot-spi/pom.xml                                  |   4 +
 .../apache/pinot/spi/config/table/TableConfig.java |  18 +-
 .../apache/pinot/spi/config/table/TierConfig.java  |  84 +++
 .../java/org/apache/pinot/spi/utils/TimeUtils.java |  12 +
 .../spi/utils/builder/TableConfigBuilder.java      |  16 +-
 .../pinot/tools/admin/PinotAdministrator.java      |   6 -
 .../tools/admin/command/GenerateDataCommand.java   |   5 +
 .../command/RealtimeProvisioningHelperCommand.java |   7 +-
 .../realtime/provisioning/MemoryEstimator.java     |   2 +-
 .../converter/PinotSegmentToAvroConverter.java     |   5 +
 .../PinotServiceManagerAdminApiApplication.java    |   4 +-
 .../tools/tuner/CollectMetadataForIndexTuning.java |  97 ---
 .../tools/tuner/EntriesScannedQuantileReport.java  |  89 ---
 .../pinot/tools/tuner/IndexTunerCommand.java       | 197 ------
 .../pinot/tools/tuner/driver/TunerDriver.java      | 209 ------
 .../meta/manager/JsonFileMetaManagerImpl.java      | 247 -------
 .../tools/tuner/meta/manager/MetaManager.java      |  59 --
 .../manager/collector/ColStatsAccumulatorObj.java  | 156 -----
 .../manager/collector/CompressedFilePathIter.java  | 101 ---
 .../tuner/meta/manager/collector/PathWrapper.java  |  74 --
 .../collector/SegmentMetadataCollector.java        | 272 --------
 .../tuner/query/src/LogInputIteratorImpl.java      | 165 -----
 .../query/src/parser/BrokerLogParserImpl.java      |  76 --
 .../stats/wrapper/IndexSuggestQueryStatsImpl.java  | 117 ----
 .../tools/tuner/strategy/AbstractAccumulator.java  |  64 --
 .../tools/tuner/strategy/FrequencyAccumulator.java |  54 --
 .../pinot/tools/tuner/strategy/FrequencyImpl.java  | 196 ------
 .../tuner/strategy/ParseBasedAccumulator.java      |  62 --
 .../tools/tuner/strategy/ParserBasedImpl.java      | 444 ------------
 .../strategy/QuantileAnalysisAccumulator.java      |  89 ---
 .../tools/tuner/strategy/QuantileAnalysisImpl.java | 365 ----------
 .../pinot/tools/tuner/strategy/TuningStrategy.java |  60 --
 .../src/main/resources/appAssemblerScriptTemplate  |  47 +-
 .../resources/generator/complexWebsite_config.json |   3 +-
 .../resources/generator/simpleWebsite_config.json  |   3 +-
 pom.xml                                            |  16 +-
 thirdeye/pom.xml                                   |   7 -
 .../app/mirage/endpoints/rootcause.js              |   9 +
 .../app/pods/anomalies/controller.js               | 446 +++---------
 .../thirdeye-frontend/app/pods/anomalies/route.js  | 144 +---
 .../app/pods/anomalies/template.hbs                |   2 +-
 .../app/pods/components/alert-details/component.js |  48 +-
 .../app/pods/components/alert-details/template.hbs |  33 +
 .../pods/components/anomaly-summary/component.js   |  41 +-
 .../pods/components/anomaly-summary/template.hbs   |  14 +-
 .../app/pods/components/entity-filter/component.js |   9 +-
 .../app/pods/components/heatmap-chart/component.js |   8 +-
 .../rootcause-custom-baseline/component.js         | 104 +++
 .../rootcause-custom-baseline/template.hbs         |  53 ++
 .../rootcause-select-comparison-range/component.js |  43 +-
 .../rootcause-select-comparison-range/template.hbs |  16 +
 .../app/pods/rootcause/controller.js               |  18 +-
 .../thirdeye-frontend/app/pods/rootcause/route.js  |  57 +-
 .../pods/services/rootcause-template/service.js    |  18 +
 thirdeye/thirdeye-frontend/app/styles/app.scss     |   1 +
 .../components/rootcause-custom-baseline.scss      |  19 +
 .../rootcause-select-comparison-range.scss         |   7 +
 .../app/styles/components/te-modal.scss            |   2 +-
 .../app/styles/shared/_styles.scss                 |  51 ++
 thirdeye/thirdeye-frontend/app/utils/anomaly.js    |  54 +-
 thirdeye/thirdeye-pinot/config/h2db.mv.db          | Bin 2949120 -> 2490368 bytes
 thirdeye/thirdeye-pinot/pom.xml                    |   4 +-
 .../anomaly/ThirdEyeAnomalyApplication.java        |   8 +-
 .../anomaly/ThirdEyeAnomalyConfiguration.java      |   9 +
 .../anomaly/alert/util/DataReportHelper.java       | 276 --------
 .../thirdeye/anomaly/alert/util/EmailHelper.java   | 130 ----
 .../pinot/thirdeye/anomaly/task/TaskConstants.java |   3 +-
 .../pinot/thirdeye/anomaly/task/TaskDriver.java    |  31 +-
 .../thirdeye/anomaly/task/TaskInfoFactory.java     |   5 +-
 .../thirdeye/anomaly/task/TaskRunnerFactory.java   |   3 +
 .../anomaly/utils/ThirdeyeMetricsUtil.java         |   6 +
 .../api/application/ApplicationResource.java       | 134 ++--
 .../api/detection/AnomalyDetectionResource.java    | 745 ++++++++++++++++++++
 .../api/user/dashboard/UserDashboardResource.java  |  14 +-
 .../common/restclient/ThirdEyeRcaRestClient.java   |   2 +-
 .../dashboard/RootCauseResourceProvider.java       | 107 +++
 .../dashboard/ThirdEyeDashboardApplication.java    | 216 ++----
 .../dashboard/ThirdEyeDashboardModule.java         | 217 ++++++
 .../dashboard/resources/AdminResource.java         |  33 +-
 .../resources/AnomalyFlattenResource.java          |   8 +-
 .../dashboard/resources/AnomalyResource.java       |  41 +-
 .../dashboard/resources/AutoOnboardResource.java   |  16 +-
 .../resources/BadRequestWebException.java          |  55 ++
 .../dashboard/resources/CacheResource.java         |   3 +-
 .../resources/CustomizedEventResource.java         |   5 +-
 .../dashboard/resources/DashboardResource.java     |  71 +-
 .../dashboard/resources/DatasetConfigResource.java |   3 +-
 .../dashboard/resources/EntityManagerResource.java |  48 +-
 .../dashboard/resources/EntityMappingResource.java |   3 +-
 .../dashboard/resources/MetricConfigResource.java  |   3 +-
 .../resources/OnboardDatasetMetricResource.java    |   3 +-
 .../dashboard/resources/ResourceUtils.java         |  60 ++
 .../thirdeye/dashboard/resources/RootResource.java | 216 ++++++
 .../dashboard/resources/SummaryResource.java       | 104 ++-
 .../dashboard/resources/ThirdEyeResource.java      |  25 +-
 .../dashboard/resources/v2/AnomaliesResource.java  |   5 +-
 .../dashboard/resources/v2/ConfigResource.java     |   5 +-
 .../dashboard/resources/v2/DataResource.java       |   3 +-
 .../resources/v2/DetectionAlertResource.java       |   5 +-
 .../dashboard/resources/v2/ResourceUtils.java      |  17 +
 .../dashboard/resources/v2/RootCauseResource.java  |   2 +-
 .../resources/v2/RootCauseSessionResource.java     |   2 +
 .../resources/v2/RootCauseTemplateResource.java    | 137 ++++
 .../resources/v2/alerts/AlertResource.java         |   4 +-
 .../v2/anomalies/AnomalySearchFilter.java          | 152 ++++
 .../v2/anomalies/AnomalySearchResource.java        |  81 +++
 .../resources/v2/anomalies/AnomalySearcher.java    | 160 +++++
 .../v2/rootcause/AbstractRCAModuleConfig.java      |  17 +-
 .../rootcause/DimensionAnalysisModuleConfig.java   |  82 +++
 .../views/contributor/ContributionCell.java        | 183 -----
 .../contributor/ContributionViewTableBuilder.java  | 142 ----
 .../views/contributor/ContributorViewHandler.java  | 331 ---------
 .../views/contributor/ContributorViewResponse.java | 109 ---
 .../datalayer/bao/MergedAnomalyResultManager.java  |   2 +
 .../bao/RootcauseTemplateManager.java}             |  11 +-
 .../pinot/thirdeye/datalayer/bao/TaskManager.java  |  10 +
 .../bao/jdbc/MergedAnomalyResultManagerImpl.java   |  18 +
 .../bao/jdbc/RootcauseTemplateManagerImpl.java     |  55 ++
 .../datalayer/bao/jdbc/TaskManagerImpl.java        |  60 ++
 .../thirdeye/datalayer/dao/GenericPojoDao.java     |   4 +
 .../datalayer/dto/MergedAnomalyResultDTO.java      |   1 +
 .../dto/RootcauseTemplateDTO.java}                 |   7 +-
 .../datalayer/entity/MergedAnomalyResultIndex.java |   9 +
 .../entity/RootcauseTemplateIndex.java}            |  45 +-
 .../thirdeye/datalayer/pojo/MetricConfigBean.java  |  10 +
 .../datalayer/pojo/RootcauseTemplateBean.java      |  74 ++
 .../thirdeye/datalayer/util/DaoProviderUtil.java   |   3 +
 .../dataset/DatasetAutoOnboardResource.java        |   3 +-
 .../pinot/thirdeye/datasource/DAORegistry.java     |   7 +
 .../datasource/loader/DefaultTimeSeriesLoader.java |   7 +-
 .../online/OnlineThirdEyeDataSource.java           | 199 ++++++
 .../pinot/resultset/ThirdEyeResultSetUtils.java    |   1 +
 .../sql/resources/SqlDataSourceResource.java       |   3 +-
 .../detection/DetectionConfigurationResource.java  |   3 +-
 .../detection/DetectionPipelineTaskInfo.java       |  20 +-
 .../detection/DetectionPipelineTaskRunner.java     |  25 +-
 .../thirdeye/detection/DetectionResource.java      |  16 +-
 .../detection/algorithm/DimensionWrapper.java      |   5 +-
 .../thirdeye/detection/yaml/YamlResource.java      |  38 +-
 .../yaml/translator/DetectionConfigTranslator.java |  16 +-
 .../content/BaseNotificationContent.java           |   2 -
 .../content/templates/MetricAnomaliesContent.java  |  16 +-
 .../apache/pinot/thirdeye/util/ThirdEyeUtils.java  |  70 +-
 .../main/resources/detection-config-template.yml   |  24 +
 .../thirdeye-pinot/src/main/resources/log4j2.xml   |   2 +-
 .../pinot/thirdeye/detector/anomaly-report-v2.ftl  | 136 ----
 .../pinot/thirdeye/detector/anomaly-report.ftl     | 150 ----
 .../thirdeye/detector/custom-anomaly-report.ftl    |  96 ---
 .../detector/data-report-by-metric-dimension.ftl   | 105 ---
 .../detector/metric-anomalies-template.ftl         |  47 ++
 .../src/main/resources/schema/create-schema.sql    |  17 +
 .../detection/AnomalyDetectionResourceTest.java    | 232 +++++++
 .../restclient/MockThirdEyeRcaRestClient.java      |   1 -
 .../restclient/TestThirdEyeRcaRestClient.java      |   2 +-
 .../dashboard/handler/ContributorTest.java         |  70 --
 .../v2/anomalies/AnomalySearcherTest.java          | 108 +++
 .../bao/TestMergedAnomalyResultManager.java        |  38 +
 .../bao/TestRootcauseTemplateManager.java          |  90 +++
 .../alert/scheme/DetectionEmailAlerterTest.java    |   1 -
 .../alert/scheme/DetectionJiraAlerterTest.java     |   2 +-
 .../templates/TestMetricAnomaliesContent.java      |  97 ++-
 .../pinot/thirdeye/util/ThirdEyeUtilsTest.java     |  59 ++
 .../thirdeye/api/detection/payload-bad-custom.json |   4 +
 .../pinot/thirdeye/api/detection/payload-bad.json  |   3 +
 .../api/detection/payload-good-custom.json         |   4 +
 .../pinot/thirdeye/api/detection/payload-good.json |   4 +
 ...rca-highlights-cube-algo-response-rendered.html | 115 ++++
 ...st-email-rca-highlights-cube-algo-response.json | 150 ++++
 .../resources/test-metric-anomalies-template.html  |   1 +
 535 files changed, 24471 insertions(+), 9628 deletions(-)
 create mode 100644 pinot-broker/src/main/java/org/apache/pinot/broker/routing/segmentselector/SegmentLineageBasedSegmentPreSelector.java
 copy pinot-tools/src/main/java/org/apache/pinot/tools/tuner/query/src/InputIterator.java => pinot-broker/src/main/java/org/apache/pinot/broker/routing/segmentselector/SegmentPreSelector.java (58%)
 copy pinot-broker/src/main/java/org/apache/pinot/broker/{requesthandler/PinotQueryRequest.java => routing/segmentselector/SegmentPreSelectorFactory.java} (59%)
 create mode 100644 pinot-broker/src/test/java/org/apache/pinot/broker/routing/segmentselector/SegmentPreSelectorTest.java
 delete mode 100644 pinot-common/src/main/java/org/apache/pinot/common/function/DateTimeFunctions.java
 create mode 100644 pinot-common/src/main/java/org/apache/pinot/common/function/FunctionUtils.java
 create mode 100644 pinot-common/src/main/java/org/apache/pinot/common/function/scalar/ArithmeticFunctions.java
 create mode 100644 pinot-common/src/main/java/org/apache/pinot/common/function/scalar/DateTimeFunctions.java
 rename pinot-common/src/main/java/org/apache/pinot/common/function/{ => scalar}/JsonFunctions.java (90%)
 rename pinot-common/src/main/java/org/apache/pinot/common/function/{ => scalar}/StringFunctions.java (84%)
 create mode 100644 pinot-common/src/main/java/org/apache/pinot/common/messages/RoutingTableRebuildMessage.java
 rename pinot-tools/src/main/java/org/apache/pinot/tools/tuner/query/src/parser/QueryParser.java => pinot-common/src/main/java/org/apache/pinot/common/tier/PinotServerTierStorage.java (63%)
 create mode 100644 pinot-common/src/main/java/org/apache/pinot/common/tier/Tier.java
 create mode 100644 pinot-common/src/main/java/org/apache/pinot/common/tier/TierFactory.java
 rename pinot-tools/src/main/java/org/apache/pinot/tools/tuner/query/src/InputIterator.java => pinot-common/src/main/java/org/apache/pinot/common/tier/TierSegmentSelector.java (63%)
 copy pinot-tools/src/main/java/org/apache/pinot/tools/tuner/query/src/stats/wrapper/AbstractQueryStats.java => pinot-common/src/main/java/org/apache/pinot/common/tier/TierStorage.java (73%)
 create mode 100644 pinot-common/src/main/java/org/apache/pinot/common/tier/TimeBasedTierSegmentSelector.java
 rename {pinot-core/src/main/java/org/apache/pinot/core/data/recordtransformer => pinot-common/src/main/java/org/apache/pinot/common/utils}/PinotDataType.java (95%)
 create mode 100644 pinot-common/src/main/java/org/apache/pinot/common/utils/config/TierConfigUtils.java
 create mode 100644 pinot-common/src/test/java/org/apache/pinot/common/tier/TierConfigUtilsTest.java
 create mode 100644 pinot-common/src/test/java/org/apache/pinot/common/tier/TierSegmentSelectorTest.java
 rename {pinot-core/src/test/java/org/apache/pinot/core/data/recordtransformer => pinot-common/src/test/java/org/apache/pinot/common/utils}/PinotDataTypeTest.java (98%)
 create mode 100644 pinot-connectors/pinot-spark-connector/README.md
 create mode 100644 pinot-connectors/pinot-spark-connector/documentation/images/spark-pinot-connector-executor-server-interaction.jpg
 create mode 100644 pinot-connectors/pinot-spark-connector/documentation/read_model.md
 create mode 100644 pinot-connectors/pinot-spark-connector/pom.xml
 create mode 100644 pinot-connectors/pinot-spark-connector/src/main/resources/META-INF/services/org.apache.spark.sql.sources.DataSourceRegister
 create mode 100644 pinot-connectors/pinot-spark-connector/src/main/scala/org/apache/pinot/connector/spark/connector/FilterPushDown.scala
 create mode 100644 pinot-connectors/pinot-spark-connector/src/main/scala/org/apache/pinot/connector/spark/connector/PinotClusterClient.scala
 create mode 100644 pinot-connectors/pinot-spark-connector/src/main/scala/org/apache/pinot/connector/spark/connector/PinotServerDataFetcher.scala
 create mode 100644 pinot-connectors/pinot-spark-connector/src/main/scala/org/apache/pinot/connector/spark/connector/PinotSplitter.scala
 create mode 100644 pinot-connectors/pinot-spark-connector/src/main/scala/org/apache/pinot/connector/spark/connector/PinotUtils.scala
 copy pinot-minion/src/main/java/org/apache/pinot/minion/executor/BaseTaskExecutor.java => pinot-connectors/pinot-spark-connector/src/main/scala/org/apache/pinot/connector/spark/connector/query/GeneratedSQLs.scala (66%)
 create mode 100644 pinot-connectors/pinot-spark-connector/src/main/scala/org/apache/pinot/connector/spark/connector/query/SQLSelectionQueryGenerator.scala
 create mode 100644 pinot-connectors/pinot-spark-connector/src/main/scala/org/apache/pinot/connector/spark/datasource/PinotDataSourceReadOptions.scala
 create mode 100644 pinot-connectors/pinot-spark-connector/src/main/scala/org/apache/pinot/connector/spark/datasource/PinotDataSourceReader.scala
 copy pinot-broker/src/main/java/org/apache/pinot/broker/requesthandler/PinotQueryRequest.java => pinot-connectors/pinot-spark-connector/src/main/scala/org/apache/pinot/connector/spark/datasource/PinotDataSourceV2.scala (53%)
 copy pinot-broker/src/main/java/org/apache/pinot/broker/requesthandler/PinotQueryRequest.java => pinot-connectors/pinot-spark-connector/src/main/scala/org/apache/pinot/connector/spark/datasource/PinotInputPartition.scala (53%)
 create mode 100644 pinot-connectors/pinot-spark-connector/src/main/scala/org/apache/pinot/connector/spark/datasource/PinotInputPartitionReader.scala
 copy pinot-minion/src/main/java/org/apache/pinot/minion/executor/BaseTaskExecutor.java => pinot-connectors/pinot-spark-connector/src/main/scala/org/apache/pinot/connector/spark/exceptions/exceptions.scala (69%)
 copy pinot-broker/src/main/java/org/apache/pinot/broker/requesthandler/PinotQueryRequest.java => pinot-connectors/pinot-spark-connector/src/main/scala/org/apache/pinot/connector/spark/package.scala (60%)
 create mode 100644 pinot-connectors/pinot-spark-connector/src/main/scala/org/apache/pinot/connector/spark/utils/HttpUtils.scala
 create mode 100644 pinot-connectors/pinot-spark-connector/src/main/scala/org/apache/pinot/connector/spark/utils/Logging.scala
 copy {pinot-common => pinot-connectors/pinot-spark-connector}/src/test/resources/log4j2.xml (100%)
 create mode 100644 pinot-connectors/pinot-spark-connector/src/test/resources/schema/pinot-schema.json
 create mode 100644 pinot-connectors/pinot-spark-connector/src/test/resources/schema/spark-schema.json
 copy pinot-controller/src/main/resources/app/theme/typography.ts => pinot-connectors/pinot-spark-connector/src/test/scala/org/apache/pinot/connector/spark/BaseTest.scala (82%)
 create mode 100644 pinot-connectors/pinot-spark-connector/src/test/scala/org/apache/pinot/connector/spark/ExampleSparkPinotConnectorTest.scala
 create mode 100644 pinot-connectors/pinot-spark-connector/src/test/scala/org/apache/pinot/connector/spark/connector/FilterPushDownTest.scala
 create mode 100644 pinot-connectors/pinot-spark-connector/src/test/scala/org/apache/pinot/connector/spark/connector/PinotSplitterTest.scala
 create mode 100644 pinot-connectors/pinot-spark-connector/src/test/scala/org/apache/pinot/connector/spark/connector/PinotUtilsTest.scala
 create mode 100644 pinot-connectors/pinot-spark-connector/src/test/scala/org/apache/pinot/connector/spark/connector/query/SQLSelectionQueryGeneratorTest.scala
 create mode 100644 pinot-connectors/pinot-spark-connector/src/test/scala/org/apache/pinot/connector/spark/datasource/PinotDataSourceReadOptionsTest.scala
 copy {pinot-plugins/pinot-batch-ingestion/pinot-batch-ingestion-common => pinot-connectors}/pom.xml (63%)
 rename pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/relocation/{RealtimeSegmentRelocator.java => SegmentRelocator.java} (66%)
 create mode 100644 pinot-controller/src/main/java/org/apache/pinot/controller/recommender/RecommenderDriver.java
 copy pinot-tools/src/main/java/org/apache/pinot/tools/tuner/query/src/stats/wrapper/AbstractQueryStats.java => pinot-controller/src/main/java/org/apache/pinot/controller/recommender/exceptions/InvalidInputException.java (70%)
 create mode 100644 pinot-controller/src/main/java/org/apache/pinot/controller/recommender/io/ConfigManager.java
 create mode 100644 pinot-controller/src/main/java/org/apache/pinot/controller/recommender/io/InputManager.java
 create mode 100644 pinot-controller/src/main/java/org/apache/pinot/controller/recommender/io/metadata/FieldMetadata.java
 create mode 100644 pinot-controller/src/main/java/org/apache/pinot/controller/recommender/io/metadata/SchemaWithMetaData.java
 create mode 100644 pinot-controller/src/main/java/org/apache/pinot/controller/recommender/io/metadata/TimeFieldSpecMetadata.java
 copy pinot-broker/src/main/java/org/apache/pinot/broker/requesthandler/FilterQueryTreeOptimizer.java => pinot-controller/src/main/java/org/apache/pinot/controller/recommender/rules/AbstractRule.java (59%)
 create mode 100644 pinot-controller/src/main/java/org/apache/pinot/controller/recommender/rules/RulesToExecute.java
 create mode 100644 pinot-controller/src/main/java/org/apache/pinot/controller/recommender/rules/impl/BloomFilterRule.java
 create mode 100644 pinot-controller/src/main/java/org/apache/pinot/controller/recommender/rules/impl/FlagQueryRule.java
 create mode 100644 pinot-controller/src/main/java/org/apache/pinot/controller/recommender/rules/impl/InvertedSortedIndexJointRule.java
 create mode 100644 pinot-controller/src/main/java/org/apache/pinot/controller/recommender/rules/impl/KafkaPartitionRule.java
 create mode 100644 pinot-controller/src/main/java/org/apache/pinot/controller/recommender/rules/impl/NoDictionaryOnHeapDictionaryJointRule.java
 create mode 100644 pinot-controller/src/main/java/org/apache/pinot/controller/recommender/rules/impl/PinotTablePartitionRule.java
 create mode 100644 pinot-controller/src/main/java/org/apache/pinot/controller/recommender/rules/impl/VariedLengthDictionaryRule.java
 create mode 100644 pinot-controller/src/main/java/org/apache/pinot/controller/recommender/rules/io/FlaggedQueries.java
 create mode 100644 pinot-controller/src/main/java/org/apache/pinot/controller/recommender/rules/io/configs/IndexConfig.java
 create mode 100644 pinot-controller/src/main/java/org/apache/pinot/controller/recommender/rules/io/configs/PartitionConfig.java
 create mode 100644 pinot-controller/src/main/java/org/apache/pinot/controller/recommender/rules/io/params/BloomFilterRuleParams.java
 create mode 100644 pinot-controller/src/main/java/org/apache/pinot/controller/recommender/rules/io/params/FlagQueryRuleParams.java
 create mode 100644 pinot-controller/src/main/java/org/apache/pinot/controller/recommender/rules/io/params/InvertedSortedIndexJointRuleParams.java
 create mode 100644 pinot-controller/src/main/java/org/apache/pinot/controller/recommender/rules/io/params/NoDictionaryOnHeapDictionaryJointRuleParams.java
 create mode 100644 pinot-controller/src/main/java/org/apache/pinot/controller/recommender/rules/io/params/PartitionRuleParams.java
 create mode 100644 pinot-controller/src/main/java/org/apache/pinot/controller/recommender/rules/io/params/RecommenderConstants.java
 create mode 100644 pinot-controller/src/main/java/org/apache/pinot/controller/recommender/rules/utils/FixedLenBitset.java
 create mode 100644 pinot-controller/src/main/java/org/apache/pinot/controller/recommender/rules/utils/PredicateParseResult.java
 create mode 100644 pinot-controller/src/main/java/org/apache/pinot/controller/recommender/rules/utils/QueryInvertedSortedIndexRecommender.java
 create mode 100644 pinot-controller/src/main/resources/app/components/MaterialTree.tsx
 create mode 100644 pinot-controller/src/main/resources/app/components/SvgIcons/ZookeeperIcon.tsx
 copy pinot-controller/src/main/resources/app/components/{AppLoader.tsx => TabPanel.tsx} (57%)
 create mode 100644 pinot-controller/src/main/resources/app/components/Zookeeper/TreeDirectory.tsx
 create mode 100644 pinot-controller/src/main/resources/app/pages/ZookeeperPage.tsx
 create mode 100644 pinot-controller/src/test/java/org/apache/pinot/controller/helix/TableCacheTest.java
 create mode 100644 pinot-controller/src/test/java/org/apache/pinot/controller/helix/core/assignment/segment/OfflineNonReplicaGroupTieredSegmentAssignmentTest.java
 create mode 100644 pinot-controller/src/test/java/org/apache/pinot/controller/helix/core/assignment/segment/RealtimeNonReplicaGroupTieredSegmentAssignmentTest.java
 create mode 100644 pinot-controller/src/test/java/org/apache/pinot/controller/helix/core/retention/SegmentLineageCleanupTest.java
 create mode 100644 pinot-controller/src/test/java/org/apache/pinot/controller/recommender/TestConfigEngine.java
 create mode 100644 pinot-controller/src/test/resources/recommenderInput/BloomFilterInput.json
 create mode 100644 pinot-controller/src/test/resources/recommenderInput/DataSizeCalculationInput.json
 create mode 100644 pinot-controller/src/test/resources/recommenderInput/FlagQueryInput.json
 create mode 100644 pinot-controller/src/test/resources/recommenderInput/InvalidInput1.json
 create mode 100644 pinot-controller/src/test/resources/recommenderInput/InvalidInput2.json
 create mode 100644 pinot-controller/src/test/resources/recommenderInput/KafkaPartitionRuleInput.json
 create mode 100644 pinot-controller/src/test/resources/recommenderInput/KafkaPartitionRuleInput2.json
 create mode 100644 pinot-controller/src/test/resources/recommenderInput/NoDictionaryOnHeapDictionaryJointRuleInput.json
 create mode 100644 pinot-controller/src/test/resources/recommenderInput/PinotTablePartitionRuleInput.json
 create mode 100644 pinot-controller/src/test/resources/recommenderInput/SortedInvertedIndexInput.json
 create mode 100644 pinot-controller/src/test/resources/recommenderInput/VariedLengthDictionaryInput.json
 create mode 100644 pinot-core/src/main/java/org/apache/pinot/core/data/aggregator/DistinctCountBitmapValueAggregator.java
 delete mode 100644 pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/AggregationFunctionVisitorBase.java
 create mode 100644 pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/DistinctCountBitmapAggregationFunction.java
 copy pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/{DistinctCountMVAggregationFunction.java => DistinctCountBitmapMVAggregationFunction.java} (57%)
 create mode 100644 pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/SegmentPartitionedDistinctCountAggregationFunction.java
 create mode 100644 pinot-core/src/main/java/org/apache/pinot/core/query/aggregation/function/StUnionAggregationFunction.java
 create mode 100644 pinot-core/src/main/java/org/apache/pinot/core/query/postaggregation/PostAggregationFunction.java
 rename {pinot-broker/src/main/java/org/apache/pinot/broker => pinot-core/src/main/java/org/apache/pinot/core}/requesthandler/BrokerRequestOptimizer.java (98%)
 rename {pinot-broker/src/main/java/org/apache/pinot/broker => pinot-core/src/main/java/org/apache/pinot/core}/requesthandler/FilterQueryOptimizerRequest.java (97%)
 rename {pinot-broker/src/main/java/org/apache/pinot/broker => pinot-core/src/main/java/org/apache/pinot/core}/requesthandler/FilterQueryTreeOptimizer.java (96%)
 rename {pinot-broker/src/main/java/org/apache/pinot/broker => pinot-core/src/main/java/org/apache/pinot/core}/requesthandler/FlattenNestedPredicatesFilterQueryTreeOptimizer.java (98%)
 rename {pinot-broker/src/main/java/org/apache/pinot/broker => pinot-core/src/main/java/org/apache/pinot/core}/requesthandler/MultipleOrEqualitiesToInClauseFilterQueryTreeOptimizer.java (99%)
 rename {pinot-broker/src/main/java/org/apache/pinot/broker => pinot-core/src/main/java/org/apache/pinot/core}/requesthandler/OptimizationFlags.java (98%)
 rename {pinot-broker/src/main/java/org/apache/pinot/broker => pinot-core/src/main/java/org/apache/pinot/core}/requesthandler/PinotQueryParserFactory.java (97%)
 rename {pinot-broker/src/main/java/org/apache/pinot/broker => pinot-core/src/main/java/org/apache/pinot/core}/requesthandler/PinotQueryRequest.java (96%)
 rename {pinot-broker/src/main/java/org/apache/pinot/broker => pinot-core/src/main/java/org/apache/pinot/core}/requesthandler/RangeMergeOptimizer.java (99%)
 create mode 100644 pinot-core/src/test/java/org/apache/pinot/core/data/recordtransformer/DataTypeTransformerTest.java
 create mode 100644 pinot-core/src/test/java/org/apache/pinot/core/query/postaggregation/PostAggregationFunctionTest.java
 create mode 100644 pinot-core/src/test/java/org/apache/pinot/core/startree/v2/DistinctCountBitmapStarTreeV2Test.java
 create mode 100644 pinot-core/src/test/java/org/apache/pinot/queries/DistinctCountBitmapQueriesTest.java
 create mode 100644 pinot-core/src/test/java/org/apache/pinot/queries/SegmentPartitionedDistinctCountQueriesTest.java
 create mode 100644 pinot-core/src/test/java/org/apache/pinot/queries/StUnionQueriesTest.java
 create mode 100644 pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/AggregateMetricsClusterIntegrationTest.java
 create mode 100644 pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/NullHandlingIntegrationTest.java
 create mode 100644 pinot-integration-tests/src/test/resources/avro_data_with_nulls.tar.gz
 create mode 100644 pinot-integration-tests/src/test/resources/test_null_handling.schema
 delete mode 100644 pinot-plugins/pinot-input-format/pinot-parquet/src/main/java/org/apache/pinot/plugin/inputformat/parquet/ParquetRecordExtractor.java
 delete mode 100644 pinot-plugins/pinot-input-format/pinot-parquet/src/test/java/org/apache/pinot/plugin/inputformat/parquet/ParquetRecordExtractorTest.java
 create mode 100644 pinot-spi/src/main/java/org/apache/pinot/spi/config/table/TierConfig.java
 delete mode 100644 pinot-tools/src/main/java/org/apache/pinot/tools/tuner/CollectMetadataForIndexTuning.java
 delete mode 100644 pinot-tools/src/main/java/org/apache/pinot/tools/tuner/EntriesScannedQuantileReport.java
 delete mode 100644 pinot-tools/src/main/java/org/apache/pinot/tools/tuner/IndexTunerCommand.java
 delete mode 100644 pinot-tools/src/main/java/org/apache/pinot/tools/tuner/driver/TunerDriver.java
 delete mode 100644 pinot-tools/src/main/java/org/apache/pinot/tools/tuner/meta/manager/JsonFileMetaManagerImpl.java
 delete mode 100644 pinot-tools/src/main/java/org/apache/pinot/tools/tuner/meta/manager/MetaManager.java
 delete mode 100644 pinot-tools/src/main/java/org/apache/pinot/tools/tuner/meta/manager/collector/ColStatsAccumulatorObj.java
 delete mode 100644 pinot-tools/src/main/java/org/apache/pinot/tools/tuner/meta/manager/collector/CompressedFilePathIter.java
 delete mode 100644 pinot-tools/src/main/java/org/apache/pinot/tools/tuner/meta/manager/collector/PathWrapper.java
 delete mode 100644 pinot-tools/src/main/java/org/apache/pinot/tools/tuner/meta/manager/collector/SegmentMetadataCollector.java
 delete mode 100644 pinot-tools/src/main/java/org/apache/pinot/tools/tuner/query/src/LogInputIteratorImpl.java
 delete mode 100644 pinot-tools/src/main/java/org/apache/pinot/tools/tuner/query/src/parser/BrokerLogParserImpl.java
 delete mode 100644 pinot-tools/src/main/java/org/apache/pinot/tools/tuner/query/src/stats/wrapper/IndexSuggestQueryStatsImpl.java
 delete mode 100644 pinot-tools/src/main/java/org/apache/pinot/tools/tuner/strategy/AbstractAccumulator.java
 delete mode 100644 pinot-tools/src/main/java/org/apache/pinot/tools/tuner/strategy/FrequencyAccumulator.java
 delete mode 100644 pinot-tools/src/main/java/org/apache/pinot/tools/tuner/strategy/FrequencyImpl.java
 delete mode 100644 pinot-tools/src/main/java/org/apache/pinot/tools/tuner/strategy/ParseBasedAccumulator.java
 delete mode 100644 pinot-tools/src/main/java/org/apache/pinot/tools/tuner/strategy/ParserBasedImpl.java
 delete mode 100644 pinot-tools/src/main/java/org/apache/pinot/tools/tuner/strategy/QuantileAnalysisAccumulator.java
 delete mode 100644 pinot-tools/src/main/java/org/apache/pinot/tools/tuner/strategy/QuantileAnalysisImpl.java
 delete mode 100644 pinot-tools/src/main/java/org/apache/pinot/tools/tuner/strategy/TuningStrategy.java
 create mode 100644 thirdeye/thirdeye-frontend/app/pods/components/rootcause-custom-baseline/component.js
 create mode 100644 thirdeye/thirdeye-frontend/app/pods/components/rootcause-custom-baseline/template.hbs
 create mode 100644 thirdeye/thirdeye-frontend/app/pods/services/rootcause-template/service.js
 create mode 100644 thirdeye/thirdeye-frontend/app/styles/components/rootcause-custom-baseline.scss
 delete mode 100644 thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/anomaly/alert/util/DataReportHelper.java
 create mode 100644 thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/api/detection/AnomalyDetectionResource.java
 create mode 100644 thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/dashboard/RootCauseResourceProvider.java
 create mode 100644 thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/dashboard/ThirdEyeDashboardModule.java
 create mode 100644 thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/dashboard/resources/BadRequestWebException.java
 create mode 100644 thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/dashboard/resources/ResourceUtils.java
 create mode 100644 thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/dashboard/resources/RootResource.java
 create mode 100644 thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/dashboard/resources/v2/RootCauseTemplateResource.java
 create mode 100644 thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/dashboard/resources/v2/anomalies/AnomalySearchFilter.java
 create mode 100644 thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/dashboard/resources/v2/anomalies/AnomalySearchResource.java
 create mode 100644 thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/dashboard/resources/v2/anomalies/AnomalySearcher.java
 rename pinot-tools/src/main/java/org/apache/pinot/tools/tuner/query/src/stats/wrapper/AbstractQueryStats.java => thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/dashboard/resources/v2/rootcause/AbstractRCAModuleConfig.java (69%)
 create mode 100644 thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/dashboard/resources/v2/rootcause/DimensionAnalysisModuleConfig.java
 delete mode 100644 thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/dashboard/views/contributor/ContributionCell.java
 delete mode 100644 thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/dashboard/views/contributor/ContributionViewTableBuilder.java
 delete mode 100644 thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/dashboard/views/contributor/ContributorViewHandler.java
 delete mode 100644 thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/dashboard/views/contributor/ContributorViewResponse.java
 copy thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/{dashboard/views/contributor/ContributorViewRequest.java => datalayer/bao/RootcauseTemplateManager.java} (69%)
 create mode 100644 thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/datalayer/bao/jdbc/RootcauseTemplateManagerImpl.java
 rename thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/{dashboard/views/contributor/ContributorViewRequest.java => datalayer/dto/RootcauseTemplateDTO.java} (80%)
 rename thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/{dashboard/views/contributor/ContributionViewTable.java => datalayer/entity/RootcauseTemplateIndex.java} (53%)
 create mode 100644 thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/datalayer/pojo/RootcauseTemplateBean.java
 create mode 100644 thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/datasource/online/OnlineThirdEyeDataSource.java
 create mode 100644 thirdeye/thirdeye-pinot/src/main/resources/detection-config-template.yml
 delete mode 100644 thirdeye/thirdeye-pinot/src/main/resources/org/apache/pinot/thirdeye/detector/anomaly-report-v2.ftl
 delete mode 100644 thirdeye/thirdeye-pinot/src/main/resources/org/apache/pinot/thirdeye/detector/anomaly-report.ftl
 delete mode 100644 thirdeye/thirdeye-pinot/src/main/resources/org/apache/pinot/thirdeye/detector/custom-anomaly-report.ftl
 delete mode 100644 thirdeye/thirdeye-pinot/src/main/resources/org/apache/pinot/thirdeye/detector/data-report-by-metric-dimension.ftl
 create mode 100644 thirdeye/thirdeye-pinot/src/test/java/org/apache/pinot/thirdeye/api/detection/AnomalyDetectionResourceTest.java
 delete mode 100644 thirdeye/thirdeye-pinot/src/test/java/org/apache/pinot/thirdeye/dashboard/handler/ContributorTest.java
 create mode 100644 thirdeye/thirdeye-pinot/src/test/java/org/apache/pinot/thirdeye/dashboard/resources/v2/anomalies/AnomalySearcherTest.java
 create mode 100644 thirdeye/thirdeye-pinot/src/test/java/org/apache/pinot/thirdeye/datalayer/bao/TestRootcauseTemplateManager.java
 create mode 100644 thirdeye/thirdeye-pinot/src/test/resources/org/apache/pinot/thirdeye/api/detection/payload-bad-custom.json
 create mode 100644 thirdeye/thirdeye-pinot/src/test/resources/org/apache/pinot/thirdeye/api/detection/payload-bad.json
 create mode 100644 thirdeye/thirdeye-pinot/src/test/resources/org/apache/pinot/thirdeye/api/detection/payload-good-custom.json
 create mode 100644 thirdeye/thirdeye-pinot/src/test/resources/org/apache/pinot/thirdeye/api/detection/payload-good.json
 create mode 100644 thirdeye/thirdeye-pinot/src/test/resources/test-email-rca-highlights-cube-algo-response-rendered.html
 create mode 100644 thirdeye/thirdeye-pinot/src/test/resources/test-email-rca-highlights-cube-algo-response.json


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org


[incubator-pinot] 01/01: Fix race condition in MetricsHelper Bump up dropwizard metrics version to 4.1.2

Posted by jl...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jlli pushed a commit to branch add-metrics-jmx
in repository https://gitbox.apache.org/repos/asf/incubator-pinot.git

commit b9988003c0f9eeb797830b4262a040b5f69c92f3
Author: Jack Li(Analytics Engineering) <jl...@jlli-mn1.linkedin.biz>
AuthorDate: Wed Aug 12 17:24:14 2020 -0700

    Fix race condition in MetricsHelper
    Bump up dropwizard metrics version to 4.1.2
---
 .../org/apache/pinot/common/metrics/AbstractMetrics.java  |  2 ++
 .../JmxReporterMetricsRegistryRegistrationListener.java   |  6 ++++++
 .../org/apache/pinot/common/metrics/MetricsHelper.java    | 15 +++++++++------
 pom.xml                                                   |  2 +-
 4 files changed, 18 insertions(+), 7 deletions(-)

diff --git a/pinot-common/src/main/java/org/apache/pinot/common/metrics/AbstractMetrics.java b/pinot-common/src/main/java/org/apache/pinot/common/metrics/AbstractMetrics.java
index 5178fc1..cf40f69 100644
--- a/pinot-common/src/main/java/org/apache/pinot/common/metrics/AbstractMetrics.java
+++ b/pinot-common/src/main/java/org/apache/pinot/common/metrics/AbstractMetrics.java
@@ -376,6 +376,7 @@ public abstract class AbstractMetrics<QP extends AbstractMetrics.QueryPhase, M e
    */
   public void initializeGlobalMeters() {
     M[] meters = getMeters();
+    LOGGER.info("Initializing global {} meters", meters.length);
 
     for (M meter : meters) {
       if (meter.isGlobal()) {
@@ -384,6 +385,7 @@ public abstract class AbstractMetrics<QP extends AbstractMetrics.QueryPhase, M e
     }
 
     G[] gauges = getGauges();
+    LOGGER.info("Initializing global {} gauges", gauges.length);
     for (G gauge : gauges) {
       if (gauge.isGlobal()) {
         setValueOfGlobalGauge(gauge, 0);
diff --git a/pinot-common/src/main/java/org/apache/pinot/common/metrics/JmxReporterMetricsRegistryRegistrationListener.java b/pinot-common/src/main/java/org/apache/pinot/common/metrics/JmxReporterMetricsRegistryRegistrationListener.java
index 1c2cf15..9e6cb13 100644
--- a/pinot-common/src/main/java/org/apache/pinot/common/metrics/JmxReporterMetricsRegistryRegistrationListener.java
+++ b/pinot-common/src/main/java/org/apache/pinot/common/metrics/JmxReporterMetricsRegistryRegistrationListener.java
@@ -20,6 +20,8 @@ package org.apache.pinot.common.metrics;
 
 import com.yammer.metrics.core.MetricsRegistry;
 import com.yammer.metrics.reporting.JmxReporter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 
 /**
@@ -27,8 +29,12 @@ import com.yammer.metrics.reporting.JmxReporter;
  *
  */
 public class JmxReporterMetricsRegistryRegistrationListener implements MetricsRegistryRegistrationListener {
+  private static final Logger LOGGER = LoggerFactory.getLogger(JmxReporterMetricsRegistryRegistrationListener.class);
+
   @Override
   public void onMetricsRegistryRegistered(MetricsRegistry metricsRegistry) {
+    LOGGER.info("Registering JmxReporterMetricsRegistryRegistrationListener");
     new JmxReporter(metricsRegistry).start();
+    LOGGER.info("Number of metrics in metricsRegistry: {}", metricsRegistry.allMetrics().size());
   }
 }
diff --git a/pinot-common/src/main/java/org/apache/pinot/common/metrics/MetricsHelper.java b/pinot-common/src/main/java/org/apache/pinot/common/metrics/MetricsHelper.java
index 9d2933f..f6e2eb1 100644
--- a/pinot-common/src/main/java/org/apache/pinot/common/metrics/MetricsHelper.java
+++ b/pinot-common/src/main/java/org/apache/pinot/common/metrics/MetricsHelper.java
@@ -34,7 +34,7 @@ import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.WeakHashMap;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.TimeUnit;
 import org.apache.pinot.spi.env.PinotConfiguration;
 import org.slf4j.Logger;
@@ -44,10 +44,10 @@ import org.slf4j.LoggerFactory;
 public class MetricsHelper {
   private static final Logger LOGGER = LoggerFactory.getLogger(MetricsHelper.class);
 
-  private static Map<MetricsRegistry, Object> metricsRegistryMap = new WeakHashMap<MetricsRegistry, Object>();
+  private static Map<MetricsRegistry, Boolean> metricsRegistryMap = new ConcurrentHashMap<>();
 
-  private static Map<MetricsRegistryRegistrationListener, Object> metricsRegistryRegistrationListenersMap =
-      new WeakHashMap<MetricsRegistryRegistrationListener, Object>();
+  private static Map<MetricsRegistryRegistrationListener, Boolean> metricsRegistryRegistrationListenersMap =
+      new ConcurrentHashMap<>();
 
   /**
    * Initializes the metrics system by initializing the registry registration listeners present in the configuration.
@@ -68,6 +68,7 @@ public class MetricsHelper {
               clazz.getDeclaredConstructor();
           MetricsRegistryRegistrationListener listener = defaultConstructor.newInstance();
 
+          LOGGER.info("Registering metricsRegistry to listener {}", listenerClassName);
           addMetricsRegistryRegistrationListener(listener);
         } catch (Exception e) {
           LOGGER
@@ -75,6 +76,7 @@ public class MetricsHelper {
         }
       }
     }
+    LOGGER.info("Number of listeners got registered: {}", metricsRegistryRegistrationListenersMap.size());
   }
 
   /**
@@ -86,10 +88,11 @@ public class MetricsHelper {
    */
   public static void addMetricsRegistryRegistrationListener(MetricsRegistryRegistrationListener listener) {
     synchronized (MetricsHelper.class) {
-      metricsRegistryRegistrationListenersMap.put(listener, null);
+      metricsRegistryRegistrationListenersMap.put(listener, Boolean.TRUE);
 
       // Fire events to register all previously registered metrics registries
       Set<MetricsRegistry> metricsRegistries = metricsRegistryMap.keySet();
+      LOGGER.info("Number of metrics registry: {}", metricsRegistries.size());
       for (MetricsRegistry metricsRegistry : metricsRegistries) {
         listener.onMetricsRegistryRegistered(metricsRegistry);
       }
@@ -103,7 +106,7 @@ public class MetricsHelper {
    */
   public static void registerMetricsRegistry(MetricsRegistry registry) {
     synchronized (MetricsHelper.class) {
-      metricsRegistryMap.put(registry, null);
+      metricsRegistryMap.put(registry, Boolean.TRUE);
 
       // Fire event to all registered listeners
       Set<MetricsRegistryRegistrationListener> metricsRegistryRegistrationListeners =
diff --git a/pom.xml b/pom.xml
index 48b7282..aa9d858 100644
--- a/pom.xml
+++ b/pom.xml
@@ -140,7 +140,7 @@
     <!-- hadoop-common, spark-core use commons-net -->
     <commons-net.version>3.1</commons-net.version>
     <!-- helix-core, spark-core use libraries from io.dropwizard.metrics -->
-    <dropwizard-metrics.version>3.2.3</dropwizard-metrics.version>
+    <dropwizard-metrics.version>4.1.2</dropwizard-metrics.version>
     <snappy-java.version>1.1.1.7</snappy-java.version>
     <log4j.version>2.11.2</log4j.version>
     <netty.version>4.1.42.Final</netty.version>


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org