Skip to content

Commit 8a8eab7

Browse files
committed
Make Oplog own its own dir instance
1 parent 420b909 commit 8a8eab7

File tree

2 files changed

+13
-14
lines changed

2 files changed

+13
-14
lines changed

src/Index.zig

+3-6
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ options: Options,
4343
allocator: std.mem.Allocator,
4444

4545
data_dir: std.fs.Dir,
46-
oplog_dir: std.fs.Dir,
4746

4847
oplog: Oplog,
4948

@@ -88,8 +87,8 @@ pub fn init(allocator: std.mem.Allocator, dir: std.fs.Dir, options: Options) !Se
8887
var data_dir = try dir.makeOpenPath("data", .{ .iterate = true });
8988
errdefer data_dir.close();
9089

91-
var oplog_dir = try dir.makeOpenPath("oplog", .{ .iterate = true });
92-
errdefer oplog_dir.close();
90+
var oplog = try Oplog.init(allocator, data_dir);
91+
errdefer oplog.deinit();
9392

9493
const memory_segments = try SegmentListManager(MemorySegment).init(
9594
allocator,
@@ -120,8 +119,7 @@ pub fn init(allocator: std.mem.Allocator, dir: std.fs.Dir, options: Options) !Se
120119
.options = options,
121120
.allocator = allocator,
122121
.data_dir = data_dir,
123-
.oplog_dir = oplog_dir,
124-
.oplog = Oplog.init(allocator, oplog_dir),
122+
.oplog = oplog,
125123
.segments_lock = .{},
126124
.memory_segments = memory_segments,
127125
.file_segments = file_segments,
@@ -140,7 +138,6 @@ pub fn deinit(self: *Self) void {
140138
self.file_segments.deinit();
141139

142140
self.oplog.deinit();
143-
self.oplog_dir.close();
144141
self.data_dir.close();
145142
}
146143

src/Oplog.zig

+10-8
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,10 @@ max_file_size: usize = 1_000_000,
3030

3131
next_commit_id: u64 = 1,
3232

33-
pub fn init(allocator: std.mem.Allocator, dir: std.fs.Dir) Self {
33+
pub fn init(allocator: std.mem.Allocator, parent_dir: std.fs.Dir) !Self {
34+
var dir = try parent_dir.makeOpenPath("oplog", .{ .iterate = true });
35+
errdefer dir.close();
36+
3437
return Self{
3538
.allocator = allocator,
3639
.dir = dir,
@@ -47,6 +50,8 @@ pub fn deinit(self: *Self) void {
4750
self.closeCurrentFile();
4851

4952
self.files.deinit();
53+
54+
self.dir.close();
5055
}
5156

5257
pub fn open(self: *Self, first_commit_id: u64, receiver: anytype, ctx: anytype) !void {
@@ -228,13 +233,10 @@ pub fn write(self: *Self, changes: []const Change) !u64 {
228233
}
229234

230235
test "write entries" {
231-
var tmpDir = std.testing.tmpDir(.{});
232-
defer tmpDir.cleanup();
233-
234-
var oplogDir = try tmpDir.dir.makeOpenPath("oplog", .{ .iterate = true });
235-
defer oplogDir.close();
236+
var tmp_dir = std.testing.tmpDir(.{});
237+
defer tmp_dir.cleanup();
236238

237-
var oplog = Self.init(std.testing.allocator, oplogDir);
239+
var oplog = try Self.init(std.testing.allocator, tmp_dir.dir);
238240
defer oplog.deinit();
239241

240242
const Updater = struct {
@@ -256,7 +258,7 @@ test "write entries" {
256258

257259
_ = try oplog.write(&changes);
258260

259-
var file = try oplogDir.openFile("0000000000000001.xlog", .{});
261+
var file = try tmp_dir.dir.openFile("oplog/0000000000000001.xlog", .{});
260262
defer file.close();
261263

262264
var arena = std.heap.ArenaAllocator.init(std.testing.allocator);

0 commit comments

Comments
 (0)