2323 update_retention /2 ,
2424 start_cluster /1 ,
2525 stop_cluster /1 ,
26+
2627 start_writer /1 ,
2728 start_replica /2 ,
29+ stop_member /2 ,
30+ delete_member /2 ,
31+
2832 delete_cluster /1 ,
2933 configure_logger /1 ,
3034 get_stats /1 ]).
@@ -103,7 +107,7 @@ start_cluster(Config00 = #{name := Name}) ->
103107 true = osiris_util :validate_base64uri (Name ),
104108 % % ensure reference is set
105109 Config0 = maps :merge (#{reference => Name }, Config00 ),
106- case osiris_writer : start (Config0 ) of
110+ case start_writer (Config0 ) of
107111 {ok , Pid } ->
108112 Config = Config0 #{leader_pid => Pid },
109113 case start_replicas (Config ) of
@@ -115,22 +119,41 @@ start_cluster(Config00 = #{name := Name}) ->
115119 end .
116120
117121stop_cluster (Config ) ->
118- ok = osiris_writer :stop (Config ),
119- [ok = osiris_replica :stop (N , Config )
122+ WriterNode = maps :get (leader_node , Config ),
123+ ok = stop_member (WriterNode , Config ),
124+ [ok = stop_member (N , Config )
120125 || N <- maps :get (replica_nodes , Config )],
121126 ok .
122127
123128-spec delete_cluster (config ()) -> ok .
124129delete_cluster (Config ) ->
125- [ok = osiris_replica :delete (R , Config )
126- || R <- maps :get (replica_nodes , Config )],
127- ok = osiris_writer :delete (Config ).
130+ [ok = delete_member (N , Config )
131+ || N <- maps :get (replica_nodes , Config )],
132+ WriterNode = maps :get (leader_node , Config ),
133+ ok = delete_member (WriterNode , Config ).
128134
135+ -spec start_writer (osiris :config ()) ->
136+ supervisor :startchild_ret ().
129137start_writer (Config ) ->
130- osiris_writer :start (Config ).
138+ Mod = get_writer_module (Config ),
139+ Node = maps :get (leader_node , Config ),
140+ osiris_member :start (Mod , Node , Config ).
131141
132- start_replica (Replica , Config ) ->
133- osiris_replica :start (Replica , Config ).
142+ -spec start_replica (node (), osiris :config ()) ->
143+ supervisor :startchild_ret ().
144+ start_replica (Node , Config ) ->
145+ Mod = maps :get (replica_mod , Config , osiris_replica ),
146+ osiris_member :start (Mod , Node , Config ).
147+
148+ -spec stop_member (node (), osiris :config ()) ->
149+ ok | {error , not_found }.
150+ stop_member (Node , Config ) ->
151+ osiris_member :stop (Node , Config ).
152+
153+ -spec delete_member (node (), osiris :config ()) ->
154+ ok | {error , not_found }.
155+ delete_member (Node , Config ) ->
156+ osiris_member :delete (Node , Config ).
134157
135158-spec write (Pid :: pid (), Data :: data ()) -> ok .
136159write (Pid , Data ) ->
@@ -258,7 +281,7 @@ start_replicas(_Config, [], ReplicaPids) ->
258281 {ok , ReplicaPids };
259282start_replicas (Config , [Node | Nodes ], ReplicaPids ) ->
260283 try
261- case osiris_replica : start (Node , Config ) of
284+ case start_replica (Node , Config ) of
262285 {ok , Pid } ->
263286 start_replicas (Config , Nodes , [Pid | ReplicaPids ]);
264287 {ok , Pid , _ } ->
@@ -293,3 +316,6 @@ get_stats(Pid)
293316 last_chunk_id => osiris_log_shared :last_chunk_id (Shared )};
294317get_stats (Pid ) when is_pid (Pid ) ->
295318 erpc :call (node (Pid ), ? MODULE , ? FUNCTION_NAME , [Pid ]).
319+
320+ get_writer_module (Config ) ->
321+ maps :get (writer_mod , Config , osiris_writer ).
0 commit comments