When one side changes its protocol and nobody tells the middle, the integration silently stops.
Deep-dive
- Factory equipment originally pushed readings on its own; an integration server in the middle forwarded those pushes upstream, and had for a long time.
- The equipment's comms mode was switched to request-response: it would no longer push, only answer when asked.
- Nobody updated the integration server, so it kept waiting for pushes that never came and never asked for anything.
- Root cause: a one-sided protocol change with no step that forced both sides to agree before it shipped. The post says no such step existed at the time.
- Result: data stopped flowing in production.
- The post stops at the problem and does not describe how it was detected or fixed.
Code
// equipment switched push -> request/response: the server must ASK now
@Scheduled(fixedRate = 5000)
void poll() { upstream.send(equipment.request()); } // was: wait for a push
// + freshness alert so a silent stop pages someone
if (now() - lastData > STALE_THRESHOLD) alert("no data from equipment");Say it (English)
- ·We had factory equipment that used to push its readings up on its own, and a server in the middle that just forwarded those pushes upstream.
- ·Someone switched the equipment to request-response, so it only answered when asked and stopped pushing.
- ·The integration server never got told, so it sat there waiting for pushes that were never coming and never asked for anything.
- ·Data just stopped flowing in production. The real problem was that nothing in our process made both sides agree before the change went out.
- ·There was no step that caught it, and at the time there was no such step to begin with.
Push it further
- Treat a comms-mode/protocol change as a contract change: require both sides to sign off before it ships, with a documented agreed interface.
- Add monitoring on the integration server for data freshness (stale-data / no-data-received alert) so a silent stop pages someone instead of going unnoticed.
- Add a pre-deploy step that the producer and the integration server are tested together against the new mode before production.