Дать двум проверяющим читать одну версию карточки

Ответы получены от MySQL через X Protocol. Учебные коллекции после чтения удалены.

Наблюдаемый результат программы
НаблюдениеРезультат
Версия для проверяющего A1
Версия для проверяющего B1
Запись запрещена при двух shared-lockда
После commit A блокировку ещё держит Bда
После rollback B сохранена версия2
Сохранённый статусapproved
Документы и дополнительные наблюдения
{
    "reader_a": {
        "_id": "CARD-1",
        "status": "review",
        "version": 1
    },
    "reader_b": {
        "_id": "CARD-1",
        "status": "review",
        "version": 1
    },
    "both_shared_exception_chain": [
        {
            "class": "mysql_xdevapi\\Exception",
            "code": 10000,
            "message": "[HY000] Couldn't fetch data"
        },
        {
            "class": "mysql_xdevapi\\Exception",
            "code": 3572,
            "message": "[HY000] Statement aborted because lock(s) could not be acquired immediately and NOWAIT is set."
        }
    ],
    "remaining_shared_exception_chain": [
        {
            "class": "mysql_xdevapi\\Exception",
            "code": 10000,
            "message": "[HY000] Couldn't fetch data"
        },
        {
            "class": "mysql_xdevapi\\Exception",
            "code": 3572,
            "message": "[HY000] Statement aborted because lock(s) could not be acquired immediately and NOWAIT is set."
        }
    ],
    "exclusive_after_release": {
        "_id": "CARD-1",
        "status": "review",
        "version": 1
    },
    "saved": {
        "_id": "CARD-1",
        "status": "approved",
        "version": 2
    }
}

Полный JSON результата, включая реальные идентификаторы, сохранён рядом в result.json.