Closed markmandel closed 4 years ago
I assume that ParseFeatures()
function could lead to an error state, if 2 test run in parallel without runtime.FeatureTestMutex.Lock()
and one test enabled one feature and other enable another feature Gate.
func ParseFeatures(queryString string)
I think I am ready with a fix. An easy way to reproduce this locally is on current master:
cd ./pkg/sdkserver
go test -run SDKServer
waitConnectedStreamCount()
uses streamMutex as well as WatchGameServer()
new feature.
What happened:
Test times out after 10m. Looks like some kind of deadlock.
What you expected to happen:
Test to pass.
How to reproduce it (as minimally and precisely as possible):
Currently only happening occasionally in CI. Trying to work out how to reproduce it locally.
Anything else we need to know?:
I wonder if having
SDKWatchSendOnExecute
feature flag enabled will cause one of the previous either local or sdkserver tests to hang. That's my current theory. Seems to be focused on tests of either of those areas fro the stacktrackes though.Environment:
kubectl version
): 1.15Instances in tests: https://github.com/googleforgames/agones/pull/1663#issuecomment-652153122 https://github.com/googleforgames/agones/pull/1662#issuecomment-652041201
Another grep of Test from a failed test: