Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Jira Legacy
serverSystem JiraJIRA
columnIdsissuekey,summary,issuetype,created,updated,duedate,assignee,reporter,priority,status,resolution
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId01505d01-b853-3c2e-90f1-ee9b165564fc
keyMODQM-217

...

500 error causes

IssueCauseDescription

MODQM-169

MODQM-170

Kafka topics configuration

Kafka consumers try to connect to existing consumer groups that have different assignment strategies. This led to mod-quick-marc doesn't receive any confirmation about successful/failed update. mod-quick-marc has a timeout (the 30s) for confirmation receiving. If the timeout is exceeded then respond with a 500 error. 

MODQM-191

MODQM-192

Related modules are downThe process of update is started in SRM by sending a Kafka event to SRS and then to Inventory. If SRS or Inventory is down then the process couldn't be finished. Consequently, the timeout for confirmation receiving in mod-quick-marc is exceeded.

MODQM-197

Kafka topic does not existKafka consumers cannot connect and receive messages because topics do not exist. Consequently, the timeout for confirmation receiving in mod-quick-marc is exceeded.

MODQM-212

MODQM-213

MODSOURMAN-731

IDs of records are not consistentWhen an SRS record is created firstly it has 2 IDs: record ID and record source ID, and they are the same. After 1st record update record source ID is changed. On the mod-quick-marc side, we expect to receive an event that contains an ID that is equal to the record ID but receives a different ID, because the initial ID was changed. Consequently, the timeout for confirmation receiving in mod-quick-marc is exceeded.

MODQM-218

Optimistic locking response changedWhen mod-quick-marc is getting an optimistic locking error from mod-inventory, it expects that it has JSON-structure. But it was changed to a simple string, this causes an error during message processing.

...

Info
titleasync-to-sync
The async-to-sync approach is about waiting for update confirmation received and only after that respond to UI.

View file
namesend-event-and-wait-for-relpy.svg
pageMODQM-128 Spike: quickMARC Update Record Latency
spaceFOLIJET
height250

Info
titlestatus ping
The status ping approach is about responding to UI with a status of the process, and UI ping status endpoint until the status changes to COMPLETED or ERROR.

Image Added

Warning
All actions in quickMarc should be moved to one of these approaches.

...

ProsCons
All processes in quickMarc are consistent and easy to maintainAll future bugs in data-import will affect quickMarc also
Kafka configuration is inherited from data-import Kafka configurationA little performance degradation
All future improvements to data-import will affect quickMarc also

Some features could be easily implemented in the future based on these changes:

  • possibility to use custom data-import profiles
  • MARC records bulk-edit

Prevention plan

  1. Fix Karate tests for mod-quick-marc to make it possible to rely on them. Possible solution: use mod-srs and mod-inventory-storage endpoints to populate records instead of using data-import.
  2. Continuously update Karate, module integration, and unit tests each time a new edge-cased bug was founded and fixed.