Issue
WebSphere 9 containers launched in our cloud testing environment sometimes fail to start correctly, the component of the server responsible for responding to HTTP requests never initialized so these failed WebSphere instances never responded to any HTTP requests.
Cause
One indication in WebSphere log files of this problem is the following message, indicating HTTP service initialization completion, is missing:
com.ibm.ws.webcontainer.WSWebContainer initialize SRVE0161I: IBM WebSphere Application Server - Web Container. Copyright IBM Corp. 1998-2015
We haven't found any errors reported by WebSphere correlated to this "failure to launch", it simply does not respond to HTTP requests.
What appears to be happening is that WebSphere 9 HTTP startup has a race condition that can cause this problem when particular startup timing conditions are met. We were seeing this failure in about 1 in 20 WebSphere 9 container launches. We have not seen the problem in WebSphere 8.5 which starts about the same number of test containers in our pipeline.
Resolution
Contrast has eliminated this problem in their pipelines by tweaking the configuration of the WebSphere thread pool used for server component initialization.
It has been discovered that any change to WebSphere startup concurrency configuration from it’s default 3-thread pool eliminated the failures. Successful configuration changes included:
- 10 threads in the pool
- A single thread in the pool
- 3 threads initially allocated to a dynamically growable thread pool
We have not yet identified the specific failure mechanism but did want to bring notice to what we have discovered so far and hope to resolve this issue soon.
If you have any questions on this, please don't hesitate to reach out to support@contrastsecurity.com