V4.3.5
Version information
Release date: August 15, 2025
Version: V4.3.5
RPM version: obproxy-ce-4.3.5.0-3
Version overview
ODP 4.3.5 is the latest release in the ODP 4.3.x series, recommended for POC testing and production on-premises. It adds String-type routing, partition-key equality derivation, multi-statement transaction routing, month function routing, and related capabilities; supports a session connection pool to improve short-connection performance; refines error logging when connection limits are exceeded; optimizes single-partition table detection for the RPC proxy to improve OBKV routing; adds multiple show commands for internal objects; and improves monitoring and operability.
Key features
SQL proxy
Routing improvements
String-type routing
OceanBase Database added the String type with key, range columns, and list columns partitioning. ODP V4.3.5 supports accurate routing for String partition keys.
Partition-key column equality derivation
Previously, ODP only parsed explicit partition conditions such as
C1 = xxx(C1 is the partition key) and could not derive equalities likeC1 = C2 AND C2 = xxx, causing random routing. V4.3.5 derives column equalities so such statements obtain the correct partition key values and partitions.Multi-statement transaction routing
For multi-statement transactions started with
BEGIN/START TRANSACTION(for example,begin; ...; ...; commit), routing follows the first SQL statement.monthfunction routingODP V4.3.4 added routing when partition keys are function expressions. V4.3.5 adds accurate routing for the
monthfunction.Improved routing when hint parsing fails
Complex hints such as
/*+index(db.lna_n_biz_lock_080 primary) */could prevent ODP from obtaining routing information. V4.3.5 skips hints and continues parsing partition information for accurate routing.
Session connection pool
ODP performs well with long-lived connections but poorly with short connections, mainly because:
ODP and OBServer frequently open and close TCP connections.
Database and system variable synchronization when ODP switches OBServer routes.
V4.3.5 adds a session-level connection pool to reduce accept and related overhead and connection latency in short-connection scenarios.
Usability improvements
OceanBase can enforce maximum connections through multiple parameters and system variables; when limits are exceeded ODP previously logged only too many connections. V4.3.5 refines messages in obproxy_diagnosis.log and obproxy_error.log to identify which limit was hit.
RPC proxy
Internal object administration commands
RPC routing relies on many internal caches; stale or incorrect cache content can cause stability issues, while log-based inspection is slow and often unsuitable in production. V4.3.5 exposes common OBKV objects (rpcRequest, tabletGroup, globalIndex, QuerySync, TabletLS, Ctx, and more) through show commands.
Usability improvements
The Prometheus port adds RPC connection and net_entry statistics to improve RPC proxy monitoring.
Single-partition table detection
ODP used part_num = 1 to classify non-partitioned vs single-partition tables but could not distinguish them. After partition splits, new tables are often single-partition while ODP might treat them as non-partitioned. Non-partitioned and single-partition tables use different tablet_id values; in OBKV, missing tablet_id (non-partitioned defaults to 0) can cause OceanBase errors. V4.3.5 retries using OB_SCHEMA_ERROR feedback and re-routes as a single-partition table when a single-partition table was misclassified as non-partitioned.
Compatibility changes
Command changes
Command |
Change type |
Description |
|---|---|---|
| show proxyroute partition | New | Shows partition-related information; supports manual cleanup. |
| show proxyroute globalindex | New | Shows OBKV global index information in ODP; supports manual cleanup. |
| show proxyroute tablegroup | New | Shows multi-column-family request information; supports manual cleanup. |
| show proxyroute queryasync | New | Shows OBKV asynchronous query information in ODP; supports manual cleanup. |
| show proxyroute tabletls [tablet_to_ls_num] | New | Shows ls_id information (LSOp only for now); supports manual cleanup. tablet_to_ls_num limits rows returned. |
| show proxyroute rpcctx | New | Shows users logged in through the RPC port; cleanup not supported. Use to verify distributed capability for a user. |
| show proxysm rpc [sm_id] | New | Shows unreleased ObRpcRequestSM states; optional sm_id filters one SM. SMs are released after requests complete.
NoteSet |
| show proxyrpc thread | New | Shows per-thread request handling. |
| show proxyrpc requeststat [request_type] | New | Shows per-request states per thread; optional request_type filters one type. |
| show globalsession | New | Shows session pool statistics. |
| show globalsession attribute [all | '{db_key}'] | New | Shows detailed pooled session information for all tenants or one tenant. |
| kill globalsession 'dbkey' [ss_id] | New | Terminates pooled sessions. |
Parameter changes
Parameter |
Change type |
Description |
|---|---|---|
| connection_pool_mode | New | Enables the connection pool; only session-level pooling is supported. |
| session_pool_idle_timeout | New | Maximum idle time a session may remain in the pool after being returned. |
| session_pool_reset_interval | New | Interval for sending COM_RESET_CONNECTION to sessions in the pool that have not been reset. After reset, ODP does not send COM_RESET_CONNECTION again to those sessions. |
| session_pool_stat_log_interval | New | Interval for session pool statistics logging. |
| rpc_enable_requestsm_info | New | Controls whether RPC request information is printed. |
Supported OceanBase Database versions
OceanBase Database 4.x, 3.x, and earlier are supported:
For 3.x and earlier, use ODP 3.x.
For 4.x, use ODP V4.3.5.
Bug fixes
Fixed core when ODP hit out-of-memory handling OBServer responses and triggered connection cleanup.
Fixed error
-4002after drop/recreate of a same-name table with a different partition type.Fixed memory leak in SQLMonitorInfo.
Fixed error
4723on range-partitioned tables after partition structure changes.Fixed long-lived downstream connections after an OBI instance was dropped.
Failed hot-upgrade scenarios.
Fixed routing to a new zone when switching designated zones if the tenant had no traffic and cache was stale.
Fixed new machines in a designated zone staying blocklisted after replacement when read-only endpoints used replica-based routing.
Fixed
getOperationRowerrors when LSOP built batch tableQuery, fetched all columns, and split across multiple LSOP requests.Fixed go client
TestPrimaryAndGlobalIndexNoPartitionreturning-4016through ODP.Fixed excessive
OB_RPC_TABLE_IGNORE_FIELDmemory use.Fixed sub-partition requests not being cleaned when OBServer could not respond and ODP could not read results, blocking memory reclamation.
Fixed core when OBServer returned malformed responses in two-in-one write mode.
Fixed error
-4103when OceanBase 2.0 protocol was used, memory allocation failed, and parsing fell back to MySQL protocol incorrectly.Fixed missing diagnosis logs when connection whitelist checks failed.
Fixed error
-4002after split when a non-partitioned table became partitioned and ODP misidentified the table type.
