StackOverflowError in netty DefaultChannelFuture
"이희승 (Trustin Lee)"
trustin at gmail.com
Fri Oct 28 13:49:28 EDT 2011
Perhaps you should stop adding a listener if the future of the current
write is unsuccessful? I suspect the future has failed with
ClosedChannelException and you are not checking it.
Kevin Burton wrote:
>
> I'm trying to track down this bug... I'm SO close to having this code
> working and it's been executing more and more jobs but now on larger
> jobs I'm getting this exception.
>
> It *seems* that notifyNow is being called right away on the writable.
>
> I looked into this a bit more and it was because the channel was no
> longer connected.
>
> You can see the stack trace below.
>
> I added
>
> if ( channel.isConnected() == false )
> return; // the close future will handle proper shutdown.
>
> I thought that my closeFuture would have been handling this but
> perhaps there was a race?
>
> Anyway. This seems like the WRONG way to re-raise the event. Perhaps
> if the same object has been called 2x just punt?
>
>
>
> 2011-10-27 05:46:22,135 WARN [New I/O client worker #1-15]
> org.jboss.netty.channel.DefaultChannelFuture An exception was thrown
> by ChannelFutureListener.
> java.lang.StackOverflowError
> at java.util.Vector.ensureCapacityHelper(Vector.java:218)
> at java.util.Vector.addElement(Vector.java:573)
> at java.lang.ClassLoader.addClass(ClassLoader.java:166)
> at java.lang.ClassLoader.defineClass1(Native Method)
> at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
> at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
> at
> java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
> at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
> at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
> at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
> at java.security.AccessController.doPrivileged(Native Method)
> at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
> at org.apache.log4j.spi.LoggingEvent.<init>(LoggingEvent.java:159)
> at org.apache.log4j.Category.forcedLog(Category.java:391)
> at org.apache.log4j.Category.warn(Category.java:1060)
> at org.jboss.netty.logging.Log4JLogger.warn(Log4JLogger.java:83)
> at
>
org.jboss.netty.logging.InternalLoggerFactory$1.warn(InternalLoggerFactory.java:133)
> at
>
org.jboss.netty.channel.DefaultChannelFuture.notifyListener(DefaultChannelFuture.java:383)
> at
>
org.jboss.netty.channel.DefaultChannelFuture.addListener(DefaultChannelFuture.java:148)
> at
>
peregrine.pfs.RemoteChunkWriterClient$WriteFutureListener.operationComplete(RemoteChunkWriterClient.java:407)
> at
>
org.jboss.netty.channel.DefaultChannelFuture.notifyListener(DefaultChannelFuture.java:381)
> at
>
org.jboss.netty.channel.DefaultChannelFuture.addListener(DefaultChannelFuture.java:148)
> at
>
peregrine.pfs.RemoteChunkWriterClient$WriteFutureListener.operationComplete(RemoteChunkWriterClient.java:407)
> at
>
org.jboss.netty.channel.DefaultChannelFuture.notifyListener(DefaultChannelFuture.java:381)
> at
>
org.jboss.netty.channel.DefaultChannelFuture.addListener(DefaultChannelFuture.java:148)
> at
>
peregrine.pfs.RemoteChunkWriterClient$WriteFutureListener.operationComplete(RemoteChunkWriterClient.java:407)
> at
>
org.jboss.netty.channel.DefaultChannelFuture.notifyListener(DefaultChannelFuture.java:381)
> at
>
org.jboss.netty.channel.DefaultChannelFuture.addListener(DefaultChannelFuture.java:148)
> at
>
peregrine.pfs.RemoteChunkWriterClient$WriteFutureListener.operationComplete(RemoteChunkWriterClient.java:407)
> at
>
org.jboss.netty.channel.DefaultChannelFuture.notifyListener(DefaultChannelFuture.java:381)
> at
>
org.jboss.netty.channel.DefaultChannelFuture.addListener(DefaultChannelFuture.java:148)
> at
>
peregrine.pfs.RemoteChunkWriterClient$WriteFutureListener.operationComplete(RemoteChunkWriterClient.java:407)
> at
>
org.jboss.netty.channel.DefaultChannelFuture.notifyListener(DefaultChannelFuture.java:381)
> at
>
org.jboss.netty.channel.DefaultChannelFuture.addListener(DefaultChannelFuture.java:148)
> at
>
peregrine.pfs.RemoteChunkWriterClient$WriteFutureListener.operationComplete(RemoteChunkWriterClient.java:407)
> at
>
org.jboss.netty.channel.DefaultChannelFuture.notifyListener(DefaultChannelFuture.java:381)
> at
>
org.jboss.netty.channel.DefaultChannelFuture.addListener(DefaultChannelFuture.java:148)
> at
>
peregrine.pfs.RemoteChunkWriterClient$WriteFutureListener.operationComplete(RemoteChunkWriterClient.java:407)
> at
>
org.jboss.netty.channel.DefaultChannelFuture.notifyListener(DefaultChannelFuture.java:381)
> at
>
org.jboss.netty.channel.DefaultChannelFuture.addListener(DefaultChannelFuture.java:148)
> at
>
peregrine.pfs.RemoteChunkWriterClient$WriteFutureListener.operationComplete(RemoteChunkWriterClient.java:407)
> at
>
org.jboss.netty.channel.DefaultChannelFuture.notifyListener(DefaultChannelFuture.java:381)
> at
>
org.jboss.netty.channel.DefaultChannelFuture.addListener(DefaultChannelFuture.java:148)
> at
>
peregrine.pfs.RemoteChunkWriterClient$WriteFutureListener.operationComplete(RemoteChunkWriterClient.java:407)
> at
>
org.jboss.netty.channel.DefaultChannelFuture.notifyListener(DefaultChannelFuture.java:381)
> at
>
org.jboss.netty.channel.DefaultChannelFuture.addListener(DefaultChannelFuture.java:148)
> at
>
peregrine.pfs.RemoteChunkWriterClient$WriteFutureListener.operationComplete(RemoteChunkWriterClient.java:407)
> at
>
org.jboss.netty.channel.DefaultChannelFuture.notifyListener(DefaultChannelFuture.java:381)
> at
>
org.jboss.netty.channel.DefaultChannelFuture.addListener(DefaultChannelFuture.java:148)
> at
>
peregrine.pfs.RemoteChunkWriterClient$WriteFutureListener.operationComplete(RemoteChunkWriterClient.java:407)
> at
>
org.jboss.netty.channel.DefaultChannelFuture.notifyListener(DefaultChannelFuture.java:381)
> at
>
org.jboss.netty.channel.DefaultChannelFuture.addListener(DefaultChannelFuture.java:148)
> at
>
peregrine.pfs.RemoteChunkWriterClient$WriteFutureListener.operationComplete(RemoteChunkWriterClient.java:407)
> at
>
org.jboss.netty.channel.DefaultChannelFuture.notifyListener(DefaultChannelFuture.java:381)
> at
>
org.jboss.netty.channel.DefaultChannelFuture.addListener(DefaultChannelFuture.java:148)
> at
>
peregrine.pfs.RemoteChunkWriterClient$WriteFutureListener.operationComplete(RemoteChunkWriterClient.java:407)
> at
>
org.jboss.netty.channel.DefaultChannelFuture.notifyListener(DefaultChannelFuture.java:381)
> at
>
org.jboss.netty.channel.DefaultChannelFuture.addListener(DefaultChannelFuture.java:148)
> at
>
peregrine.pfs.RemoteChunkWriterClient$WriteFutureListener.operationComplete(RemoteChunkWriterClient.java:407)
> at
>
org.jboss.netty.channel.DefaultChannelFuture.notifyListener(DefaultChannelFuture.java:381)
> at
>
org.jboss.netty.channel.DefaultChannelFuture.addListener(DefaultChannelFuture.java:148)
> at
>
peregrine.pfs.RemoteChunkWriterClient$WriteFutureListener.operationComplete(RemoteChunkWriterClient.java:407)
> at
>
org.jboss.netty.channel.DefaultChannelFuture.notifyListener(DefaultChannelFuture.java:381)
> at
>
org.jboss.netty.channel.DefaultChannelFuture.addListener(DefaultChannelFuture.java:148)
> _______________________________________________
> netty-users mailing list
> netty-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/netty-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/netty-users/attachments/20111028/a5496175/attachment-0001.html
More information about the netty-users
mailing list