Skip to content

Bun: csv_data_load job stalls permanently on new-attribute upsert as non-super-user #1265

Open

Description

@kriszyp

Summary

Under the Bun runtime, csv_data_load and csv_file_load jobs intermittently transition to IN_PROGRESS but never reach a terminal status. The stall appears to be a general Bun csv-job issue, not limited to a specific role or operation type.

Evidence

Instance 1 — csv_data_load as non-SU (new attribute):

  • Run: 27394284006 / job 80958519370, shard 5/6 Bun
  • Job ID: bef99a07-87ba-4d01-9bdc-af1d25a37019, user: bulk_load_user (non-SU restricted role)
  • Payload: CSV upsert introducing a new attribute (new_attr)
  • Ran full 300-second ceiling; row never written (row_count: 29)

Instance 2 — csv_file_load as admin (super-user):

  • Run: 27414686473 / job 81024621348, shard 3/6 Bun
  • Job ID: e784fc9e-2bd6-4fdd-aa22-ff00486d7f12, user: admin (super-user)
  • Type: csv_file_load without database param
  • Ran 30-second polling ceiling; job still IN_PROGRESS

Both instances: job is created, transitions to IN_PROGRESS, but never completes. Equivalent operations complete in 1–3s under Node.js. The stall is not limited to non-super-user roles or new-attribute introductions — instance 2 is admin + file load.

Hypothesis

The Bun runtime has a difference in async scheduling or I/O behavior in the csv job worker path that causes the job to hang. The specific trigger may be in the file-read or table-write pipeline when executed under Bun's event loop. Worth inspecting whether there is any await / callback / stream handling in the csv job worker that behaves differently under Bun vs Node.js.

Current workaround

The csv_data_load new-attribute upsert tests are skipped on Bun via the bunSkip pattern in #1262 with a TODO(harper#1265) pointing here. The csv_file_load test failure (instance 2) is still being assessed (flake vs. systematic).

Reproduction hint

Run the integration test suite under Bun. Any test that initiates a csv_data_load or csv_file_load job and polls for completion may trigger this stall. Monitor get_job for the resulting job entry — it should stall IN_PROGRESS.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:ciCI workflows, GitHub Actions, release automationtestsMostly focused on tests, testing infrastructure, etc.

    Type

    Fields

    Priority

    P2

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions