Skip to content

MDEV-40501: Assertion `info->type == READ_CACHE || info->type == WRITE_CACHE' failed in reinit_io_cache upon CHANGE MASTER - #5624

Open
hemantdangi-gc wants to merge 1 commit into
10.11from
10.11-MDEV-40501
Open

MDEV-40501: Assertion `info->type == READ_CACHE || info->type == WRITE_CACHE' failed in reinit_io_cache upon CHANGE MASTER#5624
hemantdangi-gc wants to merge 1 commit into
10.11from
10.11-MDEV-40501

Conversation

@hemantdangi-gc

Copy link
Copy Markdown
Contributor

Issue:
CHANGE MASTER ... FOR CHANNEL with a channel name within MAX_CONNECTION_NAME can still overflow the OS file name limit once escaped into the relay log file name. The failed open then leaves the relay log's index IO_CACHE uninitialized, but the CHANGE MASTER error-cleanup path unconditionally calls reset_logs() on it, hitting the assertion in reinit_io_cache().

Solution:
Guard reinit_io_cache() in find_log_pos() with my_b_inited() so an unopened index file returns a clean error instead of asserting. Raise a proper client-visible error from Relay_log_info::init() when the relay log fails to open, guarding the other error paths that raise a more generic error so they don't double-set the diagnostics area. Use MY_SAFE_PATH in open_index_file() so an over-length name fails deterministically instead of silently falling back to a mangled one.

…E_CACHE' failed in reinit_io_cache upon CHANGE MASTER

Issue:
CHANGE MASTER ... FOR CHANNEL with a channel name within
MAX_CONNECTION_NAME can still overflow the OS file name limit once
escaped into the relay log file name. The failed open then leaves
the relay log's index IO_CACHE uninitialized, but the CHANGE MASTER
error-cleanup path unconditionally calls reset_logs() on it, hitting
the assertion in reinit_io_cache().

Solution:
Guard reinit_io_cache() in find_log_pos() with my_b_inited() so an
unopened index file returns a clean error instead of asserting.
Raise a proper client-visible error from Relay_log_info::init() when
the relay log fails to open, guarding the other error paths that
raise a more generic error so they don't double-set the diagnostics
area. Use MY_SAFE_PATH in open_index_file() so an over-length name
fails deterministically instead of silently falling back to a
mangled one.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Development

Successfully merging this pull request may close these issues.

2 participants