Seite 1 von 1

Standbelegung

Verfasst: Mo 16. Dez 2024, 13:03
von poet-of-the-fall
Hallo,

auch ich habe das LANA Websocket (ws://192.168.10.200:53088) angezapft, da ich die Standbelegung auf einer einfachen Oberfläche anzeigen wollte (ohne aktuelle Scheiben). Projekt liegt auf Github: https://github.com/poet-of-the-fall/ngSRA

Bei der technischen Umsetzung ist mir folgendes aufgefallen:
Die SeqNo in der Response steigt kontinuierlich. Da ich gerne sekündlich den Command "GetLaneInfo" schicken würde, kommen wir hier wohl irgendwann an ein Wertebereichlimit (ist das ein SmallInt?) und ich glaube ich schieße den Server damit ab. Im normalen Betrieb fällt das vermutlich nicht auf, weil man mit LANA wohl nur 5 bis 10 SeqNo pro Nutzung hochzählt und irgendwann der Server durch Updates oder anderes neu gestartet wird.

Nun meine Frage dazu:
Gibt es eine Möglichkeit, die SeqNo in der Response wieder zurückzusetzen?

Danke schon mal für eure Hilfe. Das Github Projekt ist erst an Anfang, da kommen hoffentlich bald noch ein paar Features, Anleitung und ein Release dazu ;-)

Grüße
Danilo

Re: Standbelegung

Verfasst: Mo 16. Dez 2024, 17:56
von [MEYTON] RG
Hallo Danilo,

soweit ich weiß ist die SeqNo ein 32bit unsigned int. Damit solltest du eigentlich nicht so schnell an die Grenzen des Systems stoßen. Und selbst wenn man irgendwann an das Limit kommen sollte, müsste ein Überlauf stattfinden und die Nummer wieder bei 0 staten.

Gruß,
Roman

Re: Standbelegung

Verfasst: Fr 17. Jan 2025, 20:36
von poet-of-the-fall
Hallo Roman,

ich hab das jetzt immer mal laufen lassen und in paar Abende lief es problemlos, jetzt ist es aber gerade wieder abgeschmiert. In dem Fall geht LANA gar nicht mehr, sprich wir können die Stände auch nicht mehr über LANA belegen.

Das Websocket schickt dann z.B. bei der Anmeldung folgendes:

Code: Alles auswählen

{"Prot":"MEWS","VerP":2,"SubProt":"LA","VerSP":2,"SeqNo":9,"Cmd":"GetShootersWithName","Data":{"Filter":"sec"}}
{"Data":[{"FirstName":"Danilo","LastName":"Secall Aguila","ShooterID":60220069}],"Prot":"MEWS","RV":0,"Rsp":"GetShootersWithName","SeqNo":9177,"SeqNoRsp":9,"SubProt":"LA","VerP":2,"VerSP":2}
{"Prot":"MEWS","VerP":2,"SubProt":"LA","VerSP":2,"SeqNo":11,"Cmd":"GetShooterWithID","Data":{"ShooterID":60220069}}
{"Prot":"MEWS","RV":-3,"RVErrorMsg":"Fehler beim Laden von Daten aus der Datenbank!","Rsp":"GetShooterWithID","SeqNo":9180,"SeqNoRsp":11,"SubProt":"LA","VerP":2,"VerSP":2}
Selbiges gilt auch für meine Abfrage der Stände:

Code: Alles auswählen

{"Prot":"MEWS","RV":-3,"RVErrorMsg":"Fehler beim Laden von Daten aus der Datenbank!","Rsp":"GetLaneInfo","SeqNo":9270,"SeqNoRsp":9,"SubProt":"LA","VerP":2,"VerSP":2}
Also irgendwie hängt da wohl was bei der Datenabfrage. Stand an und für sich geht noch, Belegung über das Kontrollzentrum ist auch möglich. Lediglich LANA hat sich aufgehängt und scheint irgendwie Probleme beim DB Zugriff zu haben. Schützen findet es wohl prinzipiell noch, aber wenn dann die Stammdaten geladen werden sollen, geht nix mehr.
Das Websocket ist dann auch extrem langsam. Ich polle aktuell 1x pro Sekunde, erhalte dann aber nur aller 3 bis 30 (oder mehr) Sekunden eine Antwort. Server neu starten hilft natürlich, sollte aber im Schießbetrieb nicht die Standardlösung sein.

Gibt es da irgendwas, auf das ich vorher achten muss, damit das System nicht in so einen Zustand läuft?

Repo ist https://github.com/poet-of-the-fall/ngSRA, falls ihr auch testen wollt.

Re: Standbelegung

Verfasst: Mo 20. Jan 2025, 10:20
von [MEYTON] RG
Das Fehlerbild ist bei uns so noch nicht vorgekommen. Bitte einmal prüfen, ob in diesem Zustand im Meyton Kontrollzentrum im Bereich "Datenbank" noch eine Verbindung zur Datenbank angezeigt wird. Was mir komisch erscheint ist, dass noch Schützen per Namen abgefragt werden können. Dazu ist auch ein Datenbankzugriff nötig. Es kann eingentlich nicht sein, dass kein Zugriff auf die Datenbank mehr möglich ist. Der LANA-Dienst scheint auch noch zu laufen und nicht abgestürzt zu sein, sonst würde man gar keine Antworten mehr erhalten.

Es scheint sich also um ein Verbindungsprobelm mit der Datenbank zu handeln. Dein Programm greift nur auf die LANA WebSocket Schnittstelle und nicht direkt auf die Datenbank zu, oder? Baust du für jede Anfrage immer neue WebSocket-Verbindungen auf oder benutzt du immer dieselbe WebSocket-Verbindung für das Polling?

Re: Standbelegung

Verfasst: Fr 31. Jan 2025, 17:50
von poet-of-the-fall
LANA war zu dem Zeitpunkt dann auch nicht mehr nutzbar. Wenn man Leute gesucht hat, wurde zwar kurz was angezeigt, war dann aber gleich wieder mit Fehlermeldung weg.

Ja genau, ich verbinde nur auf das Websocket und halte die Verbindung für alle Anfragen aufrecht. Ich hatte zeitweise mal ein Reconnect (also disconnect und neuer Connect) auf Basis der SeqNo. drin, aber nachdem die auch nach dem Reconnect einfach weiter hochzählt, hat das nicht so wirklich funktioniert.

Wenn das über die Datenbank einfach geht, kann ich mich sicher auch dorthin verbinden. Das ständige pollen ist sicher nicht die beste Lösung ;-)

Inzwischen hab ich das ganze mit Electron mal gebaut, damit man das auch ohne weitere Kenntnisse ausprobieren kann.

Re: Standbelegung

Verfasst: Mo 3. Feb 2025, 10:26
von [MEYTON] RG
Am besten wäre es wahrscheinlich, wenn wir eine Fernwartung durchführen könnten, wenn das Problem akkut auftritt. Dann wäre es am einfachsten das genaue Problem zu analysieren.

Re: Standbelegung

Verfasst: Mo 3. Feb 2025, 11:12
von poet-of-the-fall
Das wird schwierig. Das Problem tritt wenn dann sporadisch am Freitag Abend beim Schießabend auf. Da möchte ich den Stand dann aber auch nicht länger in dem Zustand belassen. Falls es sich mal ergibt, dass das erst gegen Ende des Abends auftritt und keine Wettkämpfe weiter sind, würde ich mich mal melden 😉

Re: Standbelegung

Verfasst: Do 6. Mär 2025, 15:02
von poet-of-the-fall
<t>Jetzt hat er sich gerade mal wieder aufgehängt. Fernwartung hab ich mal aktiviert, keine Ahnung wie lang die aktiv bleibt (das geht alles nir über einen UMTS Stick). Meldet euch einfach mal, evtl. kann ich dann auch kurz hin fahren und das wieder einschalten.</t>

Sorry, der Text ist von Freitag, konnte den aber nicht posten, weil ich ständig an eurem spamfilter gescheitert bin…IP war geblockt 😕