arh! That's right. I check OutboundTcpConnection and it only does closeSocket() after something went wrong. I will log more in OutboundTcpConnection to see what actually happens.
Thank your help. On Thu, Apr 22, 2010 at 10:03, Jonathan Ellis <jbel...@gmail.com> wrote: > But those connections aren't supposed to ever terminate unless a node > dies or is partitioned. So if we "fix" it by adding a socket.close I > worry that we're covering up something more important. > > On Wed, Apr 21, 2010 at 8:53 PM, Ingram Chen <ingramc...@gmail.com> wrote: > > I agree your point. I patch the code and log more informations to find > out > > the real cause. > > > > Here is the code snip I think may be the cause: > > > > IncomingTcpConnection: > > > > public void run() > > { > > while (true) > > { > > try > > { > > MessagingService.validateMagic(input.readInt()); > > int header = input.readInt(); > > int type = MessagingService.getBits(header, 1, 2); > > boolean isStream = MessagingService.getBits(header, 3, 1) > == > > 1; > > int version = MessagingService.getBits(header, 15, 8); > > > > if (isStream) > > { > > new IncomingStreamReader(socket.getChannel()).read(); > > } > > else > > { > > int size = input.readInt(); > > byte[] contentBytes = new byte[size]; > > input.readFully(contentBytes); > > > MessagingService.getDeserializationExecutor().submit(new > > MessageDeserializationTask(new ByteArrayInputStream(contentBytes))); > > } > > } > > catch (EOFException e) > > { > > if (logger.isTraceEnabled()) > > logger.trace("eof reading from socket; closing", e); > > break; > > } > > catch (IOException e) > > { > > if (logger.isDebugEnabled()) > > logger.debug("error reading from socket; closing", > e); > > break; > > } > > } > > } > > > > In normal condition, while loop is terminated after input.readInt() throw > > EOFException. but it quits without socket.close(). what I do is wrap > whole > > while block inside a try { ... } finally {socket.close();} > > > > > > On Thu, Apr 22, 2010 at 01:14, Jonathan Ellis <jbel...@gmail.com> wrote: > >> > >> I'd like to get something besides "I'm seeing close wait but i have no > >> idea why" for a bug report, since most people aren't seeing that. > >> > >> On Tue, Apr 20, 2010 at 9:33 AM, Ingram Chen <ingramc...@gmail.com> > wrote: > >> > I trace IncomingStreamReader source and found that incoming socket > comes > >> > from MessagingService$SocketThread. > >> > but there is no close() call on either accepted socket or > socketChannel. > >> > > >> > Should I file a bug report ? > >> > > >> > On Tue, Apr 20, 2010 at 11:02, Ingram Chen <ingramc...@gmail.com> > wrote: > >> >> > >> >> this happened after several hours of operations and both nodes are > >> >> started > >> >> at the same time (clean start without any data). so it might not > relate > >> >> to > >> >> Bootstrap. > >> >> > >> >> In system.log I do not see any logs like "xxx node dead" or > exceptions. > >> >> and both nodes in test are alive. they serve read/write well, too. > >> >> Below > >> >> four connections between nodes are keep healthy from time to time. > >> >> > >> >> tcp 0 0 ::ffff:192.168.2.87:7000 > >> >> ::ffff:192.168.2.88:58447 ESTABLISHED > >> >> tcp 0 0 ::ffff:192.168.2.87:54986 > >> >> ::ffff:192.168.2.88:7000 ESTABLISHED > >> >> tcp 0 0 ::ffff:192.168.2.87:59138 > >> >> ::ffff:192.168.2.88:7000 ESTABLISHED > >> >> tcp 0 0 ::ffff:192.168.2.87:7000 > >> >> ::ffff:192.168.2.88:39074 ESTABLISHED > >> >> > >> >> so connections end in CLOSE_WAIT should be newly created. (for > >> >> streaming > >> >> ?) This seems related to streaming issues we suffered recently: > >> >> > http://n2.nabble.com/busy-thread-on-IncomingStreamReader-td4908640.html > >> >> > >> >> I would like add some debug codes around opening and closing of > socket > >> >> to > >> >> find out what happend. > >> >> > >> >> Could you give me some hint, about what classes I should take look ? > >> >> > >> >> > >> >> On Tue, Apr 20, 2010 at 04:47, Jonathan Ellis <jbel...@gmail.com> > >> >> wrote: > >> >>> > >> >>> Is this after doing a bootstrap or other streaming operation? Or > did > >> >>> a node go down? > >> >>> > >> >>> The internal sockets are supposed to remain open, otherwise. > >> >>> > >> >>> On Mon, Apr 19, 2010 at 10:56 AM, Ingram Chen <ingramc...@gmail.com > > > >> >>> wrote: > >> >>> > Thank your information. > >> >>> > > >> >>> > We do use connection pools with thrift client and ThriftAdress is > on > >> >>> > port > >> >>> > 9160. > >> >>> > > >> >>> > Those problematic connections we found are all in port 7000, which > >> >>> > is > >> >>> > internal communications port between > >> >>> > nodes. I guess this related to StreamingService. > >> >>> > > >> >>> > On Mon, Apr 19, 2010 at 23:46, Brandon Williams <dri...@gmail.com > > > >> >>> > wrote: > >> >>> >> > >> >>> >> On Mon, Apr 19, 2010 at 10:27 AM, Ingram Chen > >> >>> >> <ingramc...@gmail.com> > >> >>> >> wrote: > >> >>> >>> > >> >>> >>> Hi all, > >> >>> >>> > >> >>> >>> We have observed several connections between nodes in > >> >>> >>> CLOSE_WAIT > >> >>> >>> after several hours of operation: > >> >>> >> > >> >>> >> This is symptomatic of not pooling your client connections > >> >>> >> correctly. > >> >>> >> Be > >> >>> >> sure you're using one connection per thread, not one connection > per > >> >>> >> operation. > >> >>> >> -Brandon > >> >>> > > >> >>> > > >> >>> > -- > >> >>> > Ingram Chen > >> >>> > online share order: http://dinbendon.net > >> >>> > blog: http://www.javaworld.com.tw/roller/page/ingramchen > >> >>> > > >> >> > >> >> > >> >> > >> >> -- > >> >> Ingram Chen > >> >> online share order: http://dinbendon.net > >> >> blog: http://www.javaworld.com.tw/roller/page/ingramchen > >> > > >> > > >> > > >> > -- > >> > Ingram Chen > >> > online share order: http://dinbendon.net > >> > blog: http://www.javaworld.com.tw/roller/page/ingramchen > >> > > > > > > > > > -- > > Ingram Chen > > online share order: http://dinbendon.net > > blog: http://www.javaworld.com.tw/roller/page/ingramchen > > > -- Ingram Chen online share order: http://dinbendon.net blog: http://www.javaworld.com.tw/roller/page/ingramchen