Skip to content

[Bug]: [Dataflow] [Java] MetricReport StringSet causes ClassCastException #32622

@lukemin89

Description

@lukemin89

What happened?

Issue: ClassCastException. Seems like Object set field in com.google.api.services.dataflow.model.MetricUpdate is List type, but trying to cast as Set causes the issue.
Version: 2.58.1
Language: Java

It causes MetricResults.allMetrics() fails, preventing us from scanning the metric results.

[2024-10-02, 02:36:50 KST] {pod.py:778} INFO - Container logs: Caused by: java.lang.ClassCastException: class java.util.ArrayList cannot be cast to class java.util.Set (java.util.ArrayList and java.util.Set are in module java.base of loader 'bootstrap')
[2024-10-02, 02:36:50 KST] {pod.py:778} INFO - Container logs: 	at org.apache.beam.runners.dataflow.DataflowMetrics$DataflowMetricResultExtractor.getStringSetValue(DataflowMetrics.java:194)
[2024-10-02, 02:36:50 KST] {pod.py:778} INFO - Container logs: 	at org.apache.beam.runners.dataflow.DataflowMetrics$DataflowMetricResultExtractor.addMetricResult(DataflowMetrics.java:168)
[2024-10-02, 02:36:50 KST] {pod.py:778} INFO - Container logs: 	at org.apache.beam.runners.dataflow.DataflowMetrics$DataflowMetricQueryResultsFactory.build(DataflowMetrics.java:382)
[2024-10-02, 02:36:50 KST] {pod.py:778} INFO - Container logs: 	at org.apache.beam.runners.dataflow.DataflowMetrics.populateMetricQueryResults(DataflowMetrics.java:96)
[2024-10-02, 02:36:50 KST] {pod.py:778} INFO - Container logs: 	at org.apache.beam.runners.dataflow.DataflowMetrics.queryMetrics(DataflowMetrics.java:114)
[2024-10-02, 02:36:50 KST] {pod.py:778} INFO - Container logs: 	at org.apache.beam.sdk.metrics.MetricResults.allMetrics(MetricResults.java:61)
[2024-10-02, 02:36:50 KST] {pod.py:778} INFO - Container logs: 	at ...MetricLogger.streamMetrics(MetricLogger.java:35)

Issue Priority

Priority: 1 (data loss / total loss of function)

Issue Components

  • Component: Python SDK
  • Component: Java SDK
  • Component: Go SDK
  • Component: Typescript SDK
  • Component: IO connector
  • Component: Beam YAML
  • Component: Beam examples
  • Component: Beam playground
  • Component: Beam katas
  • Component: Website
  • Component: Infrastructure
  • Component: Spark Runner
  • Component: Flink Runner
  • Component: Samza Runner
  • Component: Twister2 Runner
  • Component: Hazelcast Jet Runner
  • Component: Google Cloud Dataflow Runner

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions