You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mina.apache.org by "Michael Kearns (JIRA)" <ji...@apache.org> on 2007/03/26 11:44:32 UTC
[jira] Created: (DIRMINA-362) Channel writes being made without
OP_WRITE selector ready
Channel writes being made without OP_WRITE selector ready
---------------------------------------------------------
Key: DIRMINA-362
URL: https://issues.apache.org/jira/browse/DIRMINA-362
Project: MINA
Issue Type: Bug
Components: Core
Affects Versions: 1.0.2, 1.0.1, 1.0.0
Environment: Windows 2000, JDK 1.4+, JBoss 4.0.4GA
Reporter: Michael Kearns
We've been experiencing 100%CPU Kernel locks when utilising the Mitosis directory replication within Apache Directory. The error manifests itself within the SocketIoProcessor class, with an instantly returning selector, yet no selected keys. It would only happen when Directory replication (within our JBoss environment) was enabled, against a non-existant client, and suggests a concurrency issue.
Although there are several JVM bugs registered in this area, none seemed to be the problem at hand, although troubleshooting was somewhat difficult in that the problem is not reproducible 'at will'.
After much testing, I found (amongst other issues) that the doFlush(SocketSessionImpl session) method would attempt to write data without checking the appropriate selector flags. This would initially result in a NotYetConnected exception, and then subsequent spinning of the selector.
I can't say with 100% certainty that adding a check in this location fixes the problem, but after 72 hours of uptime in my last test, I have yet to experience the problem, whereas it would usually occur within the first few hours of running.
The snippet below demonstrates the change, with the 'if' test on the key writability being th only change, wrapped around the existing write section.
if (key.isWritable())
{
int writtenBytes = ch.write( buf.buf() );
if( writtenBytes > 0 )
{
session.increaseWrittenBytes( writtenBytes );
}
}
So far as I can tell, this code hasn't changed from 1.0.0 upwards, and so the patch would need to be apllied to the 1.0.3 and 2.0.x streams.
I hope this is of help, and the fix can be applied to 1.0.3 as it's quite a critical problem from our usage.
Regards,
Michael.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Closed: (DIRMINA-362) Channel writes being made without
OP_WRITE selector ready
Posted by "Michael Kearns (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/DIRMINA-362?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Michael Kearns closed DIRMINA-362.
----------------------------------
Closed.
> Channel writes being made without OP_WRITE selector ready
> ---------------------------------------------------------
>
> Key: DIRMINA-362
> URL: https://issues.apache.org/jira/browse/DIRMINA-362
> Project: MINA
> Issue Type: Bug
> Components: Core
> Affects Versions: 1.0.0, 1.0.1, 1.0.2
> Environment: Windows 2000, JDK 1.4+, JBoss 4.0.4GA
> Reporter: Michael Kearns
> Assigned To: Trustin Lee
> Fix For: 1.0.3
>
>
> We've been experiencing 100%CPU Kernel locks when utilising the Mitosis directory replication within Apache Directory. The error manifests itself within the SocketIoProcessor class, with an instantly returning selector, yet no selected keys. It would only happen when Directory replication (within our JBoss environment) was enabled, against a non-existant client, and suggests a concurrency issue.
> Although there are several JVM bugs registered in this area, none seemed to be the problem at hand, although troubleshooting was somewhat difficult in that the problem is not reproducible 'at will'.
> After much testing, I found (amongst other issues) that the doFlush(SocketSessionImpl session) method would attempt to write data without checking the appropriate selector flags. This would initially result in a NotYetConnected exception, and then subsequent spinning of the selector.
> I can't say with 100% certainty that adding a check in this location fixes the problem, but after 72 hours of uptime in my last test, I have yet to experience the problem, whereas it would usually occur within the first few hours of running.
> The snippet below demonstrates the change, with the 'if' test on the key writability being th only change, wrapped around the existing write section.
> if (key.isWritable())
> {
> int writtenBytes = ch.write( buf.buf() );
> if( writtenBytes > 0 )
> {
> session.increaseWrittenBytes( writtenBytes );
> }
> }
> So far as I can tell, this code hasn't changed from 1.0.0 upwards, and so the patch would need to be apllied to the 1.0.3 and 2.0.x streams.
> I hope this is of help, and the fix can be applied to 1.0.3 as it's quite a critical problem from our usage.
> Regards,
> Michael.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Resolved: (DIRMINA-362) Channel writes being made without
OP_WRITE selector ready
Posted by "Trustin Lee (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/DIRMINA-362?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Trustin Lee resolved DIRMINA-362.
---------------------------------
Resolution: Fixed
Fix Version/s: 1.0.3
Assignee: Trustin Lee
Your patch has been applied to all branches (1.0.3-SNAPSHOT, 1.1.0-SNAPSHOT, 2.0.0-M1-SNAPSHOT). Thank you for the detailed explanation and fix! Please close this issue after the fix is confirmed.
> Channel writes being made without OP_WRITE selector ready
> ---------------------------------------------------------
>
> Key: DIRMINA-362
> URL: https://issues.apache.org/jira/browse/DIRMINA-362
> Project: MINA
> Issue Type: Bug
> Components: Core
> Affects Versions: 1.0.0, 1.0.1, 1.0.2
> Environment: Windows 2000, JDK 1.4+, JBoss 4.0.4GA
> Reporter: Michael Kearns
> Assigned To: Trustin Lee
> Fix For: 1.0.3
>
>
> We've been experiencing 100%CPU Kernel locks when utilising the Mitosis directory replication within Apache Directory. The error manifests itself within the SocketIoProcessor class, with an instantly returning selector, yet no selected keys. It would only happen when Directory replication (within our JBoss environment) was enabled, against a non-existant client, and suggests a concurrency issue.
> Although there are several JVM bugs registered in this area, none seemed to be the problem at hand, although troubleshooting was somewhat difficult in that the problem is not reproducible 'at will'.
> After much testing, I found (amongst other issues) that the doFlush(SocketSessionImpl session) method would attempt to write data without checking the appropriate selector flags. This would initially result in a NotYetConnected exception, and then subsequent spinning of the selector.
> I can't say with 100% certainty that adding a check in this location fixes the problem, but after 72 hours of uptime in my last test, I have yet to experience the problem, whereas it would usually occur within the first few hours of running.
> The snippet below demonstrates the change, with the 'if' test on the key writability being th only change, wrapped around the existing write section.
> if (key.isWritable())
> {
> int writtenBytes = ch.write( buf.buf() );
> if( writtenBytes > 0 )
> {
> session.increaseWrittenBytes( writtenBytes );
> }
> }
> So far as I can tell, this code hasn't changed from 1.0.0 upwards, and so the patch would need to be apllied to the 1.0.3 and 2.0.x streams.
> I hope this is of help, and the fix can be applied to 1.0.3 as it's quite a critical problem from our usage.
> Regards,
> Michael.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.