rajvarun77 opened a new pull request, #3330: URL: https://github.com/apache/brpc/pull/3330
Implements a MySQL client protocol for brpc built on a **clean-room** authentication codec (no GPL lineage), addressing #2093. ### Scope - **Clean-room connection-phase auth** — `mysql_native_password` and `caching_sha2_password` (fast-auth + full-auth RSA / secure-transport cleartext), derived from the public MySQL protocol documentation. - **COM_QUERY text protocol** — OK / ERR / EOF / text result-set parsing. - **Interactive transactions** via connection affinity (reserve/use a pooled connection; SINGLE rejected, auto-rollback on drop). - **Prepared statements** (binary protocol) with per-connection `stmt_id` caching and transparent re-prepare when a statement lands on a fresh connection. ### Shared-core footprint (kept redis-like / minimal) The only generic `Controller`/`Socket` additions are: a socket reserve/use hook and `fd_version` (ABA guard) for transaction/prepared-statement affinity, an auth empty-write guard for MySQL's server-greets-first handshake, and protocol registration. **No protocol-specific type lives on the shared `Controller`** (the prepared-statement pointer rides a generic opaque per-RPC slot). ### Tests Clean-room integration tests (transactions, prepared statements, pooled-connection concurrency, connection-type boundary) run against a self-spawned `mysqld`; **19/19 passing locally**. Concurrency coverage includes per-transaction connection pinning under overlap, abort/auto-rollback under contention, and prepared re-prepare when a connection is stolen by a transaction. 🤖 Generated with [Claude Code](https://claude.com/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]
