Description of problem: o.a.c.http11.InternalNioOutputBuffer.sendAck can cause a high CPU loop: sun.nio.ch.WindowsAsynchronousSocketChannelImpl.write0 line: not available [native method] sun.nio.ch.WindowsAsynchronousSocketChannelImpl.access$900 line: 43 sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.run line: 778 sun.nio.ch.WindowsAsynchronousSocketChannelImpl.implWrite line: 916 sun.nio.ch.AsynchronousSocketChannelImpl.write line: 382 sun.nio.ch.AsynchronousSocketChannelImpl.write line: 387 org.apache.tomcat.util.net.NioChannel.writeBytes line: 919 org.apache.coyote.http11.InternalNioOutputBuffer.blockingWrite line: 314 org.apache.coyote.http11.InternalNioOutputBuffer.sendAck line: 352 It appears NioChannel.writeBytes is raising an exception. InternalNioOutputBuffer.blockingWrite swallows that exception and returns 0, and the sendAck loop continues endlessly then over those repeated actions. Version-Release number of selected component (if applicable): 7.5.20 How reproducible: Steps to Reproduce: 1.Hit exception in NioChannel.writeBytes during InternalNioOutputBuffer.sendAc Will see if there's a way to force that more deterministically Actual results: InternalNioOutputBuffer.sendAck hits high CPU loops in the event of an exception from NioChannel.writeBytes Expected results: InternalNioOutputBuffer.sendAck does not hit high CPU loop Additional info:
Created attachment 1257229 [details] bz1426264reproducer.zip
Verified with EAP 6.4.15.CP.CR2
Released on May 18 as part of EAP 6.4.15.