Bug 15082 - (exitcode 1) aus /usr/sbin/univention-run-join-scripts unschoen
(exitcode 1) aus /usr/sbin/univention-run-join-scripts unschoen
Status: CLOSED FIXED
Product: UCS
Classification: Unclassified
Component: Join (univention-join)
UNSTABLE
All All
: P5 normal (vote)
: UCS 2.3
Assigned To: Daniel Hofmann
Felix Botner
:
Depends on:
Blocks: 14432
  Show dependency treegraph
 
Reported: 2009-07-14 11:40 CEST by Tobias Scherer
Modified: 2009-12-21 08:47 CET (History)
2 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

Note You need to log in before you can comment on or make changes to this bug.
Description Tobias Scherer univentionstaff 2009-07-14 11:40:14 CEST
Wenn alles OK ist gibt /usr/sbin/univention-run-join-scripts Zeilen wie diese aus:

Running 01univention-ldap-server-init.inst                 (exitcode 1)

Das ist irritierend, da exitcode 1 oft auf einen Fehler hinweist.
Comment 1 Tobias Scherer univentionstaff 2009-07-14 11:40:58 CEST
Berichtet in Ticket#2009071310000188
Comment 2 Sönke Schwardt-Krummrich univentionstaff 2009-08-10 12:28:11 CEST
Vielleicht sollten wir hier Exitcode 1 auf einen anderen Ausgabestring umsetzen (z.B. "executed").
Comment 3 Daniel Hofmann univentionstaff 2009-08-11 09:44:41 CEST
Hier hab ich mal die Ist-Situation zusammengefasst:

https://billy.knut.univention.de/uniwiki/index.php/Joinskripte#Exit-Code-Konventionen

Die Überladung des Exit-Code 1 ist hier das Problem, das das Fixen nicht ganz so einfach macht.

Das Umsetzen des Strings auf "executed" würde dann dazu führen, dass einige Skripte mit "done" und einige mit "executed" quitiert würden, was IMHO auch nicht ganz schön ist, aber eine Lösung wäre, zumindest wenn man die Strings umdreht, also "executed" für komplett durchgelaufen und "done" oder "checked" bei exitcode 1.
Comment 4 Daniel Hofmann univentionstaff 2009-08-11 11:29:41 CEST
exitcode 1 durch skipped ersetzt.
changelogeintrag erstellt.
Comment 5 Janis Meybohm univentionstaff 2009-08-14 15:10:10 CEST
(In reply to comment #4)
> exitcode 1 durch skipped ersetzt.
> changelogeintrag erstellt.

Ich öffne den Bug noch mal da ich "skipped" aus Benutzersicht auch für wenig intuitiv halte (ich denke das wird halt erstmal auch zu der Frage führen: "Warum wird Joinscript ABC übersprungen?").
Die einfachste Lösung für dieses Problem ist in meinen Augen ein Hinweis vor oder nach der Programmausgabe der beschreibt was welcher Status bedeutet, z.B:

(skipped) - Das Join-Script wurde in der aktuell vorliegenden Version bereits ausgeführt.
Comment 6 Daniel Hofmann univentionstaff 2009-08-14 16:21:38 CEST
ok, jetzt gibts die beiden Ausgaben:
"done"
und
"skipped (already executed)"
was IMHO ausreichend unmissverständlich ist.
Comment 7 Sönke Schwardt-Krummrich univentionstaff 2009-08-14 16:24:32 CEST
(In reply to comment #5)
> Ich öffne den Bug noch mal da ich "skipped" aus Benutzersicht auch für wenig
> intuitiv halte (ich denke das wird halt erstmal auch zu der Frage führen:
> "Warum wird Joinscript ABC übersprungen?").
> Die einfachste Lösung für dieses Problem ist in meinen Augen ein Hinweis vor
> oder nach der Programmausgabe der beschreibt was welcher Status bedeutet, z.B:
> 
> (skipped) - Das Join-Script wurde in der aktuell vorliegenden Version bereits
> ausgeführt.

So einfach ist das leider nicht, da wir anhand des Exitcodes nicht entscheiden können, ob das Joinscript mit einem Fehler abgebrochen ist, oder bereits ausgeführt wurde.

Langfristig sollten wir hier die Entscheidung aus dem Join-Skript auch in die externen Tools (hier univention-run-all-joinscripts) implementieren. Der Exitcode, der bei erneuter Ausführung zurückgegeben wird, sollte auch auf etwas "exotischeres" geändert werden.
Comment 8 Sönke Schwardt-Krummrich univentionstaff 2009-09-22 13:57:48 CEST
(In reply to comment #7)
> Langfristig sollten wir hier die Entscheidung aus dem Join-Skript auch in die
> externen Tools (hier univention-run-all-joinscripts) implementieren. Der
> Exitcode, der bei erneuter Ausführung zurückgegeben wird, sollte auch auf etwas
> "exotischeres" geändert werden.

Bitte in univention-run-all-joinscripts auf die Shellskript-Library zurückgreifen und vor dem Ausführen überprüfen, ob das Joinskript bereits in der aktuellen Version durchgelaufen ist. Falls dies der Fall ist, den Text "skipped (already executed)" ausgeben, falls nicht das jeweilige Joinskript aufrufen und je nach Exitcode "done" oder "failed (exitcode: XXX)" zurückgeben.
Comment 9 Daniel Hofmann univentionstaff 2009-09-24 13:55:57 CEST
In Revision 12380 jetzt folgende Änderungen eingepflegt:
- joinscripthelper.lib so erweitert, dass auch nicht-joinskripte auf die Funktionen zugreifen können
- univention-run-all-joinscripts nutzt dies jetzt, und prüft vor dem Ausführen von jedem Joinskript, ob dieses bereits ausgeführt wurde und gibt dies ggf. entsprechend aus, ohne das Joinskript selbst nochmals aufzurufen.

Außerdem wurde die Wiki-dokumentation entsprechend erweitert.

Ich setze den Bug jetzt mal wieder auf fixed...
Comment 10 Sönke Schwardt-Krummrich univentionstaff 2009-10-19 13:59:39 CEST
Irgendwie ist hier die Logik in univention-run-all-joinscripts verdreht. Alle in .index.txt aufgeführten Joinskripte werden ausgeführt und beenden sich mit Exitcode 1. Alle anderen Skripte werden als "skipped (already executed)" übersprungen.

---[cut]---
root@master:/var/log/univention# univention-run-join-scripts 
univention-run-join-scripts: runs all join scripts existing on local computer.
copyright (c) 2001-2009 Univention GmbH, Germany

Running 01univention-ldap-server-init.inst                 failed (exitcode: 1)
Running 02univention-directory-notifier.inst               failed (exitcode: 1)
Running 03univention-directory-listener.inst               failed (exitcode: 1)
Running 04univention-ldap-client.inst                      failed (exitcode: 1)
Running 05univention-bind.inst                             failed (exitcode: 1)
Running 08univention-apache.inst                           failed (exitcode: 1)
Running 10univention-ldap-server.inst                      failed (exitcode: 1)
Running 11univention-heimdal-init.inst                     failed (exitcode: 1)
Running 15univention-directory-notifier-post.inst          failed (exitcode: 1)
Running 15univention-heimdal-kdc.inst                      failed (exitcode: 1)
Running 20univention-directory-policy.inst                 failed (exitcode: 1)
Running 25univention-dhcp.inst                             failed (exitcode: 1)
Running 25univention-directory-manager.inst                failed (exitcode: 1)
Running 26univention-nagios-server.inst                    skipped (already executed)
Running 26univention-samba.inst                            failed (exitcode: 1)
Running 30univention-nagios-client.inst                    skipped (already executed)
Running 34univention-management-console-server.inst        failed (exitcode: 1)
Running 41univention-updater.inst                          failed (exitcode: 1)
Running 44univention-management-console-system-info.inst   skipped (already executed)
Running 50univention-pkgdb.inst                            failed (exitcode: 1)
Running 65univention-kolab2-framework.inst                 failed (exitcode: 1)
Running 67univention-mail-postfix-kolab2.inst              failed (exitcode: 1)
Running 68univention-spamassassin.inst                     failed (exitcode: 1)
Running 71univention-quota.inst                            failed (exitcode: 1)
Running 78univention-kde.inst                              failed (exitcode: 1)
Running 79univention-printserver.inst                      skipped (already executed)
Running 81univention-mail-cyrus-kolab2.inst                failed (exitcode: 1)
Running 81univention-nfs-server.inst                       failed (exitcode: 1)
Running 81univention-server-installation.inst              failed (exitcode: 1)
Running 90univention-bind-proxy.inst                       failed (exitcode: 1)
Running 91univention-client-boot-pxe.inst                  failed (exitcode: 1)
Running 91univention-join.inst                             failed (exitcode: 1)
Running 98univention-pkgdb-tools.inst                      failed (exitcode: 1)
---[cut]---


---[.index.txt]---
univention-ldap-server-init v1 successful
univention-directory-notifier v1 successful
univention-directory-listener v1 successful
univention-ldap-client v1 successful
univention-bind v1 successful
univention-apache v1 successful
univention-ldap-server v1 successful
univention-heimdal-init v1 successful
univention-directory-notifier-post v1 successful
univention-heimdal-kdc v1 successful
univention-directory-policy v1 successful
univention-dhcp v1 successful
univention-directory-manager v1 successful
univention-samba v2 successful
univention-management-console-server v3 successful
univention-updater v2 successful
univention-pkgdb v1 successful
univention-kolab2-framework v1 successful
univention-mail-postfix-kolab2 v1 successful
univention-spamassassin v1 successful
univention-quota v1 successful
univention-kde v3 successful
univention-mail-cyrus-kolab2 v1 successful
univention-nfs-server v2 successful
univention-server-installation v1 successful
univention-bind-proxy v1 successful
univention-client-boot-pxe v1 successful
univention-join v1 successful
univention-pkgdb-tools v1 successful
---[cut]---
Comment 11 Sönke Schwardt-Krummrich univentionstaff 2009-10-19 14:19:43 CEST
Ursache ist, daß der Symlink aus Bug 14846 noch nicht gesetzt wurde und somit 2 Status-Dateien existieren:

root@master:/usr/lib/univention-install# ls -la .index.txt 
-rw-r--r-- 1 root root 1104 19. Okt 15:59 .index.txt

root@master:/usr/lib/univention-install# ls -la /var/univention-join/status 
-rw-r--r-- 1 root root 171 19. Okt 16:10 /var/univention-join/status
root@master:/usr/lib/univention-install# cat /var/univention-join/status
univention-nagios-server v3 successful
univention-nagios-client v2 successful
univention-management-console-system-info v1 successful
univention-printserver v5 successful
Comment 12 Felix Botner univentionstaff 2009-11-06 16:16:53 CET
Funktioniert.

-> univention-run-join-scripts
44univention-management-console-system-info.inst   skipped (already executed)
50univention-pkgdb.inst                            skipped (already executed)
65univention-kolab2-framework.inst                 skipped (already executed)
67univention-mail-postfix-kolab2.inst              skipped (already executed)
68univention-spamassassin.inst                     skipped (already executed)
70univention-thin-client-ltsp.inst                 skipped (already executed)
71univention-quota.inst                            skipped (already executed)
77univention-debmirror.inst                        skipped (already executed)
78univention-kde.inst                              done
79univention-printserver.inst                      failed (exitcode: 1)
80univention-application-server.inst               skipped (already executed)
81univention-mail-cyrus-kolab2.inst                skipped (already executed)
81univention-nfs-server.inst                       skipped (already executed)
81univention-server-installation.inst              skipped (already executed)
90univention-bind-proxy.inst                       skipped (already executed)
91univention-client-boot-pxe.inst                  skipped (already executed)
91univention-join.inst                             skipped (already executed)
98univention-pkgdb-tools.inst                      done

In 78univention-kde.inst wurde die Version erhöht.

In 79univention-printserver.inst wurde die Version erhöht und ein exit 1 eingebaut.

98univention-pkgdb-tools.inst wurde aus der .index.txt entfernt.

Changelog Eintrag fehlt.
Comment 13 Daniel Hofmann univentionstaff 2009-11-06 16:34:51 CET
Changelogeintrag war schon vorhanden, war nur nicht im Bug vermerkt :-/
Comment 14 Felix Botner univentionstaff 2009-11-09 16:58:09 CET
Ja, alles da.
Comment 15 Stefan Gohmann univentionstaff 2009-12-21 08:47:11 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".