Bug 29625 - Absturz des S4 Connector Prozesses
Absturz des S4 Connector Prozesses
Status: CLOSED FIXED
Product: UCS
Classification: Unclassified
Component: S4 Connector
UCS 3.1
Other Linux
: P5 normal (vote)
: UCS 3.1-0-errata
Assigned To: Arvid Requate
Stefan Gohmann
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2012-12-06 17:54 CET by Arvid Requate
Modified: 2013-02-09 12:04 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
connector-s4.log, listener.log, /etc/univention/connector etc. (250.53 KB, application/x-gtar)
2012-12-06 18:25 CET, Arvid Requate
Details
connector-s4.log mit connector/debug/level=4 (1.78 MB, text/plain)
2012-12-06 18:52 CET, Arvid Requate
Details
/var/lib/univention-connector/s4/1354733999.967263 (313.92 KB, application/octet-stream)
2012-12-06 19:40 CET, Arvid Requate
Details
Insgesamt vier von 32219 pickle Objekten sind defekt. (236.13 KB, application/x-gtar)
2012-12-06 19:57 CET, Arvid Requate
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Arvid Requate univentionstaff 2012-12-06 17:54:16 CET
Bei Produkttests zu Samba4 Performance beim Anlegen von 5000 Benutzern ist ein einem der Testläufe der S4 Connector-Prozess abgestüzt. In connector-s4-status.log fanden sich Binärdaten, im connector-s4.log war der letzte Eintrag "Scan all changes from UCS ...".
Comment 1 Arvid Requate univentionstaff 2012-12-06 18:25:59 CET
Created attachment 4873 [details]
connector-s4.log, listener.log, /etc/univention/connector etc.

Aufgerufen wurde das Skript mit "time ./create_users 5000".

Die nächste Pickle-Datei, die unter /var/lib/univention-connector/s4/ liegt, lässt sich in Python manuell problemlos laden:

('cn=test1304,cn=uid,cn=temporary,cn=univention,dc=arucs31i17,dc=qa', {'hasSubordinates': ['FALSE'], 'entryCSN': ['20121205185123.425062Z#000000#000#000000'], 'cn': ['test1304'], 'objectClass': ['top', 'lock'], 'creatorsName': ['cn=admin,dc=arucs31i17,dc=qa'], 'entryUUID': ['82866516-d358-1031-9376-810c49c5d6e5'], 'modifiersName': ['cn=admin,dc=arucs31i17,dc=qa'], 'createTimestamp': ['20121205185123Z'], 'structuralObjectClass': ['lock'], 'subschemaSubentry': ['cn=Subschema'], 'entryDN': ['cn=test1304,cn=uid,cn=temporary,cn=univention,dc=arucs31i17,dc=qa'], 'lockTime': ['1354733783'], 'modifyTimestamp': ['20121205185123Z']}, {}, None)
Comment 2 Arvid Requate univentionstaff 2012-12-06 18:52:29 CET
Created attachment 4874 [details]
connector-s4.log mit connector/debug/level=4

Das Problem ist persistent auf VM arequate_ucs31qa16.130 konserviert.

Wenn man sich per gdb an den Prozedd hängt, dann sieht man am Ende:
 Program exited normally.

Zwei Dinge finde ich bemerkenswert an den noormalen (level 2) Logmeldungen:
Erstens sieht es so aus, als würde der Initialisierungsprozess nach dem ersten "Scan all changes from UCS ..." nochmal neu gestartet (DEBUG_INIT).
Zweitens kommen dann alle Logmeldungen doppelt.

05.12.2012 21:51:49,66 MAIN        (------ ): DEBUG_INIT
05.12.2012 21:51:49,113 LDAP        (PROCESS): Building internal group membership cache
05.12.2012 21:51:49,170 LDAP        (PROCESS): Internal group membership cache was created
05.12.2012 21:51:49,437 LDAP        (PROCESS): Scan all changes from UCS ...
05.12.2012 21:52:38,585 MAIN        (------ ): DEBUG_INIT
05.12.2012 21:52:38,585 MAIN        (------ ): DEBUG_INIT
05.12.2012 21:52:38,614 LDAP        (PROCESS): Building internal group membership cache
05.12.2012 21:52:38,614 LDAP        (PROCESS): Building internal group membership cache
05.12.2012 21:52:38,636 LDAP        (PROCESS): Internal group membership cache was created
05.12.2012 21:52:38,636 LDAP        (PROCESS): Internal group membership cache was created
05.12.2012 21:52:38,825 LDAP        (PROCESS): Scan all changes from UCS ...
05.12.2012 21:52:38,825 LDAP        (PROCESS): Scan all changes from UCS ..
Comment 3 Arvid Requate univentionstaff 2012-12-06 19:40:28 CET
Created attachment 4875 [details]
/var/lib/univention-connector/s4/1354733999.967263

Ursache ist, das eine bestimmte Pickle-Datei für eine Änderung an "Domain Users" hier defekt ist. Kurzer Test mit der extrahierten Funktion _generate_dn_list_from:

