[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte

Hybrid View

  1. #1
    Registriert seit
    Jan 2001
    Beiträge
    109

    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

  2. #2
    Registriert seit
    Jan 2003
    Beiträge
    759
    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

  3. #3
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    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 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
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  4. #4
    Registriert seit
    Jan 2003
    Beiträge
    759
    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 ;-)

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    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.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  6. #6
    Registriert seit
    Jan 2001
    Beiträge
    109
    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

  7. #7
    Registriert seit
    Dec 2004
    Beiträge
    42

    Smile

    @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.

  8. #8
    Registriert seit
    Jan 2001
    Beiträge
    109
    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

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    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
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  10. #10
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    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 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
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  11. #11
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Tja, wenn man denn bloß die Quellen hätte.
    Ich habe auch noch keinen LOCK-Trigger gefunden
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  12. #12
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    @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 Zitat von Fuerchau
    Tja, wenn man denn bloß die Quellen hätte.
    Ich habe auch noch keinen LOCK-Trigger gefunden
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

Similar Threads

  1. Aktive User ermitteln + Anmeldezeit anzeigen
    By QSECOFR-1 in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 03-08-06, 18:06
  2. Anzahl angemeldeter User auf der AS400
    By Bratmaxxe in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 29-06-06, 10:29
  3. Mailadresse von User auf Iseries speichern und auslesen
    By linguin in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 22-06-06, 08:39
  4. User vor Sicherung prüfen
    By linguin in forum IBM i Hauptforum
    Antworten: 10
    Letzter Beitrag: 16-05-06, 12:14
  5. ODBC Verbindung (User, Password)
    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
  •