Document REQUEST acknowledgment before external transaction commit
This commit is contained in:
1 parent
ef8e8f2cb5
commit
9f7ceb5815
2 files changed
+11
-2
No files matched your search
@@ -136,7 +136,14 @@ REQUEST=1, REQUEST_ACK=2, GRANT=3, DENY=4, RESULT_ACK=5
|
||||
ответ только от автора, по своему существующему запросу и точной идентичности
|
||||
контейнера. Конфликтующие ключи и результаты отклоняются.
|
||||
|
||||
REQUEST_ACK отправляется после сохранения запроса. GRANT/DENY появляются
|
||||
Приём REQUEST пока использует SAVEPOINT: REQUEST_ACK и событие следуют после RELEASE.
|
||||
Без внешней транзакции это фиксирует запрос. Внутри внешней транзакции подтверждение
|
||||
может уйти до commit: последующий rollback удаляет запрос у автора, а получатель уже
|
||||
перешёл в state=1 и удалил REQUEST из outbox. Ожидание сохраняется после restart автора
|
||||
при живых маршрутах. Этот отдельный дефект приёма ещё не исправлен;
|
||||
доказательства — [chat_audit_findings.txt](chat_audit_findings.txt), «Аудит приёма REQUEST».
|
||||
|
||||
GRANT/DENY появляются
|
||||
в outbox в одной собственной BEGIN IMMEDIATE/COMMIT с решением автора. Проверка прав
|
||||
также выполняется внутри неё. Изменяется ровно один входящий запрос в state=0;
|
||||
уже принятое решение повторной командой не заменяется. Общий помощник записи outbox
|
||||
|
||||
@@ -6,7 +6,9 @@
|
||||
* Ответы REQUEST_ACK/GRANT/DENY/RESULT_ACK атомарно меняют ключ, запрос и outbox собственной транзакцией.
|
||||
* Внешняя транзакция для ответов запрещена. GRANT/DENY подтверждаются только после проверенного commit;
|
||||
* повтор с тем же результатом допустим, конфликтующий ключ/решение отклоняется. Отказ SQL сохраняет прежнее состояние.
|
||||
* Незавершённый rollback отключает модуль и запрашивает остановку ядра владельцем вне callback. */
|
||||
* Незавершённый rollback отключает модуль и запрашивает остановку ядра владельцем вне callback.
|
||||
* Известное ограничение приёма REQUEST: вложенный SAVEPOINT допускает ACK/событие до commit внешней транзакции;
|
||||
* её rollback теряет уже подтверждённый запрос. См. doc/chat_audit_findings.txt, «Аудит приёма REQUEST». */
|
||||
#ifndef CHAT_ATTACHMENT_H
|
||||
#define CHAT_ATTACHMENT_H
|
||||
#include "../media_async/attachment.h"
|
||||
|
||||
Reference in new issue
Block a user