Re: Bug in Wicket Push TimerChannelService when used with background threads

2010-10-01 Thread Sebastian
I just realized that the current session is also bound to the thread 
context. Would it make sense to attach the Session to the background 
thread using the same way we do it for the Application?


E.g.

Session oldSession = Session.exists() ? Session.get() : null;
Session.set(_session);
try
{
... invoke...
}
finally
{
   if (oldSession == null) Session.unset();
   else Session.set(oldSession);
}

Without doing this, the exception IllegalSateException: You can only 
locate or create sessions in the context of a request cycle may be thrown.


Seb

On 01.10.2010 00:42, Rodolfo Hansen wrote:

On Thu, 2010-09-30 at 23:48 +0200, Sebastian wrote:


There was an issue in your patch where the application could be left

in the ThreadContext, which was fixed,

Hi Rodolfo,

I think you are referring to

try {
Application.set(_application);
methods[m].invoke(o, parameters);
} finally {
Application.set(originalApplication);
if (originalApplication != null) Application.set(originalApplication);
}

The problem is if this code is executed in a separate thread the
originalApplication will be null. If you just omit the null check in the
finally clause the setter will throw an IllegalArgumentException. So to
remove the app from the ThreadContext we would have to call
Application.unset() instead:

if (originalApplication == null) Application.unset();
else Application.set(originalApplication);



you are right, although i checked the source for set and didn't see the
throw...

amended in the 1.4 branches




Regards,
Seb



On 30.09.2010 23:08, Rodolfo Hansen wrote:

Hi Sebastian, your patch is in:

trunk (1.5)
1.4 branch (future 1.4.13 release)
and 1.4.12

There was an issue in your patch where the application could be left in
the ThreadContext, which was fixed,
as well as a simplification in the trigger function.

On Wed, 2010-09-29 at 21:39 +0200, Sebastian wrote:


Hi,

there is a problem in the Push TimerChannelService implementation:
Callbacks do not work reliable when they are invoked from non-Web
threads. The There is no application attached to current thread
WicketRuntimeException will occur in such a case. The attached patch
fixes this issue.

Regards,

Seb








-
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org



Re: Bug in Wicket Push TimerChannelService when used with background threads

2010-10-01 Thread Rodolfo Hansen
Added.

On Fri, 2010-10-01 at 13:14 +0200, Sebastian wrote:

 I just realized that the current session is also bound to the thread 
 context. Would it make sense to attach the Session to the background 
 thread using the same way we do it for the Application?
 
 E.g.
 
 Session oldSession = Session.exists() ? Session.get() : null;
 Session.set(_session);
 try
 {
   ... invoke...
 }
 finally
 {
 if (oldSession == null) Session.unset();
 else Session.set(oldSession);
 }
 
 Without doing this, the exception IllegalSateException: You can only 
 locate or create sessions in the context of a request cycle may be thrown.
 
 Seb
 
 On 01.10.2010 00:42, Rodolfo Hansen wrote:
  On Thu, 2010-09-30 at 23:48 +0200, Sebastian wrote:
 
  There was an issue in your patch where the application could be left
  in the ThreadContext, which was fixed,
 
  Hi Rodolfo,
 
  I think you are referring to
 
  try {
  Application.set(_application);
  methods[m].invoke(o, parameters);
  } finally {
  Application.set(originalApplication);
  if (originalApplication != null) Application.set(originalApplication);
  }
 
  The problem is if this code is executed in a separate thread the
  originalApplication will be null. If you just omit the null check in the
  finally clause the setter will throw an IllegalArgumentException. So to
  remove the app from the ThreadContext we would have to call
  Application.unset() instead:
 
  if (originalApplication == null) Application.unset();
  else Application.set(originalApplication);
 
 
  you are right, although i checked the source for set and didn't see the
  throw...
 
  amended in the 1.4 branches
 
 
 
  Regards,
  Seb
 
 
 
  On 30.09.2010 23:08, Rodolfo Hansen wrote:
  Hi Sebastian, your patch is in:
 
  trunk (1.5)
  1.4 branch (future 1.4.13 release)
  and 1.4.12
 
  There was an issue in your patch where the application could be left in
  the ThreadContext, which was fixed,
  as well as a simplification in the trigger function.
 
  On Wed, 2010-09-29 at 21:39 +0200, Sebastian wrote:
 
  Hi,
 
  there is a problem in the Push TimerChannelService implementation:
  Callbacks do not work reliable when they are invoked from non-Web
  threads. The There is no application attached to current thread
  WicketRuntimeException will occur in such a case. The attached patch
  fixes this issue.
 
  Regards,
 
  Seb
 
 
 
 
 
 -
 To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
 For additional commands, e-mail: users-h...@wicket.apache.org
 




Re: Bug in Wicket Push TimerChannelService when used with background threads

2010-09-30 Thread Rodolfo Hansen
Hi Sebastian, your patch is in: 

trunk (1.5)
1.4 branch (future 1.4.13 release)
and 1.4.12

There was an issue in your patch where the application could be left in
the ThreadContext, which was fixed, 
as well as a simplification in the trigger function.

On Wed, 2010-09-29 at 21:39 +0200, Sebastian wrote:

 Hi,
 
 there is a problem in the Push TimerChannelService implementation: 
 Callbacks do not work reliable when they are invoked from non-Web 
 threads. The There is no application attached to current thread 
 WicketRuntimeException will occur in such a case. The attached patch 
 fixes this issue.
 
 Regards,
 
 Seb
 -
 To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
 For additional commands, e-mail: users-h...@wicket.apache.org




Re: Bug in Wicket Push TimerChannelService when used with background threads

2010-09-30 Thread Sebastian
 There was an issue in your patch where the application could be left 
in the ThreadContext, which was fixed,


Hi Rodolfo,

I think you are referring to

try {
  Application.set(_application);
  methods[m].invoke(o, parameters);
} finally {
  Application.set(originalApplication);
  if (originalApplication != null) Application.set(originalApplication);
}

The problem is if this code is executed in a separate thread the 
originalApplication will be null. If you just omit the null check in the 
finally clause the setter will throw an IllegalArgumentException. So to 
remove the app from the ThreadContext we would have to call 
Application.unset() instead:


if (originalApplication == null) Application.unset();
else Application.set(originalApplication);

Regards,
Seb



On 30.09.2010 23:08, Rodolfo Hansen wrote:

Hi Sebastian, your patch is in:

trunk (1.5)
1.4 branch (future 1.4.13 release)
and 1.4.12

There was an issue in your patch where the application could be left in
the ThreadContext, which was fixed,
as well as a simplification in the trigger function.

On Wed, 2010-09-29 at 21:39 +0200, Sebastian wrote:


Hi,

there is a problem in the Push TimerChannelService implementation:
Callbacks do not work reliable when they are invoked from non-Web
threads. The There is no application attached to current thread
WicketRuntimeException will occur in such a case. The attached patch
fixes this issue.

Regards,

Seb
-
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org








-
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org



Re: Bug in Wicket Push TimerChannelService when used with background threads

2010-09-30 Thread Rodolfo Hansen
On Thu, 2010-09-30 at 23:48 +0200, Sebastian wrote:

  There was an issue in your patch where the application could be left 
 in the ThreadContext, which was fixed,
 
 Hi Rodolfo,
 
 I think you are referring to
 
 try {
Application.set(_application);
methods[m].invoke(o, parameters);
 } finally {
Application.set(originalApplication);
if (originalApplication != null) Application.set(originalApplication);
 }
 
 The problem is if this code is executed in a separate thread the 
 originalApplication will be null. If you just omit the null check in the 
 finally clause the setter will throw an IllegalArgumentException. So to 
 remove the app from the ThreadContext we would have to call 
 Application.unset() instead:
 
 if (originalApplication == null) Application.unset();
 else Application.set(originalApplication);


you are right, although i checked the source for set and didn't see the
throw...

amended in the 1.4 branches


 
 Regards,
 Seb
 
 
 
 On 30.09.2010 23:08, Rodolfo Hansen wrote:
  Hi Sebastian, your patch is in:
 
  trunk (1.5)
  1.4 branch (future 1.4.13 release)
  and 1.4.12
 
  There was an issue in your patch where the application could be left in
  the ThreadContext, which was fixed,
  as well as a simplification in the trigger function.
 
  On Wed, 2010-09-29 at 21:39 +0200, Sebastian wrote:
 
  Hi,
 
  there is a problem in the Push TimerChannelService implementation:
  Callbacks do not work reliable when they are invoked from non-Web
  threads. The There is no application attached to current thread
  WicketRuntimeException will occur in such a case. The attached patch
  fixes this issue.
 
  Regards,
 
  Seb
  -
  To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
  For additional commands, e-mail: users-h...@wicket.apache.org
 
 
 
 
 
 
 -
 To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
 For additional commands, e-mail: users-h...@wicket.apache.org
 




Re: Bug in Wicket Push TimerChannelService when used with background threads

2010-09-29 Thread Jeremy Thomerson
On Wed, Sep 29, 2010 at 2:39 PM, Sebastian nospam...@gmx.net wrote:

 Hi,

 there is a problem in the Push TimerChannelService implementation:
 Callbacks do not work reliable when they are invoked from non-Web threads.
 The There is no application attached to current thread
 WicketRuntimeException will occur in such a case. The attached patch fixes
 this issue.


This is a WicketStuff project.  Request commit permissions for sf.net and
commit the patch.

-- 
Jeremy Thomerson
http://www.wickettraining.com