Don't use get_lock in the default implementation. #5
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #4
get_lock() changes behaviour in MySQL 5.7, which causes in turn causes
workers to lock more rows than necessary.
This patch changes the behavior of Data::Consumer::MySQL2 to claim rows
by doing SELECT followed by UPDATE, instead of two SELECTs (second
select was necessary to validate result of GET_LOCK() since it wasn't
atomic, and was a major change from Data::Consumer::MySQL).
SELECT followed by UPDATE allows two claim strategies to be implemented,
both relying on implicit database locks: atomic CAS (used by default)
and SELECT FOR UPDATE.