[MDEV-32853] InnoDB: WSREP: BF lock wait long indefinetely Created: 2023-11-21 Updated: 2023-11-21 |
|
| Status: | Open |
| Project: | MariaDB Server |
| Component/s: | Galera |
| Affects Version/s: | 10.5.22 |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major |
| Reporter: | Cyprien Nicolas | Assignee: | Unassigned |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Environment: |
Debian Bullseye 11.8 |
||
| Description |
|
Hi, The cluster was recently upgraded to 10.5.22 from mixed 10.5.17 and 10.5.19 versions. The node with pc.weight=0 seems to always trigger cluster-wide deadlocks (not often, but twice since yesterday). While running 10.5.19, that node triggered the innodb_fatal_wait_semaphore_threshold, and killed itself, allowing the cluster to recover and handle queries again, while the affected node restarted and resync itself. But since the 10.5.22, this watchdog is no longer triggered, and then it keeps waiting and logging every one or two seconds (the query has been edited), also notice the weird characters at the end of the log line :
This table has partitions and its primary key contains an auto_increment field along with the partition field. The "SHOW ENGINE INNODB STATUS" command gives this info about that transaction :
Sending a SIGTERM to mariadb won't stop the process, and the log line still repeats, but it allows the node to disconnect from the galera cluster, and the other node will handle writes. I guess the "TRX HAS BEEN WAITING 1291 SEC" should trigger some watchdog, but I can't find which one, and I'm not able to tell if this is some kind of regression from 10.5.19 where the innodb_fatal_wait_semaphore_threshold was triggered. I have found MDEV-30161 which is not implemented yet, I guess this could solve the current issue? I also saw MDEV-28180 but my wsrep_slave_threads is already set to 1 on our nodes, and people there seems to say it solve the issue for them. Reading the 10.5.23 release notes (released last week), I have not found any clue related to his behavior, but I might missed it. Another plan on our list is to use proxysql instead of haproxy to direct writes on the same tables on the same node, to reduce cluster-wide conflicts. I also can try to get stacktraces if the issue happens again, when the failing node will be re-added to the cluster and receive trafic. Thanks |