INTEGRITY Dokumentace

Známé problémy

Durable Objects jsou obecně dostupné. Existují však určité známé problémy.

Globální jedinečnost

Globální jedinečnost zaručuje, že existuje pouze jedna instance Třída Durable Object s daným ID spuštěná najednou po celém světě.

Jedinečnost se vynucuje při zahájení nové události (například při přijetí HTTP požadavku) a při přístupu k úložišti.

Pokud zpracování přijaté události nějakou dobu trvá a událost přitom vůbec nepřistupuje k trvalému úložišti, může se stát, že daný Durable Object již není aktuální a jinde vznikla jiná instance se stejným Durable Object ID. Pokud v tomto okamžiku událost přistoupí k úložišti, obdrží výjimka. Pokud událost proběhne, aniž by kdy přistoupila k úložišti, nemusí si nikdy uvědomit, že Durable Object už není aktuální.

Durable Object může být nahrazen v případě rozdělení sítě nebo aktualizace softwaru (ať už jde o aktualizaci kódu třídy Durable Object, nebo samotného systému Workers). Povolením wrangler tail nebo Cloudflare dashboard ↗ protokolů vyžaduje aktualizaci softwaru.

Aktualizace kódu

Změny kódu pro Workers a Durable Objects se globálně nasazují postupně, s eventuální konzistencí. Protože je každý Durable Object celosvětově jedinečný, může nastat situace, kdy požadavek dorazí k nejnovější verzi vašeho Workeru (běžící v jedné části světa), který pak po krátkou dobu (obvykle sekundy až minuty) volá jedinečný Durable Object běžící ještě na předchozí verzi vašeho kódu. Pokud vytvoříte postupné nasazení, toto časové období je dané tím, jak dlouho je vaše aktivní nasazení nakonfigurováno na používání více než jedné verze.

Z tohoto důvodu je doporučeným postupem zajistit, aby změny API mezi vašimi Workers a Durable Objects zůstaly při aktualizacích kódu zpětně i dopředně kompatibilní.

Vývojářské nástroje

wrangler tail protokoly z požadavků, které jsou povýšeny na WebSocket, se zobrazí až po jeho uzavření. wrangler tail byste neměli připojovat k Workeru, u kterého očekáváte vysoký objem provozu.

Editor Workers v Cloudflare dashboard ↗ umožňuje interaktivně upravovat a zobrazovat náhled vašeho Workeru a Durable Objects. V editoru lze s Durable Objects komunikovat prostřednictvím náhledového požadavku pouze tehdy, pokud zobrazovaný Worker třídu Durable Object zároveň exportuje i k ní vytváří vazbu. S Durable Objects exportovanými jinými Workery nelze v náhledu editoru komunikovat.

wrangler dev má přístup ke čtení z úložiště Durable Object, zápisy se však uchovávají pouze v paměti a neovlivní trvalá data. Pokud však zadáte script_name explicitně v Vazba Durable Object, pak zápisy ovlivní trvalá data. Wrangler v takovém případě vypíše varování.

Alarms v lokálním vývoji

V současnosti při lokálním vývoji (pomocí npx wrangler dev), Durable Object metody alarmu může po hot reloadu selhat (pokud kód upravíte, zatímco běží lokálně).

Abyste tomuto problému předešli, při použití alarmů Durable Object ukončete a znovu spusťte wrangler dev příkaz po úpravě kódu.