iqb-berlin / testcenter-frontend

the application the IQB uses for it's own assessments - client-side angular; here you find the testcenter wiki for users and administrators
MIT License
3 stars 2 forks source link

TestController: debounceTime schluckt dataParts, wenn man zu schnell updatet. #360

Closed paflov closed 2 years ago

paflov commented 2 years ago

Fehlerbeschreibung

Der folgende Fehler schien zunächst mit dem Speedtest-Player zusammenzuhängen, ließ sich aber doch auf ein Fehlverhalten im Testcenter zurückführen. In src/app/test-controller/services/test-controller.service.ts Z. 94 wird debounceTime angewendet beim updaten von dataParts. Dies kann aber, wenn die Unit sehr schnell gewechselt wird zu Datenverlust führen.

Beispiel:

Die Sache lässt sich leicht nachspielen, wenn man die DebounceTime hochsetzt.

Es könnte ebenfalls zu Datenverlust führen, wenn schnell hintereinander unterschiedliche dataParts geupdatet werden.

Lösung

a) debounceTime rausnehmen und die Verantwortung nicht zu oft Daten zu senden an den Player weitergeben. b) Beim Debouncen sicher stellen, dass nur Nachrichten übersprungen werden ddürfen, die die selben DataParts und die selbe Unit betreffen dürfen.