viirya opened a new pull request, #19:
URL: https://github.com/apache/spark-connect-gateway/pull/19

   ### What changes were proposed in this pull request?
   
   Two binaries under `crates/proxy/examples/` assert end-to-end invariants, 
but were
   only ever *compiled* by `cargo clippy --all-targets` and never executed — so 
the
   behaviour they cover had no CI verification at all:
   
   - **`drain_smoke`** — exercises the two-step drain the gateway performs on 
SIGTERM
     (in-process, triggered through the same channel `shutdown_signal()` uses).
     Asserts that `/readyz` flips to not-ready when the drain starts, that 
in-flight
     streams keep receiving messages through the drain, and that the gateway 
shuts
     down cleanly afterwards. **No external dependencies.**
   - **`ha_smoke`** — spawns two real `SparkConnectProxy` gateways sharing one 
Redis
     affinity store and one static pool of two fake backends, then verifies 
three
     multi-replica HA properties: shared affinity state across replicas, that
     failover preserves an existing session binding, and that the op-id reverse 
index
     resolves across replicas. Needs a Redis (`REDIS_URL`, default
     `redis://127.0.0.1:6399`).
   
   Both signal failure by panicking on an assert, so a plain `cargo run` is a
   sufficient CI check. This adds them as two steps in the `integration` job, 
plus a
   Redis **service container** on `:6399` for `ha_smoke`.
   
   The Redis *tests* in that job are unaffected — they start their own container
   through `testcontainers` and do not use the service container.
   
   The kind/Helm end-to-end walkthroughs under `deploy/examples/` remain out of
   scope; they need a much heavier harness and are better suited to a separate
   scheduled workflow.
   
   ### Why are the changes needed?
   
   Graceful drain and multi-replica HA are both production behaviours — the 
first is
   what makes a rolling restart not drop in-flight queries, the second is what 
makes
   running more than one replica correct. Neither had any automated coverage, 
even
   though the code to verify them was already in the tree.
   
   ### Does this PR introduce _any_ user-facing change?
   
   No.
   
   ### How was this patch tested?
   
   Locally, with a Redis on `:6399` standing in for the service container, 
running
   all four steps of the job in sequence: the testcontainers Redis tests still 
pass
   (4 + 5), the tracing test passes, and both smoke examples exit 0 — "all drain
   invariants passed" and "all HA invariants passed". This PR's own CI run 
exercises
   the new steps and the service container.
   
   ### Was this patch authored or co-authored using generative AI tooling?
   
   Yes, co-authored with Claude Code.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to