Skip to content

[codex] Harden Flight pyarrow startup readiness - #8

Merged
GTrunSec merged 1 commit into
mainfrom
codex/fix-flight-header-interop-timeout
Apr 13, 2026
Merged

GTrunSec merged 1 commit into
mainfrom
codex/fix-flight-header-interop-timeout

Conversation

@GTrunSec

Copy link
Copy Markdown
Collaborator

What changed

  • add Flight-level readiness probes for pyarrow-backed test servers instead of relying on raw TCP port readiness
  • probe the header interop server with the required authorization header and the handshake server with real authentication
  • keep the shared test support module load order aligned with the new readiness helpers

Why

GitHub CI could reach the pyarrow Flight server as soon as the port opened, while the server was still not ready to answer the first real Flight RPC. That made test/flight/header_interop.jl fail intermittently with DEADLINE_EXCEEDED on the first listactions call.

Impact

  • stabilizes Flight header interop on slower CI runners
  • keeps the fix scoped to test support without changing runtime Flight behavior
  • verifies the same startup path used by the header and handshake interop tests

Validation

  • cd /Users/guangtao/ghq/github.com/tao3k/xiuxian-artisan-workshop/.data/arrow-julia && julia -e 'using JuliaFormatter; format(".", verbose=true)'
  • direnv exec /Users/guangtao/ghq/github.com/tao3k/xiuxian-artisan-workshop bash -lc 'cd "$PRJ_DATA_HOME/arrow-julia" && julia --project=test -e "using Test, Arrow, gRPCClient, Tables; include(\"test/flight/support.jl\"); include(\"test/flight/header_interop.jl\")"'
  • direnv exec /Users/guangtao/ghq/github.com/tao3k/xiuxian-artisan-workshop bash -lc 'cd "$PRJ_DATA_HOME/arrow-julia" && julia --project=test -e "using Test, Arrow, gRPCClient, Tables; include(\"test/flight/support.jl\"); for _ in 1:10; include(\"test/flight/header_interop.jl\"); end"'
  • direnv exec /Users/guangtao/ghq/github.com/tao3k/xiuxian-artisan-workshop bash -lc 'cd "$PRJ_DATA_HOME/arrow-julia" && julia --project=test -e "using Test, Arrow, gRPCClient, Tables; include(\"test/flight.jl\")"'
  • git -C /Users/guangtao/ghq/github.com/tao3k/xiuxian-artisan-workshop/.data/arrow-julia diff --check -- test/flight/support.jl test/flight/support/grpc.jl test/flight/support/python_servers.jl

@GTrunSec
GTrunSec force-pushed the codex/fix-flight-header-interop-timeout branch 3 times, most recently from c6962a7 to d200419 Compare April 12, 2026 22:46
@GTrunSec

Copy link
Copy Markdown
Collaborator Author

Julia ecosystem is hard.

@GTrunSec
GTrunSec force-pushed the codex/fix-flight-header-interop-timeout branch from 6296555 to 9dd9875 Compare April 13, 2026 03:04
@GTrunSec
GTrunSec marked this pull request as ready for review April 13, 2026 03:05
@GTrunSec
GTrunSec merged commit e352437 into main Apr 13, 2026
78 checks passed
@GTrunSec
GTrunSec deleted the codex/fix-flight-header-interop-timeout branch April 13, 2026 06:07
GTrunSec pushed a commit that referenced this pull request Sep 17, 2026
…uffers findings

- #3: OwnerRegion carries @atomic closed; close!(region) marks it and runs
  the root's finalizers now (mmap unmaps eagerly — the Windows
  delete-a-mapped-file case; a foreign C-data root runs its release
  callback). Every raw access flows through sliceptr, whose monotonic
  check turns use-after-close into InvalidStateException. Idempotent;
  concurrent-with-close access remains the caller's contract, as with
  Base.close on an IO. Pinned in core tests; the facade will surface an
  Arrow.close!(::Table) wrapper and docs blurb.
- #8: the C data entrypoints are trim-compiled and gated — the workload
  exports, imports, validates, releases through close!, and reaps under
  --trim=safe with zero verifier errors. Getting there devirtualized the
  adapter: formatstring_of and _validate_advisory_values_of ladders,
  kwcall-free _arraydata construction, Val-literal field stores, a
  single-assignment _newroot (boxed captures are trim-rejected), and
  concretely-typed release claim slots.
- #10: the experimental V4 compression refusal is reworded as permanent
  policy (superseded by V5 BodyCompression in 2020), not prove-out scoping.
- #1/#7 research recorded in docs/dev/research-flatbuffers-cdata.md:
  vendored-FlatBuffers assessment (keep vendoring for 3.0; extraction to a
  FlatBuffersGen.jl is the post-3.0 path; upstream is dormant and
  architecturally incompatible) and the C-data PR landscape (#561/#594/
  #607-stack) with an adoption and engagement plan. The runtime's three
  dead Go-port carryovers (reset! with its emtpy! typo, union! on
  immutable tables, bytevector off-by-one) are deleted, and vtableEqual
  no longer allocates an IOBuffer per vtable slot on every endobject!.

Gates: Pkg.test green, trim 0 errors, corpus 275/0/36, oracle 170/0/43.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant