Интересная задача у нас сейчас. Есть http сервер он принимает запросы и обрабатывает их (делает SQL запросы и API запросы к другим сервисам). Клиент, который присылает нам запрос, может прислать заголовок Request-Timeout: 10 и тогда, если мы начали обрабатывать запрос, но видим что уже не успеваем за 10 сек, нужно корректно завершить все дела и откатить транзакцию.
Привет, думаю тут можно что-то вроде паттерна Команда реализовать. То есть в базе есть транзакция с startTime и изначально пустым списком команд. Затем, по мере выполнения запроса, добавляются команды-операции. Каждая команда должна иметь достаточный контекст и undo-команду внутри, если придется делать откат. Ну и по мере выполнения транзакции на каждой итерации проверяем, что транзакция не устарела. Наверно нужна еще база для временных результатов.