Skip to content

fix(tools): make Args the single source of truth for remote_write_ip - #548

Merged
milindsrivastava1997 merged 3 commits into
mainfrom
546-remote-write-ip-none
Aug 19, 2026
Merged

fix(tools): make Args the single source of truth for remote_write_ip#548
milindsrivastava1997 merged 3 commits into
mainfrom
546-remote-write-ip-none

Conversation

@milindsrivastava1997

@milindsrivastava1997 milindsrivastava1997 commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

Summary

Fixes #546.

cfg.streaming.remote_write.ip has been a dead null since PR #469 replaced the OmegaConf resolver that used to populate it with a plain per-script args.remote_write_ip = provider.get_node_ip(...) — a value only arroyo.py ever reads. generate_prometheus_config still reads cfg.streaming.remote_write.ip directly, so it silently baked http://None:<port>/... into prometheus.yml for every non-arroyo streaming engine (e.g. precompute). Prometheus then can't remote-write any samples in, the query engine has no data, and client queries block forever waiting for data that never arrives — the symptom reported in #546.

Args.__init__ (experiment_utils/config.py) now builds the provider itself and sets both self.remote_write_ip and cfg.streaming.remote_write.ip from that one place, so every script gets the correct value automatically instead of each one re-deriving (and potentially forgetting) it. Scripts that used to call create_provider(cfg) right alongside config.Args(cfg) now just read args.provider.

milindsrivastava1997 and others added 3 commits August 18, 2026 14:22
cfg.streaming.remote_write.ip has been a dead null since PR #469
replaced the OmegaConf resolver that used to populate it with a plain
per-script `args.remote_write_ip = provider.get_node_ip(...)` — a
value only arroyo.py ever read. generate_prometheus_config still reads
cfg.streaming.remote_write.ip directly, so it silently baked
http://None:<port>/... into prometheus.yml for every non-arroyo
streaming engine, causing remote_write to fail and precompute-engine
queries to hang forever waiting on data that never arrives (#546).

Args.__init__ now builds the provider itself and sets both
self.remote_write_ip and cfg.streaming.remote_write.ip from that one
place, so every script gets it automatically instead of each one
re-deriving (and potentially forgetting) it. Scripts that used to call
create_provider(cfg) right alongside config.Args(cfg) now just read
args.provider.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
vars(args) broke once Args started holding a live provider object
(added in the previous commit) — CloudLabProvider/LocalProvider aren't
JSON-serializable, so every script crashed writing cmdline_args.txt.
Args.to_dict() now swaps provider for its repr() (both provider
classes already define one) instead of dropping it, keeping the debug
dump both working and informative.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@milindsrivastava1997
milindsrivastava1997 marked this pull request as ready for review August 19, 2026 13:09
@milindsrivastava1997
milindsrivastava1997 merged commit 76f9c32 into main Aug 19, 2026
17 checks passed
@milindsrivastava1997
milindsrivastava1997 deleted the 546-remote-write-ip-none branch August 19, 2026 13:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

precompute e2e experiments hang forever waiting on prometheus-client container

1 participant