CESNET / glite-lb

gLite Logging and Bookkeeping.
3 stars 2 forks source link

Improving the algorithm for answering event queries (#38381) #2

Open sustr4 opened 11 years ago

sustr4 commented 11 years ago

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)

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.