Bug 22896 - UMC2: Software-Monitor
UMC2: Software-Monitor
Status: CLOSED FIXED
Product: UCS
Classification: Unclassified
Component: UMC (Generic)
UCS 3.0
Other Linux
: P5 normal (vote)
: UCS 3.0 - RC
Assigned To: Frank Greif
Andreas Büsching
: interim-2
: 24632 (view as bug list)
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2011-06-28 08:39 CEST by Andreas Büsching
Modified: 2011-12-13 15:48 CET (History)
3 users (show)

See Also:
What kind of report is it?: ---
What type of bug is this?: ---
Who will be affected by this bug?: ---
How will those affected feel about the bug?: ---
User Pain:
Enterprise Customer affected?:
School Customer affected?:
ISV affected?:
Waiting Support:
Flags outvoted (downgraded) after PO Review:
Ticket number:
Bug group (optional):
Max CVSS v3 score:


Attachments
Nacharbeiten am UMC-Modul für PKGDB (22.49 KB, patch)
2011-10-25 14:29 CEST, Frank Greif
Details | Diff
Queries für ComboBoxen falsch ausgewertet (1.02 KB, patch)
2011-11-17 11:58 CET, Frank Greif
Details | Diff
Verarbeitung der SQL-Resultate falsch (2.20 KB, patch)
2011-11-22 17:54 CET, Frank Greif
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Andreas Büsching univentionstaff 2011-06-28 08:39:49 CEST
Das Software-Monitor-Modul muss für die neue Generation von UMC angepasst werden
Comment 1 Frank Greif 2011-10-24 15:12:06 CEST
Ein Vorschlag zur Optimierung: die Abfrage der Paketdatenbank auf der Seite "Packages" liefert bei einer durchschnittlichen Domain leicht mehrere Millionen Datensätze. Das Resultat-Array wird erst vollständig im Speicher aufgebaut, bevor es an den Aufrufenden zurückgegeben wird. Ab einer bestimmten Größe läuft das Frontend in ein Timeout (oder Fehler 502), bevor die Datenmenge angekommen ist.

Wirkungen sind dann:

* der Modulprozeß braucht temporär evtl. mehrere GB Hauptspeicher
* der Code, der die Python-Variablen in JSON codiert und ans Frontend liefert, stürzt ab oder läuft ins Timeout
* der umc-server Prozeß ist derart beschäftigt, daß selbst UMCP-Kommandos anderer Module in dieser Zeit langsam oder gar nicht abgearbeitet werden.

Deshalb wäre es sinnvoll, die dahinterstehende SQL-Abfrage etwas zu optimieren.

1. Die Abfrage sollte um die Möglichkeit ergänzt werden, einen LIMIT Parameter zu setzen, so daß bereits in erster Instanz keine Datensätze geliefert werden, die danach ohnehin nicht beim Frontend ankommen werden.
2. Die Abfrage sollte um die Möglichkeit ergänzt werden, das Sortieren wegzulassen, da ohnehin das Grid die Daten sortieren wird.

Ein Vorschlag dafür (auch rückwärtskompatibel für alle anderen, die diese Query benutzen) steht im pkgdb-Modul in der Datei 'umc/python/__init__.py ab Zeile 136.
Comment 2 Frank Greif 2011-10-25 14:29:14 CEST
Created attachment 3683 [details]
Nacharbeiten am UMC-Modul für PKGDB

Größtenteils Aufräumarbeiten am UMC-Modul:

* Testweise eingebaute Code-Teile (z.B. Debug-Ausschriften) entfernt
* Oberflächenlogik überarbeitet (z.B. Elemente deaktiviert, solange sie nicht ausgelöst werden dürfen etc)
* Python-Code merkt sich letzte Resultat-Tabelle, damit durch das Sortieren im Grid nicht jedesmal die ganze SQL-Abfrage wiederholt wird.

