Re: [jgroups-users] OOM error after long run with jgroups

Questions/problems related to using JGroups <[email protected]> Tue, 7 May 2019 12:00:24 -0400
Newsgroups gmane.comp.java.javagroups.general
Message-ID <mailman.45752.1557244871.1518.javagroups-users@lists.sourceforge.net>
--===============8468180602418256384==
Content-Type: multipart/alternative; boundary="000000000000c1e14005884e520e"

--000000000000c1e14005884e520e
Content-Type: text/plain; charset="UTF-8"

Awesome, that looks like it. When https://issues.jboss.org/browse/JGRP-2343
is also resolved will pick up the next jgroups. Will that be 4.1.0?

Thanks again,
Bobby


On Mon, May 6, 2019 at 2:44 PM Questions/problems related to using JGroups <
[email protected]> wrote:

> Hi Bobby
>
> you might have hit [1] which was fixed in 4.0.16
>
> [1] https://issues.jboss.org/browse/JGRP-2312
>
> On 06.05.19 19:51, Questions/problems related to using JGroups wrote:
> > [Sorry, this is as short as I thought I could make it. :) ]
> >
> > Hi again,
> >
> > I asked about this at the end of last year just in case, but didn't have
> > any good info at the time. After a longevity test ~4 months, I'm seeing
> > my jgroups cluster members hit an OOM issue. I ran two clusters, one
> > with JVM option to get a memory dump when needed:
> >
> > -agentlib:hprof=heap=sites,depth=20,file=/tmp/<file name>
> >
> > ...and one without, both with jvm option -Xmx128m set. Then I watched
> > the memory with 'jstat -gc' and checked in on them every now and then.
> > There were only a couple full GCs in the first couple months, but
> > eventually the FGCs were happening minutes apart and eventually the
> > nodes started to hit OOM. I can share the full jstat output if you're
> > curious.
> >
> > This is the top of the heap allocation near the end of the run, when
> > FGCs were <1 minute apart (I can share the whole memory file, but it's
> > over 300 meg):
> >
> > --- begin ---
> > SITES BEGIN (ordered by live bytes) Thu May  2 23:46:35 2019
> >            percent          live          alloc'ed  stack class
> >   rank   self  accum     bytes objs     bytes  objs trace name
> >      1 39.77% 39.77%  38014944 1187967  38014944 1187967 415369
> > java.lang.ref.WeakReference
> >      2 29.83% 69.60%  28511208 1187967  28511208 1187967 415370
> > java.util.concurrent.ConcurrentLinkedQueue$Node
> >      3 13.68% 83.28%  13077664 408677  13077664 408677 387456
> > java.lang.ref.WeakReference
> >      4 10.26% 93.54%   9808248 408677   9808248 408677 387458
> > java.util.concurrent.ConcurrentLinkedQueue$Node
> >      5  0.59% 94.13%    562432 17576    562432 17576 416748
> > java.lang.ref.WeakReference
> >      6  0.44% 94.57%    421824 17576    421824 17576 416749
> > java.util.concurrent.ConcurrentLinkedQueue$Node
> > --- end ---
> >
> > And these are the traces for those, though the last two are negligible.
> > I just wanted to include them because they're also jgroups allocations:
> >
> > --- begin ---
> > TRACE 415369:
> > java.lang.ref.Reference.<init>(Reference.java:306)
> > java.lang.ref.Reference.<init>(Reference.java:303)
> > java.lang.ref.WeakReference.<init>(WeakReference.java:57)
> > org.jgroups.util.LazyThreadFactory.newThread(LazyThreadFactory.java:36)
> > org.jgroups.util.LazyThreadFactory.newThread(LazyThreadFactory.java:23)
> >
> java.util.concurrent.ThreadPoolExecutor$Worker.<init>(ThreadPoolExecutor.java:619)
> >
> java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:932)
> >
> java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1378)
> > org.jgroups.protocols.TP.submitToThreadPool(TP.java:1380)
> > org.jgroups.protocols.TP.submitToThreadPool(TP.java:1375)
> > org.jgroups.util.SubmitToThreadPool.loopback(SubmitToThreadPool.java:30)
> >
> org.jgroups.util.MaxOneThreadPerSender.loopback(MaxOneThreadPerSender.java:54)
> > org.jgroups.protocols.TP.loopback(TP.java:1188)
> > org.jgroups.protocols.TP.down(TP.java:1107)
> > org.jgroups.stack.Protocol.down(Protocol.java:318)
> > org.jgroups.stack.Protocol.down(Protocol.java:318)
> > org.jgroups.protocols.FD_ALL$HeartbeatSender.run(FD_ALL.java:413)
> > org.jgroups.util.TimeScheduler3$Task.run(TimeScheduler3.java:324)
> >
> org.jgroups.util.TimeScheduler3$RecurringTask.run(TimeScheduler3.java:358)
> >
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> > TRACE 415370:
> >
> java.util.concurrent.ConcurrentLinkedQueue$Node.<init>(ConcurrentLinkedQueue.java:188)
> >
> java.util.concurrent.ConcurrentLinkedQueue.offer(ConcurrentLinkedQueue.java:328)
> >
> java.util.concurrent.ConcurrentLinkedQueue.add(ConcurrentLinkedQueue.java:297)
> > org.jgroups.util.LazyThreadFactory.newThread(LazyThreadFactory.java:36)
> > org.jgroups.util.LazyThreadFactory.newThread(LazyThreadFactory.java:23)
> >
> java.util.concurrent.ThreadPoolExecutor$Worker.<init>(ThreadPoolExecutor.java:619)
> >
> java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:932)
> >
> java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1378)
> > org.jgroups.protocols.TP.submitToThreadPool(TP.java:1380)
> > org.jgroups.protocols.TP.submitToThreadPool(TP.java:1375)
> > org.jgroups.util.SubmitToThreadPool.loopback(SubmitToThreadPool.java:30)
> >
> org.jgroups.util.MaxOneThreadPerSender.loopback(MaxOneThreadPerSender.java:54)
> > org.jgroups.protocols.TP.loopback(TP.java:1188)
> > org.jgroups.protocols.TP.down(TP.java:1107)
> > org.jgroups.stack.Protocol.down(Protocol.java:318)
> > org.jgroups.stack.Protocol.down(Protocol.java:318)
> > org.jgroups.protocols.FD_ALL$HeartbeatSender.run(FD_ALL.java:413)
> > org.jgroups.util.TimeScheduler3$Task.run(TimeScheduler3.java:324)
> >
> org.jgroups.util.TimeScheduler3$RecurringTask.run(TimeScheduler3.java:358)
> >
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> > TRACE 387456:
> > java.lang.ref.Reference.<init>(Reference.java:306)
> > java.lang.ref.Reference.<init>(Reference.java:303)
> > java.lang.ref.WeakReference.<init>(WeakReference.java:57)
> > org.jgroups.util.LazyThreadFactory.newThread(LazyThreadFactory.java:36)
> > org.jgroups.util.LazyThreadFactory.newThread(LazyThreadFactory.java:23)
> >
> java.util.concurrent.ThreadPoolExecutor$Worker.<init>(ThreadPoolExecutor.java:619)
> >
> java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:932)
> >
> java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1378)
> > org.jgroups.protocols.TP.submitToThreadPool(TP.java:1380)
> > org.jgroups.protocols.TP.submitToThreadPool(TP.java:1375)
> > org.jgroups.util.SubmitToThreadPool.process(SubmitToThreadPool.java:34)
> >
> org.jgroups.util.MaxOneThreadPerSender.process(MaxOneThreadPerSender.java:63)
> > org.jgroups.protocols.TP.handleSingleMessage(TP.java:1352)
> > org.jgroups.protocols.TP.receive(TP.java:1323)
> > org.jgroups.blocks.cs.BaseServer.receive(BaseServer.java:171)
> > org.jgroups.blocks.cs.TcpConnection$Receiver.run(TcpConnection.java:295)
> > java.lang.Thread.run(Thread.java:748)
> > TRACE 387458:
> >
> java.util.concurrent.ConcurrentLinkedQueue$Node.<init>(ConcurrentLinkedQueue.java:188)
> >
> java.util.concurrent.ConcurrentLinkedQueue.offer(ConcurrentLinkedQueue.java:328)
> >
> java.util.concurrent.ConcurrentLinkedQueue.add(ConcurrentLinkedQueue.java:297)
> > org.jgroups.util.LazyThreadFactory.newThread(LazyThreadFactory.java:36)
> > org.jgroups.util.LazyThreadFactory.newThread(LazyThreadFactory.java:23)
> >
> java.util.concurrent.ThreadPoolExecutor$Worker.<init>(ThreadPoolExecutor.java:619)
> >
> java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:932)
> >
> java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1378)
> > org.jgroups.protocols.TP.submitToThreadPool(TP.java:1380)
> > org.jgroups.protocols.TP.submitToThreadPool(TP.java:1375)
> > org.jgroups.util.SubmitToThreadPool.process(SubmitToThreadPool.java:34)
> >
> org.jgroups.util.MaxOneThreadPerSender.process(MaxOneThreadPerSender.java:63)
> > org.jgroups.protocols.TP.handleSingleMessage(TP.java:1352)
> > org.jgroups.protocols.TP.receive(TP.java:1323)
> > org.jgroups.blocks.cs.BaseServer.receive(BaseServer.java:171)
> > org.jgroups.blocks.cs.TcpConnection$Receiver.run(TcpConnection.java:295)
> > java.lang.Thread.run(Thread.java:748)
> > TRACE 416748:
> > java.lang.ref.Reference.<init>(Reference.java:306)
> > java.lang.ref.Reference.<init>(Reference.java:303)
> > java.lang.ref.WeakReference.<init>(WeakReference.java:57)
> > org.jgroups.util.LazyThreadFactory.newThread(LazyThreadFactory.java:36)
> > org.jgroups.util.LazyThreadFactory.newThread(LazyThreadFactory.java:23)
> >
> java.util.concurrent.ThreadPoolExecutor$Worker.<init>(ThreadPoolExecutor.java:619)
> >
> java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:932)
> >
> java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1378)
> > org.jgroups.util.TimeScheduler3.submitToPool(TimeScheduler3.java:231)
> > org.jgroups.util.TimeScheduler3.run(TimeScheduler3.java:182)
> > java.lang.Thread.run(Thread.java:748)
> > TRACE 416749:
> >
> java.util.concurrent.ConcurrentLinkedQueue$Node.<init>(ConcurrentLinkedQueue.java:188)
> >
> java.util.concurrent.ConcurrentLinkedQueue.offer(ConcurrentLinkedQueue.java:328)
> >
> java.util.concurrent.ConcurrentLinkedQueue.add(ConcurrentLinkedQueue.java:297)
> > org.jgroups.util.LazyThreadFactory.newThread(LazyThreadFactory.java:36)
> > org.jgroups.util.LazyThreadFactory.newThread(LazyThreadFactory.java:23)
> >
> java.util.concurrent.ThreadPoolExecutor$Worker.<init>(ThreadPoolExecutor.java:619)
> >
> java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:932)
> >
> java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1378)
> > org.jgroups.util.TimeScheduler3.submitToPool(TimeScheduler3.java:231)
> > org.jgroups.util.TimeScheduler3.run(TimeScheduler3.java:182)
> > java.lang.Thread.run(Thread.java:748)
> > --- end ---
> >
> > Below is the code we use to create the jchannel. We're using jgroups
> > version 4.0.13. Can you tell me if this is something that can be fixed,
> > or if there's any way my code could be doing something to prevent these
> > objects from being collected?
> >
> > This is a product we sell, rather than something running within our
> > company, so I don't have the ability to restart it every couple months
> > unless I add something in the next version to try to do so.
> >
> >          List<Protocol> stack = new ArrayList<>();
> >          stack.add(new TCP()
> >              .setValue("bind_addr",
> > InetAddress.getByName(getBindingAddress()))
> >              .setValue("bind_port", bindingPort)
> >              .setValue("thread_pool_min_threads", 1)
> >              .setValue("thread_pool_keep_alive_time", 5000)
> >              .setValue("send_buf_size", 640000)
> >              .setValue("sock_conn_timeout", 300)
> >              .setValue("recv_buf_size", 5000000));
> >          stack.add(new TCPPING()
> >              .setValue("initial_hosts", parseHostList())
> >              .setValue("send_cache_on_join", true)
> >              .setValue("port_range", 0));
> >          stack.add(new MERGE3()
> >              .setValue("min_interval", 10000)
> >              .setValue("max_interval", 30000));
> >          stack.add(new FD_ALL()
> >              .setValue("timeout", getJGroupsTotalTimeout() * 1000L));
> >          stack.add(new VERIFY_SUSPECT()
> >              .setValue("timeout", 1500));
> >          stack.add(new BARRIER());
> >          stack.add(new NAKACK2()
> >              .setValue("use_mcast_xmit", false));
> >          stack.add(new UNICAST3());
> >          stack.add(new STABLE()
> >              .setValue("desired_avg_gossip", 50000)
> >              .setValue("max_bytes", 4000000));
> >          stack.add(createAuthProtocol(....));
> >          stack.add(new GMS()
> >              .setValue("join_timeout", 3000));
> >          stack.add(new MFC()
> >              .setValue("max_credits", 2000000)
> >              .setValue("min_credits", 800000));
> >          stack.add(new FRAG2());
> >          stack.add(new STATE_TRANSFER());
> >          return new JChannel(stack);
> >
> > Thank you,
> > Bobby
> >
> >
> >
> > _______________________________________________
> > javagroups-users mailing list
> > [email protected]
> > https://lists.sourceforge.net/lists/listinfo/javagroups-users
> >
>
> --
> Bela Ban | http://www.jgroups.org
>
>
>
> _______________________________________________
> javagroups-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/javagroups-users
>

--000000000000c1e14005884e520e
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr">Awesome, that looks like it. When=C2=A0<a=
 href=3D"https://issues.jboss.org/browse/JGRP-2343" target=3D"_blank">https=
://issues.jboss.org/browse/JGRP-2343</a> is also resolved will pick up the =
next jgroups. Will that be 4.1.0?</div><div dir=3D"ltr"><br></div><div>Than=
ks again,</div><div>Bobby</div><div><br></div></div><br><div class=3D"gmail=
_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, May 6, 2019 at 2:44 P=
M Questions/problems related to using JGroups &lt;<a href=3D"mailto:javagro=
[email protected]" target=3D"_blank">[email protected]=
ourceforge.net</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" st=
yle=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padd=
ing-left:1ex">Hi Bobby<br>
<br>
you might have hit [1] which was fixed in 4.0.16<br>
<br>
[1] <a href=3D"https://issues.jboss.org/browse/JGRP-2312" rel=3D"noreferrer=
" target=3D"_blank">https://issues.jboss.org/browse/JGRP-2312</a><br>
<br>
On 06.05.19 19:51, Questions/problems related to using JGroups wrote:<br>
&gt; [Sorry, this is as short as I thought I could make it. :) ]<br>
&gt; <br>
&gt; Hi again,<br>
&gt; <br>
&gt; I asked about this at the end of last year just in case, but didn&#39;=
t have <br>
&gt; any good info at the time. After a longevity test ~4 months, I&#39;m s=
eeing <br>
&gt; my jgroups cluster members hit an OOM issue. I ran two clusters, one <=
br>
&gt; with JVM option to get a memory dump when needed:<br>
&gt; <br>
&gt; -agentlib:hprof=3Dheap=3Dsites,depth=3D20,file=3D/tmp/&lt;file name&gt=
;<br>
&gt; <br>
&gt; ...and one without, both with=C2=A0jvm option -Xmx128m set. Then I wat=
ched <br>
&gt; the memory with &#39;jstat -gc&#39; and checked in on them every now a=
nd then. <br>
&gt; There were only a couple full GCs in the first couple months, but <br>
&gt; eventually the FGCs were happening minutes apart and eventually the <b=
r>
&gt; nodes started to hit OOM. I can share the full jstat output if you&#39=
;re <br>
&gt; curious.<br>
&gt; <br>
&gt; This is the top of the heap allocation near the end of the run, when <=
br>
&gt; FGCs were &lt;1 minute apart (I can share the whole memory file, but i=
t&#39;s <br>
&gt; over 300 meg):<br>
&gt; <br>
&gt; --- begin ---<br>
&gt; SITES BEGIN (ordered by live bytes) Thu May=C2=A0 2 23:46:35 2019<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 percent=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 live=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 alloc&#39;ed=C2=A0 sta=
ck class<br>
&gt;=C2=A0 =C2=A0rank=C2=A0 =C2=A0self=C2=A0 accum=C2=A0 =C2=A0 =C2=A0bytes=
 objs=C2=A0 =C2=A0 =C2=A0bytes=C2=A0 objs trace name<br>
