Utföra återställning
En resurshanterare underlättar lösningen av varaktiga registreringar i en transaktion genom att återlista transaktionsdeltagaren efter resursfel.
Återställningsprocessen
Om du vill registrera en resurs (beskrivs av en implementering av IEnlistmentNotification gränssnittet) som senare kan vara berättigad till återställning bör du anropa EnlistDurable metoden. Dessutom måste du ange EnlistDurable metoden med en resource manager-identifierare (a Guid) som används för att konsekvent märka deltagaren i transaktionen i händelse av ett resursfel. Därför Guid bör det som anges i det första anropet för en lista vara identiskt med parametern resourceManagerIdentifier i anropet under återställningen Reenlist . Annars TransactionException kastas. Mer information om varaktiga registreringar finns i Registrera resurser som deltagare i en transaktion.
I förberedelsefasen (fas 1) i 2PC-protokollet, när implementeringen av en hållbar resurshanterare tar emot Prepare meddelandet, bör den logga sin förberedelsepost under den här fasen. Posten ska innehålla all information som krävs för att slutföra transaktionen vid incheckningen. Förbered-posten kan senare nås under återställningen RecoveryInformation genom att hämta egenskapen för prepareEnlistment-återanropet. Postloggningen behöver inte utföras i Prepare metoden eftersom RM kan göra detta på en arbetstråd.
Återställningsprocessen består av följande två steg:
Steg 1 – Återlista
Resurshanteraren undersöker förberedelseinformationsposten för varje lista som är osäker. Detta görs genom att RecoveryInformation undersöka egenskapen för återanropet PreparingEnlistment , som skickas till resurshanteraren i Prepare meddelandet under fas 1.
För varje sådan registrering som den undersöker anropas Reenlist den på transaktionshanteraren. Den här metoden skickar vidare en unik Guid som identifierar resurshanteraren, samt listans information i en bytematris. Ett nytt Enlistment objekt returneras. Om omlistningen misslyckas med ett undantag måste resurshanteraren försöka igen vid ett senare tillfälle.
Du bör bara anropa Reenlist metoden när en resurshanterare startas om från ett fel. Dessutom bör du bara återlista olösta transaktioner som loggats av en resurshanterare under den inledande förberedelsefasen av en tvåfasincheckning. Alla försök att anropa den här metoden vid ogiltiga tidpunkter kan ge felaktiga resultat.
När en deltagare återlistas med den här metoden anropas fas 2-metoderna IEnlistmentNotification för som motsvarar transaktionens utfall (dvs. Commit , Rollback eller InDoubt ) efter behov.
Steg 2 – Slutföra återställningen
När alla omlistningar är klara anropar RecoveryComplete resurshanteraren metoden. Den här metoden slutför återställningen och informerar transaktionshanteraren om att resurshanteraren inte har fler osäkra transaktioner. På så sätt garanterar resurshanteraren att den inte anropar Reenlist metoden igen.
En resurshanterare krävs inte för att lösa alla osäkra transaktioner innan du registrerar dig för nya transaktioner. Det första steget kan utföras när som helst efter att resurshanteraren har upprättat en relation med transaktionshanteraren, men när RecoveryComplete har anropats (steg 2), kan steg 1 inte utföras igen. Steg 2 kan upprepas flera gånger utan att påverka resultatet av transaktioner.