mirror of
https://github.com/Comfy-Org/comfy-remote-nodes.git
synced 2026-11-04 23:37:22 +00:00
[PR #1] [MERGED] Derive max_poll_attempts from hard_timeout_s instead of reading wire field #3
Labels
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Comfy-Org/comfy-remote-nodes#3
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/Comfy-Org/comfy-remote-nodes/pull/1
Author: @Kosinkadink
Created: 5/13/2026
Status: ✅ Merged
Merged: 5/13/2026
Merged by: @Kosinkadink
Base:
feat/rnp-phaseA-svg-autogrow-dynamiccombo← Head:feat/derive-poll-attempts-from-timeout📝 Commits (1)
11a84beDerive max_poll_attempts from hard_timeout_s instead of reading wire field📊 Changes
2 files changed (+39 additions, -12 deletions)
View changed files
📝
protocol.py(+12 -1)📝
proxy_node.py(+27 -11)📄 Description
Pairs with comfy-rnp-server PR #1 which dropped
descriptor.remote.execution.max_poll_attempts. The client now derives its poll-loop cap asceil((hard_timeout_s + DEFAULT_POLL_GRACE_S) / poll_interval_s)inside_extract_execution_policy.Why: coupling a contract bound to a cadence value silently breaks every time you tune the cadence. A descriptor saying
150 attemptsshrinks 4× ifpoll_interval_sdrops 2.0 → 0.5; expressing the bound as a duration (hard_timeout_s) keeps it invariant. Industry precedent: OAuth2 device flow §3.5, Kubernetes--timeout, gRPC deadlines all express long-poll bounds as durations rather than counts.Changes:
protocol.py: dropDEFAULT_MAX_POLL_ATTEMPTS, addDEFAULT_SOFT_TIMEOUT_S/DEFAULT_HARD_TIMEOUT_S/DEFAULT_POLL_GRACE_S.proxy_node.py: importmath, derivemax_poll_attemptsinline in_extract_execution_policyfromhard_timeout_s+ grace /poll_interval_s. Falls back tosoft_timeout_swhenhard_timeout_sis absent, then toDEFAULT_HARD_TIMEOUT_S.Base note: this PR targets
feat/rnp-phaseA-svg-autogrow-dynamiccombobecause the protocol change builds on the Phase A descriptor parser additions. When Phase A merges to main, this protocol cleanup goes with it.No compat shim — RNP/1 is prototype-stage with zero backward-compat obligation (see comfy-rnp-server AGENTS.md). Server and client roll in lockstep.
Verified end-to-end with
notes/run_url_fetch_executor.py,notes/run_recraft_custom_io_executor.py, and the paidnotes/run_recraft_text_to_image_smoke.py(~$0.04) after restarting both processes with the new code on both sides.🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.