Подозирам, че това е краен случай, който не си струва да се прави по-ефективен. Имайте предвид, че трябваше да получите 3 сесии, опитвайки се да вземете един и същи ред - рядко се случва. И вие направихте ОБРАЩАНЕ - също рядко. Така че възникналата задънена улица е прекомерна, но не си струва да се коригира. Поради тази причина човек трябва да бъде подготвен да се справя със задръстванията навсякъде.
FYI, ако това бяха 3 възела от клъстер на Galera, щеше да има грешки при COMMIT
с които кодът ще трябва да се справи. Подозирам, че има още повече комбинации от странни неща, ако приложите тази транзакция (с връщане назад или ангажимент) няколко пъти към множество възли.
Сега към въпроса ви... Вероятно блокирането не се е случило, защото една от нишките е получила изключителната ключалка, а другата е била ударена с „wait“ вместо „deadlock“.