{
    "id": "mysql140-x-shared-review",
    "title": "Дать двум проверяющим читать одну версию карточки",
    "columns": [
        "Наблюдение",
        "Результат"
    ],
    "rows": [
        [
            "Версия для проверяющего A",
            1
        ],
        [
            "Версия для проверяющего B",
            1
        ],
        [
            "Запись запрещена при двух shared-lock",
            true
        ],
        [
            "После commit A блокировку ещё держит B",
            true
        ],
        [
            "После rollback B сохранена версия",
            2
        ],
        [
            "Сохранённый статус",
            "approved"
        ]
    ],
    "checks": {
        "shared_reads_compatible": true,
        "exclusive_conflicts_with_two": true,
        "one_remaining_shared_still_blocks": true,
        "lock_after_both_released": true,
        "new_version_persisted": true,
        "owned_collections_removed": true
    },
    "observations": {
        "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
        }
    },
    "runtime": {
        "php": "8.3.35",
        "extension": "8.0.30",
        "server_version": 80413,
        "schema": "php_manual_x139",
        "host": "127.0.0.1",
        "port": 33140
    },
    "owned_collections": [
        "mysql140_shared_review_5a40442844a0"
    ],
    "removed_collections": [
        "mysql140_shared_review_5a40442844a0"
    ]
}
