View Full Version : Frage zu BNDDIR
... da empfiehlt sich mal ein Blick in ILE concepts
https://www.google.de/url?sa=t&rct=j&q=&esrc=s&frm=1&source=web&cd=1&cad=rja&uact=8&ved=0CB4QFjAAahUKEwik6-_h5eLIAhWomXIKHXO-Dww&url=https%3A%2F%2Fpublib.boulder.ibm.com%2Fiseries %2Fv5r2%2Fic2924%2Fbooks%2Fc4156066.pdf&usg=AFQjCNEBAPmFM3vUSP9Zf-SPn7eHsmtmEg
dschroeder
27-10-15, 15:18
Das mit dem ALCOBJ haben wir früher schon mal probiert. Das hat setlsamerweise nichts gebracht. Wenn wir viele Programme parallel gewandelt haben, konnte man im WRKACTJOB haufenweise Wandlungsjobs sehen, die auf LCKW standen. Ich meine das schon mal näher untersucht zu haben und damals zu der Erkenntnis gelangt zu sein, dass die Programme auf das Eintragen ins Binderverzeichnis warten. Wir haben im Wandlungsprogramm bereits eine Schleife eingebaut, die alle 500ms versucht, den Eintrag vorzunehmen. Das hat das Problem aber nur etwas entschärft, nicht gelöst.
Im Moment wandeln wir immer nicht-parallel. Deshalb haben wir das Problem schon lange nicht mehr gehabt.
Dieter.
Nun, das Wandeln dauert meist länger als das Eintragen im BNDDIR.
Andererseits kann es auch sein, dass der Compiler auf das BNDDIR schon vorab zugreifen will und deshalb nicht startet.
dschroeder
27-10-15, 16:22
Tja, ich muss es demnächst nochmal ausprobieren. Wenn ich etwas rausfinde, werde ich es berichten.
Bei jeder (erfolgreichen) Compilation eines Serviceprogramms nimmt unser Compile-Script das alte Programm per RMVBNDDIRE aus dem BNDDIR heraus und fügt es dann mit ADDBNDDIRE wieder hinzu.Dieter
... wofür soll das gut sein? Ein BNDDIR ist ähnlich wie ein LIBL lediglich eine Suchliste und akzeptiert sogar Einträge, die es garnicht gibt. Im übrigen stehen da nur Module und SRVPGMs drin und die darüber erreichbaren Exporte werden dynamisch gezogen. Lasst das ganze Gedöns weg - und gut ist!!!
D*B
Aber wie Dieter schon sagt, einen Remove brauchst du ja nicht.
Mach einfach einen Add mit MONMSG und alles ist OK.
Dann sollte Parallel-Wandeln funktionieren.
dschroeder
27-10-15, 16:36
Nun, das Wandeln dauert meist länger als das Eintragen im BNDDIR.
Andererseits kann es auch sein, dass der Compiler auf das BNDDIR schon vorab zugreifen will und deshalb nicht startet.
Ich habe es doch gerade nochmal ausprobiert: 50 Serviceprogramm parallel gewandelt. Es ist sind nur ein oder 2 Programme wirklich erstellt worden. Die anderen Wandlungen sind fehlgeschlagen. Im WRKACTJOB standen fast alle auf LCKW. Der Lock geschah aber nicht beim ADDBNDDIR, sondern beim CRTSRVPGM MODULE(*SRVPGM) EXPORT(*ALL) OPTION(*DUPPROC) USRPRF(*OWNER) TGTRLS(*CURRENT) ...
Die Spoolfiles geben an, dass alle Module erstellt wurden. Nur die Programme eben nicht. Ich finde seltsamerweise auch kein Fehlerlog in meinem Spool. Ich muss dass mal genauer prüfen. Vielleicht werden irgendwelche Fehlercodes im Wandlungsprogramm abgefangen.
dschroeder
27-10-15, 16:45
Aber wie Dieter schon sagt, einen Remove brauchst du ja nicht.
Mach einfach einen Add mit MONMSG und alles ist OK.
Dann sollte Parallel-Wandeln funktionieren.
Sorry! Ich wollte gerade das RMVBNDDIRE aus dem Wandlungsprogramm entfernen. Das ist aber wohl schon länger nicht mehr drin. Wir machen einfach nur ein ADDBNDDIRE. Sperre kommt trotzdem. Das Problem scheint sogar zu sein, dass es zu dead locks oder etwas ähnlichem kommt. Wenn eine Wandlung erstmal auf einen Lock läuft, scheinen die nächsten das gleiche Problem zu haben. Es ist also anscheinende nicht so, dass die Locks das ganze nur verzögern.
Vielen Dank für eure Mühe.
Ich muss jetzt leider weg. Werde mich aber später nochmal des Problems annehmen.
Dieter