ROLLBACK DELTA

Запрос позволяет откатить горячую (открытую) дельту — отменить все изменения горячей дельты и вернуть логическую базу данных в состояние, актуальное на момент последней закрытой дельты. При откате отменяются все операции записи горячей дельты: как завершенные, так и еще выполняемые.

Внимание: после запуска запроса невозможно закрыть горячую дельту и зафиксировать ее изменения, даже если система не смогла откатить дельту и вернула исключение.

При наличии множества параллельных операций записи система не всегда может отменить все операции за один проход. Если запрос вернул исключение Can't rollback delta by datamart <db_name>, это означает, что системе не удалось отменить все операции записи горячей дельты. В этом случае необходимо повторить запрос один или несколько раз: до получения в ответе номера последней закрытой дельты вместо исключения.

Перед выполнением запроса необходимо определить логическую базу данных, используемую по умолчанию, если она еще не определена.

Примечание: откат закрытой дельты невозможен.

Откат горячей дельты выполняется в следующем порядке:

  1. Останавливаются все выполняемые операции записи. Операции останавливаются асинхронно, и система периодически проверяет, остались ли выполняемые операции записи. Проверка запускается раз в интервал, заданный в конфигурации с помощью параметра DELTA_ROLLBACK_STATUS_CALLS_MS.
  2. Отменяются все операции записи горячей дельты: остановленные, завершенные успешно и завершенные с ошибкой. При этом отменяются все связанные изменения данных.
  3. Горячая дельта удаляется из сервисной базы данных, и зарезервированный ранее номер горячей дельты освобождается.

В ответе возвращается:

  • объект ResultSet c одной записью, содержащей номер последней закрытой дельты, при успешном выполнении запроса;
  • исключение при неуспешном выполнении запроса.

Синтаксис

ROLLBACK DELTA