&gt;=C2=A0 =C2=A0 =C2=A0 1 39.77% 39.77%=C2=A0 38014944 1187967=C2=A0 38014=
944 1187967 415369 <br>
&gt; java.lang.ref.WeakReference<br>
&gt;=C2=A0 =C2=A0 =C2=A0 2 29.83% 69.60%=C2=A0 28511208 1187967=C2=A0 28511=
208 1187967 415370 <br>
&gt; java.util.concurrent.ConcurrentLinkedQueue$Node<br>
&gt;=C2=A0 =C2=A0 =C2=A0 3 13.68% 83.28%=C2=A0 13077664 408677=C2=A0 130776=
64 408677 387456 <br>
&gt; java.lang.ref.WeakReference<br>
&gt;=C2=A0 =C2=A0 =C2=A0 4 10.26% 93.54%=C2=A0 =C2=A09808248 408677=C2=A0 =
=C2=A09808248 408677 387458 <br>
&gt; java.util.concurrent.ConcurrentLinkedQueue$Node<br>
&gt;=C2=A0 =C2=A0 =C2=A0 5=C2=A0 0.59% 94.13%=C2=A0 =C2=A0 562432 17576=C2=
=A0 =C2=A0 562432 17576 416748 <br>
&gt; java.lang.ref.WeakReference<br>
&gt;=C2=A0 =C2=A0 =C2=A0 6=C2=A0 0.44% 94.57%=C2=A0 =C2=A0 421824 17576=C2=
=A0 =C2=A0 421824 17576 416749 <br>
&gt; java.util.concurrent.ConcurrentLinkedQueue$Node<br>
&gt; --- end ---<br>
&gt; <br>
&gt; And these are the traces for those, though the last two are negligible=
. <br>
&gt; I just wanted to include them because they&#39;re also jgroups allocat=
ions:<br>
&gt; <br>
&gt; --- begin ---<br>
&gt; TRACE 415369:<br>
&gt; java.lang.ref.Reference.&lt;init&gt;(Reference.java:306)<br>
&gt; java.lang.ref.Reference.&lt;init&gt;(Reference.java:303)<br>
&gt; java.lang.ref.WeakReference.&lt;init&gt;(WeakReference.java:57)<br>
&gt; org.jgroups.util.LazyThreadFactory.newThread(LazyThreadFactory.java:36=
)<br>
&gt; org.jgroups.util.LazyThreadFactory.newThread(LazyThreadFactory.java:23=
)<br>
&gt; java.util.concurrent.ThreadPoolExecutor$Worker.&lt;init&gt;(ThreadPool=
Executor.java:619)<br>
&gt; java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.j=
ava:932)<br>
&gt; java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.jav=
a:1378)<br>
&gt; <a href=3D"http://org.jgroups.protocols.TP" target=3D"_blank">org.jgro=
ups.protocols.TP</a>.submitToThreadPool(TP.java:1380)<br>
&gt; <a href=3D"http://org.jgroups.protocols.TP" target=3D"_blank">org.jgro=
ups.protocols.TP</a>.submitToThreadPool(TP.java:1375)<br>
&gt; org.jgroups.util.SubmitToThreadPool.loopback(SubmitToThreadPool.java:3=
0)<br>
&gt; org.jgroups.util.MaxOneThreadPerSender.loopback(MaxOneThreadPerSender.=
java:54)<br>
&gt; <a href=3D"http://org.jgroups.protocols.TP" target=3D"_blank">org.jgro=
ups.protocols.TP</a>.loopback(TP.java:1188)<br>
&gt; org.jgroups.protocols.TP.down(TP.java:1107)<br>
&gt; org.jgroups.stack.Protocol.down(Protocol.java:318)<br>
&gt; org.jgroups.stack.Protocol.down(Protocol.java:318)<br>
&gt; org.jgroups.protocols.FD_ALL$HeartbeatSender.run(FD_ALL.java:413)<br>
&gt; org.jgroups.util.TimeScheduler3$Task.run(TimeScheduler3.java:324)<br>
&gt; org.jgroups.util.TimeScheduler3$RecurringTask.run(TimeScheduler3.java:=
358)<br>
&gt; java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.j=
ava:1149)<br>
&gt; TRACE 415370:<br>
&gt; java.util.concurrent.ConcurrentLinkedQueue$Node.&lt;init&gt;(Concurren=
tLinkedQueue.java:188)<br>
&gt; java.util.concurrent.ConcurrentLinkedQueue.offer(ConcurrentLinkedQueue=
.java:328)<br>
&gt; java.util.concurrent.ConcurrentLinkedQueue.add(ConcurrentLinkedQueue.j=
ava:297)<br>
&gt; org.jgroups.util.LazyThreadFactory.newThread(LazyThreadFactory.java:36=
)<br>
&gt; org.jgroups.util.LazyThreadFactory.newThread(LazyThreadFactory.java:23=
)<br>
&gt; java.util.concurrent.ThreadPoolExecutor$Worker.&lt;init&gt;(ThreadPool=
Executor.java:619)<br>
&gt; java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.j=
ava:932)<br>
&gt; java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.jav=
a:1378)<br>
&gt; <a href=3D"http://org.jgroups.protocols.TP" target=3D"_blank">org.jgro=
ups.protocols.TP</a>.submitToThreadPool(TP.java:1380)<br>
&gt; <a href=3D"http://org.jgroups.protocols.TP" target=3D"_blank">org.jgro=
ups.protocols.TP</a>.submitToThreadPool(TP.java:1375)<br>
&gt; org.jgroups.util.SubmitToThreadPool.loopback(SubmitToThreadPool.java:3=
0)<br>
&gt; org.jgroups.util.MaxOneThreadPerSender.loopback(MaxOneThreadPerSender.=
java:54)<br>
&gt; <a href=3D"http://org.jgroups.protocols.TP" target=3D"_blank">org.jgro=
ups.protocols.TP</a>.loopback(TP.java:1188)<br>
&gt; org.jgroups.protocols.TP.down(TP.java:1107)<br>
&gt; org.jgroups.stack.Protocol.down(Protocol.java:318)<br>
&gt; org.jgroups.stack.Protocol.down(Protocol.java:318)<br>
&gt; org.jgroups.protocols.FD_ALL$HeartbeatSender.run(FD_ALL.java:413)<br>
&gt; org.jgroups.util.TimeScheduler3$Task.run(TimeScheduler3.java:324)<br>
&gt; org.jgroups.util.TimeScheduler3$RecurringTask.run(TimeScheduler3.java:=
358)<br>
&gt; java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.j=
ava:1149)<br>
&gt; TRACE 387456:<br>
&gt; java.lang.ref.Reference.&lt;init&gt;(Reference.java:306)<br>
&gt; java.lang.ref.Reference.&lt;init&gt;(Reference.java:303)<br>
&gt; java.lang.ref.WeakReference.&lt;init&gt;(WeakReference.java:57)<br>
&gt; org.jgroups.util.LazyThreadFactory.newThread(LazyThreadFactory.java:36=
)<br>
&gt; org.jgroups.util.LazyThreadFactory.newThread(LazyThreadFactory.java:23=
)<br>
&gt; java.util.concurrent.ThreadPoolExecutor$Worker.&lt;init&gt;(ThreadPool=
Executor.java:619)<br>
&gt; java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.j=
ava:932)<br>
&gt; java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.jav=
a:1378)<br>
&gt; <a href=3D"http://org.jgroups.protocols.TP" target=3D"_blank">org.jgro=
ups.protocols.TP</a>.submitToThreadPool(TP.java:1380)<br>
&gt; <a href=3D"http://org.jgroups.protocols.TP" target=3D"_blank">org.jgro=
ups.protocols.TP</a>.submitToThreadPool(TP.java:1375)<br>
&gt; org.jgroups.util.SubmitToThreadPool.process(SubmitToThreadPool.java:34=
)<br>
&gt; org.jgroups.util.MaxOneThreadPerSender.process(MaxOneThreadPerSender.j=
ava:63)<br>
&gt; <a href=3D"http://org.jgroups.protocols.TP" target=3D"_blank">org.jgro=
ups.protocols.TP</a>.handleSingleMessage(TP.java:1352)<br>
&gt; <a href=3D"http://org.jgroups.protocols.TP" target=3D"_blank">org.jgro=
ups.protocols.TP</a>.receive(TP.java:1323)<br>
&gt; org.jgroups.blocks.cs.BaseServer.receive(BaseServer.java:171)<br>
&gt; org.jgroups.blocks.cs.TcpConnection$Receiver.run(TcpConnection.java:29=
5)<br>
&gt; java.lang.Thread.run(Thread.java:748)<br>
&gt; TRACE 387458:<br>
&gt; java.util.concurrent.ConcurrentLinkedQueue$Node.&lt;init&gt;(Concurren=
tLinkedQueue.java:188)<br>
&gt; java.util.concurrent.ConcurrentLinkedQueue.offer(ConcurrentLinkedQueue=
.java:328)<br>
&gt; java.util.concurrent.ConcurrentLinkedQueue.add(ConcurrentLinkedQueue.j=
ava:297)<br>
&gt; org.jgroups.util.LazyThreadFactory.newThread(LazyThreadFactory.java:36=
)<br>
&gt; org.jgroups.util.LazyThreadFactory.newThread(LazyThreadFactory.java:23=
)<br>
&gt; java.util.concurrent.ThreadPoolExecutor$Worker.&lt;init&gt;(ThreadPool=
Executor.java:619)<br>
&gt; java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.j=
ava:932)<br>
&gt; java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.jav=
a:1378)<br>
&gt; <a href=3D"http://org.jgroups.protocols.TP" target=3D"_blank">org.jgro=
ups.protocols.TP</a>.submitToThreadPool(TP.java:1380)<br>
&gt; <a href=3D"http://org.jgroups.protocols.TP" target=3D"_blank">org.jgro=
ups.protocols.TP</a>.submitToThreadPool(TP.java:1375)<br>
&gt; org.jgroups.util.SubmitToThreadPool.process(SubmitToThreadPool.java:34=
)<br>
&gt; org.jgroups.util.MaxOneThreadPerSender.process(MaxOneThreadPerSender.j=
ava:63)<br>
&gt; <a href=3D"http://org.jgroups.protocols.TP" target=3D"_blank">org.jgro=
ups.protocols.TP</a>.handleSingleMessage(TP.java:1352)<br>
&gt; <a href=3D"http://org.jgroups.protocols.TP" target=3D"_blank">org.jgro=
ups.protocols.TP</a>.receive(TP.java:1323)<br>
&gt; org.jgroups.blocks.cs.BaseServer.receive(BaseServer.java:171)<br>
&gt; org.jgroups.blocks.cs.TcpConnection$Receiver.run(TcpConnection.java:29=
5)<br>
&gt; java.lang.Thread.run(Thread.java:748)<br>
&gt; TRACE 416748:<br>
&gt; java.lang.ref.Reference.&lt;init&gt;(Reference.java:306)<br>
&gt; java.lang.ref.Reference.&lt;init&gt;(Reference.java:303)<br>
&gt; java.lang.ref.WeakReference.&lt;init&gt;(WeakReference.java:57)<br>
&gt; org.jgroups.util.LazyThreadFactory.newThread(LazyThreadFactory.java:36=
)<br>
&gt; org.jgroups.util.LazyThreadFactory.newThread(LazyThreadFactory.java:23=
)<br>
&gt; java.util.concurrent.ThreadPoolExecutor$Worker.&lt;init&gt;(ThreadPool=
Executor.java:619)<br>
&gt; java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.j=
ava:932)<br>
&gt; java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.jav=
a:1378)<br>
&gt; org.jgroups.util.TimeScheduler3.submitToPool(TimeScheduler3.java:231)<=
br>
&gt; org.jgroups.util.TimeScheduler3.run(TimeScheduler3.java:182)<br>
&gt; java.lang.Thread.run(Thread.java:748)<br>
&gt; TRACE 416749:<br>
&gt; java.util.concurrent.ConcurrentLinkedQueue$Node.&lt;init&gt;(Concurren=
tLinkedQueue.java:188)<br>
&gt; java.util.concurrent.ConcurrentLinkedQueue.offer(ConcurrentLinkedQueue=
.java:328)<br>
&gt; java.util.concurrent.ConcurrentLinkedQueue.add(ConcurrentLinkedQueue.j=
ava:297)<br>
&gt; org.jgroups.util.LazyThreadFactory.newThread(LazyThreadFactory.java:36=
)<br>
&gt; org.jgroups.util.LazyThreadFactory.newThread(LazyThreadFactory.java:23=
)<br>
&gt; java.util.concurrent.ThreadPoolExecutor$Worker.&lt;init&gt;(ThreadPool=
Executor.java:619)<br>
&gt; java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.j=
ava:932)<br>
&gt; java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.jav=
a:1378)<br>
&gt; org.jgroups.util.TimeScheduler3.submitToPool(TimeScheduler3.java:231)<=
br>
&gt; org.jgroups.util.TimeScheduler3.run(TimeScheduler3.java:182)<br>
&gt; java.lang.Thread.run(Thread.java:748)<br>
&gt; --- end ---<br>
&gt; <br>
&gt; Below is the code we use to create the jchannel. We&#39;re using jgrou=
ps <br>
&gt; version=C2=A04.0.13. Can you tell me if this is something that can be =
fixed, <br>
&gt; or if there&#39;s any way my code could be doing something to prevent =
these <br>
&gt; objects from being collected?<br>
&gt; <br>
&gt; This is a product we sell, rather than something running within our <b=
r>
&gt; company, so I don&#39;t have the ability to restart it every couple mo=
nths <br>
&gt; unless I add something in the next version to try to do so.<br>
&gt; <br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 List&lt;Protocol&gt; stack =3D new A=
rrayList&lt;&gt;();<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 stack.add(new TCP()<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 .setValue(&quot;bind_a=
ddr&quot;, <br>
&gt; InetAddress.getByName(getBindingAddress()))<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 .setValue(&quot;bind_p=
ort&quot;, bindingPort)<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 .setValue(&quot;thread=
_pool_min_threads&quot;, 1)<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 .setValue(&quot;thread=
_pool_keep_alive_time&quot;, 5000)<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 .setValue(&quot;send_b=
uf_size&quot;, 640000)<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 .setValue(&quot;sock_c=
onn_timeout&quot;, 300)<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 .setValue(&quot;recv_b=
uf_size&quot;, 5000000));<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 stack.add(new TCPPING()<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 .setValue(&quot;initia=
l_hosts&quot;, parseHostList())<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 .setValue(&quot;send_c=
ache_on_join&quot;, true)<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 .setValue(&quot;port_r=
ange&quot;, 0));<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 stack.add(new MERGE3()<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 .setValue(&quot;min_in=
terval&quot;, 10000)<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 .setValue(&quot;max_in=
terval&quot;, 30000));<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 stack.add(new FD_ALL()<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 .setValue(&quot;timeou=
t&quot;, getJGroupsTotalTimeout() * 1000L));<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 stack.add(new VERIFY_SUSPECT()<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 .setValue(&quot;timeou=
t&quot;, 1500));<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 stack.add(new BARRIER());<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 stack.add(new NAKACK2()<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 .setValue(&quot;use_mc=
ast_xmit&quot;, false));<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 stack.add(new UNICAST3());<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 stack.add(new STABLE()<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 .setValue(&quot;desire=
d_avg_gossip&quot;, 50000)<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 .setValue(&quot;max_by=
tes&quot;, 4000000));<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 stack.add(createAuthProtocol(....));=
<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 stack.add(new GMS()<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 .setValue(&quot;join_t=
imeout&quot;, 3000));<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 stack.add(new MFC()<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 .setValue(&quot;max_cr=
edits&quot;, 2000000)<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 .setValue(&quot;min_cr=
edits&quot;, 800000));<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 stack.add(new FRAG2());<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 stack.add(new STATE_TRANSFER());<br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return new JChannel(stack);<br>
&gt; <br>
&gt; Thank you,<br>
&gt; Bobby<br>
&gt; <br>
&gt; <br>
&gt; <br>
&gt; _______________________________________________<br>
&gt; javagroups-users mailing list<br>
&gt; <a href=3D"mailto:[email protected]" target=3D"_b=
lank">[email protected]</a><br>
&gt; <a href=3D"https://lists.sourceforge.net/lists/listinfo/javagroups-use=
rs" rel=3D"noreferrer" target=3D"_blank">https://lists.sourceforge.net/list=
s/listinfo/javagroups-users</a><br>
&gt; <br>
<br>
-- <br>
Bela Ban | <a href=3D"http://www.jgroups.org" rel=3D"noreferrer" target=3D"=
_blank">http://www.jgroups.org</a><br>
<br>
<br>
<br>
_______________________________________________<br>
javagroups-users mailing list<br>
<a href=3D"mailto:[email protected]" target=3D"_blank"=
>[email protected]</a><br>
<a href=3D"https://lists.sourceforge.net/lists/listinfo/javagroups-users" r=
el=3D"noreferrer" target=3D"_blank">https://lists.sourceforge.net/lists/lis=
tinfo/javagroups-users</a><br>
</blockquote></div>

--000000000000c1e14005884e520e--


--===============8468180602418256384==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline


--===============8468180602418256384==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
javagroups-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/javagroups-users

--===============8468180602418256384==--