Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
KTM fornisce una coda di notifica per ogni resource manager. KTM recapita le notifiche a un gestore risorse inserendole nella coda di Resource Manager.
Un gestore risorse può recuperare le notifiche dalla coda in modo sincrono o asincrono.
Per recuperare le notifiche in modo sincrono, il gestore delle risorse può chiamare ripetutamente ZwGetNotificationResourceManager.
Per ricevere notifiche in modo asincrono, resource manager può chiamare TmEnableCallbacks per configurare una routine di callback. KTM chiama la routine di callback ogni volta che inserisce una notifica nella coda del gestore delle risorse.
Quando un gestore di risorse chiama ZwCreateEnlistment per creare un'integrazione per una transazione, gestione risorse specifica i tipi di notifiche che deve ricevere. I responsabili delle risorse ricevono solo notifiche da registrare per ricevere.
Le costanti di notifica sono definite in Ktmtypes.h. I nomi delle costanti di notifica hanno un formato di TRANSACTION_NOTIFY_Xxx.
Il resto di questo argomento elenca tutte le costanti di notifica definite da Ktmtypes.h e le divide in tre gruppi:
Notifiche che i responsabili delle risorse possono ricevere
Notifiche che i responsabili delle transazioni superiori possono ricevere
Costanti di notifica definite ma attualmente non usate
Notifiche per i manager delle risorse
Tutti i manager delle risorse devono registrarsi per ricevere notifiche TRANSACTION_NOTIFY_PREPREPARE, TRANSACTION_NOTIFY_PREPARE e TRANSACTION_NOTIFY_COMMIT, anche se successivamente chiamano ZwReadOnlyEnlistment per contrassegnare un'adesione come di sola lettura.
I responsabili delle risorse possono supportare TRANSACTION_NOTIFY_SINGLE_PHASE_COMMIT, ma devono anche supportare le notifiche di pre-preparazione, preparazione e commit in più fasi.
L'elenco seguente contiene tutte le notifiche che i gestori di risorse possono ricevere:
TRANSACTION_NOTIFY_PREPREPARE
Quando viene inviato: un client chiama ZwCommitTransaction e nessun gestore risorse supporta il commit a singola fase o se un gestore transazioni superiore chiama ZwPrepareEnlistment.
Ricevuto da: Manager delle risorse.
Azione richiesta del destinatario: eseguire operazioni di pre-preparazione e quindi chiamare ZwPrepareComplete. Per altre informazioni sulle operazioni di pre-preparazione, vedere Gestione delle operazioni di commit.
Restrizioni: Anche resource manager deve supportare TRANSACTION_NOTIFY_PREPARE e TRANSACTION_NOTIFY_COMMIT.
NOTIFICA_PREPARAZIONE_TRANSAZIONE
Quando viene inviato: dopo TRANSACTION_NOTIFY_PREPREPARE se un client chiama ZwCommitTransaction e nessun gestore risorse supporta il commit a singola fase o se un gestore transazioni superiore chiama ZwPrepareEnlistment.
Ricevuto da: Manager delle risorse.
Azione richiesta del destinatario: Eseguire operazioni di preparazione e quindi chiamare ZwPrepareComplete. Per altre informazioni sulle operazioni di preparazione, vedere Gestione delle operazioni di commit.
Restrizioni: Anche resource manager deve supportare TRANSACTION_NOTIFY_PREPREPARE e TRANSACTION_NOTIFY_COMMIT.
TRANSACTION_NOTIFY_COMMIT
Quando viene inviato: dopo TRANSACTION_NOTIFY_PREPARE se un client chiama ZwCommitTransaction e nessun gestore risorse supporta il commit a singola fase o se un gestore transazioni superiore chiama ZwCommitEnlistment.
Ricevuto da: Resource Managers.
Azione richiesta del destinatario: eseguire operazioni di commit e quindi chiamare ZwCommitComplete. Per altre informazioni sulle operazioni di commit, vedere Gestione delle operazioni di commit.
Restrizioni: Anche resource manager deve supportare TRANSACTION_NOTIFY_PREPREPARE e TRANSACTION_NOTIFY_PREPARE.
NOTIFICA_TRANSIZIONE_COMMIT_SINGOLO_FASE
Quando viene inviato: un client chiama ZwCommitTransaction e un gestore risorse supporta operazioni di commit a singola fase.
Ricevuto da: responsabili delle risorse.
Azione richiesta del destinatario: eseguire il commit della transazione o chiamare ZwSinglePhaseReject. Per altre informazioni sulle operazioni di commit a singola fase, vedere Gestione delle operazioni di commit.
Restrizioni: Il gestore delle risorse deve anche supportare TRANSACTION_NOTIFY_PREPREPARE, TRANSACTION_NOTIFY_PREPARE e TRANSACTION_NOTIFY_COMMIT.
TRANSACTION_NOTIFY_ROLLBACK
Quando viene inviato: un client chiama ZwRollbackTransaction, un gestore transazioni superiore chiama ZwRollbackEnlistment o KTM rileva un errore ,ad esempio una scrittura non riuscita nel flusso di log.
Ricevuto da: sia i gestori delle risorse che i gestori delle transazioni superiori.
Azione richiesta del destinatario: eseguire tutte le operazioni necessarie per eseguire il rollback dei dati della transazione e quindi chiamare ZwRollbackComplete. Per altre informazioni sulle operazioni di rollback, vedere Gestione delle operazioni di rollback.
Restrizioni: Tutti i gestori di risorse e i gestori delle transazioni superiori devono supportare TRANSACTION_NOTIFY_ROLLBACK.
NOTIFICA_RECUPERO_TRANSAZIONE
Quando viene inviato: un gestore di risorse chiama ZwRecoverResourceManager.
Ricevuto da: responsabili delle risorse.
Azione richiesta del destinatario: il gestore delle risorse deve chiamare ZwRecoverEnlistment. Per altre informazioni sulle operazioni di ripristino, vedere Gestione delle operazioni di ripristino.
Restrizioni: Nessuno.
NOTIFICA_DI_RECUPERO_ULTIMA_TRANSAZIONE
Quando viene inviato: dopo che KTM ha inviato l'ultimo TRANSACTION_NOTIFY_RECOVER per le iscrizioni di un gestore di risorse.
Ricevuto da: responsabili delle risorse.
Azione richiesta del destinatario: terminare l'operazione di ripristino. Per altre informazioni sulle operazioni di ripristino, vedere Gestione delle operazioni di ripristino.
Restrizioni: Nessuno.
TRANSACTION_NOTIFY_INDOUBT
Al momento dell'invio: dopo che un gestore delle risorse chiama ZwRecoverEnlistment, se KTM non è in grado di determinare se eseguire il commit o il rollback della transazione (in genere perché il TPS ha un gestore delle transazioni superiore non disponibile).
Ricevuto da: Responsabili delle risorse.
Azione richiesta del destinatario: non eseguire alcuna operazione finché KTM non invia TRANSACTION_NOTIFY_COMMIT o TRANSACTION_NOTIFY_ROLLBACK.
Restrizioni: Nessuno.
TRANSACTION_NOTIFY_RM_DISCONNECTED
Quando viene inviato: Il gestore delle risorse che sta gestendo un'operazione di commit a fase singola chiude l'handle di arruolamento senza indicare che è stato eseguito il commit o il rollback della transazione.
Ricevuto da: Gestori delle risorse e gestori superiori delle transazioni che dispongono di registrazioni per la transazione.
Azione richiesta del destinatario: operazioni di pulizia specifiche delle transazioni. In genere, questa notifica è utile per i gestori delle risorse di sola lettura.
Restrizioni: Nessuno.
Notifiche per gestori transazioni superiori
I gestori di transazioni superiori possono ricevere le notifiche seguenti:
TRANSACTION_NOTIFY_ROLLBACK
Vedere la descrizione precedente.
NOTIFICA_TRANSAZIONE_RM_DISCONNESSO
Vedere la descrizione precedente.
TRANSACTION_NOTIFY_PREPREPARE_COMPLETE
Quando viene inviato: dopo che tutti i responsabili delle risorse hanno ricevuto TRANSACTION_NOTIFY_PREPREPARE e hanno risposto chiamando ZwPrepareComplete.
Ricevuto da: Responsabili superiori delle transazioni.
Azione richiesta del destinatario: il gestore delle transazioni superiore deve chiamare ZwPrepareEnlistment.
TRANSACTION_NOTIFY_PREPARE_COMPLETE
Quando inviato: dopo che tutti i responsabili delle risorse hanno ricevuto TRANSACTION_NOTIFY_PREPARE e risposto chiamando ZwPrepareComplete.
Ricevuto da: Responsabili superiori delle transazioni.
Azione richiesta del destinatario: il gestore delle transazioni superiore deve chiamare ZwCommitEnlistment.
TRANSACTION_NOTIFY_COMMIT_COMPLETE
Quando inviato: dopo che tutti i responsabili delle risorse hanno ricevuto TRANSACTION_NOTIFY_COMMIT e risposto chiamando ZwCommitComplete.
Ricevuto da: Responsabili superiori delle transazioni.
Azione richiesta del destinatario: operazioni di pulizia delle transazioni.
NOTIFICA_TRANSAZIONE_ROLLBACK_COMPLETA
Quando viene inviato: dopo che tutti i responsabili delle risorse hanno ricevuto TRANSACTION_NOTIFY_ROLLBACK e hanno risposto chiamando ZwRollbackComplete.
Ricevuto da: Responsabili superiori delle transazioni.
Azione richiesta del destinatario: operazioni di pulizia delle transazioni.
TRANSACTION_NOTIFY_RECOVER_QUERY
Quando viene inviato: un gestore transazioni superiore chiama ZwRecoverResourceManager.
Ricevuto da: gestori delle transazioni superlativi.
Azione richiesta del destinatario: il gestore delle transazioni superiore deve chiamare ZwCommitEnlistment o ZwRollbackEnlistment per l'integrazione.
TRANSACTION_NOTIFY_COMMIT_REQUEST
Quando viene inviato: un client chiama ZwCommitTransaction. Se un gestore transazioni superiore è registrato per questa notifica per un arruolamento, KTM invia TRANSACTION_NOTIFY_COMMIT_REQUEST al gestore transazioni superiore anziché inviare TRANSACTION_NOTIFY_COMMIT ai gestori delle risorse.
Ricevuto da: Manager delle transazioni di livello superiore.
Azione richiesta del destinatario: il gestore delle transazioni superiore chiama ZwCommitEnlistment.
TRANSACTION_NOTIFY_REQUEST_OUTCOME
Quando viene inviato: un gestore di risorse chiama TmRequestOutcomeEnlistment mentre la transazione è nello stato preparato.
Ricevuto da: Responsabili superiori delle transazioni.
Azione richiesta del destinatario: il gestore delle transazioni superiore deve chiamare ZwCommitEnlistment o ZwRollbackEnlistment.
Notifiche inutilizzate
Le notifiche seguenti sono definite in Ktmtypes.h, ma attualmente KTM non le supporta:
TRANSACTION_NOTIFY_DELEGATE_COMMIT
Maschera_Notifica_Transazione_Registrare
TRANSACTION_NOTIFY_ENLIST_PREPREPARE
TRANSACTION_NOTIFY_MARSHAL
NOTIFICA_TRANSAZIONE_PROMOZIONE
TRANSACTION_NOTIFY_PROMOTE_NEW
TRANSACTION_NOTIFY_PROPAGATE_PULL
TRANSACTION_NOTIFY_PROPAGATE_PUSH
TRANSACTION_NOTIFY_TM_ONLINE
TRANSACTION_NOTIFY_COMMIT_FINALIZE