fix(execution): report cancellation durability truthfully#3550
fix(execution): report cancellation durability truthfully#3550PlaneInABottle wants to merge 25 commits intosimstudioai:stagingfrom
Conversation
…keyboard shortcuts, audit logs
…rects to rewrites
…stash, algolia tools; isolated-vm robustness improvements, tables backend (simstudioai#3271) * feat(tools): advanced fields for youtube, vercel; added cloudflare and dataverse tools (simstudioai#3257) * refactor(vercel): mark optional fields as advanced mode Move optional/power-user fields behind the advanced toggle: - List Deployments: project filter, target, state - Create Deployment: project ID override, redeploy from, target - List Projects: search - Create/Update Project: framework, build/output/install commands - Env Vars: variable type - Webhooks: project IDs filter - Checks: path, details URL - Team Members: role filter - All operations: team ID scope Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * style(youtube): mark optional params as advanced mode Hide pagination, sort order, and filter fields behind the advanced toggle for a cleaner default UX across all YouTube operations. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * added advanced fields for vercel and youtube, added cloudflare and dataverse block * addded desc for dataverse * add more tools * ack comment * more * ops --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> * feat(tables): added tables (simstudioai#2867) * updates * required * trashy table viewer * updates * updates * filtering ui * updates * updates * updates * one input mode * format * fix lints * improved errors * updates * updates * chages * doc strings * breaking down file * update comments with ai * updates * comments * changes * revert * updates * dedupe * updates * updates * updates * refactoring * renames & refactors * refactoring * updates * undo * update db * wand * updates * fix comments * fixes * simplify comments * u[dates * renames * better comments * validation * updates * updates * updates * fix sorting * fix appearnce * updating prompt to make it user sort * rm * updates * rename * comments * clean comments * simplicifcaiton * updates * updates * refactor * reduced type confusion * undo * rename * undo changes * undo * simplify * updates * updates * revert * updates * db updates * type fix * fix * fix error handling * updates * docs * docs * updates * rename * dedupe * revert * uncook * updates * fix * fix * fix * fix * prepare merge * readd migrations * add back missed code * migrate enrichment logic to general abstraction * address bugbot concerns * adhere to size limits for tables * remove conflicting migration * add back migrations * fix tables auth * fix permissive auth * fix lint * reran migrations * migrate to use tanstack query for all server state * update table-selector * update names * added tables to permission groups, updated subblock types --------- Co-authored-by: Vikhyath Mondreti <vikhyath@simstudio.ai> Co-authored-by: waleed <walif6@gmail.com> * fix(snapshot): changed insert to upsert when concurrent identical child workflows are running (simstudioai#3259) * fix(snapshot): changed insert to upsert when concurrent identical child workflows are running * fixed ci tests failing * fix(workflows): disallow duplicate workflow names at the same folder level (simstudioai#3260) * feat(tools): added redis, upstash, algolia, and revenuecat (simstudioai#3261) * feat(tools): added redis, upstash, algolia, and revenuecat * ack comment * feat(models): add gemini-3.1-pro-preview and update gemini-3-pro thinking levels (simstudioai#3263) * fix(audit-log): lazily resolve actor name/email when missing (simstudioai#3262) * fix(blocks): move type coercions from tools.config.tool to tools.config.params (simstudioai#3264) * fix(blocks): move type coercions from tools.config.tool to tools.config.params Number() coercions in tools.config.tool ran at serialization time before variable resolution, destroying dynamic references like <block.result.count> by converting them to NaN/null. Moved all coercions to tools.config.params which runs at execution time after variables are resolved. Fixed in 15 blocks: exa, arxiv, sentry, incidentio, wikipedia, ahrefs, posthog, elasticsearch, dropbox, hunter, lemlist, spotify, youtube, grafana, parallel. Also added mode: 'advanced' to optional exa fields. Closes simstudioai#3258 * fix(blocks): address PR review — move remaining param mutations from tool() to params() - Moved field mappings from tool() to params() in grafana, posthog, lemlist, spotify, dropbox (same dynamic reference bug) - Fixed parallel.ts excerpts/full_content boolean logic - Fixed parallel.ts search_queries empty case (must set undefined) - Fixed elasticsearch.ts timeout not included when already ends with 's' - Restored dropbox.ts tool() switch for proper default fallback * fix(blocks): restore field renames to tool() for serialization-time validation Field renames (e.g. personalApiKey→apiKey) must be in tool() because validateRequiredFieldsBeforeExecution calls selectToolId()→tool() then checks renamed field names on params. Only type coercions (Number(), boolean) stay in params() to avoid destroying dynamic variable references. * improvement(resolver): resovled empty sentinel to not pass through unexecuted valid refs to text inputs (simstudioai#3266) * fix(blocks): add required constraint for serviceDeskId in JSM block (simstudioai#3268) * fix(blocks): add required constraint for serviceDeskId in JSM block * fix(blocks): rename custom field values to request field values in JSM create request * fix(trigger): add isolated-vm support to trigger.dev container builds (simstudioai#3269) Scheduled workflow executions running in trigger.dev containers were failing to spawn isolated-vm workers because the native module wasn't available in the container. This caused loop condition evaluation to silently fail and exit after one iteration. - Add isolated-vm to build.external and additionalPackages in trigger config - Include isolated-vm-worker.cjs via additionalFiles for child process spawning - Add fallback path resolution for worker file in trigger.dev environment * fix(tables): hide tables from sidebar and block registry (simstudioai#3270) * fix(tables): hide tables from sidebar and block registry * fix(trigger): add isolated-vm support to trigger.dev container builds (simstudioai#3269) Scheduled workflow executions running in trigger.dev containers were failing to spawn isolated-vm workers because the native module wasn't available in the container. This caused loop condition evaluation to silently fail and exit after one iteration. - Add isolated-vm to build.external and additionalPackages in trigger config - Include isolated-vm-worker.cjs via additionalFiles for child process spawning - Add fallback path resolution for worker file in trigger.dev environment * lint * fix(trigger): update node version to align with main app (simstudioai#3272) * fix(build): fix corrupted sticky disk cache on blacksmith (simstudioai#3273) --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: Lakee Sivaraya <71339072+lakeesiv@users.noreply.github.com> Co-authored-by: Vikhyath Mondreti <vikhyath@simstudio.ai> Co-authored-by: Vikhyath Mondreti <vikhyathvikku@gmail.com>
… fixes, removed retired models, hex integration
…ogle tasks and bigquery integrations, workflow lock
…gespeed insights, pagerduty
…, brandfetch, google meet
… pagination, memory improvements
… selectors for 14 blocks
…ory instrumentation
…aders, webhook trigger configs (simstudioai#3530)
…anvas navigation updates
Return explicit durability results for execution cancellation so success only reflects persisted cancellation state instead of best-effort Redis availability.
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
PR SummaryMedium Risk Overview Updates the cancel-execution route to set Written by Cursor Bugbot for commit 4f22a7e. Configure here. |
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
apps/sim/app/api/workflows/[id]/executions/[executionId]/cancel/route.ts
Outdated
Show resolved
Hide resolved
|
@PlaneInABottle please make this point towards staging as well |
Greptile SummaryThis PR improves cancellation durability reporting by refactoring Key changes:
Confidence Score: 3/5
Important Files Changed
Sequence DiagramsequenceDiagram
participant Client
participant CancelRoute as POST /cancel
participant markExecutionCancelled
participant Redis
Client->>CancelRoute: POST (workflowId, executionId)
CancelRoute->>CancelRoute: checkHybridAuth
CancelRoute->>CancelRoute: authorizeWorkflowByWorkspacePermission
CancelRoute->>markExecutionCancelled: markExecutionCancelled(executionId)
alt Redis client is null
markExecutionCancelled-->>CancelRoute: { durablyRecorded: false, reason: 'redis_unavailable' }
else Redis client exists
markExecutionCancelled->>Redis: SET execution:cancel:{id} 1 EX 3600
alt Write succeeds
Redis-->>markExecutionCancelled: OK
markExecutionCancelled-->>CancelRoute: { durablyRecorded: true, reason: 'recorded' }
else Write throws
Redis-->>markExecutionCancelled: Error
markExecutionCancelled-->>CancelRoute: { durablyRecorded: false, reason: 'redis_write_failed' }
end
end
CancelRoute-->>Client: 200 { success, executionId, redisAvailable, durablyRecorded, reason }
Last reviewed commit: 47dadaa |
apps/sim/app/api/workflows/[id]/executions/[executionId]/cancel/route.ts
Outdated
Show resolved
Hide resolved
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
|
@icecrasher321 Done — the PR has been retargeted to |
|
bugbot run |
Summary
durablyRecorded,reason) and avoid misleading success logging when persistence failscancellation.test.tsProblem / current behavior
Proposed fix / behavior after
successbased on whether the cancellation marker was durably recorded, and includedurablyRecordedplus a failurereasonin the responseapps/sim/lib/execution/cancellation.test.tsso the targeted tests reliably validate the success and failure outcomesWhy this matters
Files changed
apps/sim/app/api/workflows/[id]/executions/[executionId]/cancel/route.tsapps/sim/app/api/workflows/[id]/executions/[executionId]/cancel/route.test.tsapps/sim/lib/execution/cancellation.tsapps/sim/lib/execution/cancellation.test.tsTests run
cd /Users/Y_ALTAY1/Documents/simWoot/sim/apps/sim && bun run test -- lib/execution/cancellation.test.ts 'app/api/workflows/[id]/executions/[executionId]/cancel/route.test.ts'Notes / non-goals / follow-ups
cancellation.test.ts