On Feb 13, 2012, at 6:47 PM, Sergiu Dumitriu wrote:

> On 02/13/2012 04:45 AM, Ludovic Dubost wrote:
>> Hi,
>> 
>> I've looked a bit at the activity stream performance while looking for the
>> performance issue since 3.2+ (http://jira.xwiki.org/browse/XWIKI-7520).
>> Beyond this issue, I've been a bit puzzled by the logic of the activity
>> stream implementation.
>> 
>> Right now it seems the activity stream is generating many many queries on
>> the base data stored in the activity stream.
>> However I've not been able to identify the exact logic it is following as
>> it seems to be quite complex.
>> 
>> The whole point of the activity stream when it was initially implemented
>> was to move the work at saving time instead of having the work at display
>> time.
>> As the feature got more complex it seems we move away from that solution
>> and now we have again a huge amount of work at display time.
>> 
>> Now maybe the actual logic of what we want to display requires this, or
>> maybe not and we haven't gone in the right direction to implement this.
>> 
>> I think before we reimplement the activity stream in Java as I've seen said
>> in the feature survey, we should put the actual feature and logic on paper
>> and make sure we are going the right way.
>> Because otherwise reimplementing in Java won't solve anything.
>> 
>> I think it would be really good to go back to the initial objective of
>> having the effort at save time and then having the display only read data
>> in display it with simple templating.
>> 
>> Is there any documentation about the feature itself and about the logic ?
>> Can we put somebody on writing down the logic and then discussing that it's
>> the right thing to do ?
>> I can help on this if I'm given some more information about why it was done
>> the way it's done now.
>> 
> 
> The problem is that now we have two different groups that should be displayed 
> in the stream:
> 
> - event groups, which means that a DocumentUpdatedEvent can be a side effect 
> of an XarImportEvent, in which case we shouldn't list 100 update events but a 
> singe "somebody imported a XAR" event;

This should be implemented using the Group Event we now send before a group 
event.

Thanks
-Vincent

> - daily document activity, which means that instead of displaying each change 
> individually, or just the most recent change on a document (like we did with 
> the old activity implementation), we show all the changes done on a document 
> in a day.
> 
> Both kinds of groupings are relevant, so they shouldn't be removed.
> 
> The problem is that they were introduced on top of the existing Activity 
> code, without a clean refactoring, which means that instead of modifying the 
> base logic, we just "patched" it with extra queries to get the grouping 
> right. It should be possible to write queries so that they select the right 
> events without the need for subqueries. One problem is that I don't know how 
> to define "daily" when timezones are involved, since HQL doesn't know 
> timezone conversions. One option is to do some date math, as in:
> 
> group by day(event.date + user timezone offset hours)
> 
> but this isn't something standard, as far as I know.
> -- 
> Sergiu Dumitriu
> http://purl.org/net/sergiu/
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to