Độ bền dữ liệu và phục hồi sau sự cố
Repository cung cấp journaling sự kiện và view change của đồng thuận. Backup database, snapshot filesystem, khôi phục khóa và mở rộng hạ tầng thuộc về deployment.
1. Ghi nhật ký sự kiện
TransactionJournal ghi các sự kiện đang chờ trước khi chúng đi vào ordering
service. Cơ chế này bảo vệ sự kiện khi ứng dụng crash hoặc hệ điều hành tắt đột
ngột.
Mỗi event được ghi nối tiếp và fsync đồng bộ trước khi đưa vào hàng đợi. Fsync
luôn được bật và không thể tắt qua cấu hình. Khi khởi động, recovery replay các
entry journal và ghi event đã khôi phục vào block storage trước khi Ordering
Service hoạt động. Frame cuối chưa hoàn chỉnh trong journal đang hoạt động sẽ
bị cắt bỏ trước khi ghi entry mới. Frame hoàn chỉnh nhưng chứa Arrow data lỗi
khiến recovery thất bại; lỗi replay, chứng thực hoặc xử lý block giữ Ordering
Service ở MAINTENANCE cho đến khi recovery thành công.
Trong lúc khởi động, kiểm tra GET /api/ledger/ready. Endpoint trả HTTP 200 khi
Ordering Service của mọi Sub-Chain đã đăng ký ở trạng thái ACTIVE, và HTTP
503 khi còn service đang recovery hoặc ở trạng thái maintenance.
from hierachain.error_mitigation.journal import TransactionJournal
journal = TransactionJournal(storage_dir="data/journal")
journal.log_event(event_dict)
2. Hành vi của đồng thuận sau restart
BFTConsensus sử dụng BFTViewChangeManager khi leader hiện tại hỏng hoặc
timeout view change hết hạn. Manager điều phối quorum và cài đặt view mới để
đồng thuận tiếp tục mà không cần recovery engine riêng.
3. Trách nhiệm phục hồi của deployment
Deployment phải cung cấp và xác minh:
- backup database và filesystem;
- quy trình backup và khôi phục khóa;
- chính sách snapshot retention và rollback;
- thay thế node và mở rộng hạ tầng.
Các thao tác này cố ý không được expose thành các class tự động trong
hierachain.error_mitigation.