You are correct, I was chasing down the following:

Testsuite: org.apache.catalina.websocket.TestWebSocket
Tests run: 6, Failures: 1, Errors: 0, Time elapsed: 2.048 sec
....
INFO: Starting ProtocolHandler ["http-nio-127.0.0.1-auto-2-9027"]
Jul 12, 2012 11:56:27 AM 
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler process
SEVERE: null
java.lang.IllegalArgumentException: Negative timeout
        at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
        at 
org.apache.tomcat.util.net.NioSelectorPool.read(NioSelectorPool.java:267)
        at 
org.apache.tomcat.util.net.NioSelectorPool.read(NioSelectorPool.java:227)
        at 
org.apache.coyote.http11.upgrade.UpgradeNioProcessor.readSocket(UpgradeNioProcessor.java:139)
        at 
org.apache.coyote.http11.upgrade.UpgradeNioProcessor.read(UpgradeNioProcessor.java:112)
        at org.apache.catalina.websocket.WsFrame.nextFrame(WsFrame.java:213)
        at 
org.apache.catalina.websocket.WsInputStream.nextFrame(WsInputStream.java:68)
        at 
org.apache.catalina.websocket.StreamInbound.onData(StreamInbound.java:117)
        at 
org.apache.coyote.http11.upgrade.UpgradeProcessor.upgradeDispatch(UpgradeProcessor.java:83)
        at 
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:583)
        at 
org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:223)
        at 
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1676)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
        at java.lang.Thread.run(Thread.java:722)

We should not use -1 in our unit tests. I'm tempted to get rid of the -1 notion 
all together, no sane person should ever use no timeout :)



> -----Original Message-----
> From: Mark Thomas [mailto:ma...@apache.org]
> Sent: Thursday, July 12, 2012 2:20 PM
> To: Tomcat Developers List
> Subject: Re: svn commit: r1360905 -
> /tomcat/trunk/java/org/apache/tomcat/util/net/NioSelectorPool.java
> 
> On 12/07/2012 21:11, fha...@apache.org wrote:
> > Author: fhanik
> > Date: Thu Jul 12 20:11:31 2012
> > New Revision: 1360905
> >
> > URL: http://svn.apache.org/viewvc?rev=1360905&view=rev
> > Log:
> > Correct handling of timeout - negative or zero means no timeout but an
> instant
> 
> Nope. The expected and documented behaviour for a negative timeout for
> all connectors is an infinite timeout.
> 
> Mark
> 
> >
> >
> > Modified:
> >     tomcat/trunk/java/org/apache/tomcat/util/net/NioSelectorPool.java
> >
> > Modified:
> tomcat/trunk/java/org/apache/tomcat/util/net/NioSelectorPool.java
> > URL:
> http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/ne
> t/NioSelectorPool.java?rev=1360905&r1=1360904&r2=1360905&view=diff
> >
> ========================================================================
> ======
> > --- tomcat/trunk/java/org/apache/tomcat/util/net/NioSelectorPool.java
> (original)
> > +++ tomcat/trunk/java/org/apache/tomcat/util/net/NioSelectorPool.java
> Thu Jul 12 20:11:31 2012
> > @@ -196,7 +196,11 @@ public class NioSelectorPool {
> >                      //register OP_WRITE to the selector
> >                      if (key==null) key =
> socket.getIOChannel().register(selector, SelectionKey.OP_WRITE);
> >                      else key.interestOps(SelectionKey.OP_WRITE);
> > -                    keycount = selector.select(writeTimeout);
> > +                    if (writeTimeout<=0) {
> > +                        keycount = selector.selectNow();
> > +                    } else {
> > +                        keycount = selector.select(writeTimeout);
> > +                    }
> >                  }
> >                  if (writeTimeout > 0 && (selector == null || keycount
> == 0) ) timedout = (System.currentTimeMillis()-time)>=writeTimeout;
> >              }//while
> > @@ -264,7 +268,11 @@ public class NioSelectorPool {
> >                      //register OP_WRITE to the selector
> >                      if (key==null) key =
> socket.getIOChannel().register(selector, SelectionKey.OP_READ);
> >                      else key.interestOps(SelectionKey.OP_READ);
> > -                    keycount = selector.select(readTimeout);
> > +                    if (readTimeout<=0) {
> > +                        keycount = selector.selectNow();
> > +                    } else {
> > +                        keycount = selector.select(readTimeout);
> > +                    }
> >                  }
> >                  if (readTimeout > 0 && (selector == null || keycount
> == 0) ) timedout = (System.currentTimeMillis()-time)>=readTimeout;
> >              }//while
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
> > For additional commands, e-mail: dev-h...@tomcat.apache.org
> >
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: dev-h...@tomcat.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to