AKTUELL

Informationen zur Verfügbarkeit der Tracing-API

By Juli 31, 2021August 2nd, 2021No Comments

Wie unter anderem auf Twitter und GitLab angemerkt wurde, hat die Tracing-API des luca-Systems ab 28. Juli 2021 für zirka 46 Stunden keine neuen Listen mit traceIDs bereitgestellt. Dies hatte keinerlei Auswirkungen auf eventuelle Kontaktnachverfolgungen durch Gesundheitsämter oder Check-ins von Nutzer:innen. Hat ein Gesundheitsamt am 29. Juli eine Nachverfolgung über das luca-System angestoßen, hat das System die Hinweise an die betroffenen Nutzer:innen zwar verzögert, aber dennoch vollständig am 30. Juli ausgespielt. Hinweise auf vor dem 28. Juli begonnene Kontaktnachverfolgungen hat das luca-System abgesehen von einem gut dreistündigen Wartungsvorgang (Details siehe unten) ohne Unterbrechung ausgeliefert.

Hier der technische Hintergrund: Die luca App lädt sich mittels der Tracing-API regelmäßig eine Liste mit gehashten traceIDs herunter und gleicht sie mit den lokal gespeicherten Hashes ab. Gibt es eine Übereinstimmung, zeigt die App einen Hinweis, dass man zeitgleich mit einer positiv getesteten Person im gleichen Betrieb war. Das Gesundheitsamt, das die Kontaktnachverfolgung angestoßen hat, ist zu diesem Zeitpunkt bereits im Besitz der entschlüsselten Kontaktdaten und ist bei der Nachverfolgung nicht auf das Funktionieren der Tracing-API angewiesen.

Quelle für die derzeit etwas über 2 MiB große Liste ist eine Redis-Installation, die im Normalbetrieb im 15-Minuten-Rhythmus bei Bedarf eine neue Version des Files bereitstellt. Je nach Betriebssystem fragen die Apps die Liste bei jedem Start, oder spätestens alle zwölf Stunden ab. Ist die API nicht erreichbar, weil die Datenbank wie am 28. Juli zu Wartungszwecken heruntergefahren wurde, lädt die App die Liste zum nächstmöglichen Zeitpunkt herunter. Der Upload der traceIDs durch die Apps der Nutzer:innen ist hiervon nicht beeinträchtigt, da dies über einen getrennten Kanal passiert.

Darum hat luca die Datenbank gewartet

Warum musste luca Redis für weniger als 180 Minuten herunterfahren und im Anschluss verschiedene cron-Jobs (siehe unten) für eine Weile deaktivieren? Um die Datenbank für die verbesserte Internetanbindung zu optimieren: Bis vor kurzem waren API-Endpunkt beziehungsweise Redis-Datenbank mit 2 Gbit/s ans Netzwerk angebunden*. Durch das rasche Anwachsen der Zahl der luca-Nutzer:innen kam die Anbindung an ihr Limit. Um Probleme zu vermeiden, wurde die Leitungskapazität auf 4 Gbit/s erhöht.

Damit Redis fit ist für die größere Bandbreite, hat das luca-Team eine optimierte Version der Datenbank eingespielt. Um Datenverluste während des Update-Vorgangs zu verhindern, haben die Techniker diverse cron-Jobs deaktiviert. Darunter die Routine zum regelmäßigen Ausspielen der aktualisierten Liste. Dieser Job war gut 46 Stunden lang inaktiv. Daher sah es für Außenstehende so aus, als würde die Tracing-API gar nicht funktionieren. De facto kam es durch die Wartung zwar zu einer dreistündigen Nichterreichbarkeit der API, aber nicht zu einem Verlust von traceIDs oder gar einer Einschränkung der Gesundheitsämter.

*In der vorherigen Version des Textes war fälschlicherweise von der Internetanbindung des Gesamtsystems die Rede.