Skip to content

Commit e1a0069

Browse files
committed
Code cleanup
1 parent b0b7867 commit e1a0069

File tree

2 files changed

+11
-23
lines changed

2 files changed

+11
-23
lines changed

src/Index.zig

+11-20
Original file line numberDiff line numberDiff line change
@@ -151,15 +151,15 @@ fn loadSegment(self: *Self, segment_id: SegmentId) !FileSegmentNode {
151151
return node;
152152
}
153153

154-
fn loadSegments(self: *Self) !void {
154+
fn loadSegments(self: *Self) !u64 {
155155
self.segments_lock.lock();
156156
defer self.segments_lock.unlock();
157157

158158
const segment_ids = filefmt.readIndexFile(self.dir, self.allocator) catch |err| {
159159
if (err == error.FileNotFound) {
160160
if (self.options.create) {
161161
try self.updateIndexFile(self.file_segments.segments.value);
162-
return;
162+
return 0;
163163
}
164164
return error.IndexNotFound;
165165
}
@@ -169,10 +169,13 @@ fn loadSegments(self: *Self) !void {
169169

170170
try self.file_segments.segments.value.nodes.ensureTotalCapacity(self.allocator, segment_ids.len);
171171

172+
var max_commit_id: u64 = 0;
172173
for (segment_ids) |segment_id| {
173174
const node = try self.loadSegment(segment_id);
174175
self.file_segments.segments.value.nodes.appendAssumeCapacity(node);
176+
max_commit_id = @max(max_commit_id, node.value.max_commit_id);
175177
}
178+
return max_commit_id;
176179
}
177180

178181
fn doCheckpoint(self: *Self) !bool {
@@ -356,23 +359,18 @@ fn stopMemorySegmentMergeThread(self: *Self) void {
356359
}
357360

358361
pub fn open(self: *Self) !void {
359-
try self.loadSegments();
362+
const max_commit_id = try self.loadSegments();
360363

361364
// start these threads after loading file segments, but before replaying oplog to memory segments
362365
try self.startFileSegmentMergeThread();
363366
try self.startMemorySegmentMergeThread();
364367
try self.startCheckpointThread();
365368

366-
try self.oplog.open(self.getMaxCommitId(), updateInternal, self);
369+
try self.oplog.open(max_commit_id + 1, updateInternal, self);
367370

368371
log.info("index loaded", .{});
369372
}
370373

371-
const Checkpoint = struct {
372-
src: *MemorySegmentNode,
373-
dest: ?*FileSegmentNode = null,
374-
};
375-
376374
fn maybeScheduleCheckpoint(self: *Self) void {
377375
if (self.memory_segments.segments.value.getFirst()) |first_node| {
378376
if (first_node.value.getSize() >= self.options.min_segment_size) {
@@ -462,24 +460,17 @@ pub fn search(self: *Self, hashes: []const u32, allocator: std.mem.Allocator, de
462460
var results = SearchResults.init(allocator);
463461
errdefer results.deinit();
464462

465-
var segments = self.acquireSegments();
466-
defer self.releaseSegments(&segments);
463+
var snapshot = self.acquireSegments();
464+
defer self.releaseSegments(&snapshot); // FIXME this possibly deletes orphaned segments, do it in a separate thread
467465

468-
try segments.file_segments.value.search(sorted_hashes, &results, deadline);
469-
try segments.memory_segments.value.search(sorted_hashes, &results, deadline);
466+
try snapshot.file_segments.value.search(sorted_hashes, &results, deadline);
467+
try snapshot.memory_segments.value.search(sorted_hashes, &results, deadline);
470468

471469
results.sort();
472470

473471
return results;
474472
}
475473

476-
pub fn getMaxCommitId(self: *Self) u64 {
477-
var segments = self.acquireSegments();
478-
defer self.releaseSegments(&segments);
479-
480-
return @max(segments.file_segments.value.getMaxCommitId(), segments.memory_segments.value.getMaxCommitId());
481-
}
482-
483474
test {
484475
_ = @import("index_tests.zig");
485476
}

src/server.zig

-3
Original file line numberDiff line numberDiff line change
@@ -272,17 +272,14 @@ fn handleHeadIndex(ctx: *Context, req: *httpz.Request, res: *httpz.Response) !vo
272272

273273
const GetIndexResponse = struct {
274274
status: []const u8,
275-
max_commit_id: u64,
276275
};
277276

278277
fn handleGetIndex(ctx: *Context, req: *httpz.Request, res: *httpz.Response) !void {
279278
const index_ref = try getIndex(ctx, req, res, true) orelse return;
280-
const index = &index_ref.index;
281279
defer releaseIndex(ctx, index_ref);
282280

283281
const response = GetIndexResponse{
284282
.status = "ok",
285-
.max_commit_id = index.getMaxCommitId(),
286283
};
287284
return res.json(&response, .{});
288285
}

0 commit comments

Comments
 (0)