Anwendungsvorgänge In Warteschlange
CICD-APIs, die das Update abrufen müssen Instanzweite Sperre/Mutex Zum Ausführen der angeforderten Vorgänge werden in die Warteschlange gestellt, anstatt beim Update abgelehnt zu werden Instanzweite Sperre/Mutex Ist von den anderen Vorgängen belegt.
Beginnt in Tokyo, Die CICD-APIs, die zum Abrufen des Updates erforderlich sind Instanzweite Sperre/Mutex Zum Ausführen der angeforderten Vorgänge werden in die Warteschlange gestellt, anstatt beim Update abgelehnt zu werden Instanzweite Sperre/Mutex Ist von den anderen Vorgängen belegt. Wenn eine CICD-Anforderung empfangen wird, erstellt der entsprechende CICD-Service jetzt einen Anwendungsvorgang (Now Message Queue) Nachricht, und fügen Sie die Nachricht mithilfe von NowMQ-APIs in die Warteschlange ein. Die Nachrichten in der Warteschlange werden dann von der geplanten Aufgabe abgefragt und nacheinander oder parallel behandelt, wenn die parallele Verarbeitung aktiviert ist und der Vorgang die erforderlichen Kriterien erfüllt.
Anwendungsvorgang – Now MQ-Nachricht
Die Nachrichten des Anwendungsvorgangs NowMQ haben einen gemeinsamen Betreff, der „sys.appLifecycle.Operation“ lautet. Der Nachrichtentext der NowMQ-Nachricht des Anwendungsvorgangs enthält ein JSON-Objekt, das die sys_ID des Ausführungstrackers (auch als Fortschritts-ID bezeichnet, die in der CICD-API-Antwort zurückgegeben wird), den Vorgangstyp, der einer der folgenden sein kann: App_install, Plugin_activation, Batch_install, Rollback, Import_App und apply_Changes. Enthält auch die Informationen wie Plugin-ID für die Plugin-Aktivierung, App-ID oder Umfang für die Anwendungsinstallation.
Ausführungstracker für Anwendungsvorgang
Wenn die NowMQ-Nachricht für den Anwendungsvorgang erstellt und eingefügt wird, wird der Ausführungstracker-Datensatz für die entsprechende CICD-Anforderung erstellt, und seine sys_ID wird dem Textkörper der NowMQ-Nachricht hinzugefügt. Der Ausführungstracker befindet sich anfänglich im Status „Ausstehend“. Die Spalte „Details“ des Ausführungstrackers enthält die Informationen zur Art des Vorgangs und die wichtigen Eingabeparameter für die CICD-Anforderung. Die Spalte „Nachricht“ enthält die Informationen zur Position der Warteschlange. Wenn die Warteschlange angehalten wird, wird der Nachricht das Präfix „[App-Vorgangswarteschlange ist angehalten]“ vorangestellt.
Beispiel für Ausführungstracker für Anwendungsvorgänge, wenn die Warteschlange ausgeführt wird.
Beispiel für Ausführungstracker für Anwendungsvorgänge, wenn die Warteschlange angehalten wird.
Verwalten Sie Die Warteschlange Für Anwendungsvorgänge
Während die manuelle Installation von Produkten aus allen Anwendungen in die Warteschlange gestellt wird, befindet sich die manuelle Installation einer Anwendung aus der Anwenderoberfläche wie alle Anwendungen oder Anwendungsmanager nicht in der Warteschlange.
Manchmal empfängt die Instanz viele CICD-Anforderungen, stellt sie in die Warteschlange und verarbeitet sie, was dazu führen kann, dass die manuelle Installation über die UI nicht mehr aktualisiert werden kann Instanzweite Sperre/Mutex . In diesem Fall kann der Administrator die Warteschlange für Anwendungsvorgänge vorübergehend anhalten.
Der Administrator kann die Warteschlange für Anwendungsvorgänge über die UI-Seite „Systemdiagnose“ > „Warteschlange für Anwendungsvorgänge“ verwalten. Im Bereich „Status der Vorgangswarteschlange“ kann der Administrator die Warteschlange anhalten oder fortsetzen. Der Administrator kann auch den Tracker für ausstehende Ausführung abbrechen. Dadurch wird schließlich die entsprechende Nachricht in der Warteschlange aus NowMQ durch den Auftrag „Integritätsüberwachung der App-Vorgangswarteschlange“ entfernt.
UI-Seite der Warteschlange für Anwendungsvorgänge
Beispiel für UI-Seite für Anwendungsvorgangswarteschlange. Der Administrator kann auf die Schaltfläche in „Status der Vorgangswarteschlange“ klicken, um die Warteschlange anzuhalten oder fortzusetzen.
Klicken Sie auf das Listenelement „Ausführungstracker für Anwendungsvorgänge“. Dadurch wird das Formular „Ausführungstracker“ geöffnet. Wenn die Nachricht in der Warteschlange ausstehend ist, aktualisieren Sie den Status des Ausführungstrackers auf „Abgebrochen“, und speichern Sie die Änderung, um die entsprechende CICD-Anforderung in der Warteschlange abzubrechen. Hinweis: Wenn der Status des Ausführungstrackers „wird ausgeführt“ ist, kann die CICD-Anforderung nicht abgebrochen werden.
Anwendungsvorgangswarteschlange und Upgradefenster
Standardmäßig 2 Stunden (kann über die SYS-Eigenschaft „com.Glide.Update_Operation.Queue_Upgrade_window“ angepasst werden) vor dem geplanten Upgrade stoppt die Verarbeitung von Nachrichten in der Warteschlange für Anwendungsvorgänge.
Der Status der Warteschlange für den Anwendungsvorgang wird in „Upgrade angehalten“ geändert. Während dieses Upgradefensters werden neue CICD-Anforderungen weiterhin in die Warteschlange gestellt.
Wenn das Upgrade abgeschlossen ist, setzt die Warteschlange für Anwendungsvorgänge die Verarbeitung der Nachrichten in der Warteschlange automatisch fort.
Auswirkung auf CICD-Pipeline
Die vorhandenen Anforderungs-/Antwortverträge für die CICD-APIs werden nicht geändert. Der Vorgangsfehler aufgrund des Updates Instanzweite Sperre/Mutex Konflikte, die in einem Release vor Tokio beobachtet werden, werden nicht angezeigt. Die Anforderung wird je nach Auftragstyp nacheinander oder parallel in die Warteschlange gestellt und bearbeitet.
CICD-APIs, die die Warteschlange unterstützen
- api/sn_cicd/App_repo/install
- api/sn_cicd/v1/App_repo/install
- api/sn_cicd/v2/App_repo/install
- api/sn_cicd/App_Repository/Rollback
- api/sn_cicd/v1/App_repo/install
- api/sn_cicd/v2/App_Repository/Rollback
- api/sn_cicd/sc/apply_changes
- api/sn_cicd/v1/sc/apply_Changes
- api/sn_cicd/v2/sc/apply_Changes
- api/sn_cicd/App/Batch/install
- api/sn_cicd/sc/Import
- api/sn_cicd/Plugin/{Plugin_ID}/Aktivieren
- api/sn_cicd/Plugin/{Plugin_ID}/Rollback
Parallelisieren Sie Anwendungsinstallationen und Plugin-Aktivierungen
- api/sn_cicd/App_repo/install
- api/sn_cicd/v1/App_repo/install
- api/sn_cicd/v2/App_repo/install
- api/sn_cicd/Plugin/{Plugin_ID}/Aktivieren
Die gesamte Warteschlangenverarbeitung erfordert einen Instanzweite Sperre/Mutex Und enthält diesen Mutex, bis ein Vorgang in der Warteschlange abgeschlossen ist. Diese Sperre wird aufgerufen UpdateMutex , Und ihr Status können in angezeigt werden sys_Mutex Tabelle. Während dieser Zeit können Vorgänge, die dieselbe Sperre aufweisen (App-Installationen, Plugin-Aktivierungen, Quellsteuerungsvorgänge) nicht über die Anwenderoberfläche ausgeführt werden. Die Warteschlange kann weiterhin über angehalten werden Warteschlange Für Anwendungsvorgänge Seite zum Freigeben der Sperre, nachdem derzeit ausgeführte Aufträge abgeschlossen wurden.
Die Parallelisierung ist standardmäßig aktiviert. Sie kann mithilfe der Eigenschaft deaktiviert werden Com.Glide.Update_Operation.parallel_Operation_enabled , Und alle Vorgänge werden wie in vorherigen Releases sequenziell aus der Warteschlange ausgeführt.
Grenzwerte für die Parallelisierung
Der Warteschlangenprozessor bestimmt, ob ein in die Warteschlange gestellter Auftrag ausgeführt werden kann. Wenn ein Auftrag ausgeführt werden kann, ist geplant, dass er bei der ersten Verfügbarkeit von einem Instanzknoten abgerufen wird. Wenn nicht, wird er an die Warteschlange zurückgegeben, und der Prozessor wertet den nächsten Auftrag in der Warteschlange zur Verarbeitung aus.
Es gibt einen Grenzwert für die maximale Anzahl von Aufträgen, die parallel ausgeführt werden können, der standardmäßig auf 2 festgelegt ist. Diese Eigenschaft kann über umgeschaltet werden Glide.Update.App_Operation_Queue.parallel.max Beachten Sie jedoch, dass für die Installation eine Obergrenze von Threads verfügbar ist, und dass eine erhöhte Parallelisation zusätzlichen Arbeitsspeicher benötigt, der die Instanz für aktive Anwender verlangsamen kann.
Ressourcensperren Werden Abgerufen
- Zwei beliebige Vorgänge, die denselben Umfang teilen, einschließlich Anpassungen.
- Zwei beliebige Vorgänge, die Schemaänderungen verursachen.
- Zwei beliebige Vorgänge mit Korrekturskripts.
Die Warteschlangenverarbeitung bestimmt, ob diese Kriterien für Vorgänge in der Warteschlange erfüllt sind, und verschiebt ggf. nicht verarbeitbare Aufträge. Die Fortschritts-ID des Auftrags wird aktualisiert, um anzugeben, ob der Vorgang auf den Erhalt entsprechender Ressourcensperren wartet. Ein Ausführungsvorgang verwaltet eine Liste der Ressourcen (Bereiche, Schema, vorhandene Korrekturskripts) in der Tabelle „sys_padlock“, und das Einfügen und Freigeben dieser Sperren kann in dieser Tabelle anhand der Fortschritts-ID beobachtet werden. Wenn ein Auftrag in der Warteschlange zurückgestellt wird, da die erforderlichen Sperren für Ressourcen nicht abgerufen werden können, wird er in eine Abkühlung versetzt, damit andere Nachrichten verarbeitet werden können. Der Abkühlzeitraum kann mit der Eigenschaft geändert werden Com.Glide.Update_Operation.Job_Cancel_timeout_minutes . Der Auftrag befindet sich noch in der Warteschlange und ist auf sichtbar Warteschlange Für Anwendungsvorgänge Seite.
Com.Glide.Update_Operation.max_failure_count Eigenschaft.