Fixed Duplicate key error while following

Affected version
1.5.21

PaulB

Active member
In Model/User.php, function follow, around line 1760:

The ordering of beginTransaction and removeDuplicateFollowUserIds is wrong. Because removeDuplicateFollowUserIds is performed outside the transaction, a race condition occurs. If the user is experiencing internet connectivity issues and ends up sending multiple follow requests nearly simultaneously, the following can happen:

Code:
Zend_Db_Statement_Mysqli_Exception: Mysqli statement execute error : Duplicate entry '123-456' for key 'PRIMARY' - library/Zend/Db/Statement/Mysqli.php:214

To resolve this, beginTransaction needs to be called prior to removeDuplicateFollowUserIds.

Basic patch with minimal testing attached.
 

Attachments

  • BUG-xenforo-follow-race.diff
    752 bytes · Views: 4

XF Bug Bot

XenForo bug fixer bot
Staff member
Thank you for reporting this issue. It has now been resolved and we are aiming to include it in a future XF release (1.5.24).

Change log:
Attempt to avoid a duplicate key race condition when following a user.
Any changes made as a result of this issue being resolved may not be rolled out here until later.
 
Top