Bagikan melalui


Melakukan Pemulihan

Manajer sumber daya memfasilitasi resolusi pendaftaran tahan lama dalam transaksi dengan mendaftarkan kembali peserta transaksi setelah kegagalan sumber daya.

Proses Pemulihan

Untuk mendaftarkan sumber daya secara tahan lama (dijelaskan oleh implementasi antarmuka IEnlistmentNotification) yang nantinya dapat memenuhi syarat untuk pemulihan, Anda harus memanggil metode EnlistDurable. Selain itu, Anda harus menyediakan metode EnlistDurable dengan pengidentifikasi manajer sumber daya (Guid) yang digunakan untuk memberi label peserta transaksi secara konsisten jika terjadi kegagalan sumber daya. Untuk alasan ini, Guid yang disediakan untuk panggilan Daftar Awal harus identik dengan parameter resourceManagerIdentifier dalam panggilan Reenlist selama pemulihan. Jika tidak, [TransactionException][] akan muncul. Untuk informasi selengkapnya tentang pendaftaran yang tahan lama, lihat Mendaftarkan Sumber Daya sebagai Peserta dalam Transaksi.

Dalam fase persiapan (fase 1) protokol 2PC, ketika implementasi Manajer sumber daya tahan lama Anda menerima pemberitahuan Prepare, Manajer tersebut harus melakukan pengelogan catatan persiapannya selama fase ini. Catatan harus berisi semua informasi yang diperlukan untuk menyelesaikan transaksi pada penerapan. Catatan persiapan nantinya dapat diakses selama pemulihan dengan mengambil properti RecoveryInformation dari panggilan balik preparingEnlistment. Pengelogan rekaman tidak perlu dilakukan dalam metode Prepare karena RM dapat melakukan ini pada rangkaian pekerja.

Prosesnya terdiri dari langkah-langkah berikut:

Langkah 1 - Daftar Ulang

Manajer sumber daya memeriksa catatan informasi persiapan untuk setiap pendaftaran yang masih meragukan. Hal ini dilakukan dengan memeriksa propertiRecoveryInformation panggilan balikPreparingEnlistment, yang diteruskan ke manajer sumber daya dalam pemberitahuanPrepare selama fase 1.

Untuk setiap pendaftaran tersebut, manajer sumber daya memanggil Reenlist pada manajer transaksi. Metode ini meneruskan Guid unik yang mengidentifikasi manajer sumber daya, serta informasi pendaftaran dalam byte array. Objek Enlistment baru dikembalikan. Jika pendaftaran ulang gagal dengan pengecualian, manajer sumber daya harus mencoba kembali di lain waktu.

Anda hanya boleh memanggil metode Reenlist ketika manajer sumber daya memulai ulang dari kegagalan. Selain itu, Anda hanya boleh memasukkan kembali transaksi yang tidak terselesaikan yang dicatat oleh manajer sumber daya selama fase Persiapan awal penerapan dua fase. Setiap upaya untuk memanggil metode ini pada waktu yang tidak valid dapat menghasilkan hasil yang salah.

Ketika peserta diaktifkan kembali menggunakan metode ini, metode fase 2 IEnlistmentNotification yang berhubungan dengan hasil transaksi (yaitu, Commit, Rollback atau InDoubt ) dipanggil sebagaimana mestinya.

Langkah 2 - Menyelesaikan pemulihan

Ketika semua pendaftaran ulang selesai, manajer sumber daya memanggil metode RecoveryComplete. Metode ini menyelesaikan pemulihan dan memberi tahu manajer transaksi bahwa manajer sumber daya tidak memiliki transaksi yang diragukan lagi. Dengan demikian, manajer sumber daya menjamin bahwa manajer tersebut tidak akan memanggil metode Reenlist lagi.

Manajer sumber daya tidak diperlukan untuk menyelesaikan semua transaksi yang meragukan sebelum mendaftar dalam transaksi baru. Langkah pertama dapat dilakukan kapan saja setelah manajer sumber daya menjalin hubungan dengan manajer transaksi, tetapi setelah RecoveryComplete dipanggil (langkah 2); langkah 1 tidak dapat dilakukan lagi. Langkah 2 dapat diulang beberapa kali tanpa memengaruhi hasil transaksi.