You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 764aa3f
Browse filesBrowse the repository at this point in the historyBrowse files
fix(lgtm-datamesh): demos survive KEDA scale-to-zero of gateway and consumer
bootstrap-capstone.sh applies the KEDA scalers (gateway HTTPScaledObject,
notification ScaledObject), but several demos were written before that
and assume both services always have a live pod:
- walkthrough act 1 and smoke-discovery port-forward straight to the
graphql-gateway Service (the CAP-046 interceptor bypass), which has no
pod when KEDA has it at zero — and nothing on this path ever wakes it.
Wake it explicitly (scale to 1 + rollout wait) when availableReplicas
is 0; KEDA re-adopts it afterwards. Relax the walkthrough preflight
from 'Deployment available' to 'Deployment exists' to match.
- smoke-avro and smoke-notifications port-forward notification-service
and poll /received. A port-forward pins the pod it attached to; helm
sets replicas=1, KEDA reconciles to 0 within its 5s poll, and the
tested event then wakes a NEW pod — so the smoke polls a dead tunnel
while '|| echo []' masks every failure as 'not consumed yet' (the
event was in fact persisted mid-window; confirmed in Postgres).
Re-attach the port-forward when curl fails, and widen the poll window
from ~60s to ~180s to cover lag-poll + pod start + group join.
- smoke-notifications failure dump: show the Deployment and ScaledObject
before the pod list, so an empty list reads as scale-to-zero rather
than a missing deploy.
Verified live with both scalers applied and both services at zero:
smoke-discovery, smoke-avro, smoke-notifications, and walkthrough
--only trace all pass, with the wake/re-attach paths exercised.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
ifprintf'%s'"$RECV"| python3 -c "import sys,json; d=json.load(sys.stdin); sys.exit(0 if any(e.get('order_id')=='$ORDER_ID' and e.get('event_type')=='order.placed' and e.get('item_sku')=='WIDGET-001' for e in d) else 1)"2>/dev/null;then
129
141
printf' ✓ notification decoded order.placed for %s (after ~%ds)\n'"$ORDER_ID""$((i*2))"
130
142
seen=1;break
131
143
fi
132
144
sleep 2
133
145
done
134
-
(( seen ))|| fail "notification did not consume/decode the Avro event within ~60s"
146
+
(( seen ))|| fail "notification did not consume/decode the Avro event within ~180s"
135
147
136
148
printf'\n✓ SUCCESS — order.placed flows as registered Avro: schema in Apicurio + event decoded by the consumer via the registry\n'
0 commit comments