Skip to content

Bug triage results: 2026-08-31 #5601

Description

@andygrove

Triage pass over the open requires-triage queue, per the project Bug Triage Guide.

  • Date: 2026-08-31
  • Total issues processed: 77 (73 triaged, 4 skipped, 0 failed)
  • Type counts: 24 bugs, 49 enhancements
  • Priority counts applied: priority:critical 5, priority:high 2, priority:medium 13, priority:low 4
  • Guide: docs/source/contributor-guide/bug_triage.md

Labels have already been applied. A reviewer should spot-check the calls below and close this issue when satisfied; corrections should be made directly on the affected issue.

Note: where an issue already carried a priority label applied by its author, that label was left in place. Per the guide, this process adds a priority label to bugs only.

Bugs

priority:critical

  • Checked TIMESTAMP_MILLIS overflow for nested fields and nested-predicate scans is blocked on DataFusion nested-field pruning (#5553)
    • Area labels: area:scan
    • Rationale: nested-field and nested-predicate scans keep overflow-to-NULL where Spark's Math.multiplyExact throws, which is a silent wrong result under decision-tree step 1, even though the fix is blocked on upstream nested-field pruning.
  • Match Spark ObjectHashAggregate decimal AVG buffer semantics (#5509)
    • Area labels: area:aggregation
    • Rationale: grouped high-precision decimal AVG returns a different value from Spark with no error when Spark uses ObjectHashAggregateExec, a silent wrong result.
  • Match Spark ordering and rank semantics for floating values nested in arrays and structs (#5507)
    • Area labels: area:expressions
    • Rationale: nested -0.0/NaN comparison keys give different ORDER BY and RANK() output from Spark with no error, a silent wrong result.
  • Support Spark-compatible Unicode case-insensitive Parquet field matching (#5495)
    • Area labels: area:scan
    • Rationale: filed as a feature request, but the content is a correctness divergence — the native adapter's ASCII-only eq_ignore_ascii_case can miss a present physical column and return SQL NULL instead of the stored value under spark.sql.caseSensitive=false.
  • Date-to-timestamp casts can overflow or panic for wide dates (#5456)
    • Area labels: area:expressions
    • Rationale: unchecked multiplication wraps to a bogus timestamp in release builds where Spark throws, which is a silent wrong result; the second reproducer additionally panics.

priority:high

  • Native Azure store lets ambient AZURE_* environment variables override or corrupt explicit Hadoop auth config (#5542)
    • Area labels: area:scan
    • Rationale: ambient env credentials silently win over explicitly configured Hadoop auth, so Comet and Spark can resolve different identities for the same table; major functional breakage with a security dimension.
  • Iceberg native scan claims schemes it cannot execute; three scheme lists disagree (#5541)
    • Area labels: area:scan
    • Rationale: a gcs/abfs/abfss/wasb/wasbs Iceberg table passes validation, is claimed, and then every task dies with CometNativeException, while stock Spark reads it fine — major functional breakage on supported storage.

priority:medium

  • Fix remaining reported issues for arrays of map (#5544)
    • Area labels: area:expressions
    • Rationale: post-merge review of feat: support Map for CreateArray literal #5452 (merged) finds newly admitted complex literals and a deepNullable cast that changes Slice's nested map type while Slice still declares the original element type; a functional bug with a fallback workaround.
  • Iceberg native scan fails queries on tables whose column names are case-distinct to Java but not to Rust (#5540)
    • Area labels: area:scan
    • Rationale: Rust's newer Unicode data folds columns Java keeps distinct, so the query dies with _LEGACY_ERROR_TEMP_2093 — visible breakage with a fallback workaround.
  • Native Celeborn shuffle: validate_remote_schema rejects dictionary shapes the shuffle writer can emit (#5536)
    • Area labels: area:shuffle
    • Rationale: local and remote readers disagree about valid frames, so a frame that reads locally fails on Celeborn; a broken feature, and the path is not yet enabled end to end.
  • NativeUtil.getNextBatch leaks Arrow structs when importVector fails (#5534)
    • Area labels: area:ffi, area:shuffle
    • Rationale: the third exit from getNextBatch is unguarded, leaking C data and wrapper buffers on every native operator path; resource exhaustion rather than wrong results or an immediate crash.
  • unbase64 can fail on rows skipped by LIMIT and semi/anti joins (#5532)
    • Area labels: area:expressions
    • Rationale: batch-at-a-time evaluation turns a query Spark completes into a decode failure; a visible functional bug with an expression-level opt-out.
  • Native Celeborn shuffle: the installed Celeborn bootstrap hook can break client creation for the whole executor (#5529)
    • Area labels: area:shuffle
    • Rationale: a Comet-specific bootstrap failure is fatal to all Celeborn client creation on the executor; scoped medium because the native Celeborn path is not enabled end to end yet (see escalations).
  • Native Celeborn shuffle: reflectively replacing Celeborn's final fields can release push admission while payloads are in flight (#5528)
    • Area labels: area:shuffle
    • Rationale: reflective assignment to four private final Celeborn fields can release admission early; a broken feature on a path that is not yet enabled.
  • Native Celeborn shuffle: default maxFrameBytes of 64 MiB is unreachable, and a large row fails the whole job (#5527)
    • Area labels: area:shuffle
    • Rationale: the two shipped defaults cannot both hold, and the consequence for a large row is a failed job rather than a slow one; configurable, so a workaround exists.
  • Comet native broadcast fails under spark.kryo.registrationRequired=true (#5510)
    • Area labels: none
    • Rationale: Array[ChunkedByteBuffer] is unregistered so broadcast throws outright; broken feature, worked around by not setting that Kryo option.
  • Avoid object-store cache and registry collisions across backends and configurations (#5502)
    • Area labels: area:scan
    • Rationale: the cache key omits the backend, so a second URL can be served the first URL's store and the DataFusion registry can replace a mapping; a functional bug reachable only with mixed fs.comet.libhdfs.schemes routing.
  • Large-offset Arrow vectors from PyArrow UDFs cannot be serialized for broadcast or collect (#5488)
    • Area labels: area:ffi
    • Rationale: Utils.getFieldVector throws Unsupported Arrow Vector for serialize for representations Comet deliberately produces elsewhere; visible failure on a narrow path.
  • AQE + DPP + spark.comet.exec.transitionRevert.enabled fails with "SubqueryAdaptiveBroadcastExec does not support the execute() code path" (#5486)
    • Area labels: none
    • Rationale: reversion leaves the plan in a state where PlanAdaptiveDynamicPruningFilters no longer matches, failing the query; gated on a non-default config, so a workaround exists.
  • CometExecRule overwrites direct AQE LogicalQueryStage links during replanning (#5482)
    • Area labels: none
    • Rationale: unconditional restoration of originalPlan.logicalLink breaks the correspondence between the current physical root and the active logical stage; a planner defect with no reported wrong-result or crash path.

priority:low

  • Surface Parquet TIMESTAMP_MILLIS overflow as a Spark-faithful exception instead of a raw Arrow error (#5517)
    • Area labels: area:scan
    • Rationale: the value is correctly rejected, only the exception type and message diverge from Spark's ArithmeticException("long overflow"); error-fidelity, no wrong results.
  • Cancel background batch producers before collecting final plan metrics (#5504)
    • Area labels: area:ffi
    • Rationale: a drop-time metric guard can update counters after the final snapshot, so the reported metrics are incomplete; observability only.
  • Explain ObjectHashAggregate fallback when Comet shuffle is disabled (#5500)
    • Area labels: area:aggregation
    • Rationale: the shuffle guard bypasses withFallbackReason, so the strict check can report an unannotated decline; a diagnostics gap, not an execution defect.
  • Track provenance of fallback reasons copied through shared expression nodes (#5499)
    • Area labels: area:expressions
    • Rationale: a stale FALLBACK_REASONS tag on a shared node can satisfy reportUnexplainedFallback and hide an unexplained fallback; diagnostics only.

Enhancements

Escalations to consider

  • Native Azure store lets ambient AZURE_* environment variables override or corrupt explicit Hadoop auth config (#5542)
    • The guide lists security vulnerabilities under priority:critical. Ambient environment variables silently overriding an explicitly configured service principal (including the AKS workload-identity webhook case, where the configured client secret is dropped) is an identity-selection issue with a security dimension. Filed priority:high; a reviewer may want to escalate.
  • Date-to-timestamp casts can overflow or panic for wide dates (#5456)
    • Matches the guide's escalation trigger in reverse: it both panics (NaiveDate + TimeDelta overflowed) and, in release builds, silently wraps to a wrong timestamp. Filed priority:critical on the wrong-result path.
  • Native Celeborn shuffle: the installed Celeborn bootstrap hook can break client creation for the whole executor (#5529)
  • Checked TIMESTAMP_MILLIS overflow for nested fields and nested-predicate scans is blocked on DataFusion nested-field pruning (#5553)
    • Filed priority:critical on the silent-wrong-result rule, but the fix is blocked on upstream DataFusion nested-field pruning, so the priority reflects impact rather than actionability.

Skipped — needs more info

  • Bug triage results: 2026-08-24 (#5454)
    • A prior triage summary, not a bug or an enhancement, so no type label applies. requires-triage left in place. Note that pass applied no labels (its token lacked label write access), so its 28 issues were re-triaged in this pass. A reviewer should close it.
  • Bug triage results: 2026-08-17 (#5385)
    • A prior triage summary awaiting reviewer sign-off; no type label applies and requires-triage was left in place.
  • Bug triage results: 2026-08-11 (#5325)
    • A prior triage summary awaiting reviewer sign-off; no type label applies and requires-triage was left in place.
  • Bug triage results: 2026-08-03 (#5231)
    • A prior triage summary awaiting reviewer sign-off; no type label applies and requires-triage was left in place.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions