Document concurrency control and transaction boundaries - #124
Merged
Merged
Conversation
…а управления конкурентностью
…ку конвенции конкурентности
…нцию конкурентности на ревью
…бъяснить условное обновление простыми словами
… автоматическое управление транзакциями
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Постановка
Запрос пользователя: «сделай TASK-docs-concurrency-locking-convention.todo.md, проверь на валидность постановки, архитектурную зрелость и прочее».
Задача: TASK-docs-concurrency-locking-convention. Добавить общую конвенцию выбора CAS, Symfony Lock и явных блокировок БД, границ транзакций, актуальности ORM и конкурентных тестов. Без runtime-компонентов, новых зависимостей и изменений проектов-потребителей.
Изменения
docs/conventions/architecture/concurrency-control.md: матрица выбора, канонические ключи, TTL, ограниченные ожидания, порядок вложенных блокировок, CAS с версией против ABA, границы защиты внешних эффектов, очередь с SKIP LOCKED, пример PHP 8.4/Symfony Lock 8/DBAL 4 и чек-лист.architecture/events/transactions.md: ссылки, различие flush/commit и ограничение схемы Outbox, сохраняющей событие только после ошибки брокера.tests/Init/CodingStandardInitMakefileTest.php: публичный init из корня изолированного потребителя, чистая установка, обновление существующих индексов через штатный --force, повторное обновление.Саморевью
Постановка валидна: одна документационная цель, измеримые критерии, явные границы и риски; P2/V2/C2 сохранены. Уточнены ABA, ограниченность CAS одной строки, поздняя запись после потери TTL, порядок ресурсов одного уровня и финальная фиксация перед отправкой событий. Новых runtime-абстракций, миграций и breaking changes нет. Полная переработка существующего документа событий вне задачи.
Пример упрощён из реального сценария поэтапной публикации TasK, с нейтральными именами и скалярным перечитыванием DBAL. Файлы TasK не изменялись.
Проверки
composer check— успешно: PHPUnit 287 тестов, 762 проверки, sniff-test, validate-docs, validate-md-links, validate-language, validate-todo, PHPStan и PHPCS.vendor/bin/phpunit tests/Init— 6 тестов, 55 проверок.php vendor/bin/todo-md validate todo/TASK-docs-concurrency-locking-convention.todo.md— 0 ошибок и предупреждений.php -l, PHPCS PSR-12 — успешно.git diff --check— успешно.composer check.