Project

General

Profile

Actions

Bug #1931

closed

Warden server 2.2 vrací zprávy po jedné, nezávisle na tom, jak jsou nastavené serverové či klientské limity

Added by Pavel Kácha about 10 years ago. Updated about 10 years ago.

Status:
Closed
Priority:
Urgent
Assignee:
Tomáš Plesník
Category:
-
Target version:
Start date:
10/08/2014
Due date:
% Done:

0%

Estimated time:

Description

Warden server 2.2 vrací zprávy po jedné, nezávisle na tom, jak jsou nastavené serverové či klientské limity.

Pro klienty je to naštěstí na warden.cesnet.cz transparentní, dostanou jednu zprávu a jdou si pro další novým dotazem, dokud nedostanou všechno.

Uvnitř už to tak hezké není. Na letmý pohled totiž nejspíš dochází k tomu, že ve smyčce Warden.pm(375), která iteruje pomocí fetchrow() přes události $sth, se zavolá znovu prepare, a znovu na $sth. Takže se zpracuje v první iteraci první řádek/událost, zbytek se zahodí na nový select, z něj se vezme hostname a service, další řádky už nejsou (klienti jsou unikátní), takže do další iterace smyčky dojde tatáž $sth, už s úplně jiným dotazem, naštěstí ale už s vyčerpanými výsledky, a smyčka skončí.

Tohle chce velmi rychle opravit, protože tahle věc teď běží na ostrém wardenu - a ne tak, že se pro každou zprávu v potenciálně dlouhém poli, získaném jedním SQL dotazem, zavolá další SELECT! Tím házíme výkon do stoupy a urážíme SQL.

Od toho je přece JOIN, který má být použit už v SELECTu, získávajícím události, a rovnou přihodit do výsledku hostname a service z clients.

Actions

Also available in: Atom PDF