diff --git a/src/osiris_log.erl b/src/osiris_log.erl index 4a339b1..39d60a3 100644 --- a/src/osiris_log.erl +++ b/src/osiris_log.erl @@ -44,6 +44,7 @@ get_directory/1, get_name/1, get_shared/1, + get_current_file/1, get_default_max_segment_size_bytes/0, counters_ref/1, close/1, @@ -1073,6 +1074,7 @@ init_data_reader_at(ChunkId, FilePos, File, readers_counter_fun = CountersFun, shared = Shared }, + current_file = filename:basename(File), mode = #read{type = data, next_offset = ChunkId, @@ -1296,6 +1298,7 @@ open_offset_reader_at(SegmentFile, NextChunkId, FilePos, readers_counter_fun = ReaderCounterFun, shared = Shared }, + current_file = filename:basename(SegmentFile), mode = #read{type = offset, position = FilePos, chunk_selector = maps:get(chunk_selector, Options, @@ -1371,6 +1374,9 @@ last_chunk_id(#?MODULE{cfg = #cfg{shared = Ref}}) -> get_current_epoch(#?MODULE{mode = #write{current_epoch = Epoch}}) -> Epoch. +-spec get_current_file(state()) -> file:filename_all(). +get_current_file(#?MODULE{current_file = File}) -> File. + -spec get_directory(state()) -> file:filename_all(). get_directory(#?MODULE{cfg = #cfg{directory = Dir}}) -> Dir. diff --git a/test/osiris_SUITE.erl b/test/osiris_SUITE.erl index b350acc..587788f 100644 --- a/test/osiris_SUITE.erl +++ b/test/osiris_SUITE.erl @@ -82,6 +82,7 @@ all_tests() -> cluster_deduplication, cluster_deduplication_order, writers_retention, + osiris_reader_set_current_file, single_node_reader_counters, cluster_reader_counters, combine_ips_hosts_test, @@ -468,6 +469,17 @@ single_node_offset_listener(Config) -> flush(), ok. +osiris_reader_set_current_file(Config) -> + Name = ?config(cluster_name, Config), + Conf0 = + #{name => Name, + epoch => 1, + leader_node => node(), + replica_nodes => []}, + {ok, #{leader_pid := Leader}} = osiris:start_cluster(Conf0), + {ok, Log0} = osiris:init_reader(Leader, next, {offset_reader_1, []}), + ?assertEqual(<<"00000000000000000000.segment">>, osiris_log:get_current_file(Log0)). + single_node_reader_counters(Config) -> Name = ?config(cluster_name, Config), Conf0 =