protected volatile int keyCount = 0;
+ private static final int JVM_BUG_THRESHOLD = 16;
+ private volatile int jvmBugCount = 0;
+
public Poller() throws IOException {
this.selector = Selector.open();
}
}else {
keyCount = selector.keys().size();
wakeupCounter.set(-1);
+ long before = System.currentTimeMillis();
keyCount = selector.select(selectorTimeout);
+ long after = System.currentTimeMillis();
+ if (keyCount == 0 &&
+ (after - before) < selectorTimeout/2) {
+ jvmBugCount++;
+ if (jvmBugCount > JVM_BUG_THRESHOLD) {
+ log.error(sm.getString(
+ "endpoint.err.jvmbug"));
+ }
+ }
}
wakeupCounter.set(0);
}
endpoint.sendfile.addfail=Sendfile failure: [{0}] {1}
endpoint.sendfile.nosupport=Disabling sendfile, since either the APR version or the system doesn't support it
endpoint.warn.noInsecureReneg=Secure renegotation is not supported by the SSL library {0}
+endpoint.err.jvmbug=The poller for the NIO connector may have entered an error state triggered by a JVM bug. See bug 49890 for more information. If you see this message with a 1.6.0u18 or later JVM and a 2.6 or later kernel please update the Tomcat bug with exact version information.
+
\ No newline at end of file
<fix>
<bug>49209</bug>: Prevent possible AccessControlException during
undeployment when running with a security manager. Patch provided by
- Sylvain Laurent.
+ Sylvain Laurent. (markt)
</fix>
<fix>
<bug>49657</bug>: Handle CGI executables with spaces in the path.
<bug>49860</bug>: Add support for trailing headers in chunked HTTP
requests. (markt)
</fix>
+ <add>
+ <bug>49890</bug>: Detect when NIO connector encounters a known JVM bug
+ on Linux and log an error to help determine if the bug is still present
+ ort not. The JVM bug should be fixed for 2.6 kernels and the 1.6.0u18
+ JVMs and later. (markt)
+ </add>
</changelog>
</subsection>
<subsection name="Jasper">