davechurchill / StarcraftAITournamentManager

Tournament Manager Software for StarCraft AI Competitions
MIT License
77 stars 43 forks source link

client occasionally getting stuck in Status: SENDING #26

Closed krasi0 closed 6 years ago

krasi0 commented 6 years ago

Attaching some screenshots. As you can see from the first screenshot, the tournament manager client got stuck in "SENDING" status and the StarCraft process is still running. It happens often enough and requires manual intervention. What could be causing the issue? stuckclient1

nonstuckclient2 server

davechurchill commented 6 years ago

AFAIK we haven't observed this. How big is the data you are trying to send back? And how fast is your network?

krasi0 commented 6 years ago

I guess it was sending just the replay file at that point? It's a virtual LAN between a few Windows 7 VMs, so... pretty fast? :)

On Wed, Mar 14, 2018 at 3:34 PM, David Churchill notifications@github.com wrote:

AFAIK we haven't observed this. How big is the data you are trying to send back? And how fast is your network?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/davechurchill/StarcraftAITournamentManager/issues/26#issuecomment-373022078, or mute the thread https://github.com/notifications/unsubscribe-auth/AF5gO31xsvyvS0s5TK3XVLDjOCrYmhhDks5teRxVgaJpZM4SqSug .

-- BR

richard-kelly commented 6 years ago

I've seen some rare Tournament Manager client crashes in the game start process that I thought might be related to our network setup and 30MB+ bot directories (the bot files were only partially copied over). But no we haven't had it hang while sending the replay.

Can you check to see in these cases if a replay is actually written out to (starcraft-dir)/maps/replays by the SC client? Any exceptions logged in the command line?

At the point where it looks like the TM client is stuck, it should be checking to see that the replay folder isn't empty. It checks every 5 seconds for 50 seconds (that should be logged... added to the todo!), and then if it can't find anything it should just send an empty replay folder after logging "Sending data to server...", which I'm not seeing in the log.

Sending the bot write dir and closing the SC client is supposed to happen next after this step.

krasi0 commented 6 years ago

It's just happened again. Attaching a screenshot from the client in case that helps clientcrash

richard-kelly commented 6 years ago

What are the contents of the replays folder?

krasi0 commented 6 years ago

There is the game replay inside a subdirectory of replays (as expected) and also the file ed 0.rep in replays which has the same size as the regular game replay.

What's odd is that a new game has been created (by BWAPI?) and the bot has joined it and waiting there despite having auto_restart = OFF in bwapi.ini

On Wed, Mar 14, 2018 at 8:49 PM, Rick Kelly notifications@github.com wrote:

What are the contents of the replays folder?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/davechurchill/StarcraftAITournamentManager/issues/26#issuecomment-373134860, or mute the thread https://github.com/notifications/unsubscribe-auth/AF5gO-y7Zs_6fkWVp9_qYaRbLdkn0n0aks5teWZKgaJpZM4SqSug .

-- BR

richard-kelly commented 6 years ago

OK I see the problem. It checks for the existence of a file inside the replays directory, which is assumed to be the subdirectory with the name of the bot, and then it checks to see if that subdirectory has a file. The exception is caused because of this other replay file in the replay folder, which is not expected. The exception is encountered every time and the loop never exits because the counter would be incremented after it tries to read the subdirectory. So two problems really.

This should be an easy fix. I'll try to push one later today. I don't know why StarCraft is writing out the extra replay file.

krasi0 commented 6 years ago

Looking forward to your fix. Thanks! :)

On Mon, Mar 19, 2018 at 4:53 PM, Rick Kelly notifications@github.com wrote:

OK I see the problem. It checks for the existence of a file inside the replays directory, which is assumed to be the subdirectory with the name of the bot, and then it checks to see if that subdirectory has a file. The exception is caused because of this other replay file in the replay folder, which is not expected. The exception is encountered every time and the loop never exits because the counter would be incremented after it tries to read the subdirectory. So two problems really.

This should be an easy fix. I'll try to push one later today. I don't know why StarCraft is writing out the extra replay file.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/davechurchill/StarcraftAITournamentManager/issues/26#issuecomment-374240424, or mute the thread https://github.com/notifications/unsubscribe-auth/AF5gO7hITU4v88I5A1YUPXzo1OvHSUk2ks5tf8aAgaJpZM4SqSug .

-- BR

richard-kelly commented 6 years ago

Fixed in both branches now. I tested by manually creating extra files in the replays folder. Let me know if it doesn't work!

krasi0 commented 6 years ago

Alright, I've copied the changed code from Client.java. Let's see how it behaves overnight. Thanks for the relatively fast reaction