This is an automated email from the ASF dual-hosted git repository.

viirya pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/spark-connect-gateway.git


The following commit(s) were added to refs/heads/main by this push:
     new 3c61a47  [SPARK-60526] Use the Apache product name, fix docs that 
point outside the repository, and tidy the Dockerfile
3c61a47 is described below

commit 3c61a474ea79971fa6c15c01252c11f423995666
Author: Liang-Chi Hsieh <[email protected]>
AuthorDate: Tue Oct 27 13:42:55 2026 -0700

    [SPARK-60526] Use the Apache product name, fix docs that point outside the 
repository, and tidy the Dockerfile
    
    ### What changes were proposed in this pull request?
    
    Cleanups found while preparing the first release. None changes runtime
    behaviour.
    
    **Product name.** Use "Apache Spark Connect Gateway" in the two user-visible
    places that said "Open-source Spark Connect Gateway" -- the clap `about` 
text
    shown by `gateway --help` (`crates/gateway/src/main.rs`) and the Helm chart
    description (`deploy/helm/scg/Chart.yaml`) -- and as the README title, which
    was the bare repository name.
    
    **Links outside the repository.** `README.md` and `docs/architecture.md`
    linked to documents under `../plans/`, which is not part of this repository.
    Both now point at the SPIP that proposed the project,
    [SPARK-58455](https://issues.apache.org/jira/browse/SPARK-58455), which 
states
    the problem and links to the design document. In the README the two link
    definitions for those files are replaced by one for the SPIP, and the
    numbered links are renumbered in order of first use, so the text reads [1] 
to
    [4] from top to bottom (previously [5] appeared before [4]).
    
    The README also called the feature set "Production-ready"; it now just lists
    the features.
    
    **Dockerfile.**
    
    - The builder was `rust:1.82-slim` while `rust-toolchain.toml` pins 1.99.0,
      so rustup installed a second toolchain on every build. It is now
      `rust:1.99.0-slim-bookworm`; rustup only adds the `rustfmt` and `clippy`
      components `rust-toolchain.toml` lists.
    - The builder now names its Debian release, with a comment explaining why it
      must match the runtime image (see below).
    - `libssl-dev` and `pkg-config` are no longer installed. Nothing in the
      dependency graph uses `openssl-sys` -- TLS is rustls with ring -- and
      `pkg-config` was only there to locate libssl.
    
    ### Why are the changes needed?
    
    The ASF name for the product is "Apache Spark Connect Gateway", and it is 
what
    users see in `--help` and in the chart.
    
    The `../plans/` links are broken for every reader of the Apache repository 
and
    of a source release.
    
    The Debian pin matters because of how glibc versions work. The runtime stage
    is `distroless/cc-debian12` (bookworm), and the binary requires the glibc
    symbol versions of the glibc it was *linked* against in the builder. glibc 
is
    only backward compatible, so if the unpinned `rust:*-slim` tag moved to a 
newer
    Debian, the build could produce a binary that fails to start on the runtime
    image with ``version `GLIBC_x.yy' not found``. Pinning the builder to 
bookworm
    keeps both stages on the same release; the comment says to move them 
together.
    
    ### Does this PR introduce _any_ user-facing change?
    
    Yes, cosmetic only: `gateway --help` prints "Apache Spark Connect Gateway"
    instead of "Open-source Spark Connect Gateway", and the Helm chart 
description
    changes the same way. No configuration, API, or behaviour change.
    
    ### How was this patch tested?
    
    - `cargo fmt --all -- --check` and `cargo clippy --workspace --all-targets 
--
      -D warnings` -- clean.
    - `cargo test --workspace` -- 204 passed, 0 failed.
    - `gateway --help` prints the new name; `helm lint deploy/helm/scg` passes.
    - The image was built for linux/amd64 from this Dockerfile without
      `libssl-dev` or `pkg-config`, and the resulting image runs `gateway
      --version` and `gateway --help`.
    
    How the Dockerfile facts were established: `gateway` was built for
    linux/amd64 with the pinned toolchain on bookworm. `readelf -d` shows it 
needs
    only `libc.so.6`, `libm.so.6`, `libgcc_s.so.1` and `ld-linux-x86-64.so.2` 
(no
    libssl, no libstdc++), with `GLIBC_2.34` as the highest required symbol
    version against 2.36 in `distroless/cc-debian12`. The 
`rust:1.99.0-slim-bookworm`
    image ships `cargo`, `rustc` and `rust-std` only, which is why rustup still
    adds `rustfmt` and `clippy`.
    
    The e2e jobs build the image from this Dockerfile as well, so CI exercises 
it
    independently.
    
    ### Was this patch authored or co-authored using generative AI tooling?
    
    Yes, co-authored with Claude Code.
    
    Closes #53 from viirya/docs-01-release-cleanup.
    
    Authored-by: Liang-Chi Hsieh <[email protected]>
    Signed-off-by: Liang-Chi Hsieh <[email protected]>
---
 Dockerfile                 | 15 +++++++++++++--
 README.md                  | 17 ++++++++---------
 crates/gateway/src/main.rs |  2 +-
 deploy/helm/scg/Chart.yaml |  2 +-
 docs/architecture.md       |  9 +++------
 5 files changed, 26 insertions(+), 19 deletions(-)

diff --git a/Dockerfile b/Dockerfile
index f68c1b6..583f74b 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -13,10 +13,21 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-FROM rust:1.82-slim AS build
+# The builder's Rust version matches rust-toolchain.toml, so the build uses the
+# image's toolchain. rustup only adds the rustfmt and clippy components that
+# rust-toolchain.toml lists, rather than installing a second toolchain.
+#
+# Its Debian release must match the runtime image below (bookworm, i.e.
+# distroless *-debian12). The binary is linked against the builder's glibc and
+# requires the symbol versions found there. glibc is only backward compatible,
+# so a builder on a newer Debian can produce a binary that fails to start on
+# the runtime image with "version `GLIBC_x.yy' not found". Move both together.
+FROM rust:1.99.0-slim-bookworm AS build
 WORKDIR /src
+# protoc and the well-known-type .proto files, for crates/genproto. No OpenSSL:
+# TLS is rustls, so nothing links against libssl.
 RUN apt-get update && apt-get install -y --no-install-recommends \
-    protobuf-compiler libprotobuf-dev pkg-config libssl-dev && \
+    protobuf-compiler libprotobuf-dev && \
     rm -rf /var/lib/apt/lists/*
 COPY . .
 RUN cargo build --release --bin gateway
diff --git a/README.md b/README.md
index f789474..d0ef17c 100644
--- a/README.md
+++ b/README.md
@@ -1,11 +1,11 @@
-# spark-connect-gateway
+# Apache Spark Connect Gateway
 
 A stateless gRPC proxy that fronts a pool of [Apache Spark Connect][1]
 servers, providing session affinity, multi-tenant routing, auth, and
 observability features the open-source server intentionally leaves out.
 
 > Rust workspace built with [`tonic`](https://github.com/hyperium/tonic).
-> Production-ready surface: JWT/OIDC auth, K8s service-watch discovery,
+> Features: JWT/OIDC auth, K8s service-watch discovery,
 > Redis-backed multi-replica HA, per-tenant routing + rate limiting,
 > structured audit logging, Prometheus metrics, OpenTelemetry tracing,
 > Helm chart with sensible defaults.
@@ -30,9 +30,9 @@ observability features the open-source server intentionally 
leaves out.
 Open-source Spark Connect ships an excellent client-server protocol but
 deliberately leaves multi-instance coordination out of scope. For anything
 beyond a single Spark driver — multi-tenant platforms, HA, fleet-level
-observability — you need a layer in front of the servers. See
-[`OPEN_SOURCE_SPARK_CONNECT_GATEWAY_ANALYSIS.md`][3] in the plan repo for
-the full motivation and competitive landscape.
+observability — you need a layer in front of the servers. The SPIP that
+proposed this project, [SPARK-58455][2], explains the motivation in more
+detail and links to the design document.
 
 ## Why Rust?
 
@@ -41,7 +41,7 @@ the full motivation and competitive landscape.
   `ExecutePlan` streams.
 - `hyper` has best-in-class HTTP/2 trailing-header support, which gRPC
   requires.
-- Aligns with [`Kimahriman/spark-connect-proxy`][5], the only existing OSS
+- Aligns with [`Kimahriman/spark-connect-proxy`][3], the only existing OSS
   Spark-Connect-native proxy.
 
 ## Quick start
@@ -503,7 +503,6 @@ pull request you agree that your contribution is licensed 
under
 Apache 2.0.
 
 [1]: https://spark.apache.org/docs/latest/spark-connect-overview.html
-[2]: ../plans/IMPLEMENTATION-PLAN-OSS-Spark-Connect-Gateway.md
-[3]: ../plans/OPEN_SOURCE_SPARK_CONNECT_GATEWAY_ANALYSIS.md
+[2]: https://issues.apache.org/jira/browse/SPARK-58455
+[3]: https://github.com/Kimahriman/spark-connect-proxy
 [4]: https://github.com/apache/spark-kubernetes-operator
-[5]: https://github.com/Kimahriman/spark-connect-proxy
diff --git a/crates/gateway/src/main.rs b/crates/gateway/src/main.rs
index 5dfc42e..7ed21d6 100644
--- a/crates/gateway/src/main.rs
+++ b/crates/gateway/src/main.rs
@@ -58,7 +58,7 @@ use tonic::transport::Server;
 use tracing::{info, warn};
 
 #[derive(Parser, Debug)]
-#[command(version, about = "Open-source Spark Connect Gateway")]
+#[command(version, about = "Apache Spark Connect Gateway")]
 struct Args {
     /// Path to YAML config file.
     #[arg(long, default_value = "config.yaml")]
diff --git a/deploy/helm/scg/Chart.yaml b/deploy/helm/scg/Chart.yaml
index dd410e2..6f4393f 100644
--- a/deploy/helm/scg/Chart.yaml
+++ b/deploy/helm/scg/Chart.yaml
@@ -16,7 +16,7 @@
 apiVersion: v2
 name: scg
 description: |
-  Open-source Spark Connect Gateway — stateless gRPC proxy in front of a
+  Apache Spark Connect Gateway — stateless gRPC proxy in front of a
   pool of Apache Spark Connect servers. Provides session affinity,
   multi-tenant routing, JWT/OIDC authentication, Prometheus metrics, and
   OpenTelemetry trace export. Multi-replica HA via a shared Redis
diff --git a/docs/architecture.md b/docs/architecture.md
index c935d05..0e81741 100644
--- a/docs/architecture.md
+++ b/docs/architecture.md
@@ -548,9 +548,6 @@ Reading order, depending on what you're after:
 | Trace an audit event to its source | `crates/audit/src/lib.rs` — one method 
per event type |
 | Reproduce perf numbers | `crates/proxy/examples/load.rs` — six scenarios 
documented in [`perf-baseline.md`](perf-baseline.md) |
 
-The implementation plan that drove the build-out lives in the
-sibling repo at
-[`../plans/IMPLEMENTATION-PLAN-OSS-Spark-Connect-Gateway.md`](../../plans/IMPLEMENTATION-PLAN-OSS-Spark-Connect-Gateway.md)
-— it has the phase-by-phase task list and the rationale for
-several "why is it like this" decisions that aren't visible from
-the code alone.
+The project was proposed in the SPIP
+[SPARK-58455](https://issues.apache.org/jira/browse/SPARK-58455), which
+states the problem it solves and links to the design document.


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

Reply via email to