-
LCKW - LockWait - Wer (User) blockiert?
Es kommt des öfteren vor, dass durch Unachtsamkeit Anwender mitten in einer Transaktion den Arbeitsplatz verlassen und andere ihrerseits die Transaktion nicht abschliessen können - wegen einem Member-Locking.
Bisher musste stets "auf Zuruf" des Betroffenen mit WRKACTJOB der "Bösewicht" ermittelt werden, welcher das Locking verursacht.
Ich habe nun ein Monitor-Programm geschrieben, welches in regelmässigen Abständen diese Locks ermittelt und per E-Mail mitteilt. Wünschbar aber wäre, dass der Verursacher DIREKT mittels E-Mail aufgefordert werden könnte, die Transaktion abzuschliessen bzw. das Member bzw. den Record freizugeben.
Gibt es eine Möglichkeit, zu dieser Information (Username) zu kommen?
Besten Dank für hilfreiche Informationen.
Gruss
Roman
-
Hallo Roman,
wer seinen Platz verläßt, liest leider auch die Mail nicht.
Was hältst Du denn davon, solche Situationen zu vermeiden:
- Lock schon beim Versuch des Chains feststellen,
- über SDS den Verursacher einlesen,
- dem "Verlierer" eine Meldung anzeigen "Sorry, der Datensatz wird von xyz benutzt"
(mit erzieherischem Effekt, da das sicher jedem 'mal passiert)
Gruß,
Robert
-
Hallo,
Programme, die Satzsperren halten und die Kontrolle an den Benutzer geben, sind fehlerhaft und sollten entsprechend korrigiert werden:
z.B.:
- lesen ohne Sperren
- anzeigen des Satzes zum ändern
- lesen mit Sperre
- Vergleich auf zwischenzeitliche Änderung
- update oder Fehlermeldung
mfg
Dieter Bender
 Zitat von RobertMack
Hallo Roman,
wer seinen Platz verläßt, liest leider auch die Mail nicht.
Was hältst Du denn davon, solche Situationen zu vermeiden:
- Lock schon beim Versuch des Chains feststellen,
- über SDS den Verursacher einlesen,
- dem "Verlierer" eine Meldung anzeigen "Sorry, der Datensatz wird von xyz benutzt"
(mit erzieherischem Effekt, da das sicher jedem 'mal passiert)
Gruß,
Robert
-
Ich weiß,
so sagt es die Lehre (und verlagert das Problem sonstwo hin).
Ich halte es lieber pragmatisch: es kann nur einer auf der Toilette sitzen... und der Nächste soll sehen, was der Vorgänger hinterlassen hat (statt Rollbacks und Ich-konnte-nicht-Du-mußt-alles-nochmal-neu-eingeben-Messages)
Gruß,
Robert
Okay, ich geb's ja zu: es gibt Anwendungsbereiche, da muß man es "richtig" machen ;-)
-
Da scheint mir auch die Satzwartezeit auf *NOMAX zu stehen, sonst würde das Programm auch abbrechen.
Eine BZ alleine beim CHAIN/READ reicht da nicht aus.
Ansonsten stimme ich Dieter da zu, dass das Design der Anwendung fehlerhaft ist.
Aber nichts desto trotz gibts auch hierfür API's.
http://publib.boulder.ibm.com/infoce...6f%63%6b%22%20
Man bedenke aber, dass diese Information bereits veraltet sein kann, da der Job ggf. weiter läuft oder die Wait-Situation nicht mehr zutrifft.
-
Vielen Dank für die Antworten. - Ich habe vergessen anzufügen, dass wir KEINEN Einfluss auf die Software nehmen, können, da wir nicht die Entwickler sind und deshalb keine Sourcen haben.
Selbst hätte ich natürlich dieses Problem auch programmtechnisch umschifft - habe ich andernorts auch schon getan.
Deshalb bleibt mir nur die "passive" Lösung übrig.
Werde mir das mit dem API mal genauer ansehen (Vielen Dank an Fuerchau). Allerdings habe ich diesbezüglich keine Erfahrung. Vielleicht werde ich mich nochmals ans Forum wenden müssen.
Fürs erste jedoch Besten Dank an alle.
Gruss Roman
-
@Bender
Die Lehre beinhaltet beide Arten der Sperre, zu sagen eine davon wäre falsch ist zwar eine persönliche Meinung, aber nicht ganz korrekt das als Fakt darzustellen. Es gibt sicherlich Anwendungsgebiete wo dies "Falsch" wäre, aber sicherlich nicht überall.
-
Das mit dem API funktioniert - so wie ich es verstehe - nicht! Ich betrachte die Jobs "von aussen". Das heisst, bisher komme ich nur "manuell" zu meiner gewünschten Information (d.h. zum sperrenden User), wenn ich über WRKACTJOB Auswahl 5 Work with Jobs, Auswahl 12 Work with Locks, Auswahl 5 (W w Memberlocks).
Diesen Weg möchte ich automatisieren! - Wie geschrieben: Ich habe keine Möglichkeit die Programme (und das sind viele!!) zu ändern bzw. ändern zu lassen.
Grüsse
Roman
-
Schau dir das API genau an. Im Parameter 4 übergibst du die Job-Identifikation um alle Objekt-Sperren incl. Status des Jobs zu erhalten.
Um noch weiter ins Detail zu gehen musst du von dieser Liste für jedes gewünchte Objekt das API Retrieve Lock Information (QWCRLCKI) aufrufen:
http://publib.boulder.ibm.com/infoce...s/qwcrlcki.htm
-
Hallo,
mit dem externen Monitor wird das schwierig, da dieser ja die Information über Locks und deren Dauer zusammen führen müsste, sprich eigene Locktabellen führen müsste.
Realistischer scheint mir da, die Aktion jeweils aus dem Programm zu triggern, das unter dem Lock leidet, sprich:
- Record wait für die Datei darf nicht *NOMAX sein
- bei Abbruch wegen Lock wait wird der Verursacher benannt
- Ursache mit RCVMSG oder API ermitteln
- Eintrag in Worker Q stellen (DTAQ o.ä.)
- Batch Job verarbeitet WorkerQ und tut was immer er will
Zusätzlich würde ich das Verhalten der Software beim Verursacher monieren und Fehlerbehebung verlangen!!! Sollte der auch mit unterschiedlichen Lehren argumentieren (its no bug, its a feature), würde ich Belegstellen für seine "Lehre" verlangen.
mfg
Dieter Bender
 Zitat von roman
Das mit dem API funktioniert - so wie ich es verstehe - nicht! Ich betrachte die Jobs "von aussen". Das heisst, bisher komme ich nur "manuell" zu meiner gewünschten Information (d.h. zum sperrenden User), wenn ich über WRKACTJOB Auswahl 5 Work with Jobs, Auswahl 12 Work with Locks, Auswahl 5 (W w Memberlocks).
Diesen Weg möchte ich automatisieren! - Wie geschrieben: Ich habe keine Möglichkeit die Programme (und das sind viele!!) zu ändern bzw. ändern zu lassen.
Grüsse
Roman
-
Tja, wenn man denn bloß die Quellen hätte.
Ich habe auch noch keinen LOCK-Trigger gefunden
-
@Baldur: zumindest die SQL Locks kriegt man über die offenen Commit Ressourcen weg, aber das bringt auch nix: dann glaubt ein Programm, dass es die Sperre hat, obwohl es sie nicht hat...
mit Gewalt geht das schon (cancel des Sperrers aus dem Job des Warters und dann automatischer retry, aber Software, die so wackelig gebaut ist, hat sicherlich keine Transaktions Sicherung und dann...
mfg
Dieter
 Zitat von Fuerchau
Tja, wenn man denn bloß die Quellen hätte.
Ich habe auch noch keinen LOCK-Trigger gefunden 
Similar Threads
-
By QSECOFR-1 in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 03-08-06, 18:06
-
By Bratmaxxe in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 29-06-06, 10:29
-
By linguin in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 22-06-06, 08:39
-
By linguin in forum IBM i Hauptforum
Antworten: 10
Letzter Beitrag: 16-05-06, 12:14
-
By Hubert in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 12-05-06, 11:52
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks