ROLLBACK DELTA
Запрос позволяет откатить горячую (открытую) дельту — отменить все изменения горячей дельты и вернуть логическую базу данных в состояние, актуальное на момент последней закрытой дельты. При откате отменяются все операции записи горячей дельты: как завершенные, так и еще выполняемые.
Внимание: после запуска запроса невозможно закрыть горячую дельту и зафиксировать ее изменения, даже если система не смогла откатить дельту и вернула исключение.
При наличии множества параллельных операций записи система не всегда может отменить все операции за один проход. Если запрос вернул исключение Can't rollback delta by datamart <db_name>
, это означает, что системе не удалось отменить все операции записи горячей дельты. В этом случае необходимо повторить запрос один или несколько раз: до получения в ответе номера последней закрытой дельты вместо исключения.
Перед выполнением запроса необходимо определить логическую базу данных, используемую по умолчанию, если она еще не определена.
Примечание: откат закрытой дельты невозможен.
Откат горячей дельты выполняется в следующем порядке:
- Останавливаются все выполняемые операции записи. Операции останавливаются асинхронно, и система периодически проверяет, остались ли выполняемые операции записи. Проверка запускается раз в интервал, заданный в конфигурации с помощью параметра
DELTA_ROLLBACK_STATUS_CALLS_MS
. - Отменяются все операции записи горячей дельты: остановленные, завершенные успешно и завершенные с ошибкой. При этом отменяются все связанные изменения данных.
- Горячая дельта удаляется из сервисной базы данных, и зарезервированный ранее номер горячей дельты освобождается.
В ответе возвращается:
- объект ResultSet c одной записью, содержащей номер последней закрытой дельты, при успешном выполнении запроса;
- исключение при неуспешном выполнении запроса.
Синтаксис
ROLLBACK DELTA