Terraform провайдер DYNAMIX поддерживает тонкую настройку таймаутов выполнения запросов к платформе. Таймауты необходимы для определения максимального времени выполнения запроса. При превышении этого времени соединение рвется и запрос считается невыполненным. Таймауты применяются при работе с _resource_ функциями провайдера. _Data source_ функции по-умолчанию имеют таймаут в 20 минут и изменяться не может. ## Стандартные таймауты terraform | Операция | Время | Описание | | --- | --- | --- | | create | 20 минут | Создание ресурса | | read | 20 минут | Чтение ресурса | | update | 20 минут | Обновление ресурса | | delete | 20 минут | Удаление ресурса | | default | 20 минут | Значение по умолчанию. Устанавливает значение для всех операций | ## Стандартные таймауты провайдера DYNAMIX В провайдере DYNAMIX таймауты переопределены для того, чтобы уменьшить нагрузку на платформу. | Операция | Время | Описание | | --- | --- | --- | | create | 10 минут | Создание ресурса | | read | 5 минут | Чтение ресурса | | update | 5 минут | Обновление ресурса | | delete | 5 минут | Удаление ресурса | | default | 5 минут | Значение по умолчанию. Устанавливает значение для всех операций | ## Установка таймаутов Все таймауты можно установить самостоятельно для каждого ресурса. Для этого используется блок _timeouts_, который имеется в каждом ресурсе провайдера. Пример: ```terraform resource "dynamix_res" "res_name" { timeouts { create = "10m" update = "1m" delete = "2m" read = "7m" #default = "15m" } } ``` Где: - create - операция создания ресурса - read - операция чтения ресурса - update - операция обновления ресурса - delete - операция удаления ресурса - default - установит заданное время для всех операций ## Формат установления времени Как видно из примера выше, провайдер принимает на вход строку вида: ``` "" ``` Где: - time-num - число - time-val - сокращенная запись значения временного отрезка. Таблица с временными отрезками: | Отрезок | Значение | | --- | --- | | n | наносекунда | | ms | миллисекунда | | s | секунда | | m | минута | | h | час | Примеры: ``` "10m" "1s" "1h10m" ``` И так далее ## Работа с таймером через .tf-файл В .tf-файле, в блоке ресурса можно задавать таймауты для операций над ресурсом, однако, при работе с таймаутом, следует помнить о правиле: __В случае изменения таймаутов в .tf-файле, операции с новыми таймаутами будут производиться только после apply/plan/destroy__ То есть, если изменить таймауты и выполнить операцию, то она выполнится со старыми таймаутами, а сл. операция уже будет выполнена с новыми таймаутами. Это объясняется тем, что значения таймаутов считываются из файла состояний .tfstate при выполнении операции, и новые значения таймаутов попадут туда только при успешно выполненной операции. ## Ошибки при работе с таймаутом ### context deadline exceeded Если время таймаута слишком короткое, то можно получить сл. ошибку: ``` context deadline exceeded ``` Которая говорит, что было выполнено прерывание работы программы из-за истечения времени на операцию. Для исправления можно увеличить размер окна таймаута и выполнить успешный запрос (например, с помощью терминала), чтобы новое значения таймаутов было добавлено в .tfstate. В противном случае, файл состояния придется править в ручную, либо удалить его и импортировать ресурс для формирования .tfstate. ### 504 ошибка Данная ошибка говорит о том, что сервер принудительно разорвал соединения из-за истечения времени на ответ. В случае получения данной ошибки, обратитесь в службу технической поддержки. ## Работа с таймаутами через терминал Сл. команда выполнит операцию terraform с заданным таймаутом: ```bash timeout