Skip to content

Commit 55a4f5d

Browse files
committed
Simplify segment loading
1 parent 0f490f2 commit 55a4f5d

File tree

3 files changed

+14
-13
lines changed

3 files changed

+14
-13
lines changed

src/FileSegment.zig

+1-1
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ pub fn search(self: Self, sorted_hashes: []const u32, results: *SearchResults) !
9090
}
9191
}
9292

93-
pub fn open(self: *Self, info: SegmentInfo) !void {
93+
pub fn load(self: *Self, info: SegmentInfo) !void {
9494
try filefmt.readSegmentFile(self.dir, info, self);
9595
}
9696

src/Index.zig

+4-12
Original file line numberDiff line numberDiff line change
@@ -144,15 +144,6 @@ pub fn deinit(self: *Self) void {
144144
self.dir.close();
145145
}
146146

147-
fn loadSegment(self: *Self, info: SegmentInfo) !FileSegmentNode {
148-
var node = try FileSegmentList.createSegment(self.allocator, .{ .dir = self.dir });
149-
errdefer FileSegmentList.destroySegment(self.allocator, &node);
150-
151-
try node.value.open(info);
152-
153-
return node;
154-
}
155-
156147
fn loadSegments(self: *Self, create: bool) !u64 {
157148
self.segments_lock.lock();
158149
defer self.segments_lock.unlock();
@@ -168,14 +159,15 @@ fn loadSegments(self: *Self, create: bool) !u64 {
168159
return err;
169160
};
170161
defer self.allocator.free(segment_ids);
162+
log.info("found {} segments in manifest", .{segment_ids.len});
171163

172164
try self.file_segments.segments.value.nodes.ensureTotalCapacity(self.allocator, segment_ids.len);
173-
174165
var last_commit_id: u64 = 0;
175-
for (segment_ids) |segment_id| {
176-
const node = try self.loadSegment(segment_id);
166+
for (segment_ids, 1..) |segment_id, i| {
167+
const node = try FileSegmentList.loadSegment(self.allocator, segment_id, .{ .dir = self.dir });
177168
self.file_segments.segments.value.nodes.appendAssumeCapacity(node);
178169
last_commit_id = node.value.info.getLastCommitId();
170+
log.info("loaded segment {} ({}/{})", .{ last_commit_id, i, segment_ids.len });
179171
}
180172
return last_commit_id;
181173
}

src/segment_list.zig

+9
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,15 @@ pub fn SegmentList(Segment: type) type {
6565
segment.release(allocator, Segment.deinit, .{.delete});
6666
}
6767

68+
pub fn loadSegment(allocator: Allocator, info: SegmentInfo, options: Segment.Options) !Node {
69+
var node = try createSegment(allocator, options);
70+
errdefer destroySegment(allocator, &node);
71+
72+
try node.value.load(info);
73+
74+
return node;
75+
}
76+
6877
pub fn destroySegments(allocator: Allocator, segments: *SharedPtr(Self)) void {
6978
segments.release(allocator, Self.deinit, .{ allocator, .delete });
7079
}

0 commit comments

Comments
 (0)