recovery

package
v0.0.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 19, 2026 License: MIT Imports: 14 Imported by: 0

Documentation

Overview

Package recovery provides crash recovery for XxSql storage engine.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Manager

type Manager struct {
	// contains filtered or unexported fields
}

Manager handles crash recovery operations.

func NewManager

func NewManager(config ManagerConfig) *Manager

NewManager creates a new recovery manager.

func (*Manager) ClearRecoveryState

func (m *Manager) ClearRecoveryState() error

ClearRecoveryState removes recovery state file.

func (*Manager) GetRecoveryLogs

func (m *Manager) GetRecoveryLogs() ([]RecoveryLog, error)

GetRecoveryLogs returns recent recovery logs.

func (*Manager) GetState

func (m *Manager) GetState() *RecoveryState

GetState returns current recovery state (thread-safe).

func (*Manager) LoadRecoveryState

func (m *Manager) LoadRecoveryState() (*RecoveryState, error)

LoadRecoveryState loads recovery state from disk.

func (*Manager) LogRecovery

func (m *Manager) LogRecovery(phase, message string, success bool) error

LogRecovery logs a recovery event.

func (*Manager) MarkClean

func (m *Manager) MarkClean() error

MarkClean marks database as clean (successful shutdown).

func (*Manager) MarkUnclean

func (m *Manager) MarkUnclean() error

MarkUnclean marks database as unclean for recovery detection.

func (*Manager) NeedRecovery

func (m *Manager) NeedRecovery() (bool, error)

NeedRecovery checks if recovery is needed.

func (*Manager) Recover

func (m *Manager) Recover() (*RecoveryState, error)

Recover performs crash recovery using ARIES-style algorithm. Returns the recovery state and any error.

func (*Manager) RegisterTable

func (m *Manager) RegisterTable(name string, tbl *table.Table)

RegisterTable registers a table for recovery.

func (*Manager) SaveRecoveryState

func (m *Manager) SaveRecoveryState() error

SaveRecoveryState saves recovery state to disk.

func (*Manager) SetSequenceManager

func (m *Manager) SetSequenceManager(sm *sequence.Manager)

SetSequenceManager sets the sequence manager.

func (*Manager) UnregisterTable

func (m *Manager) UnregisterTable(name string)

UnregisterTable unregisters a table.

type ManagerConfig

type ManagerConfig struct {
	DataDir       string
	WALManager    *wal.Manager
	BufferPool    *buffer.BufferPool
	CheckpointMgr *checkpoint.Manager
}

ManagerConfig holds recovery manager configuration.

type RecoveryLog

type RecoveryLog struct {
	Timestamp time.Time `json:"timestamp"`
	Phase     string    `json:"phase"`
	Message   string    `json:"message"`
	Success   bool      `json:"success"`
}

RecoveryLog logs a recovery operation.

type RecoveryState

type RecoveryState struct {
	Phase          string    `json:"phase"`
	StartTime      time.Time `json:"start_time"`
	EndTime        time.Time `json:"end_time,omitempty"`
	RecordsRead    int64     `json:"records_read"`
	RecordsRedone  int64     `json:"records_redone"`
	RecordsUndone  int64     `json:"records_undone"`
	TxnsRecovered  int       `json:"txns_recovered"`
	PagesRecovered int       `json:"pages_recovered"`
	Success        bool      `json:"success"`
	Error          string    `json:"error,omitempty"`
}

RecoveryState represents the state of recovery.

type TransactionState

type TransactionState struct {
	TxnID      uint64
	Status     string // "active", "committed", "aborted"
	FirstLSN   wal.LSN
	LastLSN    wal.LSN
	Operations []*wal.Record
}

TransactionState tracks transaction state during recovery.

type Value

type Value = types.Value

Value helper for types (to avoid import cycle)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL