lock, err := lockFile(filepath.Join(root, "lock"))
if err != nil {
- return nil, err
+ return nil, fmt.Errorf("lock message log: %w", err)
}
l := &Log{
if l.index.count > 0 {
record, _, err := l.index.Read(l.index.count - 1)
if err != nil {
- return err
+ return fmt.Errorf("read last log position: %w", err)
}
last := decodePosition(record)
}
}
- return l.journal.Scan(ctx, start, func(line []byte, place Position) error {
+ err := l.journal.Scan(ctx, start, func(line []byte, place Position) error {
var message Message
err := json.Unmarshal(line, &message)
return fmt.Errorf("message %d: %w", message.ID, err)
}
- return l.addIndex(place)
+ err = l.addIndex(place)
+ if err != nil {
+ return fmt.Errorf("index scanned message: %w", err)
+ }
+
+ return nil
})
+ if err != nil {
+ return fmt.Errorf("scan message journal: %w", err)
+ }
+
+ return nil
}
func (l *Log) addIndex(place Position) error {
func (l *Log) Message(id int) (Message, error) {
record, found, err := l.index.Read(id)
if err != nil {
- return Message{}, err
+ return Message{}, fmt.Errorf("read message position: %w", err)
}
if !found {