@@ -227,12 +227,11 @@ init(#{uid := UId,
227
227
MtRange = ra_mt :range (Mt0 ),
228
228
SegRefs = my_segrefs (UId , SegWriter ),
229
229
Reader = ra_log_segments :init (UId , Dir , MaxOpen , AccessPattern , SegRefs ,
230
- Names , Counter ),
230
+ Counter , LogId ),
231
231
SegmentRange = ra_log_segments :range (Reader ),
232
232
% % TODO: check ra_range:add/2 actually performas the correct logic we expect
233
233
Range = ra_range :add (MtRange , SegmentRange ),
234
234
235
- % % TODO: review thi
236
235
[begin
237
236
? DEBUG (" ~ts : deleting overwritten segment ~w " ,
238
237
[LogId , SR ]),
@@ -1288,21 +1287,20 @@ delete_everything(#?MODULE{cfg = #cfg{uid = UId,
1288
1287
1289
1288
-spec release_resources (non_neg_integer (),
1290
1289
sequential | random , state ()) -> state ().
1291
- release_resources (MaxOpenSegments ,
1292
- AccessPattern ,
1290
+ release_resources (MaxOpenSegments , AccessPattern ,
1293
1291
#? MODULE {cfg = # cfg {uid = UId ,
1292
+ log_id = LogId ,
1294
1293
directory = Dir ,
1295
- counter = Counter ,
1296
- names = Names },
1294
+ counter = Counter },
1297
1295
reader = Reader } = State ) ->
1298
1296
ActiveSegs = ra_log_segments :segment_refs (Reader ),
1299
1297
% close all open segments
1300
1298
% deliberately ignoring return value
1301
1299
_ = ra_log_segments :close (Reader ),
1302
1300
% % open a new segment with the new max open segment value
1303
1301
State #? MODULE {reader = ra_log_segments :init (UId , Dir , MaxOpenSegments ,
1304
- AccessPattern ,
1305
- ActiveSegs , Names , Counter )}.
1302
+ AccessPattern , ActiveSegs ,
1303
+ Counter , LogId )}.
1306
1304
1307
1305
1308
1306
% %% Local functions
@@ -1482,45 +1480,16 @@ my_segrefs(UId, SegWriter) ->
1482
1480
% % if a server recovered when a segment had been opened
1483
1481
% % but never had any entries written the segref would be
1484
1482
% % undefined
1485
- case ra_log_segment :segref (File ) of
1486
- undefined ->
1487
- Acc ;
1488
- SegRef ->
1489
- [SegRef | Acc ]
1483
+ case ra_log_segment :info (File ) of
1484
+ #{ref := SegRef ,
1485
+ file_type := regular }
1486
+ when is_tuple (SegRef ) ->
1487
+ [SegRef | Acc ];
1488
+ _ ->
1489
+ Acc
1490
1490
end
1491
1491
end , [], SegFiles ).
1492
1492
1493
- % recover_ranges(UId, MtRange, SegWriter) ->
1494
- % % 1. check mem_tables (this assumes wal has finished recovering
1495
- % % which means it is essential that ra_servers are part of the same
1496
- % % supervision tree
1497
- % % 2. check segments
1498
- % SegFiles = ra_log_segment_writer:my_segments(SegWriter, UId),
1499
- % SegRefs = lists:foldl(
1500
- % fun (File, Acc) ->
1501
- % %% if a server recovered when a segment had been opened
1502
- % %% but never had any entries written the segref would be
1503
- % %% undefined
1504
- % case ra_log_segment:segref(File) of
1505
- % undefined ->
1506
- % Acc;
1507
- % SegRef ->
1508
- % [SegRef | Acc]
1509
- % end
1510
- % end, [], SegFiles),
1511
- % SegRanges = [Range || {Range, _} <- SegRefs],
1512
- % Ranges = [MtRange | SegRanges],
1513
- % {pick_range(Ranges, undefined), SegRefs}.
1514
-
1515
- % picks the current range from a sorted (newest to oldest) list of ranges
1516
- % pick_range([], Res) ->
1517
- % Res;
1518
- % pick_range([H | Tail], undefined) ->
1519
- % pick_range(Tail, H);
1520
- % pick_range([{Fst, _Lst} | Tail], {CurFst, CurLst}) ->
1521
- % pick_range(Tail, {min(Fst, CurFst), CurLst}).
1522
-
1523
-
1524
1493
% % TODO: implement synchronous writes using gen_batch_server:call/3
1525
1494
await_written_idx (Idx , Term , Log0 ) ->
1526
1495
receive
@@ -1536,17 +1505,6 @@ await_written_idx(Idx, Term, Log0) ->
1536
1505
throw (ra_log_append_timeout )
1537
1506
end .
1538
1507
1539
- % log_update_wait_n(0) ->
1540
- % ok;
1541
- % log_update_wait_n(N) ->
1542
- % receive
1543
- % ra_log_update_processed ->
1544
- % log_update_wait_n(N - 1)
1545
- % after 1500 ->
1546
- % %% just go ahead anyway
1547
- % ok
1548
- % end.
1549
-
1550
1508
incr_counter (# cfg {counter = Cnt }, Ix , N ) when Cnt =/= undefined ->
1551
1509
counters :add (Cnt , Ix , N );
1552
1510
incr_counter (# cfg {counter = undefined }, _Ix , _N ) ->
0 commit comments