The algorithm used by edg_wll_QueryEventsServer() to answer event queries may need speeding up. Currently, the function uses the edg_wll_QueryJobsServer() function to get a list of all applicable jobs, and then runs a separate query for each of the matching jobs. It should be possible to make this more efficient.
Opening this record to keep the issue in mind.
Just a note on how to proceed (sorry for the Czech lingo)
Ukazuje se, ze funkce edg_wll_QueryJobsServer() je ponekud pretizena,
protoze same nekde ve svem kodu (pri pocitani stavu) saha na
edg_wll_QueryEventsServer(), odkud se pro zmenu pusti
edg_wll_QueryJobsServer() a zastavi se sam o sebe.
Kdyz se pri pocitani stavu vola edg_wll_QueryEventsServer(), nemela by
byt v tom volani jina podminka na job nez jobid=xy a
edg_wll_QueryEventsServer() v takovem pripade nema duvod znovu volat
edg_wll_QueryJobsServer().
Nevim, kde probehla
jaka zmena (primo v dotcenem kodu od meho posledniho commitu query.c
zadna nebyla), ale seka se to tak zasadne, ze bych si toho byl (ani
nikdo jiny) nemohl nevsimnout.
K tomu pocitani stavu z eventu normalne dochazi jen pri registraci
a upgradu serveru na nove interni kodovani stavu. Mozna jsi registrace
novych jobu netestoval, skoro jiste je to spatne uz od tech zmen v query.c.
Na prvni ani druhy pokus jsem nepochopil myslenku '...a "cache" jen pro
ty joby, na ktere se opravdu muselo sahnout.' Ale pobavme se o tom.
Pro kazdy job, pro ktery se behem vyhodnoceni dotazu musely vyhodnocovat
podminky zavisejici na stavu (volat edg_wll_JobStatus), se vysledek zapamatuje
a pripade potreby jen najde v teto "cache" a pouzije.
This is a copy of the original entry at https://savannah.cern.ch/bugs/?38381
The algorithm used by edg_wll_QueryEventsServer() to answer event queries may need speeding up. Currently, the function uses the edg_wll_QueryJobsServer() function to get a list of all applicable jobs, and then runs a separate query for each of the matching jobs. It should be possible to make this more efficient.
Opening this record to keep the issue in mind.
Just a note on how to proceed (sorry for the Czech lingo)
Kdyz se pri pocitani stavu vola edg_wll_QueryEventsServer(), nemela by byt v tom volani jina podminka na job nez jobid=xy a edg_wll_QueryEventsServer() v takovem pripade nema duvod znovu volat edg_wll_QueryJobsServer().
K tomu pocitani stavu z eventu normalne dochazi jen pri registraci a upgradu serveru na nove interni kodovani stavu. Mozna jsi registrace novych jobu netestoval, skoro jiste je to spatne uz od tech zmen v query.c.
Pro kazdy job, pro ktery se behem vyhodnoceni dotazu musely vyhodnocovat podminky zavisejici na stavu (volat edg_wll_JobStatus), se vysledek zapamatuje a pripade potreby jen najde v teto "cache" a pouzije.