@@ -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