Menggunakan Aliran Log dengan KTM

Sistem pemrosesan transaksi (TPM) berbasis KTM harus mencatat aktivitas transaksi dengan menggunakan Common Log File System (CLFS). KTM membuat aliran log untuk setiap objek manajer transaksi. Setiap manajer sumber daya harus membuat aliran lognya sendiri.

Membuat Aliran Log untuk Objek Manajer Transaksi

Saat manajer sumber daya Anda memanggil ZwCreateTransactionManager, Anda harus menentukan nama aliran log CLFS. Jika aliran yang ditentukan tidak ada, KTM akan membuatnya. Jika aliran sudah ada, ZwCreateTransactionManager membukanya kembali. KTM menetapkan aliran log ini ke objek manajer transaksi.

KTM menggunakan aliran log objek manajer transaksi untuk merekam informasi status internal tentang objek manajer transaksi dan semua objek manajer sumber daya, objek transaksi, dan objek pendaftaran yang terkait dengan objek manajer transaksi. Jika operasi transaksi terganggu sebelum selesai, KTM dapat menggunakan informasi dalam log untuk menentukan apakah akan menerapkan atau mengembalikan transaksi.

KTM tidak merekam data transaksi yang diterima atau dikirim oleh manajer sumber daya ke klien. Resource manager harus menggunakan aliran log mereka sendiri untuk merekam informasi ini.

Resource manager dapat memanggil ZwQueryInformationTransactionManager untuk mendapatkan informasi tentang aliran log objek manajer transaksi, seperti nama jalur aliran log atau GUID yang ditetapkan KTM ke aliran.

Membuat Aliran Log untuk Resource Manager

Dalam kode inisialisasinya, setiap manajer sumber daya harus memanggil ClfsCreateLogFile untuk membuat aliran lognya sendiri. Setiap manajer sumber daya harus menggunakan alirannya untuk merekam semua informasi tentang transaksi yang diperlukan untuk menerapkan, mengembalikan, atau memulihkan data transaksi.

KTM dan semua manajer sumber daya TPS dapat menggunakan satu file log, tetapi setiap komponen TPS harus menggunakan aliran yang berbeda dalam file log. Untuk informasi tentang cara menentukan aliran individual dalam file log, lihat ClfsCreateLogFile.

Secara berkala, KTM membuat area hidupkan ulang di aliran log manajer transaksi. Ketika KTM melakukan operasi pemulihan, KTM membaca area hidupkan ulang terakhir untuk memulihkan status objek yang terbuka sebelum sistem dimatikan. Demikian pula, manajer sumber daya Anda harus secara berkala membuat area hidupkan ulang di aliran lognya. Misalnya, resource manager Anda mungkin membuat area hidupkan ulang setiap kali operasi transaksi selesai.

Untuk informasi selengkapnya tentang area hidupkan ulang di aliran log CLFS, lihat Membaca Mulai Ulang Rekaman dari Aliran CLFS. Lihat juga rutinitas ClfsWriteRestartArea, ClfsReadRestartArea, dan ClfsReadPreviousRestartArea .

Menggunakan Aliran Log untuk Pemulihan

Setelah manajer sumber daya Anda memanggil ZwCreateTransactionManager, manajer sumber daya harus memanggil ZwRecoverTransactionManager. Rutinitas ZwRecoverTransactionManager membaca aliran log objek manajer transaksi untuk memulihkan status TPS ke titik baik yang diketahui. Jika komputer dimatikan dengan benar—atau tidak dimatikan—setelah resource manager terakhir dimuat, aliran log berisi informasi minimal. Jika terjadi crash sistem, aliran log berisi informasi pemulihan yang cukup untuk memulihkan semua transaksi ke status yang diketahui.

Setelah manajer sumber daya Anda memanggil ZwCreateResourceManager, manajer sumber daya harus memanggil ZwRecoverResourceManager. Rutinitas ZwRecoverResourceManager mencoba memulihkan transaksi yang terkait dengan setiap pendaftaran manajer sumber daya. Untuk informasi selengkapnya tentang cara memulihkan transaksi manajer sumber daya, lihat Menangani Operasi Pemulihan.

Menyimpan Data Transaksi

Resource manager yang menggunakan aliran log CLFS harus menyimpan data transaksi di area marshalling CLFS. CLFS secara berkala memindahkan data dari area marshalling aliran log ke media penyimpanan permanen. Untuk mencatat operasi yang memodifikasi data, manajer sumber daya mungkin melakukan hal berikut:

  1. Salin data asli, sebelum operasi tulis memodifikasinya, ke area marshalling.

  2. Lakukan operasi pada salinan data tanpa memodifikasi media penyimpanan permanen database.

  3. Salin data baru ke area marshalling.

Jika manajer sumber daya menerima pemberitahuan pemutaran kembali, manajer sumber daya dapat memulihkan data asli dari aliran log. Jika menerima pemberitahuan penerapan, manajer sumber daya dapat menyalin data yang dimodifikasi dari aliran log ke media penyimpanan permanen database.

Resource manager juga dapat menggunakan rutinitas ZwSetInformationEnlistment untuk menyimpan informasi pemulihan dalam objek pendaftaran. KTM menyimpan informasi ini dalam aliran lognya dan membacanya dari aliran log selama operasi pemulihan. Oleh karena itu, manajer sumber daya dapat memperoleh informasi pemulihan ini kapan saja dengan memanggil ZwQueryInformationEnlistment.