Merged
Size
S
Change Breakdown
Bug Fix100%
#27830fix(Schedule Node): Skip recurrence check during manual execution

Manual workflow execution no longer hangs on schedule triggers

Schedule Trigger workflows with interval-based schedules (every 2 hours, every 3 days) no longer hang indefinitely when manually executed after running on schedule. A previous change caused the recurrence check to block manual runs — the fix skips that check entirely for user-initiated executions.

The problem: workflows using Schedule Triggers with interval sizes greater than 1 — say, "every 2 hours" or "every 3 days" — would hang forever when manually executed if they'd previously run on their schedule. The trigger node would receive no data, and the execution would stall with no feedback.

A prior change to the runManually endpoint began loading workflows from the database instead of accepting the frontend's submitted data. This brought along staticData containing recurrenceRules from previous scheduled runs. When the recurrence check evaluated the current time against those stored rules, it would decide the moment didn't match the interval pattern and return false — preventing the trigger from firing at all.

The fix: skip the recurrence check when executing manually. User-initiated executions should fire immediately, regardless of what recurrence state exists from past scheduled runs. The recurrence logic remains intact for actual scheduled executions; it simply doesn't apply when someone clicks "execute workflow" themselves.

This affects the Schedule Trigger node in the nodes-base package.

View Original GitHub Description

Summary

Fixes manual execution of Schedule Trigger workflows hanging indefinitely when the trigger has an intervalSize > 1 (e.g. every 2 hours, every 3 days) and the workflow has previously run on a schedule.

Root cause: PR #25737 changed the runManually endpoint to load the workflow from the database instead of using frontend-submitted data. The DB-loaded workflow includes staticData containing recurrenceRules from previous scheduled executions. When recurrenceCheck() sees populated recurrenceRules and the current time doesn't match the recurrence interval pattern, it returns falseemit() is never called and the execution hangs.

Fix: Skip the recurrenceCheck when executing in manual mode. Manual execution is user-initiated and should always fire immediately regardless of recurrence state.

Related Linear tickets, Github issues, and Community forum posts

https://linear.app/n8n/issue/IAM-447

How to test manually

  1. Import a workflow with a Schedule Trigger set to "every 2 hours" connected to a No-Op node
  2. Activate the workflow and let it run at least once (or inject staticData via SQL to simulate a prior run)
  3. Deactivate the workflow
  4. Click "Execute workflow" and select the Schedule Trigger as the starting point
  5. Before fix: execution hangs indefinitely with no data flowing
  6. After fix: execution completes immediately with timestamp data

Review / Merge checklist

  • PR title and summary are descriptive. (conventions)
  • Docs updated or follow-up ticket created.
  • Tests included.
  • PR Labeled with Backport to Beta, Backport to Stable, or Backport to v1 (if the PR is an urgent fix that needs to be backported)
© 2026 · via Gitpulse