Error on writeRequested
"이희승 (Trustin Lee)"
trustin at gmail.com
Mon May 30 11:09:57 EDT 2011
When a messageReceived event is triggered?
On 05/30/2011 11:50 PM, jsia24 wrote:
> Do you think it's a good idea if I store the channelId in a list and check
> it in the list if it already timed out but my problem is how do I clear this
> list if it is already storing a lot of channel ids
>
> On Mon, May 30, 2011 at 10:44 PM, Trustin Lee [via Netty Forums and Mailing
> Lists]<ml-node+6419401-1091358087-301197 at n2.nabble.com> wrote:
>
>> I see. So, you are not closing the connection since the first
>> channelIdle event. In spite that channelIdle event is triggered
>> repetitively, there's no way to distinguish the second event from the
>> first one currently. I think that is the missing feature. To work
>> around this problem, you need to maintain a state variable that counts
>> the number of consecutive channelIdle events and write the response only
>> when the counter is 0 (i.e. first channelIdle event).
>>
>> HTH
>>
>> On 05/30/2011 11:35 PM, Jason Sia wrote:
>>
>>> When I tried to write a response to the idle channel it writes the first
>>> time then the idletimer continues to run and it still detect that the
>>> channel is idle even though I wrote a response on it. What do I need to
>>> do for it to change its state, I think the error is in there that's why
>>> it is saying that I cannot send more response than the request
>>>
>>> On Mon, May 30, 2011 at 9:50 PM, jsia24<[hidden email]<http://user/SendEmail.jtp?type=node&node=6419401&i=0>
>>> <mailto:[hidden email]<http://user/SendEmail.jtp?type=node&node=6419401&i=1>>>
>> wrote:
>>>
>>> when I add e.getChannel().close()
>>>
>>> java.nio.channels.ClosedChannelException
>>> at
>>>
>> sun.nio.ch.SocketChannelImpl.ensureWriteOpen(SocketChannelImpl.java:133)
>>> at
>>> sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:324)
>>> at
>>>
>> org.jboss.netty.channel.socket.nio.SocketSendBufferPool$PooledSendBuffer.transferTo(SocketSendBufferPool.java:239)
>>
>>> at
>>>
>> org.jboss.netty.channel.socket.nio.NioWorker.write0(NioWorker.java:469)
>>> at
>>>
>> org.jboss.netty.channel.socket.nio.NioWorker.writeFromTaskLoop(NioWorker.java:392)
>>
>>> at
>>>
>> org.jboss.netty.channel.socket.nio.NioSocketChannel$WriteTask.run(NioSocketChannel.java:276)
>>
>>> at
>>>
>> org.jboss.netty.channel.socket.nio.NioWorker.processWriteTaskQueue(NioWorker.java:268)
>>
>>> at
>>> org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:199)
>>> at
>>>
>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>>
>>> at
>>>
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>>
>>> at java.lang.Thread.run(Thread.java:662)
>>>
>>> it complains that it is writing to an open socket do I need to kill
>> the
>>> idletimer before closing the connection? if yes, how is it done? I
>>> wanted to
>>> use persistent connection, am I still doing it right if I close the
>>> connection?
>>>
>>> On Mon, May 30, 2011 at 9:48 PM, Norman Maurer-2 [via Netty Forums
>> and
>>> Mailing Lists]<[hidden email]<http://user/SendEmail.jtp?type=node&node=6419401&i=2>
>>> <mailto:[hidden email]<http://user/SendEmail.jtp?type=node&node=6419401&i=3>>>
>> wrote:
>>>
>>> > Nope it will not close the connection. It will add a listener
>> which
>>> > will get fired on a event. If you want to close a connection you
>>> > should use e.getChannel().close();
>>> >
>>> > Bye,
>>> > Norman
>>> >
>>> >
>>> > 2011/5/30 jsia24<[hidden
>>> email]<http://user/SendEmail.jtp?type=node&node=6419199&i=0
>>> <http://user/SendEmail.jtp?type=node&node=6419199&i=0>>>:
>>> >
>>> >
>>> > > When I try to do this
>>> > >
>>> > > ChannelFuture future = e.getChannel().write(response);
>>> > > future.addListener(ChannelFutureListener.CLOSE);
>>> > >
>>> > > it closes the connection right? It's an IdleStateListener, when
>>> i gets
>>> > idle
>>> > > i write a response then will the code above close that
>> connection?
>>> > >
>>> > >
>>> > > On Mon, May 30, 2011 at 9:37 PM, Trustin Lee [via Netty Forums
>> and
>>> > Mailing
>>> > > Lists]<[hidden
>>> email]<http://user/SendEmail.jtp?type=node&node=6419199&i=1
>>> <http://user/SendEmail.jtp?type=node&node=6419199&i=1>>>
>>> > wrote:
>>> > >
>>> > >> Are you sure that you are not writing more responses than the
>>> number of
>>> > >> received requests? For example, sending more than one
>>> response for a
>>> > >> single request is not right.
>>> > >>
>>> > >> On 05/30/2011 10:31 PM, jsia24 wrote:
>>> > >>
>>> > >> > I'm writing a comet server.
>>> > >> >
>>> > >> > On Mon, May 30, 2011 at 9:29 PM, Trustin Lee [via Netty
>>> Forums and
>>> > >> Mailing
>>> > >> > Lists]<[hidden email]<
>>> > http://user/SendEmail.jtp?type=node&node=6419159&i=0
>>> <http://user/SendEmail.jtp?type=node&node=6419159&i=0>>>
>>> > >> wrote:
>>> > >> >
>>> > >> >> Are you writing a server, or a client?
>>> > >> >>
>>> > >> >> On 05/30/2011 09:55 PM, jsia24 wrote:
>>> > >> >>
>>> > >> >>> Here it is:
>>> > >> >>> I am actually saving the MessageEvents in a HashMap
>>> and reply
>>> > to
>>> > >> >> them
>>> > >> >>> when there is an event so what I did is to send a default
>>> message
>>> > when
>>> > >> it
>>> > >> >>
>>> > >> >>> did not receive an event for a period of time, it does
>>> not produce
>>> > an
>>> > >> >> error
>>> > >> >>> if I do not write any response to the IdleStateEvent e (
>>> if I just
>>> > do
>>> > >> >>> e.getChannel.close() )
>>> > >> >>>
>>> > >> >>> java.lang.IllegalStateException: cannot send more
>>> responses than
>>> > >> requests
>>> > >> >>
>>> > >> >>> at
>>> > >> >>>
>>> > >> >>
>>> > >>
>>> >
>>>
>> org.jboss.netty.handler.codec.http.HttpContentEncoder.writeRequested(HttpContentEncoder.java:102)
>>
>>> >
>>> > >>
>>> > >> >>
>>> > >> >>> at
>>> > org.jboss.netty.channel.Channels.write(Channels.java:611)
>>> > >> >>> at
>>> > org.jboss.netty.channel.Channels.write(Channels.java:578)
>>> > >> >>> at
>>> > >> >>>
>>> >
>>>
>> org.jboss.netty.channel.AbstractChannel.write(AbstractChannel.java:259)
>>> > >>
>>> > >> >>> at
>>> > >> >>
>> org.comet.classes.IdleHandler.channelIdle(IdleHandler.java:31)
>>> > >> >>> at
>>> > >> >>>
>>> > >> >>
>>> > >>
>>> >
>>>
>> org.jboss.netty.handler.timeout.IdleStateAwareChannelHandler.handleUpstream(IdleStateAwareChannelHandler.java:46)
>>
>>> >
>>> > >>
>>> > >> >>
>>> > >> >>> at
>>> > >> >>>
>>> > >> >>
>>> > >>
>>> >
>>>
>> org.jboss.netty.handler.timeout.IdleStateHandler.channelIdle(IdleStateHandler.java:324)
>>
>>> >
>>> > >>
>>> > >> >>
>>> > >> >>> at
>>> > >> >>>
>>> > >> >>
>>> > >>
>>> >
>>>
>> org.jboss.netty.handler.timeout.IdleStateHandler$WriterIdleTimeoutTask.run(IdleStateHandler.java:382)
>>
>>> >
>>> > >>
>>> > >> >>
>>> > >> >>> at
>>> > >> >>>
>>> > >> >>
>>> > >>
>>> >
>>>
>> org.jboss.netty.util.HashedWheelTimer$HashedWheelTimeout.expire(HashedWheelTimer.java:519)
>>
>>> >
>>> > >>
>>> > >> >>
>>> > >> >>> at
>>> > >> >>>
>>> > >> >>
>>> > >>
>>> >
>>>
>> org.jboss.netty.util.HashedWheelTimer$Worker.notifyExpiredTimeouts(HashedWheelTimer.java:440)
>>
>>> >
>>> > >>
>>> > >> >>
>>> > >> >>> at
>>> > >> >>>
>>> > >> >>
>>> > >>
>>> >
>>>
>> org.jboss.netty.util.HashedWheelTimer$Worker.run(HashedWheelTimer.java:379)
>>> > >> >>> at java.lang.Thread.run(Thread.java:662)
>>> > >> >>>
>>> > >> >>> public class IdleHandler extends
>>> IdleStateAwareChannelHandler {
>>> > >> >>> public void channelIdle(ChannelHandlerContext ctx,
>>> > >> IdleStateEvent
>>> > >> >> e) {
>>> > >> >>> HttpResponse response = new
>>> DefaultHttpResponse(HTTP_1_1,
>>> >
>>> > >> OK);
>>> > >> >>>
>>> response.setContent(ChannelBuffers.copiedBuffer("{}",
>>> > >> >>> CharsetUtil.UTF_8));
>>> > >> >>> response.setHeader(CONTENT_TYPE, "text/plain;
>>> > >> charset=UTF-8");
>>> > >> >>> response.setHeader(CONTENT_LENGTH,
>>> > >> >>> response.getContent().readableBytes());
>>> > >> >>>
>>> response.setHeader("Access-Control-Allow-Origin", "*");
>>> > >> >>> ChannelFuture future =
>>> e.getChannel().write(response);
>>> > >> >>> future.addListener(ChannelFutureListener.CLOSE);
>>
>>> > >> >>> }
>>> > >> >>> }
>>> > >> >>>
>>> > >> >>> On Mon, May 30, 2011 at 3:16 PM, Norman Maurer-2 [via
>>> Netty Forums
>>> > and
>>> > >> >>> Mailing Lists]<[hidden email]<
>>> > >> http://user/SendEmail.jtp?type=node&node=6419124&i=0
>>> <http://user/SendEmail.jtp?type=node&node=6419124&i=0>>>
>>> > >> >> wrote:
>>> > >> >>>
>>> > >> >>>> Can you post the stacktrace and your code?
>>> > >> >>>>
>>> > >> >>>> Thanks
>>> > >> >>>> Norman
>>> > >> >>>>
>>> > >> >>>> 2011/5/30, jsia24<[hidden email]<
>>> > >> >> http://user/SendEmail.jtp?type=node&node=6418081&i=0
>>> <http://user/SendEmail.jtp?type=node&node=6418081&i=0>>>:
>>> > >> >>>>
>>> > >> >>>>
>>> > >> >>>>> Hi ,
>>> > >> >>>>>
>>> > >> >>>>> When I try to send a response on the IdleHandler,
>>> it is
>>> > >> producing
>>> > >> >> an
>>> > >> >>>>> error: cannot send more responses than requests. Could
>>> anyone
>>> > help
>>> > >> on
>>> > >> >>>> how
>>> > >> >>>>> to resolve this?
>>> > >> >>>>>
>>> > >> >>>>> --
>>> > >> >>>>> View this message in context:
>>> > >> >>>>>
>>> > >> >>>>
>>> > >> >>
>>> > >>
>>> >
>>>
>> http://netty-forums-and-mailing-lists.685743.n2.nabble.com/Error-on-writeRequested-tp6418009p6418009.html
>>> > >> >>>>> Sent from the Netty User Group mailing list archive at
>>> Nabble.com.
>>> >
>>> > >> >>>>> _______________________________________________
>>> > >> >>>>> netty-users mailing list
>>> > >> >>>>> [hidden email]<
>>> > http://user/SendEmail.jtp?type=node&node=6418081&i=1
>>> <http://user/SendEmail.jtp?type=node&node=6418081&i=1>>
>>> > >>
>>> > >> >>>>> https://lists.jboss.org/mailman/listinfo/netty-users
>>> > >> >>>>>
>>> > >> >>>> _______________________________________________
>>> > >> >>>> netty-users mailing list
>>> > >> >>>> [hidden email]<
>>> > http://user/SendEmail.jtp?type=node&node=6418081&i=2
>>> <http://user/SendEmail.jtp?type=node&node=6418081&i=2>>
>>> > >> >>>> https://lists.jboss.org/mailman/listinfo/netty-users
>>> > >> >>>>
>>> > >> >>>>
>>> > >> >>>> ------------------------------
>>> > >> >>>> If you reply to this email, your message will be added
>>> to the
>>> > >> >> discussion
>>> > >> >>>> below:
>>> > >> >>>>
>>> > >> >>>>
>>> > >> >>
>>> > >> >>>>
>>> > >> >>>>
>>> > >> >>>
>>> > >> >>>
>>> > >> >>> --
>>> > >> >>> View this message in context:
>>> > >> >>
>>> > >>
>>> >
>>>
>> http://netty-forums-and-mailing-lists.685743.n2.nabble.com/Error-on-writeRequested-tp6418009p6418985.html
>>> > >> >>
>>> > >> >>> Sent from the Netty User Group mailing list archive at
>>> Nabble.com.
>>> > >> >>> _______________________________________________
>>> > >> >>> netty-users mailing list
>>> > >> >>> [hidden
>>> email]<http://user/SendEmail.jtp?type=node&node=6419124&i=1
>>> <http://user/SendEmail.jtp?type=node&node=6419124&i=1>>
>>> >
>>> > >> >>> https://lists.jboss.org/mailman/listinfo/netty-users
>>> > >> >>
>>> > >> >>
>>> > >> >> --
>>> > >> >> Trustin Lee, http://gleamynode.net/
>>> > >> >> _______________________________________________
>>> > >> >> netty-users mailing list
>>> > >> >> [hidden
>>> email]<http://user/SendEmail.jtp?type=node&node=6419124&i=2
>>> <http://user/SendEmail.jtp?type=node&node=6419124&i=2>>
>>> >
>>> > >> >> https://lists.jboss.org/mailman/listinfo/netty-users
>>> > >> >> what we call human nature in actuality is human habit
>>> > >> >> http://gleamynode.net/
>>> > >> >>
>>> > >> >>
>>> > >> >> ------------------------------
>>> > >> >> If you reply to this email, your message will be added to
>> the
>>> > >> discussion
>>> > >> >> below:
>>> > >> >>
>>> > >> >>
>>> > >>
>>> > >> >>
>>> > >> >>
>>> > >> >
>>> > >> >
>>> > >> > --
>>> > >> > View this message in context:
>>> > >>
>>> >
>>>
>> http://netty-forums-and-mailing-lists.685743.n2.nabble.com/Error-on-writeRequested-tp6418009p6419138.html
>>> > >>
>>> > >> > Sent from the Netty User Group mailing list archive at
>>> Nabble.com.
>>> > >> > _______________________________________________
>>> > >> > netty-users mailing list
>>> > >> > [hidden email]
>>> <http://user/SendEmail.jtp?type=node&node=6419159&i=1
>>> <http://user/SendEmail.jtp?type=node&node=6419159&i=1>>
>>> >
>>> > >> > https://lists.jboss.org/mailman/listinfo/netty-users
>>> > >>
>>> > >>
>>> > >> --
>>> > >> Trustin Lee, http://gleamynode.net/
>>> > >> _______________________________________________
>>> > >> netty-users mailing list
>>> > >> [hidden email]
>>> <http://user/SendEmail.jtp?type=node&node=6419159&i=2
>>> <http://user/SendEmail.jtp?type=node&node=6419159&i=2>>
>>> > >> https://lists.jboss.org/mailman/listinfo/netty-users
>>> > >> what we call human nature in actuality is human habit
>>> > >> http://gleamynode.net/
>>> > >>
>>> > >>
>>> > >> ------------------------------
>>> > >> If you reply to this email, your message will be added to the
>>> > discussion
>>> > >> below:
>>> > >>
>>> > >>
>>> >
>>> > >>
>>> > >>
>>> > >
>>> > >
>>> > > --
>>> > > View this message in context:
>>> >
>>>
>> http://netty-forums-and-mailing-lists.685743.n2.nabble.com/Error-on-writeRequested-tp6418009p6419169.html
>>> >
>>> > > Sent from the Netty User Group mailing list archive at
>> Nabble.com.
>>> > > _______________________________________________
>>> > > netty-users mailing list
>>> > > [hidden email]
>>> <http://user/SendEmail.jtp?type=node&node=6419199&i=2
>>> <http://user/SendEmail.jtp?type=node&node=6419199&i=2>>
>>> > > https://lists.jboss.org/mailman/listinfo/netty-users
>>> > >
>>> >
>>> > _______________________________________________
>>> > netty-users mailing list
>>> > [hidden email]
>>> <http://user/SendEmail.jtp?type=node&node=6419199&i=3
>>> <http://user/SendEmail.jtp?type=node&node=6419199&i=3>>
>>> > https://lists.jboss.org/mailman/listinfo/netty-users
>>> >
>>> >
>>> > ------------------------------
>>> > If you reply to this email, your message will be added to the
>>> discussion
>>> > below:
>>> >
>>> >
>>>
>> http://netty-forums-and-mailing-lists.685743.n2.nabble.com/Error-on-writeRequested-tp6418009p6419199.html
>>> > To unsubscribe from Error on writeRequested, click
>>> here<
>> <
>>> >
>>> >
>>>
>>>
>>> --
>>> View this message in context:
>>>
>> http://netty-forums-and-mailing-lists.685743.n2.nabble.com/Error-on-writeRequested-tp6418009p6419211.html
>>> Sent from the Netty User Group mailing list archive at Nabble.com.
>>> _______________________________________________
>>> netty-users mailing list
>>> [hidden email]<http://user/SendEmail.jtp?type=node&node=6419401&i=4><mailto:[hidden
>> email]<http://user/SendEmail.jtp?type=node&node=6419401&i=5>>
>>> https://lists.jboss.org/mailman/listinfo/netty-users
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> netty-users mailing list
>>> [hidden email]<http://user/SendEmail.jtp?type=node&node=6419401&i=6>
>>> https://lists.jboss.org/mailman/listinfo/netty-users
>>
>>
>> --
>> Trustin Lee, http://gleamynode.net/
>> _______________________________________________
>> netty-users mailing list
>> [hidden email]<http://user/SendEmail.jtp?type=node&node=6419401&i=7>
>> https://lists.jboss.org/mailman/listinfo/netty-users
>> what we call human nature in actuality is human habit
>> http://gleamynode.net/
>>
>>
>> ------------------------------
>> If you reply to this email, your message will be added to the discussion
>> below:
>>
>> http://netty-forums-and-mailing-lists.685743.n2.nabble.com/Error-on-writeRequested-tp6418009p6419401.html
>> To unsubscribe from Error on writeRequested, click here<http://netty-forums-and-mailing-lists.685743.n2.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=6418009&code=anNpYTE4QGdtYWlsLmNvbXw2NDE4MDA5fDE0MTk5NTMxMjM=>.
>>
>>
>
>
> --
> View this message in context: http://netty-forums-and-mailing-lists.685743.n2.nabble.com/Error-on-writeRequested-tp6418009p6419424.html
> Sent from the Netty User Group mailing list archive at Nabble.com.
> _______________________________________________
> netty-users mailing list
> netty-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/netty-users
--
Trustin Lee, http://gleamynode.net/
More information about the netty-users
mailing list