mirror of
https://github.com/MariaDB/server.git
synced 2026-10-23 18:49:29 +03:00
Failure: - Filesystem flush before transfer only checks symlinks directly under the data directory, missing a per-table DATA/INDEX DIRECTORY symlink one level deeper (MyISAM, Aria), and missing InnoDB's per-table DATA DIRECTORY entirely, since that uses a '.isl' text file, not a symlink. - The database directory transfer recreates symlinks as symlinks. The joiner's rsync daemon cannot keep an absolute symlink target as-is, so a MyISAM or Aria table placed by DATA DIRECTORY or INDEX DIRECTORY comes out unreadable after the SST. Fix: - Extend the flush's symlink search to two levels deep, and add a scan for '.isl' files, flushing the filesystem each one points to. - Transfer the database directories with --copy-links instead of --links, so a table file reached through a symlink is copied by content instead of recreated as a broken symlink. Test: - MDEV-40727.test creates an Aria table with DATA DIRECTORY and INDEX DIRECTORY and an InnoDB table with DATA DIRECTORY, forces a full SST, then checks the donor's log for the flush of both external directories and checksums every table in database test between the two nodes. Assisted-by: https://mariadb.org/governance/governance-ai-policy/