[Gelöst] assigned_personnel_count in Vehciles API V2 fehlerhaft

  • Bei der Anzahl zugewiesener Fahrzeuge sehe ich eine Abweichung zwischen Web und API. Verstehe ich das Feld falsch oder ist das ein Fehler?

    Das Feld assigned_personnel_count des V2 Vehicles Endpoint https://www.leitstellenspiel.de/api/v2/vehicles/{vehicle-id} zeigt in manchen Fällen weniger Personal an, als tatsächlich zugewiesen ist. In meinem Fall sind max 10 % der Fahrzeuge betroffen.


    Zur Ursache kann ich keine Angaben machen. Mir war es nicht möglich, den Fehler zu forcieren. Der Zähler lässt sich in manchen Fällen mit einem Refresh im Broswer des jeweiligen Fahrzeug-Endpunkts korrigieren. Häufiger muss händisch am Fahrzeug Personal abgezogen, dann wieder zugewiesen werden und in hartnäckigen Fällen zusätzlich zwischen den Veränderungen den Fahrzeug-Endpunkt immer wieder aktualisieren.


    Ziel ist es im [Script] Gebäude- & Fuhrparkverwalter by BOS-Ernie u.a. eine festgelegte Anzahl zugewiesenes Personal pro Fahrzeugtyp zu überprüfen. Da hier die komplette Fahrzeugliste (https://www.leitstellenspiel.de/api/v2/vehicles/) geladen und gecacht wird, ist ein Workaround auf Anwenderseite nicht zielführend.


    Community-Team Leitstellenspiel Wäre es möglich, dass ihr euch die Sache einmal anschauen könnt? Falls ihr weitere Informationen braucht, gerne melden. Danke!

  • An sich ist @LSS-Team passender, allerdings nutze ich die Glaskugel da gerne mit einer Uno-Reverse Card und geb solche Sachen auch gerne einmal per Direktverbindung weiter, einfach als kleiner Zusatz-Ping, da das Dev-Team natürlich anders ins Forum schaut, als das Community-Team :)

  • LSS-Team Kann ich mit einer Reaktion von eurer Seite noch rechnen?


    An sich ist @LSS-Team passender, allerdings nutze ich die Glaskugel da gerne mit einer Uno-Reverse Card und geb solche Sachen auch gerne einmal per Direktverbindung weiter, einfach als kleiner Zusatz-Ping, da das Dev-Team natürlich anders ins Forum schaut, als das Community-Team :)

    Jan hat das an dem Tag weitergegeben. Ich kann aber da ich auf Arbeit bin nicht nachschauen was das Team dazu geschrieben hat. Außerdem ist Dennis vom Entwickler Team der meistens hinter dem Account ist noch bis Montag meine ich im Urlaub. Vlt mag Jan wenn er Zeit hat Mal schauen ob Dennis da geantwortet hat sonst schau ich heute Abend da nach. Sonst geben wir das gerne nochmals auf dem kurzen Dienstweg weiter

  • Jan hat das an dem Tag weitergegeben. Ich kann aber da ich auf Arbeit bin nicht nachschauen was das Team dazu geschrieben hat. Außerdem ist Dennis vom Entwickler Team der meistens hinter dem Account ist noch bis Montag meine ich im Urlaub. Vlt mag Jan wenn er Zeit hat Mal schauen ob Dennis da geantwortet hat sonst schau ich heute Abend da nach. Sonst geben wir das gerne nochmals auf dem kurzen Dienstweg weiter

    Ich hab das ganze nochmals hochgeholt in der Glaskugel :)

  • Moin, das ganze ist ein etwas feines Cachingproblem, so wie es ausschaut; so richtig ergibt sich auch noch kein Grund, aus dem die Daten falsch angezeigt werden sollten. Kurios ist hier, dass das Neuladen der Fahrzeugseite manchmal einen Effekt hat, aber das abziehen und zuweisen von Personal nicht immer zu einer Lösung führt (das sollte den Cache nämlich wieder auf Stand bringen). Ich vermute, dass da irgendwo eine Race Condition eine Rolle spielt und sich parallele Updates in die Quere kommen. Ist es zufällig möglich, dass andere Skripte noch eine Rolle spielen, die potentiell mehrere Fahrzeug-Personal-Updates in kurzer Zeit durchspielen?


    Grüße

    Dennis vom Entwicklerteam

  • Moin, das ganze ist ein etwas feines Cachingproblem, so wie es ausschaut; so richtig ergibt sich auch noch kein Grund, aus dem die Daten falsch angezeigt werden sollten. Kurios ist hier, dass das Neuladen der Fahrzeugseite manchmal einen Effekt hat, aber das abziehen und zuweisen von Personal nicht immer zu einer Lösung führt (das sollte den Cache nämlich wieder auf Stand bringen). Ich vermute, dass da irgendwo eine Race Condition eine Rolle spielt und sich parallele Updates in die Quere kommen. Ist es zufällig möglich, dass andere Skripte noch eine Rolle spielen, die potentiell mehrere Fahrzeug-Personal-Updates in kurzer Zeit durchspielen?


    Grüße

    Dennis vom Entwicklerteam

    Schön von euch zu hören, vielen Dank!


    Ich verwende keine Scripts, welche das Personal an diversen Fahrzeugen aktualisiert. Das Personal weise Ich direkt beim Kauf zu. Den Kaufen-Button klicke ich mit gehaltener Strg-Taste, so dass ich pro Fahrzeug 1 Tab offen habe und dann nacheinander die Personalzuweisung durchführen kann. Da wird die Personalseite jedes Fahrzeuges nur 1x aufgerufen. An manchen Tagen kaufe ich mehrere Hundert Fahrzeuge. Aber ich kann mir nicht vorstellen, dass die Anzahl eine Auswirkung haben könnte. Eher wie du schon sagst parallele Anfragen.


    Könnt ihr den Fehler reproduzieren - also Abziehen/Zuweisen vom Personal und API liefert eine andere Anzahl?

  • LSS-Team Nachtrag: Mir ist erst jetzt eingefallen, dass die Zuweisung nicht pro Fahrzeug sondern pro Person gemacht wird. Sprich pro Fahrzeug werden so viele Requests abgeschickt, wie Personen zugewiesen werden. Das Script, welches ich dafür verwende, triggert den Button-Klick ohne Verzögerung. Ich werde eine Verzögerung von 200 ms zwischen den Klicks einbauen. Reicht das aus, um die Race Condition auszuschliessen?


    Der Gebäude- und Fahrzeugverwalter zeigt mir über 5'000 Fahrzeuge mit abweichender Personalzuweisung an. Die Überprüfung wird als Benutzer recht zeitaufwändig. Habt ihr eine Möglichkeit den Cache zu leeren und einen Warm-Up durchzuführen?

  • BOS-Ernie mir ist noch etwas komisches Aufgefallen. Teilweise wenn die Seite mehrfach neu Geladen wurde plötzlich die Fahrzeuge plötzlich nicht mehr in der fehlenden Liste auftauchen.


    LSS-Team vielleicht hilft euch diese Information weiter.

    Das Seite (Hauptseite) neu laden dürfte keinen Einfluss auf den Cache haben.


    Bzgl. Script ([Script] Gebäude- & Fuhrparkverwalter by BOS-Ernie) ist es so, dass die Gebäude und Fahrzeuge abgefragt und in der IndexedDB hinterlegt werden. Beim Öffnen des Scripts (Modals) wird die Aktualität überprüft und wenn älter als 5 Minuten die Daten neu geholt. Dadurch wird ebenfalls die Liste der Personalzuweisungen aktualisiert. Das Verschwinden von Fahrzeugen reflektiert nur einen aktuelleren Stand, ich sehe hier jedoch keinen korrigierenden Einfluss auf den API-Cache.

  • Moin, das ganze ist ein etwas feines Cachingproblem, so wie es ausschaut; so richtig ergibt sich auch noch kein Grund, aus dem die Daten falsch angezeigt werden sollten. Kurios ist hier, dass das Neuladen der Fahrzeugseite manchmal einen Effekt hat, aber das abziehen und zuweisen von Personal nicht immer zu einer Lösung führt (das sollte den Cache nämlich wieder auf Stand bringen). Ich vermute, dass da irgendwo eine Race Condition eine Rolle spielt und sich parallele Updates in die Quere kommen. Ist es zufällig möglich, dass andere Skripte noch eine Rolle spielen, die potentiell mehrere Fahrzeug-Personal-Updates in kurzer Zeit durchspielen?


    Grüße

    Dennis vom Entwicklerteam

    LSS-Team Du lagst mit Deiner Vermutung goldrichtig. Nach Einbau eines Timeouts zwischen den Clicks, zeigt die API die richtige Anzahl an. Mit den ersten 200 Fahrzeuge getestet, nur noch 5'000 Fahrzeuge zu korrigieren. 🥴

  • Super, das ist ja erstmal gut. Wir haben bei den restlichen Fahrzeugen mal ein wenig nachgeholfen ;-) Die Bestätigung ist auch super, da wir das Problem dann nochmal besser angehen können (denn so oder so ist es erstmal ein Bug, den wir korrigieren sollten). Generell ist aber ein kleines Delay zwischen gescripteten Requests auch gut, um den Druck auf die Server nicht unnötig zu erhöhen, von unserer Seite her also durchaus sowieso wünschenswert :thumbup:


    Grüße

    Dennis vom Entwicklerteam