Skip to content

Aggs: InternalFilter cannot be cast to class InternalMultiBucketAggregation, missing validation #132272

@ivancea

Description

@ivancea

Stacktrace:

Failed to execute phase [fetch], 
	at org.elasticsearch.server@9.2.0/org.elasticsearch.action.search.AbstractSearchAsyncAction.onPhaseFailure(AbstractSearchAsyncAction.java:624)
	at org.elasticsearch.server@9.2.0/org.elasticsearch.action.search.SearchQueryThenFetchAsyncAction.onPhaseFailure(SearchQueryThenFetchAsyncAction.java:81)
	at org.elasticsearch.server@9.2.0/org.elasticsearch.action.search.FetchSearchPhase$1.onFailure(FetchSearchPhase.java:88)
	at org.elasticsearch.server@9.2.0/org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:29)
	at org.elasticsearch.server@9.2.0/org.elasticsearch.common.util.concurrent.TimedRunnable.doRun(TimedRunnable.java:35)
	at org.elasticsearch.server@9.2.0/org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:1067)
	at org.elasticsearch.server@9.2.0/org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:27)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1095)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:619)
	at java.base/java.lang.Thread.run(Thread.java:1447)
Caused by: java.lang.ClassCastException: class org.elasticsearch.search.aggregations.bucket.filter.InternalFilter cannot be cast to class org.elasticsearch.search.aggregations.InternalMultiBucketAggregation (org.elasticsearch.search.aggregations.bucket.filter.InternalFilter and org.elasticsearch.search.aggregations.InternalMultiBucketAggregation are in module org.elasticsearch.server@9.2.0 of loader 'app')
	at org.elasticsearch.server@9.2.0/org.elasticsearch.search.aggregations.pipeline.BucketScriptPipelineAggregator.reduce(BucketScriptPipelineAggregator.java:52)
	at org.elasticsearch.server@9.2.0/org.elasticsearch.search.aggregations.InternalAggregation.reducePipelines(InternalAggregation.java:119)
	at org.elasticsearch.server@9.2.0/org.elasticsearch.search.aggregations.bucket.InternalSingleBucketAggregation.reducePipelines(InternalSingleBucketAggregation.java:142)
	at org.elasticsearch.server@9.2.0/org.elasticsearch.search.aggregations.InternalAggregations.lambda$maybeExecuteFinalReduce$0(InternalAggregations.java:197)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:215)
	at java.base/java.util.AbstractList$RandomAccessSpliterator.forEachRemaining(AbstractList.java:722)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:570)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:560)
	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)
	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:727)
	at org.elasticsearch.server@9.2.0/org.elasticsearch.search.aggregations.InternalAggregations.maybeExecuteFinalReduce(InternalAggregations.java:198)
	at org.elasticsearch.server@9.2.0/org.elasticsearch.search.aggregations.InternalAggregations.topLevelReduce(InternalAggregations.java:187)
	at org.elasticsearch.server@9.2.0/org.elasticsearch.action.search.QueryPhaseResultConsumer.aggregate(QueryPhaseResultConsumer.java:412)
	at org.elasticsearch.server@9.2.0/org.elasticsearch.action.search.QueryPhaseResultConsumer.reduce(QueryPhaseResultConsumer.java:250)
	at org.elasticsearch.server@9.2.0/org.elasticsearch.action.search.FetchSearchPhase.innerRun(FetchSearchPhase.java:96)
	at org.elasticsearch.server@9.2.0/org.elasticsearch.action.search.FetchSearchPhase$1.doRun(FetchSearchPhase.java:83)

Reproduce with:

{
  "size": 0,
  "aggs": {
    "by_birth_year": {
      "filter": {
        "term": {
          "gender": "M"
        }
      },
      "aggs": {
        "sum_languages": {
          "sum": {
            "field": "languages"
          }
        },
        "squared": {
          "bucket_script": {
            "buckets_path": {
              "sum_languages": "sum_languages"
            },
            "script": "params.sum_languages * params.sum_languages"
          }
        }
      }
    }
  }
}

Metadata

Metadata

Assignees

Labels

:Analytics/AggregationsAggregations>bugTeam:AnalyticsMeta label for analytical engine team (ESQL/Aggs/Geo)low-riskAn open issue or test failure that is a low risk to future releases

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions