informatiCup / InformatiCup2021

spe_ed
https://informaticup.github.io/competition/20-current
17 stars 5 forks source link

Wir sterben ohne Grund #38

Closed Fabioni closed 3 years ago

Fabioni commented 3 years ago

Guten Abend, mein Team ist sehr frustriert aufgrund von seltsamen Fehlern, welche bei der bereitgestellten online Plattform der Gi auftreten. Dies vermuten wir zumindest.

Es kommt seit gestern vermehrt vor, dass wir ohne Grund auf active: false gesetzt werden. Alle angegebenen Zeiten sind in UTC. Ich schildere eine der besagten Situationen in Runde 137/138 eines Spiels welches um _2021-01-1216:34:03 startete.

Die Deadline war: 2021-01-12 16:59:32 Daraufhin sendeten wir send {"action": "turn_left"}, was in dieser Situation offensichtlich eine möglicher Zug war, der nicht zum sterben führen konnte. Die Sendezeiten waren:

send at 2021-01-12 16:59:31.500592 send finish at 2021-01-12 16:59:31.500832

Wir haben also rechtzeitig die Nachricht abgesendet und das auch erfolgreich wie der send-finish Zeit zu entnehmen ist. Danach fragten wir einen neuen State an um

start recv() at 2021-01-12 16:59:31.500917

und bekamen diesen daraufhin auch zugeschickt um:

finish recv() at 2021-01-12 16:59:34.176797

Dieser neue State führte uns allerdings als "active":false und auch unsere Aktion turn_left wurde nicht umgesetzt. Die anderen Spieler wurden am Leben gelassen und haben sich auch bewegt.

Dies ist in den letzten Wochen nie vorgekommen und seit gestern geschieht es ständig. Den Zeitstempeln kann man entnehmen, dass das Problem nicht an uns liegt, oder sieht hier jemand was? Außerdem tritt das Problem ja auch nicht immer auf sondern nur sehr oft, von daher bin ich noch mehr überfragt.

Sieht jemand das Problem oder hat eine Idee?

Ich gehe davon aus, dass der Fehler bei der Gi liegt, da wir parallel zu diesem Problem auch ein enormer delay in der Abfrage der time_url feststellen mussten seit gestern, wofür es bereits ein anderes Issue gibt, welches nicht von mir angelegt wurde.

Vielen Dank an alle :-)

Top-Ranger commented 3 years ago

Hat sich das Problem mittlerweile wie https://github.com/informatiCup/InformatiCup2021/issues/36 gelöst?

Fabioni commented 3 years ago

Wir haben das Spiel beobachtet und das Problem ist noch ein paar mal aufgetreten aber dann nicht mehr. Ich geh daher davon aus, dass das Problem noch besteht in eurer Architektur. Bei Tests habe ich immernoch feststellen können, dass die time_url manchmal sehr lange braucht zu antworten. Circa einmal die Stunde dauert sie länger als eine Sekunde zum Antworten.

Top-Ranger commented 3 years ago

Meine Vermutung ist, dass euer Spieler nicht rechtzeitig eine Antwort geschickt hat. Dabei müsst ihr unter anderem auch entsprechende Netzwerklatenzen mit einkalkulieren (die auch auf eurer Seite passieren können). Bitte beachtet auch, dass die Antwort zur Deadline beim Server angekommen sein muss (wie in der Aufgabenstellung angegeben). Solltet ihr also die Antwort sehr knapp abschicken und z.B. minimale Netzwerklatenzen auftreten, dann kann das genau euer Problem erklären.

Fabioni commented 3 years ago

Meine Vermutung ist, dass euer Spieler nicht rechtzeitig eine Antwort geschickt hat. Dabei müsst ihr unter anderem auch entsprechende Netzwerklatenzen mit einkalkulieren (die auch auf eurer Seite passieren können). Bitte beachtet auch, dass die Antwort zur Deadline beim Server angekommen sein muss (wie in der Aufgabenstellung angegeben). Solltet ihr also die Antwort sehr knapp abschicken und z.B. minimale Netzwerklatenzen auftreten, dann kann das genau euer Problem erklären.

wie meiner Frage zu entnehmen haben wir die Antwort rechtzeitig geschickt. "finish recv()" ist nach der Deadline passiert. Da TCP und blockierender Aufruf von send(), ist das also eindeutig angekommen am Server rechtzeitig.