INTEGRITY Документация

Известные проблемы

Durable Objects общедоступны. Однако есть ряд известных проблем.

Глобальная уникальность

Глобальная уникальность гарантирует, что существует только один экземпляр Durable Object class с заданным ID, работающих одновременно по всему миру.

Уникальность обеспечивается при запуске нового события (например, при получении HTTP-запроса) и при обращении к хранилищу.

Если после получения события его обработка занимает некоторое время и при этом ни разу не обращается к постоянному хранилищу, Durable Object может оказаться уже неактуальным: где-то мог быть создан другой экземпляр с тем же Durable Object ID. Если в этот момент событие обращается к хранилищу, оно получит исключение. Если обработка события завершается без обращения к хранилищу, система может так и не узнать, что Durable Object больше не является актуальным.

Durable Object может быть заменён в случае разделения сети или обновления программного обеспечения (включая обновление кода класса Durable Object или самой системы Workers). Включение wrangler tail или Панель управления Cloudflare ↗ журналов требует обновления программного обеспечения.

Обновления кода

Изменения кода для Workers и Durable Objects распространяются по всему миру в модели итоговой согласованности. Поскольку каждый Durable Object глобально уникален, возможна ситуация, когда запрос попадает в последнюю версию вашего Worker (выполняющуюся в одной части света), которая затем обращается к уникальному Durable Object, некоторое время (обычно от секунд до минут) продолжающему работать на предыдущей версии кода. Если вы создаёте постепенное развёртывание, этот период времени определяется тем, как долго ваше действующее развёртывание настроено на использование более одной версии.

Поэтому рекомендуется следить за тем, чтобы изменения API между Workers и Durable Objects оставались прямо и обратно совместимыми при обновлениях кода.

Инструменты разработки

wrangler tail журналы запросов, повышенных до WebSocket-соединений, задерживаются до момента закрытия WebSocket-соединения. wrangler tail не следует подключать к Worker, на который ожидается высокая нагрузка трафика.

Редактор Workers в Панель управления Cloudflare ↗ позволяет интерактивно редактировать и просматривать ваш Worker и Durable Objects. В редакторе предварительный запрос может обратиться к Durable Object, только если просматриваемый Worker экспортирует класс Durable Object и одновременно привязан к нему. К Durable Objects, экспортированным другими Workers, в режиме предварительного просмотра обратиться нельзя.

wrangler dev имеет доступ на чтение к хранилищу Durable Object, но записи будут храниться только в памяти и не повлияют на постоянные данные. Однако если указать script_name явно в привязка Durable Object, то операции записи будут влиять на постоянные данные. В этом случае Wrangler выведет предупреждение.

Alarms в локальной разработке

В настоящее время при локальной разработке (с использованием npx wrangler dev), Durable Object методы alarm может завершиться ошибкой после горячей перезагрузки (если вы изменяете код, пока он выполняется локально).

Чтобы избежать этой проблемы при использовании alarms Durable Object, закройте и перезапустите wrangler dev команду после изменения кода.