Bug 13639 - UDM Timeout zu kurz
UDM Timeout zu kurz
Status: CLOSED FIXED
Product: UCS
Classification: Unclassified
Component: UMC - Domain management (Generic)
UCS 2.2
All All
: P5 normal (vote)
: UCS 2.3
Assigned To: Stefan Gohmann
Felix Botner
:
: 1951 6739 (view as bug list)
Depends on:
Blocks: 14432 15940
  Show dependency treegraph
 
Reported: 2009-03-06 17:00 CET by Janis Meybohm
Modified: 2010-04-06 15:14 CEST (History)
6 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
Log DAtei von Billy. Die Meldungen sind genau nach der Timeout Aktion, ist sonst nichts enthalten (629.69 KB, text/plain)
2009-03-27 16:48 CET, Murat Odabas
Details
Patch für UCS 2.2-2 (547 bytes, patch)
2010-04-06 15:14 CEST, Janis Meybohm
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Janis Meybohm univentionstaff 2009-03-06 17:00:40 CET
In unserer internen Umgebung wird man viel zu schnell aus dem UDM abgemeldet (30-60 Sekunden):
--
root@billy:~# ucr search directory/manager/timeout
directory/manager/timeout: 900
--

Ich kann es dummerweise gerade nicht reproduzieren, daher erstmal kein Log.
Comment 1 Stefan Gohmann univentionstaff 2009-03-06 19:53:16 CET
Ich setze den Bug auf 2.2. Mir ist das nach dem Update auf billy ebenfalls passiert, vor allem bei der Bearbeitung von Richtlinien. Ggf. hat es etwas mit der Last zu tun?
Comment 2 Stefan Gohmann univentionstaff 2009-03-12 09:20:27 CET
Selbst wenn ich in einer Schleife 500 Benutzer anlege kann ich das Problem nicht reproduzieren. Ich könnte mir vorstellen, dass aufgrund von einem Fehler der Prozess weggebrochen ist und dass es dann im Frontend so aussah, als ob der Timeout eingetreten ist.
Comment 3 Stefan Gohmann univentionstaff 2009-03-12 16:42:27 CET
Ich bekomme das nicht reproduziert. Das sollte nochmal jemand versuchen.
Comment 4 Felix Botner univentionstaff 2009-03-13 09:08:47 CET
ich bekommen es nicht reproduziert auf einem 2.2 UCS Master

   * angemeldet am UDM, timeout 99999
   * 100% Last erzeugt, die ganze Nacht
   * Anmelden am nächsten Morgen ging

Comment 5 Felix Botner univentionstaff 2009-03-13 09:09:16 CET
falscher status
Comment 6 Felix Botner univentionstaff 2009-03-13 09:09:37 CET
und nochmal
Comment 7 Felix Botner univentionstaff 2009-03-13 09:09:49 CET
jetzt VERIFIED   
Comment 8 Murat Odabas univentionstaff 2009-03-27 14:02:31 CET
Auf Billy ist mir das jetzt auch passiert. Ich habe mich angemeldet und habe nach Display Richtlinien gesucht, anschließend war ich mit Session-Timeout draußen. Das ganze konnte Ich 4 mal reproduzieren, beim fünften mal wollte es dann.
Comment 9 Murat Odabas univentionstaff 2009-03-27 16:48:01 CET
Created attachment 1595 [details]
Log DAtei von Billy. Die Meldungen sind genau nach der Timeout Aktion, ist sonst nichts enthalten
Comment 10 Stefan Gohmann univentionstaff 2009-05-08 06:47:14 CEST
Ich hatte nochmal auf billy geschaut, dort kann das Problem derzeit reproduziert werden. Das xmlin ist leer, nachdem ich im Richtlinienergebnis auf eine Richtlinie geklickt habe.
  
Comment 11 Stefan Gohmann univentionstaff 2009-05-08 09:04:51 CEST
In univention-directory-manager.py wird die Rückgabe für dne Timeout falsch ausgewertet. Es wird davon ausgegangen, dass der Timeout eingetreten ist, wenn kein Read-Filedeskriptor anliegt, laut Doku ist das aber nur der Fall, wenn alle drei Filedeskriptoren leer sind:

http://www.python.org/doc/2.5/lib/module-select.html
...
When the time-out is reached without a file descriptor becoming ready, three empty lists are returned. 

                        rfds, wfds, xfds = select.select([sock], [], [], socket_timeout)