Patch setzt auf Paket univention-pkgdb (Stand 25.10. ca. 10:30) auf.
Comment 3 Andreas Büsching univentionstaff 2011-10-25 18:21:36 CEST
(In reply to comment #2)
> Created an attachment (id=3683) [details]
> Nacharbeiten am UMC-Modul für PKGDB

Der Patch wurde eingespielt. Das Paket baut neu
Comment 4 Stefan Gohmann univentionstaff 2011-11-02 19:33:33 CET
(In reply to comment #3)
> (In reply to comment #2)
> > Created an attachment (id=3683) [details] [details]
> > Nacharbeiten am UMC-Modul für PKGDB
> 
> Der Patch wurde eingespielt. Das Paket baut neu

Folgende Rückmeldung habe ich dazu bekommen:
> > > - Im "Softwaremonitor"-Modul sehen die Buttons abgeschnitten aus. Erst
> > > wenn man eines der Drop-Downs verwendet hat, ist der Button ok.
Comment 5 Frank Greif 2011-11-04 17:23:47 CET
(In reply to comment #4)
> - Im "Softwaremonitor"-Modul sehen die Buttons abgeschnitten aus. Erst
> wenn man eines der Drop-Downs verwendet hat, ist der Button ok.

Der Button ist solange disabled, wie man keinen gültigen Eintrag im Drop-Down ausgewählt hat. Das Problem ist der Style, der dem Button zugeordnet ist, solange er disabled ist.
Comment 6 Alexander Kläser univentionstaff 2011-11-07 10:32:17 CET
(In reply to comment #5)
> Der Button ist solange disabled, wie man keinen gültigen Eintrag im Drop-Down
> ausgewählt hat. Das Problem ist der Style, der dem Button zugeordnet ist,
> solange er disabled ist.

→ Genau, das ist ein Styling-Problem. Dieses Problem wird im Zuge von Bug 22881 bearbeitet.
Comment 7 Alexander Kläser univentionstaff 2011-11-15 16:56:59 CET
*** Bug 24632 has been marked as a duplicate of this bug. ***
Comment 8 Alexander Kläser univentionstaff 2011-11-15 16:58:26 CET
Aus Bug 24632:

(In reply to bug 24632, comment #0)
> In der UMC2 PKGDB wird z.B. bei der Systemsuche "Suchen nach:" "UCS Version"
> eine Version vorausgewählt, diese lässt sich dann nicht ändern ohne dass man
> eine rote Syntax-Warnung bekommt.
> Ändert man die Version dennoch, kann man nicht suchen da der entsprechende
> Button ausgegraut wird.

(In reply to 24632, comment #1)
> Das tritt in der "System suchen" Maske als auch in der "Pakete suchen" Maske
> auf.
> 
> Wähle ich dort in "Suchen nach:" "UCS Version" aus, wird im Feld "Suchbegriff:"
> nur 2.4-2-6 eingetragen und ich kann dort auch nichts anderes setzen.

→ REOPENED
Comment 9 Frank Greif 2011-11-17 10:31:25 CET
(In reply to comment #8)
> In der UMC2 PKGDB wird z.B. bei der Systemsuche "Suchen nach:" "UCS Version"
> eine Version vorausgewählt, diese lässt sich dann nicht ändern ohne dass man
> eine rote Syntax-Warnung bekommt.
> Ändert man die Version dennoch, kann man nicht suchen da der entsprechende
> Button ausgegraut wird.
Die ComboBox wird mit einer 'select distinct version...' Query gefüllt, oder anders gesagt: dort sind nur die Versionen auswählbar, die in der Datenbank auch wirklich existieren... etwas anderes würde ja auch keinen Sinn machen. In 2.4.x ist es auch nicht anders.
Comment 10 Janis Meybohm univentionstaff 2011-11-17 11:10:31 CET
(In reply to comment #9)
> Die ComboBox wird mit einer 'select distinct version...' Query gefüllt, oder
> anders gesagt: dort sind nur die Versionen auswählbar, die in der Datenbank
> auch wirklich existieren... etwas anderes würde ja auch keinen Sinn machen. In
> 2.4.x ist es auch nicht anders.

Ich bekomme in unserer Umgebung nur die Version 2.4-3-6 in der ComboBox angezeigt, in der Datenbank sind aber mehr:

pkgdb=# select distinct(sysversion) from systems;
 sysversion 
------------
 2.4-3-6
 2.4-4-6
 3.0-0-3
 3.0-0-6
(4 Zeilen)
Comment 11 Frank Greif 2011-11-17 11:58:29 CET
Created attachment 3815 [details]
Queries für ComboBoxen falsch ausgewertet

Ja, wenn man nur das erste Element weitergibt, dann erscheint halt nur ein einziges Element :-(

Traf für Systemrollen gleichermaßen zu.
Comment 12 Alexander Kläser univentionstaff 2011-11-17 12:51:57 CET
(In reply to comment #11)
> Created an attachment (id=3815) [details]
> Queries für ComboBoxen falsch ausgewertet
> ...

Vielen Dank! Der Patch wurde übernomen.


 univention-pkgdb (5.0.15-1) unstable; urgency=low
 . 
   * UMC: applied patch from (Bug #22896, Comment 11)
Comment 13 Janis Meybohm univentionstaff 2011-11-22 09:43:33 CET
Wenn ich unter "System" -> "Suchen nach" jetzt "UCS Version" auswähle, erhalte ich den folgenden Traceback:

Die Ausf�hrung des Kommandos pkgdb/proposals ist fehlgeschlagen:

Traceback (most recent call last):
File '/usr/lib/pymodules/python2.6/univention/management/console/modules/__init__.py', line 97, in execute
func( request )
File '/usr/lib/pymodules/python2.6/univention/management/console/modules/pkgdb/__init__.py', line 527, in proposals
result = self._combobox_data(result)
File '/usr/lib/pymodules/python2.6/univention/management/console/modules/pkgdb/__init__.py', line 589, in _combobox_data
entry['label'] = self._id_to_label(id)
File '/usr/lib/pymodules/python2.6/univention/management/console/modules/pkgdb/__init__.py', line 668, in _id_to_label
if id in LABELS:
TypeError: unhashable type: 'list'
Comment 14 Frank Greif 2011-11-22 17:54:20 CET
Created attachment 3857 [details]
Verarbeitung der SQL-Resultate falsch

Habe die gleiche Funktion _execute_query() als Wrapper für unterschiedliche Dinge verwendet:

* zum Abholen von 'distinct' Listen, die in Comboboxen als Auswahl erscheinen
* zum direkten Füllen von Grids.

Muß natürlich entsprechend dem Charakter der jeweiligen Query die Resultate auch unterschiedlich verarbeiten.
Comment 15 Alexander Kläser univentionstaff 2011-11-24 12:44:50 CET
Der Patch wurde übernommen, das Paket baut.


 univention-pkgdb (5.0.18-1) unstable; urgency=low
 .
   * UMC: applied patch from Bug #22896, Comment 14
Comment 16 Andreas Büsching univentionstaff 2011-11-29 16:05:04 CET
Ich habe die Suchen in den Bereichen Systeme, Pakete und Probleme alle durchprobiert und keine Probleme gefunden.
Comment 17 Sönke Schwardt-Krummrich univentionstaff 2011-12-13 15:48:50 CET
UCS 3.0-0 wurde veröffentlicht. Sollte der hier beschriebene Bug mit einer
neueren Version von UCS erneut auftreten, so sollte dieser Bug dupliziert
werden: "Clone This Bug"