Martin JANDA created DERBY-6455:
-----------------------------------
Summary: Infinite loop in
NetworkServerControlImpl.ensureDataInBuffer
Key: DERBY-6455
URL: https://issues.apache.org/jira/browse/DERBY-6455
Project: Derby
Issue Type: Bug
Components: Network Server
Affects Versions: 10.10.1.1
Reporter: Martin JANDA
Priority: Critical
NetworkServerControlImpl.ensureDataInBuffer missing check for return -1 (EOF)
from 'clientIs.read'. When read returns -1 thread consumes 100% CPU. Method
NetworkServerControlImpl.fillReplyBuffer correctly throw exception.
Fix: add two lines:
private void ensureDataInBuffer(int minimumBytesNeeded) throws Exception
{
// make sure the buffer is large enough
while ((replyBufferCount - replyBufferPos) < minimumBytesNeeded)
{
try {
int bytesRead = clientIs.read(replyBuffer, replyBufferCount,
replyBuffer.length - replyBufferCount);
+ if (bytesRead == -1)
+ consolePropertyMessage("DRDA_InvalidReplyTooShort.S",
true);
replyBufferCount += bytesRead;
} catch (IOException e)
{
clientSocketError(e);
}
}
}
StackTrace:
java.lang.Thread.State: RUNNABLE
at java.net.SocketInputStream.read(Unknown Source:-1)
at
org.apache.derby.impl.drda.NetworkServerControlImpl.ensureDataInBuffer(Unknown
Source:-1)
at
org.apache.derby.impl.drda.NetworkServerControlImpl.readLDString(Unknown
Source:-1)
at
org.apache.derby.impl.drda.NetworkServerControlImpl.readStringReply(Unknown
Source:-1)
at
org.apache.derby.impl.drda.NetworkServerControlImpl.runtimeInfo(Unknown
Source:-1)
at org.apache.derby.drda.NetworkServerControl.getRuntimeInfo(Unknown
Source:-1)
at
com.crcdata.dbadmin.server.DerbyEngine.getRuntimeInfo(DerbyEngine.java:134)
at
com.crcdata.dbadmin.server.DerbyEngine$DerbyServerMonitorTask.run(DerbyEngine.java:305)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown
Source:-1)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source:-1)
at java.util.concurrent.FutureTask.run(Unknown Source:-1)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown
Source:-1)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown
Source:-1)
at java.lang.Thread.run(Unknown Source:-1)
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)