Skip to content

Treat timer triggers as external resume triggers#136

Closed
radu-mocanu wants to merge 2 commits into
mainfrom
feat/time-triggers-resumable-runtime
Closed

Treat timer triggers as external resume triggers#136
radu-mocanu wants to merge 2 commits into
mainfrom
feat/time-triggers-resumable-runtime

Conversation

@radu-mocanu

@radu-mocanu radu-mocanu commented Jun 27, 2026

Copy link
Copy Markdown
Collaborator

Timer resume triggers are completed by Orchestrator after the job suspends. The resumable runtime should persist them and let Orchestrator handle the wake-up instead of polling them immediately in the same process, which can self-resume before the job ever reaches Suspended.

Development Package

  • Add this package as a dependency in your pyproject.toml:
[project]
dependencies = [
  # Exact version:
  "uipath-runtime==0.11.4.dev1001360546",

  # Any version from PR
  "uipath-runtime>=0.11.4.dev1001360000,<0.11.4.dev1001370000"
]

[[tool.uv.index]]
name = "testpypi"
url = "https://test.pypi.org/simple/"
publish-url = "https://test.pypi.org/legacy/"
explicit = true

[tool.uv.sources]
uipath-runtime = { index = "testpypi" }

Copilot AI review requested due to automatic review settings June 27, 2026 20:08
@radu-mocanu radu-mocanu requested a review from a team as a code owner June 27, 2026 20:08
@radu-mocanu radu-mocanu force-pushed the feat/time-triggers-resumable-runtime branch from 8ae4715 to 20e99b2 Compare June 27, 2026 20:10

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adjusts the resumable runtime’s post-suspension auto-resume behavior so timer-based resume triggers are treated like external (Orchestrator-driven) resume triggers, preventing the runtime from polling and potentially self-resuming before the job is actually suspended in Orchestrator.

Changes:

  • Updates _get_fired_triggers() documentation to include Timer triggers in the “external trigger” category.
  • Excludes UiPathResumeTriggerType.TIMER from the set of triggers eligible for immediate polling/auto-resume right after suspension.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 150 to +169
@@ -161,7 +162,11 @@ async def _get_fired_triggers(self) -> dict[str, Any] | None:
t
for t in triggers
if t.trigger_type
not in (UiPathResumeTriggerType.API, UiPathResumeTriggerType.INBOX)
not in (
UiPathResumeTriggerType.API,
UiPathResumeTriggerType.INBOX,
UiPathResumeTriggerType.TIMER,
)
@radu-mocanu radu-mocanu force-pushed the feat/time-triggers-resumable-runtime branch from fc7d0db to 4947104 Compare June 27, 2026 20:39
@sonarqubecloud

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
75.0% Coverage on New Code (required ≥ 90%)

See analysis details on SonarQube Cloud

@radu-mocanu

Copy link
Copy Markdown
Collaborator Author

Closing in favor of the split runtime PR stack starting at #137.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants