tero
Version:
tero is a JSON document Manager, with ACID complaint and backup recovery mechanism.
63 lines (62 loc) • 2.06 kB
TypeScript
export interface LogEntry {
lsn: number;
transactionId: string;
operation: 'BEGIN' | 'WRITE' | 'DELETE' | 'COMMIT' | 'ROLLBACK' | 'CHECKPOINT';
key?: string;
beforeImage?: any;
afterImage?: any;
timestamp: number;
checksum: string;
}
export declare class WriteAheadLog {
private logPath;
private currentLSN;
private logBuffer;
private readonly BUFFER_SIZE;
private readonly LOG_FILE_SIZE_LIMIT;
constructor(dbPath: string);
private initializeWAL;
private recoverFromLog;
private calculateChecksum;
private verifyChecksum;
writeLog(entry: Omit<LogEntry, 'lsn' | 'checksum' | 'timestamp'>): number;
private flushBuffer;
private checkLogRotation;
private rotateLog;
getLogEntries(fromLSN?: number): LogEntry[];
forceFlush(): void;
getCurrentLSN(): number;
}
export declare class LockManager {
private locks;
private readonly DEADLOCK_TIMEOUT;
acquireLock(key: string, transactionId: string, lockType: 'shared' | 'exclusive'): Promise<void>;
private canGrantLock;
releaseLock(key: string, transactionId: string): void;
private processWaitQueue;
private removeLockRequest;
releaseAllLocks(transactionId: string): void;
detectDeadlock(): string[];
}
export declare class ACIDStorageEngine {
private wal;
private lockManager;
private dbPath;
private activeTransactions;
constructor(dbPath: string);
private initializeStorage;
private performCrashRecovery;
private redoOperation;
private redoDelete;
private undoOperation;
beginTransaction(): string;
write(transactionId: string, key: string, data: any): Promise<void>;
read(transactionId: string, key: string): Promise<any>;
delete(transactionId: string, key: string): Promise<void>;
commitTransaction(transactionId: string): Promise<void>;
rollbackTransaction(transactionId: string): Promise<void>;
private deepMerge;
getActiveTransactions(): string[];
forceCheckpoint(): void;
destroy(): void;
}