V4.3.0 BP1 hotfix1
Version information
Release date: May 24, 2024
Version: V4.3.0 BP1 hotfix1
RPM version: obproxy-4.3.0.0-662024052217
Bug fixes
Fixed the issue where data fails to be imported by using obloader V4.3 in direct load mode.
Fixed the issue where verification fails because an invalid session ID is returned after the Java client initiates an asynchronous query.
Fixed the issue where no error code is returned after a cross-partition request times out.
Fixed the suspected memory leak issue of the OB_CONCURRENCY_OBJ_POOL module in ObTableLSOpRequest disaster recovery scenarios.
Fixed the memory leak issue of the OB_SE_ARRAY module in ObTableLSOpRequest disaster recovery scenarios.
V4.3.0 BP1
Version information
Release date: May 09, 2024
Version: V4.3.0 BP1
RPM version: obproxy-4.3.0.0-552024051315
Overview
The action to take after an OceanBase Database Proxy (ODP) memory overrun occurs is changed.
Prometheus monitoring for ODP is improved.
V4.3.0
Version information
Release date: April 08, 2024
Version: V4.3.0
RPM version: obproxy-4.3.0.0-252024040811
Overview
ODP V4.3.0 is a milestone version in the ODP V4.x series. In addition to the original SQL proxy service, ODP V4.3.0 further supports the OBProxy-OBKV (RPC) proxy service. With these two proxy services integrated, ODP V4.3.0 supports both SQL and RPC capabilities.
The SQL proxy supports routing for tables where SERIAL columns are used as partitioning keys, forwarding the
server_idandserver_uuidsystem variables to the binlog service node, compatibility with MySQL communication protocol command words, and other features to further improve MySQL compatibility. Moreover, multi-level parameters and compression protocol implementation are optimized to enhance product stability.The RPC proxy supports the ObTableLSOpRequest request type to improve the processing efficiency in batch mode. It also supports asynchronous query requests to optimize the streaming processing capability for large data sets.
Key features
Integration of SQL and RPC proxy services
OceanBase Database provides the OBKV module for users to access Table and HBase APIs in a simple and efficient way. To support OBKV, ODP provides an RPC service port, on the basis of the existing SQL proxy service, to provide proxy services for RPC requests. Specifically, ODP receives, processes, routes, and forwards RPC requests, and supports allowlist-based access and control on the number of concurrent connections. It also supports direct load through OBKV extension requests.
When ODP is started, both SQL and RPC service ports are enabled by default to provide services. The default SQL service port is 2883, and the default RPC service port is 2885. You can use -s or --rpc_listen_port to customize the RPC service port.
Multi-level configuration optimization
ODP provides an approach for multi-level configuration management. In addition to global parameters, ODP also provides parameters at three levels: cluster, tenant, and access address. Parameter settings at different levels separately take effect, thereby achieving configuration customization and isolation for different users without interfering with each other. Moreover, ODP supports parameter O&M operations, such as viewing and modifying parameters, to make parameter management easier.
ODP V4.3.0 optimizes configuration usage, memory, and performance to improve the user experience.
Support for asynchronous query requests
In earlier versions, ODP supports ObTableQueryAsync requests within a single partition, and blocks cross-partition asynchronous queries. However, all query requests of go-client are implemented based on asynchronous queries. ODP V4.3.0 now supports cross-partition asynchronous query requests. The new feature allows go-client to connect to ODP to process query requests.
Support for ObTableLSOpRequest requests
In OceanBase Database V4.2.1 BP4 and later, OBKV supports ObTableLSOpRequest, a new message format. ObTableLSOpRequest requests enable efficient operations and save resources as follows:
Log stream-level operation aggregation is implemented. OceanBase Database V4.x adopts an architecture where log streams are used to organize multiple replicas. The log stream-based granularity can achieve greater operation aggregation and save transaction overhead. One ObTableLSOpRequest request can enable the execution of only one transaction.
Fewer message types are required. Currently, all operations supported by OBKV can be passed through ObTableLSOpRequest requests. This facilitates batch operations, such as checkAndInsUp batch operations.
RPC transmission overhead is reduced for messages. This is implemented based on dictionary encoding of column names and format optimization of client objects.
The existing queryAndMute request type cannot fully meet this requirement. Therefore, ODP V4.3.0 provides a new single-operation format and a corresponding batch-operation format to carry the semantics of checkAndInsUp and support ObTableLSOpRequest requests.
Compatibility changes
Product behavioral changes
The startup option -s (--rpc_listen_port) is added, which is used to specify the RPC service port. If it is not specified, the RPC service listens on port 2885 by default.
Note
If the RPC service port is unavailable, ODP startup as a whole is blocked.
O&M command changes
The
show proxyconfigcommand supports therangefield that specifies the value range of a parameter, and theconfig_levelfield that specifies the minimum effective level supported by a parameter.The
show proxyconfig allcommand is provided for you to view the values of multi-level parameters in memory.
Parameter changes
| Parameter | Change type | Description |
|---|---|---|
| enable_obproxy_rpc_service | New | Specifies whether to enable the RPC service port. |
| rpc_listen_port | New | Specifies the RPC service listening port. |
| rpc_support_key_partition_shard_request | New | Specifies whether to send an RPC request that involves cross-partition queries to all partitions when the target table is a KEY-partitioned table. |
| rpc_srv_session_pool_inactive_timeout | New | Specifies the inactive timeout period for the server connection in the synchronization module. |
| rpc_enable_force_srv_black_list | New | Specifies whether to enable the blocklist for forced login authentication. |
| rpc_force_srv_black_list | New | Specifies the blocklist for forced login authentication. |
| rpc_enable_direct_expire_route_entry | New | Specifies whether to clean up expired routing information by force and not to use dirty data for asynchronous refresh. |
| rpc_enable_reroute | New | Specifies whether to enable RPC rerouting. |
| rpc_enable_congestion | New | Specifies whether to enable OBServer node blocklist processing for RPC requests. |
| rpc_enable_parallel_handler | New | Specifies whether to enable the asynchronous execution framework. |
| rpc_max_server_table_entry_num | New | Specifies the maximum number of connections in the backend connection pool of the RPC processing module. |
| rpc_max_request_batch_size | New | Specifies the maximum number of requests allowed in a single batch. |
| rpc_request_timeout | New | Specifies the default timeout period for sending a request, in us. The default value is 5s. |
| rpc_net_timeout_base | New | Specifies the benchmark sending rate, that is, the time (in ms) required for sending 1 byte of data. The default value is 5, which means 1 byte/5 ms. The minimum bandwidth is 200 Bps. If the parameter is set to a value lower than 200 Bps, the backend connection is abnormal and ODP removes the connection from the connection pool. |
| rpc_server_net_invalid_time_us | New | Specifies the interval (in us) for sending pending requests in the backend connection. The default value is 10s. |
| rpc_server_net_max_pending_request | New | Specifies the number of requests to be sent in the backend connection. When the number of requests reaches the specified value within rpc_server_net_invalid_time_us, ODP considers the backend connection invalid and removes the connection from the connection pool. |
| rpc_enable_global_index | New | Specifies whether to enable the support by RPC requests for global index routing. |
| rpc_enable_retry_request_info_log | New | Specifies whether to print RPC request retry information. |
| rpc_request_timeout_delta | New | Specifies the delta value of the timeout period for processing a request within ODP. The default value is 10ms. |
| rpc_period_task_interval | New | Specifies the interval for ODP to execute periodic RPC processing tasks. RPC processing tasks mainly clean up requests in an invalid state in the frontend and backend. |
| rpc_server_net_handler_expire_time | New | Specifies the timeout period for the backend connection to process a request. If no response is received within the specified period of time after a request is sent, ODP considers the connection abnormal and removes the connection from the connection pool. |
| rpc_server_entry_expire_time | New | Specifies the idle timeout period for the backend connection pool. If there is no backend connection within the specified period of time, the backend connection pool automatically exits. |
Supported OceanBase Database versions
ODP supports OceanBase Database V4.x and OceanBase Database V3.x and earlier. The recommended ODP version varies based on the OceanBase Database version.
For OceanBase Database V3.x and earlier, ODP V3.2.11 is recommended.
For OceanBase Database V4.x:
If new features are required, ODP V4.3.0 is recommended.
If new features are not required, ODP V4.2.1, which is a Long-Term Support (LTS) version, is recommended.
Bug fixes
Fixed the issue of ObLatch locking failures.
Fixed the issue where the login fails because configurations cannot be normally written due to concurrent parameter update and proxyro password update.