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