Date |
|
Authors | |
Status | LiveDefect done. Investigating mitigations for the future |
Summary | Some exported placements show an unknown ESR status ( |
Impact | Inaccurate information regarding some placement’s ESR status |
Non-technical Description
.The TIS-ESR interface exports data to ESR daily. The interface failed to successfully communicate the completed export of some Placements to TIS, due to TIS’s momentary unavailability. As a result, these Placement’s status on TIS remained unclear (marked with a question mark on the frontend (
?
) instead of displaying the correct exported status (marked with a tick ✔).
Trigger
. TCS momentarily unavailable (updates sent via REST calls not processed)
Detection
Great number of messages being dumped in the Dead Letter Queue (triggering a monitor alert)
Resolution
.When Placements are exported to ESR, the Data Export service sends a message via RabbitMQ queue to the Inbound Data Writer service.
Timeline
: 15:33 BST - Slack notification regarding a high volume of messages in the Dead Letter Queue
: 15:58 BST - Poor interaction between the
InboundDataWriterService
andTCS
identified as the culprit for messages being discarded when info hadn’t successfully been recorded into TIS: Fix put in place to increase resilience of the
InboundDataWriterService
when interacting withTCS
: Affected data amended in order to display accurate ESR export status (TBC)
Root Cause(s)
.When Placements are exported to ESR, the Data Export service sends a message via RabbitMQ queue to the Inbound Data Writer service.
The Inbound Data Writer service normally sends the updates to TCS via REST call, which is responsible for updating the PlacementEsrEvent table where this data’s stored.
TCS was momentarily unavailable right when the Inbound Data Writer service sent the REST call and didn’t accommodate that call. It didn’t update anything.
The Inbound Data Writer service, receiving a specific error in response to TCS’s unavailability, had a clause in place aimed at not requeuing the message in such case.
The message was not requeued (therefore re-processing was not attempted), and the updates where not applied.
Action Items
Action Items | Owner | Status |
---|---|---|
Fix current Placements whose status is currently inaccurate | ongoing | |
Make the Inbound Data Writer service more resilient so it requeues the messages when TCS doesn’t respond | done | |
Check elsewhere in the ESR interface for places where requeuing would be appropriate | ongoing |
Lessons Learned
Consider more carefully when it’s appropriate to requeue a message (re-attempt processing it) and when it’s ok not to requeue a message.
0 Comments