Изменения документа Примеры

Редактировал(а) Alexandr Fokin 2026/08/26 19:05

От версии 8.34
отредактировано Alexandr Fokin
на 2026/07/27 20:22
Изменить комментарий: К данной версии нет комментариев
К версии 8.38
отредактировано Alexandr Fokin
на 2026/07/27 20:39
Изменить комментарий: К данной версии нет комментариев

Сводка

Подробности

Свойства страницы
Содержимое
... ... @@ -71,10 +71,13 @@
71 71  
72 72  Возможно:
73 73  
74 -1. В начале транзакции (или шага) атомарно проверяем MemberSet, если есть запись то удаляем и увеличиваем счетчик на 1 (означает что процесс уже увеличивал счетчик, но потом было падение).
75 -1. До коммита транзакции атомарно добавляем значение в MemberSet и уменьшаем счетчик на 1. Если счетчик равен 0, то публикуем TriggerEvent (в ручную компенсацию добавляем вызов из пункта 1 (при откате изоляции шага и компенсации транзакции)).
74 +1. В начале транзакции (или шага) атомарно проверяем MemberSet, если есть запись то удаляем и увеличиваем счетчик на 1 (означает что процесс уже уменьшал счетчик, но потом было падение).
75 +1. До коммита транзакции атомарно добавляем значение в MemberSet и уменьшаем счетчик на 1. Если счетчик равен 0, то публикуем TriggerEvent
76 +(добавляем в ручную компенсацию вызов из пункта 1 (при откате изоляции шага и компенсации транзакции)).
76 76  1. После коммита транзакции удаляем запись из MemberSet.
77 77  1. Trigger получает событие. (Необязательно) в хендлере может првоерить значения счетчиков и MemberSet.
79 +
80 +MemberSet используется для уменьшения вероятности увеличить или уменьшить счетчик дважды одним экземпляром дочернего процесса.
78 78  )))
79 79  |(((
80 80  В случае обнаружения повреждения обработка фактически переходит в режим 1.4: начинает публиковать событий каждый раз и используется задержка.