[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [tracecompass-dev] Event requests precedence
|
On 11/01/2014 09:10 PM, Alexandre Montplaisir wrote:
Hi Geneviève,
This is indeed an interesting problem. Now that analyses each run in
their separate thread, the order in which they will receive events is,
as you say, more or less random.
We talked some time ago about implementing "priorities" for event
requests, so that a component could be guaranteed to receive events
before or after another one. Something similar to
https://bugs.eclipse.org/bugs/show_bug.cgi?id=409424 , but for event
requests instead of signals.
Nowadays, I have to wonder if something like this would even be
required. Since we can now have dependencies between analysis modules,
could we reuse this dependency chain to determine the order in which
they should receive coalesced request events?
Actually, the dependency between analysis is not implemented yet. Each
analysis makes sure to schedule in its executeAnalysis the analysis it
requires. And each of those analysis sends their own event request (if
necessary). But since the parent analysis's job is already running
(since it is in the executeAnalysis), chances are most likely it will be
serviced before the jobs for the children analyses. Maybe it's time to
have some kind of dependency chain between the analysis so the
children's jobs are schedule before, but the order stays random.
We could also possibly add the event provider as parameter to the
schedule() method so we know to whom to send the event request if
necessary. But still, what if the request bus starts before one of the
child requests is queued?
I'll think on it...
Cheers,
Geneviève
Is this something that would even make sense in the first place? I
think it would apply to your current case (the "experiment analysis"
depends on the trace's analysis, so would receive its events after
those), but would it be always like this?
Cheers,
Alexandre
On 10/31/2014 03:06 PM, Geneviève Bastien wrote:
Hello,
I would like some information on how the event request coalescing
works as of now and how I could make the following use case work:
* I have an analysis for an experiment (let's call it the virtual
machine analysis) that runs an event request on the experiment.
* That analysis also depends on individual analysis from the traces
of the experiment (concretely the LttngKernelAnalysisModule from each
kernel trace).
* When the experiment analysis module is executed, it also makes sure
the LttngKernelAnalysisModule from each child trace is executed.
* But when I handle an event in the experiment, I want to be sure
that the LttngKernelAnalysisModules have run with this event before
handling it in the experiment.
If I just let things run by themselves right now, the order of the
requests is random so the event may or may not have been handled by
the traces before it is by the experiment.
How would be the best way to solve this?
Thanks,
Geneviève