@@ -141,75 +141,6 @@ pub fn deinit(self: *Self) void {
141
141
self .dir .close ();
142
142
}
143
143
144
- pub const PendingUpdate = struct {
145
- node : MemorySegmentNode ,
146
- segments : SharedPtr (MemorySegmentList ),
147
- finished : bool = false ,
148
-
149
- pub fn deinit (self : * @This (), allocator : Allocator ) void {
150
- if (self .finished ) return ;
151
- MemorySegmentList .destroySegments (allocator , & self .segments );
152
- MemorySegmentList .destroySegment (allocator , & self .node );
153
- self .finished = true ;
154
- }
155
- };
156
-
157
- // Prepares update for later commit, will block until previous update has been committed.
158
- fn prepareUpdate (self : * Self , changes : []const Change ) ! PendingUpdate {
159
- var node = try MemorySegmentList .createSegment (self .allocator , .{});
160
- errdefer MemorySegmentList .destroySegment (self .allocator , & node );
161
-
162
- try node .value .build (changes );
163
-
164
- self .update_lock .lock ();
165
- errdefer self .update_lock .unlock ();
166
-
167
- self .segments_lock .lockShared ();
168
- defer self .segments_lock .unlockShared ();
169
-
170
- const segments = try MemorySegmentList .createShared (self .allocator , self .memory_segments .count () + 1 );
171
-
172
- return .{ .node = node , .segments = segments };
173
- }
174
-
175
- // Commits the update, does nothing if it has already been cancelled or committted.
176
- fn commitUpdate (self : * Self , pending_update : * PendingUpdate , commit_id : u64 ) void {
177
- if (pending_update .finished ) return ;
178
-
179
- defer pending_update .deinit (self .allocator );
180
-
181
- self .segments_lock .lock ();
182
- defer self .segments_lock .unlock ();
183
-
184
- pending_update .node .value .max_commit_id = commit_id ;
185
- pending_update .node .value .id = blk : {
186
- if (self .memory_segments .segments .value .getLast ()) | n | {
187
- break :blk n .value .id .next ();
188
- } else if (self .file_segments .segments .value .getFirst ()) | n | {
189
- break :blk n .value .id .next ();
190
- } else {
191
- break :blk SegmentId .first ();
192
- }
193
- };
194
-
195
- self .memory_segments .segments .value .appendSegmentInto (pending_update .segments .value , pending_update .node );
196
-
197
- self .memory_segments .segments .swap (& pending_update .segments );
198
-
199
- pending_update .finished = true ;
200
- self .update_lock .unlock ();
201
- }
202
-
203
- // Cancels the update, does nothing if it has already been cancelled or committted.
204
- fn cancelUpdate (self : * Self , pending_update : * PendingUpdate ) void {
205
- if (pending_update .finished ) return ;
206
-
207
- defer pending_update .deinit (self .allocator );
208
-
209
- pending_update .finished = true ;
210
- self .update_lock .unlock ();
211
- }
212
-
213
144
fn loadSegment (self : * Self , segment_id : SegmentId ) ! FileSegmentNode {
214
145
var node = try FileSegmentList .createSegment (self .allocator , .{ .dir = self .dir });
215
146
errdefer FileSegmentList .destroySegment (self .allocator , & node );
@@ -341,7 +272,7 @@ fn maybeMergeFileSegments(self: *Self) !bool {
341
272
defer self .segments_lock .unlock ();
342
273
343
274
self .file_segments .commitUpdate (& upd );
344
- log .debug ("committed file segments merge" , .{});
275
+ // log.debug("committed file segments merge", .{});
345
276
346
277
return true ;
347
278
}
@@ -384,7 +315,7 @@ fn maybeMergeMemorySegments(self: *Self) !bool {
384
315
defer self .segments_lock .unlock ();
385
316
386
317
self .memory_segments .commitUpdate (& upd );
387
- log .debug ("committed memory segments merge" , .{});
318
+ // log.debug("committed memory segments merge", .{});
388
319
389
320
self .maybeScheduleCheckpoint ();
390
321
@@ -459,7 +390,7 @@ pub fn update(self: *Self, changes: []const Change) !void {
459
390
}
460
391
461
392
pub fn updateInternal (self : * Self , changes : []const Change , commit_id : ? u64 ) ! void {
462
- log .debug ("update with {} changes" , .{changes .len });
393
+ // log.debug("update with {} changes", .{changes.len});
463
394
464
395
var target = try MemorySegmentList .createSegment (self .allocator , .{});
465
396
defer MemorySegmentList .destroySegment (self .allocator , & target );
@@ -469,8 +400,6 @@ pub fn updateInternal(self: *Self, changes: []const Change, commit_id: ?u64) !vo
469
400
var upd = try self .memory_segments .beginUpdate ();
470
401
defer self .memory_segments .cleanupAfterUpdate (& upd );
471
402
472
- upd .appendSegment (target );
473
-
474
403
target .value .max_commit_id = commit_id orelse try self .oplog .write (changes );
475
404
476
405
self .segments_lock .lock ();
@@ -486,6 +415,8 @@ pub fn updateInternal(self: *Self, changes: []const Change, commit_id: ?u64) !vo
486
415
}
487
416
};
488
417
418
+ upd .appendSegment (target );
419
+
489
420
self .memory_segments .commitUpdate (& upd );
490
421
491
422
if (self .memory_segments .needsMerge ()) {
0 commit comments