Details
-
Task
-
Status: Stalled (View Workflow)
-
Major
-
Resolution: Unresolved
-
None
-
None
Description
Implement a connection management mechanism to Spider to make the connection handing easy.
- Each thread gets/returns connections from/to the connection manager. Allocation and deallocation of connections should be done inside the connection manager code.
- Each connection got from the manager should solely belong to a single thread. Note that, in the current implementation, a single connection is referenced by both ha_spider::conns and SPIDER_TRX::trx_conn_hash and this results in the heap-use-after-free (see linked issues) in many test cases.
- Spider 10.3-10.9 has two types of connections. One is for SQL and the other is for handler statements. The latter one has been deprecated from 10.7 and deleted by 10.10. So, we only implement the connection manager for SQL connections.
- For the ease of the development, I recommend creating a patch for 10.10 first and then backporting it to 10.3.
Attachments
Issue Links
- relates to
-
MDEV-27902 Spider: Crashes, asserts, hangs, memory corruptions and ASAN heap-use-after-free's
- Closed
-
MDEV-28352 Spider: heap-use-after-free in ha_spider::lock_tables(), heap freed by spider_commit()
- Closed
-
MDEV-28676 Spider: Got error 12701 when reading table (and possible/previous ASAN: heap-use-after-free in ha_spider::external_lock) when using HANDLER
- Closed
-
MDEV-28683 Spider: SIGSEGV in spider_db_direct_delete, SIGSEGV in spider_db_connect, ASAN: heap-use-after-free in spider_db_direct_delete
- Closed
-
MDEV-29962 SIGSEGV in ha_spider::lock_tables on BEGIN after table lock
- Closed