[undertow-dev] SEVERE: UT000004: getResponseChannel() has already been called

Stuart Douglas sdouglas at redhat.com
Sun Jan 4 20:20:40 EST 2015


Yes, if you are using dispatch(HttpHandler) you need to call dispatch() every time, as otherwise the exchange will be ended when the call stack returns. 

If you call dispatch with no parameters or dispatch(Runnable) then you only need to call it once.

Stuart

----- Original Message -----
> From: "Karthick V.J." <karthickjagan at yahoo.com>
> To: undertow-dev at lists.jboss.org
> Sent: Thursday, 25 December, 2014 11:18:31 AM
> Subject: [undertow-dev] SEVERE: UT000004: getResponseChannel() has already	been called
> 
> Hi Undertow Devs,
> 
> I was getting the below error in my application. I created a sample
> application which throws the same error (Attached is the sample applicaiton)
> When I added the exchange.dispatch() statement at line 158, the problem
> resolves. Is it required to dispatch () every time the context is switched
> to a new thread. Am I doing it right?
> 
> 
> Thank You - Karthick
> 
> Error:
> 
> ------------
> SEVERE: UT000004: getResponseChannel() has already been called
> java.lang.IllegalStateException: UT000004: getResponseChannel() has already
> been called
> at io.undertow.io.AsyncSenderImpl.send(AsyncSenderImpl.java:208)
> at io.undertow.io.AsyncSenderImpl.send(AsyncSenderImpl.java:294)
> at io.undertow.io.AsyncSenderImpl.send(AsyncSenderImpl.java:270)
> at io.undertow.io.AsyncSenderImpl.send(AsyncSenderImpl.java:300)
> .....
> .....
> .....
> .....
> at com.google.common.util.concurrent.Futures$4.run(Futures.java:1181)
> at
> com.google.common.util.concurrent.MoreExecutors$SameThreadExecutorService.execute(MoreExecutors.java:297)
> at
> com.google.common.util.concurrent.ExecutionList.executeListener(ExecutionList.java:156)
> at
> com.google.common.util.concurrent.ExecutionList.execute(ExecutionList.java:145)
> at
> com.google.common.util.concurrent.AbstractFuture.set(AbstractFuture.java:185)
> at
> com.google.common.util.concurrent.Futures$ChainingListenableFuture$1.run(Futures.java:872)
> at
> com.google.common.util.concurrent.MoreExecutors$SameThreadExecutorService.execute(MoreExecutors.java:297)
> at
> com.google.common.util.concurrent.Futures$ImmediateFuture.addListener(Futures.java:102)
> at
> com.google.common.util.concurrent.Futures$ChainingListenableFuture.run(Futures.java:868)
> at
> com.google.common.util.concurrent.MoreExecutors$SameThreadExecutorService.execute(MoreExecutors.java:297)
> at
> com.google.common.util.concurrent.ExecutionList.executeListener(ExecutionList.java:156)
> at
> com.google.common.util.concurrent.ExecutionList.execute(ExecutionList.java:145)
> at
> com.google.common.util.concurrent.AbstractFuture.set(AbstractFuture.java:185)
> at
> com.datastax.driver.core.DefaultResultSetFuture.onSet(DefaultResultSetFuture.java:105)
> at
> com.datastax.driver.core.RequestHandler.setFinalResult(RequestHandler.java:246)
> at com.datastax.driver.core.RequestHandler.onSet(RequestHandler.java:278)
> at
> com.datastax.driver.core.Connection$Dispatcher.messageReceived(Connection.java:661)
> at
> org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)
> at
> org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
> at
> org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)
> at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:296)
> at
> org.jboss.netty.handler.codec.oneone.OneToOneDecoder.handleUpstream(OneToOneDecoder.java:70)
> at
> org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
> at
> org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)
> at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:296)
> at
> org.jboss.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(FrameDecoder.java:462)
> at
> org.jboss.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:443)
> at
> org.jboss.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:303)
> at
> org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)
> at
> org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
> at
> org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559)
> at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268)
> at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255)
> at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88)
> at
> org.jboss.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:108)
> at
> org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:318)
> at
> org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:89)
> at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)
> at
> org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
> at
> org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> at java.lang.Thread.run(Thread.java:745)
> ------------
> 
> _______________________________________________
> undertow-dev mailing list
> undertow-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/undertow-dev


More information about the undertow-dev mailing list