概要
公開日: 2026-06-05
翻訳生成に失敗したため、原文をそのまま保存しています。
原文
Changelog New updates and improvements at Cloudflare. Subscribe to RSS View RSS feeds ← Back to all posts Rollback support now available in Workflows Jun 05, 2026 Workflows Workflows now supports saga-style rollbacks, allowing you to add compensating logic to each step.do() in case of downstream failures. If the instance fails, the rollback handlers will execute in reverse step-start order. This is useful for multi-step operations that touch external systems, such as inventory reservations, payment authorization, ticket creation, or infrastructure provisioning. Instead of writing all cleanup logic in a top-level catch , you can keep each compensating action next to the step it undoes. Rollback handlers support their own retry and timeout configuration, and Workflows now exposes rollback outcomes in instance status responses. Workflows analytics also emits rollback lifecycle events, making it easier to distinguish a forward execution failure from a rollback failure when debugging production workflows. JavaScript TypeScript JavaScript await step . do ( "provision resource" , async () => { const resource = await provisionResource () ; return { resourceId : resource . id }; }, { rollback : async ({ output }) => { const { resourceId } = output ; await deleteResource ( resourceId ) ; }, rollbackConfig : { retries : { limit : 3 , delay : "15 seconds" , backoff : "linear" }, timeout : "2 minutes" , }, }, ) ; { const resource = await provisionResource(); return { resourceId: resource.id }; }, { rollback: async ({ output }) => { const { resourceId } = output; await deleteResource(resourceId); }, rollbackConfig: { retries: { limit: 3, delay: "15 seconds", backoff: "linear" }, timeout: "2 minutes", }, },);"> TypeScript await step . do ( "provision resource" , async () => { const resource = await provisionResource () ; return { resourceId : resource . id }; }, { rollback : async ({ output }) => { const { resourceId } = output as { resourceId : string }; await deleteResource ( resourceId ) ; }, rollbackConfig : { retries : { limit : 3 , delay : "15 seconds" , backoff : "linear" }, timeout : "2 minutes" , }, }, ) ; { const resource = await provisionResource(); return { resourceId: resource.id }; }, { rollback: async ({ output }) => { const { resourceId } = output as { resourceId: string }; await deleteResource(resourceId); }, rollbackConfig: { retries: { limit: 3, delay: "15 seconds", backoff: "linear" }, timeout: "2 minutes", }, },);"> Refer to rollback options to learn more. Resources API New to Cloudflare? Directory Sponsorships Open Source Cloudflare Research Support Help Center System Status Compliance GDPR Company cloudflare.com Our team Careers Tools Cloudflare Radar Cloudflare Labs Speed Test Is BGP Safe Yet? Certificate Transparency Community Community forum X Discord YouTube GitHub © 2026 Cloudflare, Inc. Privacy Policy Terms of Use Report Security Issues Trademark Cookie Settings Was this helpful? Yes No