-                       if not rfds:
+                       if not rfds and not wfds and not xfds:
                                break # timeout
Comment 12 Stefan Gohmann univentionstaff 2009-05-08 10:19:47 CEST
fixed

In der QA bitte auch prüfen, ob der Timeout nach einer gewissen Zeit wirklich eintritt.
Comment 13 Arvid Requate univentionstaff 2009-05-11 11:29:27 CEST
Der Logout erfolgt im UDM jetzt ziemlich genau wir per UCR vorgegeben. Leider liess sich das Original-Problem auf billy für die QA gerade nicht reproduzieren.

In UMC scheint sich der timout nicht genau an die Vorgabe zu halten, trotz umc/web/timeout: 120 (und UMC Neustart) scheint sie eher einen längeren Timout zu verwenden. Nach gefühlten 900 sec. erfolgt er dann aber.
Comment 14 Felix Botner univentionstaff 2009-09-08 11:46:27 CEST
ich habe die Änderung aus comment#11 auf einer 2.2 VM lokal übernommen (aber kein Update, keine Pakete installiert)

der Fehler ist weiterhin aufgetreten
Comment 15 Stefan Gohmann univentionstaff 2009-09-08 12:56:11 CEST
(In reply to comment #14)
> ich habe die Änderung aus comment#11 auf einer 2.2 VM lokal übernommen (aber
> kein Update, keine Pakete installiert)
> 
> der Fehler ist weiterhin aufgetreten

Tritt das nach einem Update auf die aktuelle UDM Version auch noch auf (UCS 2.2-2)? Hast du dort eigene Module implementiert?
Comment 16 Felix Botner univentionstaff 2009-09-09 09:15:32 CEST
nein, ich habe nur auf einem ucs 2.2-0 die Änderungen aus comment#11 händisch übernommen, bei der Suche nach Policies kam es dann wieder zu dem Timeout Problemen 

wenn der Fix aus mehr als den Änderungen aus comment#11 besteht, dann kann der Bug wieder zu ...
Comment 17 Stefan Gohmann univentionstaff 2009-09-09 09:24:16 CEST
(In reply to comment #16)
> nein, ich habe nur auf einem ucs 2.2-0 die Änderungen aus comment#11 händisch
> übernommen, bei der Suche nach Policies kam es dann wieder zu dem Timeout
> Problemen 
> 
> wenn der Fix aus mehr als den Änderungen aus comment#11 besteht, dann kann der
> Bug wieder zu ...

Kannst du das bitte prüfen?
Comment 18 Felix Botner univentionstaff 2009-09-10 09:37:43 CEST
ich habe nun dem kompletten Patch aus 

-> svn diff -c 9849 svn+ssh://fbotner@billy.knut.univention.de/var/svn/dev/branches/ucs-2.2/ucs/management/univention-directory-manager

in ein ucs2.2-0 händisch übernommen (jedoch kein Update gemacht)

bei der Suche nach Policies kam dann trotzdem ab und zu der Timeout 

nebenbei wurde das System mit 
-> while true; do echo "jkgjkgj"; done
-> grep -r kdgfkdgffdsflsdh /
-> while true; do ldapsearch -x; done

beschäftigt (nur bei höherer Systemlast scheint das Problem aufzutreten)

soll ich das nochmal mit einem ordentlich geupdateten System probieren?
Comment 19 Stefan Gohmann univentionstaff 2009-09-10 09:49:11 CEST
(In reply to comment #18)
> soll ich das nochmal mit einem ordentlich geupdateten System probieren?

Ja, bitte.
Comment 20 Felix Botner univentionstaff 2009-09-10 11:13:57 CEST
Das System wurde nun mit univention-updater auf ucs2.2-2 aktualisiert. Trotzdem kam es bei der Suche nach Policies wieder zum Timeout.

(nebenbei wieder
-> while true; do echo "jkgjkgj"; done
-> grep -r kdgfkdgffdsflsdh /
-> while true; do ldapsearch -x; done)
Comment 21 Felix Botner univentionstaff 2009-09-10 11:47:53 CEST
Ohne die automatische Suche und ohne hohe Systemlast konnte ich das Problem nicht reproduzieren.
Comment 22 Ingo Steuwer univentionstaff 2009-09-24 15:11:18 CEST
Im Zusammenhang mit Ticket 2009092410000145 wieder berichtet. Dort waren die Probleme seit dem Import von ~700 Usern auch in der Navigation zu beobachten, dabei wurden in den Ergebnislisten zum Teil die "Seitenzahlen" unten wohl nicht mehr angezeigt.

Evtl. wird die Datenmenge im XML oder HTML einfach zu gross?
Comment 23 Ingo Steuwer univentionstaff 2009-09-24 15:11:58 CEST
*** Bug 1951 has been marked as a duplicate of this bug. ***
Comment 24 Stefan Gohmann univentionstaff 2009-10-12 21:48:33 CEST
Ich schaffe es auch unter Last auf einem UCS 2.3 System nicht das Problem zu reproduzieren.

Aktuell kann es einigermaßen zuverlässig auf billy reproduziert werden, aber nur  wenn die UCR Variable directory/manager/web/modules/autosearch auf yes gesetzt wird.
Klick auf Richtlinien, wenn dann der Timeout noch nicht kommt, dann sollte dieser beim Klick auf das erste Richlinienobjekt kommen. Nicht immer, aber in ungefähr zwei von drei Fällen.

Das XML wird 135 KB groß und ist zwischen beiden Fällen absolut identisch.
Comment 25 Stefan Gohmann univentionstaff 2009-10-12 22:24:16 CEST
write(2, "Traceback (most recent call last):\n", 35) = 35
write(2, "  File \"/usr/share/univention-directory-manager/uniconf/univention-directory-manager.py\", line 190, in ?\n", 105) = 105
write(2, "    ", 4)                     = 4
write(2, "main(sys.argv)\n", 15)        = 15
write(2, "  File \"/usr/share/univention-directory-manager/uniconf/univention-directory-manager.py\", line 185, in main\n", 108) = 108
write(2, "    ", 4)                     = 4
write(2, "session.finishRequest(number)\n", 30) = 30
write(2, "  File \"/usr/share/univention-webui/modules/requests.py\", line 450, in finishRequest\n", 85) = 85
write(2, "    ", 4)                     = 4
write(2, "self.saver_history[number]=cPickle.dumps(self.save)\n", 52) = 52
write(2, "RuntimeError", 12)            = 12
write(2, ": ", 2)                       = 2
write(2, "dictionary changed size during iteration", 40) = 40
write(2, "\n", 1)
Comment 26 Stefan Gohmann univentionstaff 2009-10-13 06:52:29 CEST
Die Excpetion kann relativ einfach abgefangen werden.
Das eigentliche Problem ist damit allerdings nicht gelöst. Es scheint so zu sein, dass self.save während der Zeit verändert wird, vermutlich durch einen anderen Thread.
Comment 27 Stefan Gohmann univentionstaff 2009-10-13 06:55:37 CEST
fixed

Für das generelle Problem habe ich einen neuen Bug eröffnet: Bug #15940
Comment 28 Sönke Schwardt-Krummrich univentionstaff 2009-10-15 08:50:44 CEST
Wäre es ggf. sinnvoll, ein  
tmpsave = copy.deepcopy(self.save)
dort einzubauen und dann tmpsave zu pickeln?
Comment 29 Stefan Gohmann univentionstaff 2009-10-15 09:03:49 CEST
(In reply to comment #28)
> Wäre es ggf. sinnvoll, ein  
> tmpsave = copy.deepcopy(self.save)
> dort einzubauen und dann tmpsave zu pickeln?

Dann bricht er beim deepcopy mit der gleichen Exception ab.
Comment 30 Felix Botner univentionstaff 2009-11-03 15:59:20 CET
Ich kann es jetzt nicht mehr reproduzieren. Changelog Eintrag ist vorhanden.
Comment 31 Stefan Gohmann univentionstaff 2009-12-21 08:48:54 CET
UCS 2.3 wurde veröffentlicht. Sollte der hier beschriebene Bug mit einer neueren Version von UCS erneut auftreten, so sollte der Bug dupliziert werden: "Clone This Bug".
Comment 32 Stefan Gohmann univentionstaff 2010-01-15 07:06:17 CET
*** Bug 6739 has been marked as a duplicate of this bug. ***
Comment 33 Janis Meybohm univentionstaff 2010-04-06 15:14:09 CEST
Created attachment 2373 [details]
Patch für UCS 2.2-2

Dieser Patch setzt den Fix unter UCS 2.2-2 um.
# patch -p0 < bug13639-request.patch