Author: trustin
Date: Mon Mar 26 20:12:33 2007
New Revision: 522721
URL: http://svn.apache.org/viewvc?view=rev&rev=522721
Log:
Fixed issue: DIRMINA-362 (Channel writes being made without OP_WRITE selector
ready)
* Applied Michael Kearns' patch that fixes unexpected 100% CPU consumption
** Added an if block that performs additional writability check
Modified:
mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java
mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java
Modified:
mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java
URL:
http://svn.apache.org/viewvc/mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java?view=diff&rev=522721&r1=522720&r2=522721
==============================================================================
---
mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java
(original)
+++
mina/branches/1.0/core/src/main/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java
Mon Mar 26 20:12:33 2007
@@ -398,7 +398,8 @@
scheduleFlush( session );
break;
}
- // skip if channel is already closed
+
+ // Skip if the channel is already closed.
if( !key.isValid() )
{
continue;
@@ -474,10 +475,13 @@
continue;
}
- int writtenBytes = ch.write( buf.buf() );
- if( writtenBytes > 0 )
+ if( key.isWritable() )
{
- session.increaseWrittenBytes( writtenBytes );
+ int writtenBytes = ch.write( buf.buf() );
+ if( writtenBytes > 0 )
+ {
+ session.increaseWrittenBytes( writtenBytes );
+ }
}
if( buf.hasRemaining() )
Modified:
mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java
URL:
http://svn.apache.org/viewvc/mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java?view=diff&rev=522721&r1=522720&r2=522721
==============================================================================
---
mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java
(original)
+++
mina/branches/1.1/core/src/main/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java
Mon Mar 26 20:12:33 2007
@@ -354,7 +354,8 @@
scheduleFlush( session );
break;
}
- // skip if channel is already closed
+
+ // Skip if the channel is already closed.
if( !key.isValid() )
{
continue;
@@ -422,10 +423,13 @@
continue;
}
- int writtenBytes = ch.write( buf.buf() );
- if( writtenBytes > 0 )
+ if( key.isWritable() )
{
- session.increaseWrittenBytes( writtenBytes );
+ int writtenBytes = ch.write( buf.buf() );
+ if( writtenBytes > 0 )
+ {
+ session.increaseWrittenBytes( writtenBytes );
+ }
}
if( buf.hasRemaining() )
Modified:
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java?view=diff&rev=522721&r1=522720&r2=522721
==============================================================================
---
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java
(original)
+++
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/SocketIoProcessor.java
Mon Mar 26 20:12:33 2007
@@ -396,7 +396,8 @@
scheduleFlush( session );
break;
}
- // skip if channel is already closed
+
+ // Skip if the channel is already closed.
if( !key.isValid() )
{
continue;
@@ -461,10 +462,13 @@
continue;
}
- int writtenBytes = ch.write( buf.buf() );
- if( writtenBytes > 0 )
+ if( key.isWritable() )
{
- session.increaseWrittenBytes( writtenBytes );
+ int writtenBytes = ch.write( buf.buf() );
+ if( writtenBytes > 0 )
+ {
+ session.increaseWrittenBytes( writtenBytes );
+ }
}
if( buf.hasRemaining() )