Does anyone have any experience with wpforo creating DB deadlocks? Specifically I'm running into it deadlocking on the wpforo_phrases table.
Its trying to run an INSERT IGNORE, I get the error 'Waiting for table level lock' and then it continues to run, quickly filling up DB connections. I have no other code interacting with the wpforo_phrases table, just the plugin. I do have the polls addon, no other addons.
Any insight would be awesome. I've repaired and recreated the table. It seems to happen at random times , but once the first deadlock occurs, it spirals quickly.
It is not frequent and I can usually solve be completely stopping and starting my DB server, but thats far from ideal
If it helps - I've isolated it to this section of code in the Phrases.php file.
if( $langid ) {
foreach( $vals as $val ) {
if( isset( $val['tag'] ) && $val['tag'] == 'PHRASE' && isset( $val['attributes']['NAME'] ) && trim( (string) $val['attributes']['NAME'] ) && isset( $val['value'] ) && trim( (string) $val['value'] ) ) {
$sql = "INSERT IGNORE INTO `" . WPF()->tables->phrases . "`
(`phraseid`, `langid`, `phrase_key`, `phrase_value`)
VALUES( NULL,
'" . intval( $langid ) . "',
'" . esc_sql( stripslashes( htmlspecialchars_decode( (string) $val['attributes']['NAME'], ENT_QUOTES ) ) ) . "',
'" . esc_sql( stripslashes( htmlspecialchars_decode( (string) $val['value'], ENT_QUOTES ) ) ) . "')";
WPF()->db->query( $sql );
}
}
return $langid;
}
Nobody has reported something like this. Usually it is some plugin, hard to find. Very hard. I had one issue like that and since it happened once in a while, it was impossible to find the cause.
Luckily someone reported also the same with a plugin i used and after removing it, the issue is gone.
Also is your DB engine version updated?