On 1/24/25 14:50, Phil Stracchino wrote:
On 1/24/25 14:43, Josh Fisher via Bacula-users wrote:
On 1/24/25 13:22, Bill Arlofski via Bacula-users wrote:
On 1/24/25 10:17 AM, Phil Stracchino wrote:
this huge atomic write *also* makes it incompatible with Galera 3
clusters.)
Are you sure about that? The only thing attribute spooling is doing is
delaying execution of the SQL statements generated by the job. Why would
Galera care when the SQL was executed?
Josh,
The problem is that except on small jobs, the current implementation
of attribute spooling in Bacula's MySQL driver results in a batch
write that exceeds Galera's hard limit of 128K rows in a single
transaction.
I see, although recent versions do not have that hard row limit. The
global variable wsrep_max_ws_rows is used to set the write set row limit
in newer versions and defaults to unlimited. This makes sense, because
synchronization is "virtually" row-level anyway, regardless of
transaction size. I assume that means that cluster replication is still
occurring row by row, even during a transaction. From MariaDB 10.1.17 it
should default to unlimited write set rows and a max 16 GB write set
size (wsrep_max_ws_size).
One *fix* for this would be to modify the current attribute spooling
code so that when despooling, it loops through its cache no more than,
say, 125K records at a time. That would avoid the problem.
I saw signs in the code when I last looked at it that *appeared* to be
an attempt to set such a maximum row batch limit, but that limit
doesn't appear to actually work.
_______________________________________________
Bacula-users mailing list
Bacula-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bacula-users