Сохранить карточку вместе с записью журнала

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

Наблюдаемый результат программы
НаблюдениеРезультат
После commit есть P-OKда
Журнал ссылается на P-OKP-OK
Второй insert отклонёнда
Явный rollback завершёнда
После rollback есть P-FAILнет
Событий для P-FAIL0
Ранее существовавшее событиеPREEXISTING
Документы и дополнительные наблюдения
{
    "committed_product": {
        "_id": "P-OK",
        "name": "Лампа",
        "price": 1200
    },
    "committed_event": {
        "_id": "EV-OK",
        "kind": "created",
        "product": "P-OK"
    },
    "failure_code": 10000,
    "failure_chain": [
        {
            "class": "mysql_xdevapi\\Exception",
            "code": 10000
        },
        {
            "class": "mysql_xdevapi\\Exception",
            "code": 5116
        }
    ],
    "after_rollback_product": null,
    "after_rollback_events": [],
    "preexisting_event": {
        "_id": "EV-BUSY",
        "kind": "fixture",
        "product": "PREEXISTING"
    }
}

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