Class FileDurableLog
java.lang.Object
org.j7m.middleware.durablelog.FileDurableLog
- All Implemented Interfaces:
AutoCloseable, org.j7m.middleware.api.durablelog.DurableLog
public final class FileDurableLog
extends Object
implements org.j7m.middleware.api.durablelog.DurableLog
File-backed append-only durable log.
-
Constructor Summary
ConstructorsConstructorDescriptionFileDurableLog(DurableLogConfig config) Creates a log using validated configuration. -
Method Summary
Modifier and TypeMethodDescriptionorg.j7m.middleware.api.durablelog.LogAppendResultappend(org.j7m.middleware.api.durablelog.LogStreamId stream, List<org.j7m.middleware.api.durablelog.LogRecord> records, org.j7m.middleware.api.durablelog.AppendOptions options) voidclose()config()Returns config for tests and diagnostics.org.j7m.middleware.api.durablelog.LogSnapshotcreateSnapshot(org.j7m.middleware.api.durablelog.LogStreamId stream, org.j7m.middleware.api.durablelog.SnapshotOptions options) Optional<org.j7m.middleware.api.durablelog.LogOffset> findLatestOffsetByMetadata(org.j7m.middleware.api.durablelog.LogStreamId stream, String metadataKey, String metadataValue, int maxRecordsExamined) Finds the latest record offset in a stream whose header metadata contains the supplied key and value while examining at most a bounded number of records.org.j7m.middleware.api.durablelog.LogCursoropenCursor(org.j7m.middleware.api.durablelog.LogStreamId stream, org.j7m.middleware.api.durablelog.LogOffset offset, org.j7m.middleware.api.durablelog.CursorOptions options) org.j7m.middleware.api.durablelog.LogRecoveryReportrecover(org.j7m.middleware.api.durablelog.RecoveryOptions options) org.j7m.middleware.api.durablelog.LogStatusstatus()
-
Constructor Details
-
FileDurableLog
Creates a log using validated configuration.- Parameters:
config- durable-log configuration
-
-
Method Details
-
append
public org.j7m.middleware.api.durablelog.LogAppendResult append(org.j7m.middleware.api.durablelog.LogStreamId stream, List<org.j7m.middleware.api.durablelog.LogRecord> records, org.j7m.middleware.api.durablelog.AppendOptions options) - Specified by:
appendin interfaceorg.j7m.middleware.api.durablelog.DurableLog
-
openCursor
public org.j7m.middleware.api.durablelog.LogCursor openCursor(org.j7m.middleware.api.durablelog.LogStreamId stream, org.j7m.middleware.api.durablelog.LogOffset offset, org.j7m.middleware.api.durablelog.CursorOptions options) - Specified by:
openCursorin interfaceorg.j7m.middleware.api.durablelog.DurableLog
-
createSnapshot
public org.j7m.middleware.api.durablelog.LogSnapshot createSnapshot(org.j7m.middleware.api.durablelog.LogStreamId stream, org.j7m.middleware.api.durablelog.SnapshotOptions options) - Specified by:
createSnapshotin interfaceorg.j7m.middleware.api.durablelog.DurableLog
-
recover
public org.j7m.middleware.api.durablelog.LogRecoveryReport recover(org.j7m.middleware.api.durablelog.RecoveryOptions options) - Specified by:
recoverin interfaceorg.j7m.middleware.api.durablelog.DurableLog
-
status
public org.j7m.middleware.api.durablelog.LogStatus status()- Specified by:
statusin interfaceorg.j7m.middleware.api.durablelog.DurableLog
-
close
public void close()- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceorg.j7m.middleware.api.durablelog.DurableLog
-
config
Returns config for tests and diagnostics.- Returns:
- durable-log configuration
-
findLatestOffsetByMetadata
public Optional<org.j7m.middleware.api.durablelog.LogOffset> findLatestOffsetByMetadata(org.j7m.middleware.api.durablelog.LogStreamId stream, String metadataKey, String metadataValue, int maxRecordsExamined) Finds the latest record offset in a stream whose header metadata contains the supplied key and value while examining at most a bounded number of records.This operation is intended for bounded local recovery of higher-level services that publish authoritative checkpoint records. It scans the in-memory index in reverse order and reads only the fixed frame header and metadata prefix until a matching header is found or
maxRecordsExaminedrecords have been inspected. The method does not allocate, copy, interpret, or checksum payload bytes; full-frame checksum validation is performed by normal recovery and cursor reads. The returned offset is stable until retention removes the corresponding segment; callers that need replay from the offset should open a cursor promptly.- Specified by:
findLatestOffsetByMetadatain interfaceorg.j7m.middleware.api.durablelog.DurableLog- Parameters:
stream- stream to inspectmetadataKey- required metadata keymetadataValue- required metadata valuemaxRecordsExamined- hard upper bound on inspected records- Returns:
- latest matching offset, or empty when no record matches
- Throws:
org.j7m.middleware.api.durablelog.DurableLogException- when the log is closed, arguments are invalid, or the underlying segment cannot be read
-