wicket-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Wayne W <waynemailingli...@gmail.com>
Subject Re: Possible memory leak with Tomcat?
Date Mon, 20 May 2019 15:37:59 GMT
Hi Sven,

I'm having trouble replicating locally. We just saw it in production and
then had to roll back as it was effecting customers.  The log is full of
these:

May 16, 2019 6:39:39 AM org.apache.catalina.session.StandardSession
setAttribute
SEVERE: Session binding event listener threw exception
java.lang.NullPointerException
at
org.apache.wicket.page.PageStoreManager$SessionEntry.clear(PageStoreManager.java:351)
at
org.apache.wicket.page.PageStoreManager$SessionEntry.valueUnbound(PageStoreManager.java:340)
at
org.apache.catalina.session.StandardSession.setAttribute(StandardSession.java:1496)
at
org.redisson.tomcat.RedissonSession.superSetAttribute(RedissonSession.java:257)
at
org.redisson.tomcat.RedissonSessionManager$2.onMessage(RedissonSessionManager.java:284)
at
org.redisson.tomcat.RedissonSessionManager$2.onMessage(RedissonSessionManager.java:251)
at
org.redisson.PubSubMessageListener.onMessage(PubSubMessageListener.java:79)
at
org.redisson.client.RedisPubSubConnection.onMessage(RedisPubSubConnection.java:78)
at
org.redisson.client.handler.CommandPubSubDecoder.lambda$enqueueMessage$0(CommandPubSubDecoder.java:184)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at
io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.lang.Thread.run(Thread.java:745)


Then about 2 hours later a huge number of these started to appear in the
logs:

2019-05-16 08:52:47,851 ERROR - Wicket-PageSavingThread
org.apache.wicket.pageStore.DiskDataStore$SessionEntry.getFileChannel(DiskDataStore.java:434)
434 DiskDataStore              -
/ec/var/tomcat/gc1/work2/ROOT/wicket.hub-filestore/5168/1931/547BB9E7E255B16D5B2864F42B4F9C28.gc1/data
(No such file or directory)
java.io.FileNotFoundException:
/ec/var/tomcat/gc1/work2/ROOT/wicket.hub-filestore/5168/1931/547BB9E7E255B16D5B2864F42B4F9C28.gc1/data
(No such file or directory)
at java.io.RandomAccessFile.open0(Native Method)
at java.io.RandomAccessFile.open(RandomAccessFile.java:316)
at java.io.RandomAccessFile.<init>(RandomAccessFile.java:243)
at
org.apache.wicket.pageStore.DiskDataStore$SessionEntry.getFileChannel(DiskDataStore.java:428)
at
org.apache.wicket.pageStore.DiskDataStore$SessionEntry.savePage(DiskDataStore.java:346)
at
org.apache.wicket.pageStore.DiskDataStore.storeData(DiskDataStore.java:185)
at
org.apache.wicket.pageStore.AsynchronousDataStore$PageSavingRunnable.run(AsynchronousDataStore.java:355)
at java.lang.Thread.run(Thread.java:745)


Whats odd is that it effected some user but not others at all. When we
rollback to 7.8.0 these go away. I'm not sure how I'm going to get the the
bottom of this




On Fri, May 17, 2019 at 11:03 PM Sven Meier <sven@meiers.net> wrote:

> Hi,
>
> WICKET-6564 was about applications explicitly calling #clear() on the
> PageStoreManager.
> This doesn't has anything to do with session expiration.
>
> Could you please explain what issues you're facing? A quickstart would
> be perfect, or at least some explanations how we're able to reproduce
> the problem.
>
> Regards
> Sven
>
>
> Am 17.05.19 um 13:23 schrieb Wayne W:
> > Hello Sven,
> >
> > the fix you did for WICKET-6564 (
> >
> https://git-wip-us.apache.org/repos/asf?p=wicket.git;a=commitdiff;h=7665dc5;hp=3a1602d308a366e00948dbf91dbd96bc40cae167
> )
> > doesn't work for us. Its causing lots of issues. We use redisson for
> > managing our sessions in tomcat, so that we can failover without loosing
> > user session.
> >
> > When a session attribute is updated redisson calls setAttribute on the
> > session. Looking at the code for
> > org.apache.catalina.session.StandardSession.setAttribute I see:
> >
> > // Replace or add this attribute
> >
> >          Object unbound = attributes.put(name, value);
> >
> >
> >          // Call the valueUnbound() method if necessary
> >
> >          *if* (notify && (unbound != *null*) && (unbound != value)
&&
> >
> >              (unbound *instanceof* HttpSessionBindingListener)) {
> >
> >              *try* {
> >
> >                  ((HttpSessionBindingListener) unbound).valueUnbound
> >
> >                      (*new* HttpSessionBindingEvent(getSession(), name));
> >
> >              } *catch* (Throwable t) {
> >
> >                  ExceptionUtils.*handleThrowable*(t);
> >
> >                  manager.getContext().getLogger().error
> >
> >                      (*sm*.getString("standardSession.bindingEvent"), t);
> >
> >              }
> >
> >          }
> >
> > The valueUnbound is call to notify the object its no longer in the
> session.
> > However looking at the change you did for
> > PageStoreManager.valueUnbound its actually
> > removing the session by calling clear()
> >
> > Doesn't seem correct?? or am I missing something?
> >
> >
> >
> > On Fri, May 10, 2019 at 1:43 PM Wayne W <waynemailinglists@gmail.com>
> wrote:
> >
> >> Thanks Sven.
> >>
> >> On Thu, May 9, 2019 at 8:24 PM Sven Meier <sven@meiers.net> wrote:
> >>
> >>> Hi,
> >>>
> >>> we've had two fixed related to page stores (WICKET-6457, WICKET-6564)
> so
> >>> please upgrade to 7.13.0 first.
> >>>
> >>> Have fun
> >>> Sven
> >>>
> >>>
> >>> Am 09.05.19 um 21:10 schrieb Wayne W:
> >>>> Hi,
> >>>>
> >>>> I've take a memory dump of one of our production instances and I'm
> >>> seeing
> >>>> about 500MB of memory consumed just by the DiskDataStore which doesn't
> >>> seem
> >>>> correct to me. Here is a screen shot:
> >>>>
> >>>
> https://customerservices.glasscubes.com/share/s/qmvnvrdtm36amme6sdrqg4dp2g
> >>>> I've highlighted the item - 524,288 items doesn't seem correct for
> ~500
> >>>> http sessions?. It seems to me that removeData(*final* String
> >>> sessionId) is
> >>>> probably not being called and clearing up the sessionEntryMap. Looking
> >>> at
> >>>> the call hierarchy I can see how Jetty calls it but I cannot see how
> >>> tomcat
> >>>> is calling it.
> >>>>
> >>>> Any ideas whats happening?
> >>>> Wicket 7.8.0, Tomcat 8.0.32
> >>>>
> >>>> Thanks
> >>>>
> >>> ---------------------------------------------------------------------
> >>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> >>> For additional commands, e-mail: users-help@wicket.apache.org
> >>>
> >>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message