Jonathan Jonathan - 4 months ago 50
Java Question

Parameter-Read-Timeout in Wildfly 9.0.1.Final

We have stumbled accross some odd (currently non-reproducable) behaviour in the JDK8_74/Wildfly 9.0.1.Final. Upon parsing the parameters of a post-request the worker thread starts an infinite-loop into the native method

PollArrayWrapper.poll0(long, int, long)
. The thread consumes 100% CPU load on one core.

mServlet.java:468 io.undertow.servlet.spec.HttpServletRequestImpl.getParameterValues(String)
HttpServletRequestImpl.java:679 io.undertow.servlet.spec.HttpServletRequestImpl.parseFormData()
...
SelectorImpl.java:86 sun.nio.ch.PollSelectorImpl.doSelect(long)
PollSelectorImpl.java:87 sun.nio.ch.PollArrayWrapper.poll(int, int, long)
PollArrayWrapper.java:115 sun.nio.ch.PollArrayWrapper.poll0(long, int, long)


Has anyone seen this? It seems to pop up in different projects on different occasions since 2005 and has been reported several times as JDK Bug and those have been marked fixed.

Has anyone any idea, how to force Wildfly to use a timeout on the
poll0
Method?

Kind regards,
Jonathan

Answer

As ctomc implied, this issue is very likely a non-resolved jdk-bug. Our software is running on quite a vew different execution environments and we have ever seen this issue on the SLES 11.4.23 system.

A possible solution is to employ thread-encapsulation in a hystrix style: encapsulating the critical call within a Callable and therefore allowing to implement some form of watchdog/time-out.