Skip to content

[Rust-dataplane] Rust backend-handshake retry path must be reachable from production #1353

Open

Description

@bb7133

Migrated from bb7133/tiproxy#189. Original author: wjhuang2016; created: 2026-09-02T12:43:07Z; source body SHA-256: e54333d1b61e8841567f15234842840ae4d2f90259b55d93299b55393333191b.

Rust dataplane rewrite parity/functional RED

  • Snapshot commit: 60efdf5e6e8226423df85033534ad748ccb129db
  • Run: run.tiproxy-rust-dataplane.handshake-retry-unreachable.20260902.RED

Problem

Go HandleHandshakeErr can return true and reconnect backend. Rust has RouteEngine::reacquire_after_handshake and AuthRelay ReconnectBackend, but production never calls reacquire_after_handshake and always sets handler_reconnect false.

Claim

when a custom Go handshake handler approves retry, Rust must have a production-reachable path to reconnect/retry the backend handshake.

Source anchors

  • rust/crates/dataplane/src/route.rs:474 reacquire_after_handshake
  • rust/crates/dataplane/src/session_engine.rs:1993 handler_reconnect: false
  • rust/crates/session-core/src/auth.rs ReconnectBackend tests

Boundary

  • Before: retry machinery exists but is unreachable from production
  • After: production can invoke reacquire_after_handshake / handler_reconnect

Local evidence

  • run.tiproxy-rust-dataplane.handshake-retry-unreachable.20260902.RED

Activity

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

    migration:bb7133-tiproxyMigrated from bb7133/tiproxy with preserved provenance

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions