!--a11y-->
Sperren von Units 
Sperren von Units
Das Setzen einer Unit-Sperre auf eine noch nicht mit COMMIT WORK freigegebene Hintergrund-Unit geschieht zusammen mit dem Wegschreiben der Hintergrund-Unit und ist somit unkritisch bezüglich des Datenbank-Commits. Das nachträgliche Setzen einer Unit-Sperre auf eine bereits mit COMMIT WORK freigegebene Hintergrund-Unit ist nicht erlaubt und muss demzufolge ebenfalls nicht betrachtet werden
Damit eine Queue gesperrt bzw. eine Queue- oder Unit-Sperre aufgehoben werden kann, müssen die entsprechenden Informationen auf der Datenbank geändert werden. Dies geschieht zum Zeitpunkt COMMIT WORK. Damit erhalten wir ein einheitliches Verhalten bei allen t/qRFC Funktionen. Sie wirken alle beim COMMIT WORK. Die Sperre steht vor der ersten Unit, die zum Zeitpunkt COMMIT WORK in die Datenbank geschrieben wird.
Die Nachteile sind:
· Da eine Anwendungs-LUW relativ lang sein kann, ist das Löschen / Setzen von Sperren eine sehr träge Operation.
· Die COMMIT WORK Kontrolle ist in vielen Fällen nicht vorhanden, so daß untergeordnete Dienste keine Möglichkeit zum zeitnahen Löschen / Setzen von Sperren haben.
Das Sperren einer einzelnen Unit erfolgt über einen Eintrag in der Tabelle QRFC_O_UNIT_LOCK. Pro Unit können mehrere Sperren zusammen mit deren Begründung hinterlegt werden. Für jeden Sperreintrag wird in der Tabelle QRFC_O_UNIT das Attribut PRED_CNT um 1 erhöht. Wird eine Sperre gelöscht, wird auch PRED_CNT angepasst. Aus diesem Grund kann eine Unit niemals in die Tabelle BGRFC_O_RUNNABLE gestellt werden, wenn mindestens eine Sperre hinterlegt wurde. Führt das entfernen aller Sperren dazu, dass PRED_CNT den Wert Null erreicht, dann wird die Unit in die Tabelle BGRFC_O_RUNNABLE gestellt.
Eine Unit, die bereits in der Tabelle BGRFC_O_RUNNABLE steht, kann nachträglich gesperrt werden, solange diese noch nicht von einem Outbound-Scheduler bearbeitet wird. Dabei wird der Eintrag aus der Tabelle BGRFC_O_RUNNABLE wieder entfernt
Grafik: Sperren und
Entsperren von Units

Eine Unit-Sperre kann sowohl manuell als auch automatisch erfolgen. Die unten aufgeführte Tabelle gibt die möglichen Gründe für die Sperrung einer Unit an.
REASON |
Autom. |
Beschreibung |
UPD_PENDING |
X |
Unit ist abhängig von der Verarbeitung von Verbuchungssätzen |
UPD_ERROR |
X |
Abhängige Verbuchungssätze sind fehlerhaft |
ADMIN |
|
Manuelle Sperre |
PERM_ERROR |
X |
Server meldet permanente Fehler für diese Unit |
… |
|
… |