[ 
https://issues.jboss.org/browse/RF-12219?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12696150#comment-12696150
 ] 

Milo van der Zee edited comment on RF-12219 at 5/25/12 5:18 PM:
----------------------------------------------------------------

Hello Juraj,

thank you very much for the efforts!

Besides the real solution, being cleaning up the stale MessageData, I would 
suggest to limit the number of events in the queue. Why would anybody like to 
keep very much events in the queue? A couple of hundred should be enough. Or 
maybe based on age just remove messages older that a couple of seconds or maybe 
a minute. If a client has not read the event after some time the client is 
probably gone anyway.

Does that testcase mean that you keep on creating clients forever? Like a user 
connecting and going away immediately without proper logout?

In my real-life situation I noticed that if the client does a page-reload from 
the browser the cleanup seems to function but when I use my ajax page switching 
I end up with lots of old push sessions that only receive pushes and for which 
the cleanup code is never called.

Just some thoughts:
- Why use some random id for the push sessions? Why not just use the http 
session combined with something like the JSF id of the component? That at least 
is a lot more static during a use session. For this to be helpful I assume the 
programmer would configure a static id and doesn't let JSF generate one because 
those could easily change as well.
- I assume there is one global push thread handling the distribution and 
cleaning up. Somehow this thread decides (based on a timeout) that a push 
session should be removed from the queue. Somewhere in that code the cleanup of 
the queue is missed.

The code I changed does indeed seem to fix my problems. After a day of running 
there are almost no MessageData objects in the heap.

MAG,
Milo
                
      was (Author: MilovdZee):
    Hello Juraj,

thank you very much for the efforts!

Besides the real solution, being cleaning up the stale MessageData, I would 
suggest to limit the number of events in the queue. Why would anybody like to 
keep very much events in the queue? A couple of hundred should be enough. Or 
maybe based on age just remove messages older that a couple of seconds or maybe 
a minute. If a client has not read the event after some time the client is 
probably gone anyway.

Does that testcase mean that you keep on creating clients forever? Like a user 
connecting and going away immediately without proper logout?

In my real-life situation I noticed that if the client does a page-reload from 
the browser the cleanup seems to function but when I use my ajax page switching 
I end up with lots of old push sessions that only receive pushes and for which 
the cleanup code is never called.

Just some thoughts:
- Why use some random id for the push sessions? Why not just use the http 
session combined with something like the JSF id of the component? That at least 
is a lot more static during a use session. For this to be helpful I assume the 
programmer would configure a static id and doesn't let JSF generate one because 
those could easily change as well.
- I assume there is one global push thread handling the distribution and 
cleaning up. Somehow this thread decides (based on a timeout) that a push 
session should be removed from the queue. Somewhere in that code the cleanup of 
the queue is missed.

MAG,
Milo
                  
> Push: Test that messages do not become stale in a queue
> -------------------------------------------------------
>
>                 Key: RF-12219
>                 URL: https://issues.jboss.org/browse/RF-12219
>             Project: RichFaces
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>          Components: component-push/poll
>    Affects Versions: 4.2.1.Final
>            Reporter: Lukáš Fryč
>            Assignee: Juraj Huska
>            Priority: Critical
>             Fix For: 4.3.0.Milestone1
>
>
> According to the [Forum reference],
> we can have problems with stale messages.
> I would suggest to write tests for following scenarios and check that queue 
> is destroyed properly:
> * view expires
> * client leaves the page with {{a4j:push}} without proper clean up
> * ...
> Let's brainstorm other scenarios.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       

_______________________________________________
richfaces-issues mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/richfaces-issues

Reply via email to