Einführung eines "Notified"-Flags in Einreichungen
Als Aufrufer des GET /v1/submissions
Endpunktes möchte ich, dass die Antwort schnell verfügbar ist. Außerdem sollen auf diesem Weg neu ermittelte Einreichungen ein notify_submission
Event Log Eintrag erzeugen.
Why
Beim Abrufen aller Einreichungen über den Endpunkt GET /v1/submissions
wird für alle gelisteten Einreichungen geprüft, ob diese bereits ein notify_submission
Event Log Eintrag besitzen, indem für jede Einreichung direkt in die event_log
Tabelle geschaut wird. Dies erzeugt bei vielen Einreichungen eine hohe Anzahl an Anfragen und damit Last auf die Tabelle event_log
(siehe planning#1514) .
IST:
Beim Abrufen aller Einreichungen über den Endpunkt GET /v1/submissions
wird für alle gelisteten Einreichungen geprüft, ob diese bereits ein notify_submission
Event Log Eintrag besitzen. Diese Prüfung findet direkt im Event Log statt. Dabei wird für jede Submission in der Tabelle event_log
geprüft, ob es bereits ein notify_submission
Event vom Type polling
gibt.
SOLL:
Um zusätzliche Datenbank-Abfragen in der Tabelle event_log
zu vermeiden, wurde diese Prüfung für die Replies abweichend implementiert. Die Entität Reply besitzt ein Flag notify_event_written
, welches auf true
gesetzt wird, sobald der Reply erstmalig über den GET /v1/replies
Endpunkt gelistet wurde und damit das notify_reply
Event vom Typ polling
dem Event Log hinzugefügt wurde.
Analog hierzu soll die Prüfung auch für die Einreichungen - über ein Flag notify_event_written
- erfolgen.
Links, Notes, Remarks
- Das Verhalten nach außen bleibt 1:1 bestehen (API Tests müssen also nicht angepasst werden.
- Bei diesem Issue liegt der Fokus auf der internen Verarbeitung.
Referenzen auf die Reply Implementierung:
-
notify_event_written
Column inreply
: https://git.fitko.de/fit-connect/zustelldienst/blob/c8838dbf675f4a826d96faa3294b1aaaa26c5308/src/main/resources/db/migration/V018__Add_notified_to_reply_table.sql#L3 - Methode welche ein
notify_reply
Event vom Typpolling
schreibt, sofern das Flag nochfalse
ist: https://git.fitko.de/fit-connect/zustelldienst/blob/c8838dbf675f4a826d96faa3294b1aaaa26c5308/src/main/java/de/fiep/zustelldienst/service/ReplyService.java#L184 -
@SpringBootTest
"Should write 'notify-reply' event of type POLLING when GET /replies endpoint is called": https://git.fitko.de/fit-connect/zustelldienst/blob/bb7dacdc3dcf7cb8a656cb7d3b7b158d8ff57a80/src/test/java/de/fiep/zustelldienst/controller/ReplyRetrievalAPITest.java#L123
Acceptance criteria
-
Es gibt einen Test, der prüft, dass kein notify_submission
Event vom Typpolling
geschrieben wird, wenn ein Flagnotify_event_written
auftrue
gestellt ist. -
Es gibt einen Test, der prüft, dass ein notify_submission
Event vom Typpolling
geschrieben wird, wenn ein Flagnotify_event_written
auffalse
gestellt ist. -
Es gibt einen Integrations Test ( @SpringBoot
), welcher sicherstellt, dass beim Aufruf des EndpunktesGET /v1/submissions
einnotify_submission
Event vom Typpolling
in die Datenbank geschrieben wird. -
Notwendige Datenbankmigrationen erfolgen automatisiert und es werden sinnvolle Default-Werte gesetzt.
Implementation plan (to be completed by the developer)
-
... -
... -
... -
Definition of Done was checked.