unpickle /var/lib/univention-connector/s4/1354733999.967263
Traceback (most recent call last):
  File "./1.py", line 43, in <module>
    ding._generate_dn_list_from(files)
  File "./1.py", line 33, in _generate_dn_list_from
    dn,new,old,old_dn=cPickle.load(f)
ValueError: too many values to unpack

Nach manuellem Einlesen des Objekts (mit pickle oder cPickle) handelts es sich um eine Liste der Länge 8:



obj[0]= 'cn=Domain Users,cn=groups,dc=arucs31i17,dc=qa',

obj[1]= {'objectClass': ['top', 'posixGroup', 'univentionGroup', 'sambaGroupMapping', 'univentionObject'], 'sambaGroupType': ['2'], 'hasSubordinates': ['FALSE'], 'entryCSN': ['20121205185959.738668Z#000000#000#000000'], 'cn': ['Domain Users']}

obj[2]= 'memberUid'

obj[3]= ## Liste mit 1386 Elementen,
        ## die letzten beiden sind 'test1381', 'test1382'

obj[4]= "te(S'cn=test2283,cn=uid,cn=temporary,cn=univention,dc=arucs31i17,dc=qa"

obj[5]= {'hasSubordinates': ['FALSE'], 'entryCSN': ['20121205185959.542120Z#000000#000#000000'], 'cn': ['test2283'], 'objectClass': ['top', 'lock'], 'creatorsName': ['cn=admin,dc=arucs31i17,dc=qa'], 'entryUUID': ['b6279bb4-d359-1031-9fa5-810c49c5d6e5'], 'modifiersName': ['cn=admin,dc=arucs31i17,dc=qa'], 'createTimestamp': ['20121205185959Z'], 'structuralObjectClass': ['lock'], 'subschemaSubentry': ['cn=Subschema'], 'entryDN': ['cn=test2283,cn=uid,cn=temporary,cn=univention,dc=arucs31i17,dc=qa'], 'lockTime': ['1354734299'], 'modifyTimestamp': ['20121205185959Z']}

obj[6]= {}

obj[7]= None
Comment 4 Arvid Requate univentionstaff 2012-12-06 19:57:56 CET
Created attachment 4876 [details]
Insgesamt vier von 32219 pickle Objekten sind defekt.

Diese vier beziehen sich jeweils auf Domain Users.

Ich gehe davon aus, dass cPickle im Listener Modul s4-connector Probleme mit großen Objekten hat.
Comment 5 Stefan Gohmann univentionstaff 2012-12-12 21:12:37 CET
Arvid hat dazu noch folgendens gefunden:

> zu dem cPickle-Bug gestern habe ich	nur folgendes Posting gefunden:
> http://bugs.python.org/issue616013#msg70751
> Im Extremfall wäre das eine Option, z.B. als Code-Vergleich um einen Patch
> zu finden.
>
> (
> http://svn.python.org/projects/python/branches/release30-maint/Modules/_pic
>kle.c vs.
> http://svn.python.org/projects/python/branches/release26-maint/Modules/cPic
>kle.c )
Comment 6 Arvid Requate univentionstaff 2012-12-20 19:04:15 CET
Das Listener-Modul s4-connector ist jetzt um einen Test erweitert der die geschriebene Pickle-Datei direkt nochmal ausliest und prüft, ob die enthaltenen Liste genau 4 Elemente enthält. Dieser Test ist ohne Speicher-Korruption möglich.
Falls ernicht erfolgreich ist, wird eine Logmeldung auf Level WARN ausgegeben (Schlüsselwort "broken") und das Pickle erneut mit plain-python-pickle geschirieben. Der Test wird erneut durchgeführt und im Fehlerfall wird eine Meldung mit Level ERROR ausgegeben.

Im Test ließ sich das Originalproblem noch nicht wieder nachstellen, die Funktion des Listeners war jedoch korrekt, daher erstmal fixed.

Advisory: 2012-12-18-univention-s4-connector.yaml
Comment 7 Stefan Gohmann univentionstaff 2013-01-24 07:55:26 CET
Im errata Scope ist die Connector Version aus 3.1-1 importiert. Ich habe für Bug #30119 jetzt die Version aus 3.1-0 wieder importiert. Du müsstest den Patch dann noch extrahieren und im Patches Verzeichnis ablegen.
Comment 8 Arvid Requate univentionstaff 2013-01-24 16:41:44 CET
Paket ist mit extrahiertem Patch neu gebaut.
Comment 9 Stefan Gohmann univentionstaff 2013-01-24 17:39:06 CET
OK, das eigentliche Problem konnte ich nicht reproduzieren, Code + YAML OK.
Comment 10 Moritz Muehlenhoff univentionstaff 2013-02-07 11:33:29 CET
http://errata.univention.de/3.1-errata35.html
Comment 11 Stefan Gohmann univentionstaff 2013-02-09 12:04:06 CET
*** Bug 27332 has been marked as a duplicate of this bug. ***