Aaron Schulz has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/148444

Change subject: Use GET_LOCK to try to reduce INSERT deadlocks
......................................................................

Use GET_LOCK to try to reduce INSERT deadlocks

bug: 51410
Change-Id: Iae9a18b0c30b47b7db4a0a75d3f6d3293d27f67c
---
M utils/MessageGroupStats.php
1 file changed, 11 insertions(+), 6 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Translate 
refs/changes/44/148444/1

diff --git a/utils/MessageGroupStats.php b/utils/MessageGroupStats.php
index d84fb7d..621aac1 100644
--- a/utils/MessageGroupStats.php
+++ b/utils/MessageGroupStats.php
@@ -358,12 +358,17 @@
                );
 
                $dbw = wfGetDB( DB_MASTER );
-               $dbw->insert(
-                       self::TABLE,
-                       $data,
-                       __METHOD__,
-                       array( 'IGNORE' )
-               );
+               // Try to avoid deadlocks with S->X lock upgrades in MySQL
+               $key = __CLASS__ . ":insert:$id-$code";
+               if ( $dbw->lock( $key, __METHOD__, 1 ) ) {
+                       $dbw->insert(
+                               self::TABLE,
+                               $data,
+                               __METHOD__,
+                               array( 'IGNORE' )
+                       );
+                       $dbw->unlock( $key );
+               }
 
                return $aggregates;
        }

-- 
To view, visit https://gerrit.wikimedia.org/r/148444
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Iae9a18b0c30b47b7db4a0a75d3f6d3293d27f67c
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Translate
Gerrit-Branch: master
Gerrit-Owner: Aaron Schulz <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to