We are trying to create a fleet with build uploaded to S3. But it fails to activate. The same build works fine with GameLift Local and fleet activates correctly if build is uploaded directly.
Can you please take a look what’s wrong?
Fleet id - fleet-b1f00c76-3726-44c2-8726-5ad8173045bd
Thanks in advance.
It looks like your fleet failed at activating.
Our on-box process manager is constantly launching your process but it fails to check-in (see a launch path of /local/game/build_linux/build and arguments -batchmode -nographics -logFile build.log). This seems to related to early exit from your application or wrong launch path wrt to the build.
Can you double check that the launch configs are the same and that the build uploaded matches what you expect?
I’ve connected by ssh to the failed fleet instance and was able to launch the process with the same path (/local/game/build_linux/build) and arguments. So they seem to be correct.
The process run up to the point of calling ProcessReady and failed with error: ProcessReady failure: [GameLiftError: ErrorType=LOCAL_CONNECTION_FAILED, ErrorName=Local connection failed., ErrorMessage=Connection to local agent could not be established.] Through this is expected cause fleet is already in error state.
I think this proves that build is ok and runnable after installation.
Additional info: log file isn’t created. So my guess that there is some problem with gamelift process manager trying to launch our game server.
I was able to launch a fleet from S3 build after moving executable to folder /local/game. If there is an intermediate folder between /local/game and executable, (for example/local/game/ttt/server) build from S3 fails, but the same build with the same launch path uploaded directly starts correctly.
This happens only on Linux platform. Everything is fine with intermediate folders on windows.
Thanks for this update. This should be working. Team is investigating this issue.
Here is the test I used to try and replicate the issue:
Placed my test-app in /basic-test/test-app and /deep-path-test/deep/path/test-app and created 2 Builds with:
aws gamelift upload-build --name basic-test --build-version "1.0.0" --build-root /basic-test --operating-system AMAZON_LINUX
aws gamelift upload-build --name deep-path-test --build-version "1.0.0" --build-root /deep-path-test --operating-system AMAZON_LINUX
Both Builds uploaded successfully by zipping the files within /basic-test and /deep-path-test and uploading them to S3. I used the AWS console to create a Fleet for both. For the basic-test:
Launch Path: /local/game/test-app Launch Parameters: port:1111 Concurrent Processes: 1
Launch Path: /local/game/test-app Launch Parameters: port:1112 Concurrent Processes: 1
For the deep-path-test:
Launch Path: /local/game/deep/path/test-app Launch Parameters: port:1111 Concurrent Processes: 1
Launch Path: /local/game/deep/path/test-app Launch Parameters: port:1112 Concurrent Processes: 1
Both Fleets came up correctly and transitioned to Active.
If you were to use “/local/game/test-app” with the deep-path-test, the Fleet would fail during Activating because the test-app is not located there and is not being executed correctly, it’s located at “/local/game/deep/path/test-app”.
I hope this example clears up any issues you were having with intermediate folders.