Ingestor: update JetStream stream subjects on startup so events.camera gets covered (add_stream silently no-ops when stream exists)
All checks were successful
build-and-deploy / build (push) Successful in 1m52s

This commit is contained in:
Sirius DevOps 2026-08-24 21:19:20 -04:00
parent 456712fc32
commit b1c611d4c4

View file

@ -148,9 +148,10 @@ async def start_nats_consumer():
nc = await nats.connect(NATS_URLS) nc = await nats.connect(NATS_URLS)
js = nc.jetstream() js = nc.jetstream()
# Create stream if not exists # Create stream if not exists; if it exists, UPDATE its subject list so
try: # newly added event types (e.g. events.camera) are actually covered.
await js.add_stream( from nats.js.api import StreamConfig
stream_cfg = StreamConfig(
name=NATS_STREAM, name=NATS_STREAM,
subjects=[ subjects=[
"events.gdelt", "events.rss", "events.social", "events.gdelt", "events.rss", "events.social",
@ -161,9 +162,12 @@ async def start_nats_consumer():
retention=nats.js.api.RetentionPolicy.LIMITS, retention=nats.js.api.RetentionPolicy.LIMITS,
max_msgs=1_000_000, max_msgs=1_000_000,
) )
try:
await js.add_stream(stream_cfg)
logger.info("Created NATS stream %s", NATS_STREAM) logger.info("Created NATS stream %s", NATS_STREAM)
except Exception: except Exception:
logger.debug("Stream %s already exists", NATS_STREAM) await js.update_stream(stream_cfg)
logger.info("Updated NATS stream %s subjects", NATS_STREAM)
# Create durable consumer # Create durable consumer
sub = await js.pull_subscribe( sub = await js.pull_subscribe(