@@ -227,12 +227,11 @@ init(#{uid := UId,
227227 MtRange = ra_mt :range (Mt0 ),
228228 SegRefs = my_segrefs (UId , SegWriter ),
229229 Reader = ra_log_segments :init (UId , Dir , MaxOpen , AccessPattern , SegRefs ,
230- Names , Counter ),
230+ Counter , LogId ),
231231 SegmentRange = ra_log_segments :range (Reader ),
232232 % % TODO: check ra_range:add/2 actually performas the correct logic we expect
233233 Range = ra_range :add (MtRange , SegmentRange ),
234234
235- % % TODO: review thi
236235 [begin
237236 ? DEBUG (" ~ts : deleting overwritten segment ~w " ,
238237 [LogId , SR ]),
@@ -1288,21 +1287,20 @@ delete_everything(#?MODULE{cfg = #cfg{uid = UId,
12881287
12891288-spec release_resources (non_neg_integer (),
12901289 sequential | random , state ()) -> state ().
1291- release_resources (MaxOpenSegments ,
1292- AccessPattern ,
1290+ release_resources (MaxOpenSegments , AccessPattern ,
12931291 #? MODULE {cfg = # cfg {uid = UId ,
1292+ log_id = LogId ,
12941293 directory = Dir ,
1295- counter = Counter ,
1296- names = Names },
1294+ counter = Counter },
12971295 reader = Reader } = State ) ->
12981296 ActiveSegs = ra_log_segments :segment_refs (Reader ),
12991297 % close all open segments
13001298 % deliberately ignoring return value
13011299 _ = ra_log_segments :close (Reader ),
13021300 % % open a new segment with the new max open segment value
13031301 State #? MODULE {reader = ra_log_segments :init (UId , Dir , MaxOpenSegments ,
1304- AccessPattern ,
1305- ActiveSegs , Names , Counter )}.
1302+ AccessPattern , ActiveSegs ,
1303+ Counter , LogId )}.
13061304
13071305
13081306% %% Local functions
@@ -1482,45 +1480,16 @@ my_segrefs(UId, SegWriter) ->
14821480 % % if a server recovered when a segment had been opened
14831481 % % but never had any entries written the segref would be
14841482 % % 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
14901490 end
14911491 end , [], SegFiles ).
14921492
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-
15241493% % TODO: implement synchronous writes using gen_batch_server:call/3
15251494await_written_idx (Idx , Term , Log0 ) ->
15261495 receive
@@ -1536,17 +1505,6 @@ await_written_idx(Idx, Term, Log0) ->
15361505 throw (ra_log_append_timeout )
15371506 end .
15381507
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-
15501508incr_counter (# cfg {counter = Cnt }, Ix , N ) when Cnt =/= undefined ->
15511509 counters :add (Cnt , Ix , N );
15521510incr_counter (# cfg {counter = undefined }, _Ix , _N ) ->
0 commit comments