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:
Unit 1 sendet einen vopStateChangedNotification, der landet auf dem Stack unitStateDataToSave$
Es wird weiter zu Unit 2 Navigiert
Unit 2 sendet einen vopStateChangedNotification, der landet auf dem Stack unitStateDataToSave$
Die Debouncetime läuft ab, nur die Daten von Unit 2 werden ans ans Backend geschickt.
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.
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 wirddebounceTime
angewendet beim updaten von dataParts. Dies kann aber, wenn die Unit sehr schnell gewechselt wird zu Datenverlust führen.Beispiel:
vopStateChangedNotification
, der landet auf dem StackunitStateDataToSave$
vopStateChangedNotification
, der landet auf dem StackunitStateDataToSave$
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.