You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Tobias Soloschenko (JIRA)" <ji...@apache.org> on 2016/03/23 08:40:25 UTC

[jira] [Comment Edited] (WICKET-6128) Add metrics for currently active sessions

    [ https://issues.apache.org/jira/browse/WICKET-6128?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15208017#comment-15208017 ] 

Tobias Soloschenko edited comment on WICKET-6128 at 3/23/16 7:40 AM:
---------------------------------------------------------------------

Hi,

yesterday I tried out the following setup:

Session counter:
{code}
private static final AtomicLong count = new AtomicLong(0);
{code}

Session is created and measured with:
{code}
	@Around("execution(* org.apache.wicket.session.ISessionStore.bind(..))")
	public Object aroundBind(ProceedingJoinPoint joinPoint) throws Throwable
	{
		return histogram("core/session/count", joinPoint, count.getAndIncrement());
	}
{code}

Session expired and measured with:
{code}
	@Around("execution(* org.apache.wicket.Session.onInvalidate())")
	public Object aroundInvalidate(ProceedingJoinPoint joinPoint) throws Throwable
	{
		return histogram("core/session/count", joinPoint, count.getAndDecrement());
	}
{code}

The issue here was that the increment is working, but the decrement always results in an exception, because the Application cant be resolved with Application.get().

{code}
org.apache.wicket.WicketRuntimeException: There is no application attached to current thread ContainerBackgroundProcessor[StandardEngine[Catalina]]
	at org.apache.wicket.Application.get(Application.java:236)
	at org.apache.wicket.metrics.WicketMetrics.getSettings(WicketMetrics.java:189)
	at org.apache.wicket.metrics.WicketMetrics.histogram(WicketMetrics.java:96)
	at org.apache.wicket.metrics.aspects.session.ISessionStoreAspect.aroundInvalidate(ISessionStoreAspect.java:49)
	at org.apache.wicket.Session.onInvalidate(Session.java:918)
	at org.apache.wicket.session.HttpSessionStore$SessionBindingListener.valueUnbound(HttpSessionStore.java:458)
	at org.apache.catalina.session.StandardSession.removeAttributeInternal(StandardSession.java:1838)
	at org.apache.catalina.session.StandardSession.expire(StandardSession.java:891)
	at org.apache.catalina.session.StandardSession.isValid(StandardSession.java:694)
	at org.apache.catalina.session.ManagerBase.processExpires(ManagerBase.java:666)
	at org.apache.catalina.session.ManagerBase.backgroundProcess(ManagerBase.java:651)
	at org.apache.catalina.core.StandardContext.backgroundProcess(StandardContext.java:5625)
	at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1377)
	at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1381)
	at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1381)
	at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1349)
	at java.lang.Thread.run(Thread.java:745)
{code}

I think there is a limit by using meta data and application, but if I use static variables you said that OSGi would make trouble - I don't know where to store the registry / settings then. Any ideas?


was (Author: klopfdreh):
Hi,

yesterday I tried out the following setup:

Session counter:
{code}
private static final AtomicLong count = new AtomicLong(0);
{code}

Session is created and measured with:
{code}
	@Around("execution(* org.apache.wicket.session.ISessionStore.bind(..))")
	public Object aroundBind(ProceedingJoinPoint joinPoint) throws Throwable
	{
		return histogram("core/session/count", joinPoint, count.getAndIncrement());
	}
{code}

Session expired and measured with:
{code}
	@Around("execution(* org.apache.wicket.Session.onInvalidate())")
	public Object aroundInvalidate(ProceedingJoinPoint joinPoint) throws Throwable
	{
		return histogram("core/session/count", joinPoint, count.getAndDecrement());
	}
{code}

The issue where was that the increment is working, but the decrement always results in an exception, because the Application cant be resolved with Application.get().

{code}
org.apache.wicket.WicketRuntimeException: There is no application attached to current thread ContainerBackgroundProcessor[StandardEngine[Catalina]]
	at org.apache.wicket.Application.get(Application.java:236)
	at org.apache.wicket.metrics.WicketMetrics.getSettings(WicketMetrics.java:189)
	at org.apache.wicket.metrics.WicketMetrics.histogram(WicketMetrics.java:96)
	at org.apache.wicket.metrics.aspects.session.ISessionStoreAspect.aroundInvalidate(ISessionStoreAspect.java:49)
	at org.apache.wicket.Session.onInvalidate(Session.java:918)
	at org.apache.wicket.session.HttpSessionStore$SessionBindingListener.valueUnbound(HttpSessionStore.java:458)
	at org.apache.catalina.session.StandardSession.removeAttributeInternal(StandardSession.java:1838)
	at org.apache.catalina.session.StandardSession.expire(StandardSession.java:891)
	at org.apache.catalina.session.StandardSession.isValid(StandardSession.java:694)
	at org.apache.catalina.session.ManagerBase.processExpires(ManagerBase.java:666)
	at org.apache.catalina.session.ManagerBase.backgroundProcess(ManagerBase.java:651)
	at org.apache.catalina.core.StandardContext.backgroundProcess(StandardContext.java:5625)
	at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1377)
	at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1381)
	at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1381)
	at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1349)
	at java.lang.Thread.run(Thread.java:745)
{code}

I think there is a limit by using meta data and application, but if I use static variables you said that OSGi would make trouble - I don't know where to store the registry / settings then. Any ideas?

> Add metrics for currently active sessions
> -----------------------------------------
>
>                 Key: WICKET-6128
>                 URL: https://issues.apache.org/jira/browse/WICKET-6128
>             Project: Wicket
>          Issue Type: Improvement
>          Components: wicket-metrics
>    Affects Versions: 7.3.0
>            Reporter: Martin Grigorov
>            Assignee: Tobias Soloschenko
>            Priority: Minor
>
> Add metric for the number of currently active Wicket sessions.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)