[Bug 291561] databases/galera26 : FreeBSD 15.0 (really OpenZFS 2.4.x) causes Galera state transfer failures

From: <bugzilla-noreply_at_freebsd.org>
Date: Wed, 10 Dec 2025 21:30:32 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=291561

            Bug ID: 291561
           Summary: databases/galera26 : FreeBSD 15.0 (really OpenZFS
                    2.4.x) causes Galera state transfer failures
           Product: Ports & Packages
           Version: Latest
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: Individual Port(s)
          Assignee: ports-bugs@FreeBSD.org
          Reporter: mandrews@bit0.com
                CC: devel@galeracluster.com
                CC: devel@galeracluster.com
             Flags: maintainer-feedback?(devel@galeracluster.com)

After upgrading to FreeBSD 15.0, MariaDB 11.8.5 and Galera 26.4.22 will not
start a state transfer for a new node, or will crash during a state transfer
from an existing node.

For the existing node case:

During a transfer (using mariabackup in my case) it buffers new transactions in
memory, then starts writing to a file when the buffer fills up.  That looks
like this in the logs:

2025-12-01 21:31:31 0 [Note] WSREP: Preallocating 134217728/134217728 bytes in
'/var/db/mysql/gcache.page.000000'...
2025-12-01 21:31:31 0 [Note] WSREP: Created page
/var/db/mysql/gcache.page.000000 of size 134217696 bytes
2025-12-01 21:31:40 0 [Note] WSREP: Preallocating 134217728/134217728 bytes in
'/var/db/mysql/gcache.page.000001'...
2025-12-01 21:31:41 0 [Note] WSREP: Created page
/var/db/mysql/gcache.page.000001 of size 134217696 bytes

On 15 there is a crash instead:

2025-12-01 21:06:29 0 [ERROR] WSREP: Cannot create new cache page: File
preallocation failed: System error: 45 (Operation not supported)
         at
/wrkdirs/usr/ports/databases/galera26/work/galera-mariadb-26.4.22/galerautils/src/gu_fdesc.cpp:prealloc():254
2025-12-01 21:06:29 0 [ERROR] WSREP:
/wrkdirs/usr/ports/databases/galera26/work/galera-mariadb-26.4.22/gcs/src/gcs_defrag.cpp:gcs_defrag_handle_frag():120:
Could not allocate memory for new action of size: 7376024
2025-12-01 21:06:29 0 [ERROR] WSREP:
/wrkdirs/usr/ports/databases/galera26/work/galera-mariadb-26.4.22/gcs/src/gcs_core.cpp:core_handle_act_msg():702:
Failed to handle action fragment: -12 (Cannot allocate memory)

If I wipe /var/db/mysql and try to start fresh, I get the exact same "File
preallocation failed: System error: 45 (Operation not supported)" error almost
immediately.

Digging into galerautils/src/gu_fdesc.cpp:prealloc():254
Then backing up to line 247, I see this check for the result code of
posix_fallocate():

           if ((EINVAL == errno || ENOSYS == errno) && start >= 0 && diff > 0)

It appears with the newer OpenZFS 2.4.0 in FreeBSD 15.0, posix_fallocate was
changed to return EOPNOTSUPP instead, so that line should probably check all
three.  Part of the relevant ZFS change seems to be
https://github.com/openzfs/zfs/commit/478b09577a4799893072ce8c3614b6aac30dc7c4 

I haven't made a bug report upstream yet, but in the short term, adding a patch
to ports might help?

-- 
You are receiving this mail because:
You are the assignee for the bug.