mirror of
https://github.com/processone/ejabberd.git
synced 2024-12-22 17:28:25 +01:00
Merge branch 'master' of github.com:processone/ejabberd
This commit is contained in:
commit
3a0b4ad8da
@ -173,7 +173,7 @@ set_settings_from_config() ->
|
|||||||
file_queue_init() ->
|
file_queue_init() ->
|
||||||
QueueDir = case ejabberd_config:queue_dir() of
|
QueueDir = case ejabberd_config:queue_dir() of
|
||||||
undefined ->
|
undefined ->
|
||||||
{ok, MnesiaDir} = application:get_env(mnesia, dir),
|
MnesiaDir = mnesia:system_info(directory),
|
||||||
filename:join(MnesiaDir, "queue");
|
filename:join(MnesiaDir, "queue");
|
||||||
Path ->
|
Path ->
|
||||||
Path
|
Path
|
||||||
|
@ -301,6 +301,12 @@ connecting(connect, #state{host = Host} = State) ->
|
|||||||
case ConnectRes of
|
case ConnectRes of
|
||||||
{ok, Ref} ->
|
{ok, Ref} ->
|
||||||
erlang:monitor(process, Ref),
|
erlang:monitor(process, Ref),
|
||||||
|
lists:foreach(
|
||||||
|
fun({{?PREPARE_KEY, _} = Key, _}) ->
|
||||||
|
erase(Key);
|
||||||
|
(_) ->
|
||||||
|
ok
|
||||||
|
end, get()),
|
||||||
PendingRequests =
|
PendingRequests =
|
||||||
p1_queue:dropwhile(
|
p1_queue:dropwhile(
|
||||||
fun(Req) ->
|
fun(Req) ->
|
||||||
|
@ -257,7 +257,7 @@ init([ServerHost, Opts]) ->
|
|||||||
MaxSubsNode = gen_mod:get_opt(max_subscriptions_node, Opts,
|
MaxSubsNode = gen_mod:get_opt(max_subscriptions_node, Opts,
|
||||||
fun(A) when is_integer(A) andalso A >= 0 -> A end, undefined),
|
fun(A) when is_integer(A) andalso A >= 0 -> A end, undefined),
|
||||||
case gen_mod:db_type(ServerHost, ?MODULE) of
|
case gen_mod:db_type(ServerHost, ?MODULE) of
|
||||||
mnesia -> init_mnesia(Host, ServerHost, Opts);
|
mnesia -> pubsub_index:init(Host, ServerHost, Opts);
|
||||||
_ -> ok
|
_ -> ok
|
||||||
end,
|
end,
|
||||||
{Plugins, NodeTree, PepMapping} = init_plugins(Host, ServerHost, Opts),
|
{Plugins, NodeTree, PepMapping} = init_plugins(Host, ServerHost, Opts),
|
||||||
@ -374,18 +374,6 @@ depends(ServerHost, Opts) ->
|
|||||||
end
|
end
|
||||||
end, Plugins).
|
end, Plugins).
|
||||||
|
|
||||||
init_mnesia(Host, ServerHost, Opts) ->
|
|
||||||
pubsub_index:init(Host, ServerHost, Opts),
|
|
||||||
spawn(fun() ->
|
|
||||||
%% maybe upgrade db. this can take time when upgrading existing
|
|
||||||
%% data from ejabberd 2.1.x, so we don't want this to block
|
|
||||||
%% calling gen_server:start
|
|
||||||
pubsub_migrate:update_node_database(Host, ServerHost),
|
|
||||||
pubsub_migrate:update_state_database(Host, ServerHost),
|
|
||||||
pubsub_migrate:update_item_database(Host, ServerHost),
|
|
||||||
pubsub_migrate:update_lastitem_database(Host, ServerHost)
|
|
||||||
end).
|
|
||||||
|
|
||||||
%% @doc Call the init/1 function for each plugin declared in the config file.
|
%% @doc Call the init/1 function for each plugin declared in the config file.
|
||||||
%% The default plugin module is implicit.
|
%% The default plugin module is implicit.
|
||||||
%% <p>The Erlang code for the plugin is located in a module called
|
%% <p>The Erlang code for the plugin is located in a module called
|
||||||
|
@ -300,46 +300,47 @@ rename_default_nodeplugin() ->
|
|||||||
_ = '_'})).
|
_ = '_'})).
|
||||||
|
|
||||||
update_state_database(_Host, _ServerHost) ->
|
update_state_database(_Host, _ServerHost) ->
|
||||||
case catch mnesia:table_info(pubsub_state, attributes) of
|
% useless starting from ejabberd 17.04
|
||||||
[stateid, nodeidx, items, affiliation, subscriptions] ->
|
% case catch mnesia:table_info(pubsub_state, attributes) of
|
||||||
?INFO_MSG("Upgrading pubsub states table...", []),
|
% [stateid, nodeidx, items, affiliation, subscriptions] ->
|
||||||
F = fun ({pubsub_state, {{U,S,R}, NodeID}, _NodeIdx, Items, Aff, Sub}, Acc) ->
|
% ?INFO_MSG("Upgrading pubsub states table...", []),
|
||||||
JID = {U,S,R},
|
% F = fun ({pubsub_state, {{U,S,R}, NodeID}, _NodeIdx, Items, Aff, Sub}, Acc) ->
|
||||||
Subs = case Sub of
|
% JID = {U,S,R},
|
||||||
none ->
|
% Subs = case Sub of
|
||||||
[];
|
% none ->
|
||||||
[] ->
|
% [];
|
||||||
[];
|
% [] ->
|
||||||
_ ->
|
% [];
|
||||||
SubID = pubsub_subscription:make_subid(),
|
% _ ->
|
||||||
[{Sub, SubID}]
|
% SubID = pubsub_subscription:make_subid(),
|
||||||
end,
|
% [{Sub, SubID}]
|
||||||
NewState = #pubsub_state{stateid = {JID, NodeID},
|
% end,
|
||||||
items = Items,
|
% NewState = #pubsub_state{stateid = {JID, NodeID},
|
||||||
affiliation = Aff,
|
% items = Items,
|
||||||
subscriptions = Subs},
|
% affiliation = Aff,
|
||||||
[NewState | Acc]
|
% subscriptions = Subs},
|
||||||
end,
|
% [NewState | Acc]
|
||||||
{atomic, NewRecs} = mnesia:transaction(fun mnesia:foldl/3,
|
% end,
|
||||||
[F, [], pubsub_state]),
|
% {atomic, NewRecs} = mnesia:transaction(fun mnesia:foldl/3,
|
||||||
{atomic, ok} = mnesia:delete_table(pubsub_state),
|
% [F, [], pubsub_state]),
|
||||||
{atomic, ok} = ejabberd_mnesia:create(?MODULE, pubsub_state,
|
% {atomic, ok} = mnesia:delete_table(pubsub_state),
|
||||||
[{disc_copies, [node()]},
|
% {atomic, ok} = ejabberd_mnesia:create(?MODULE, pubsub_state,
|
||||||
{attributes, record_info(fields, pubsub_state)}]),
|
% [{disc_copies, [node()]},
|
||||||
FNew = fun () ->
|
% {attributes, record_info(fields, pubsub_state)}]),
|
||||||
lists:foreach(fun mnesia:write/1, NewRecs)
|
% FNew = fun () ->
|
||||||
end,
|
% lists:foreach(fun mnesia:write/1, NewRecs)
|
||||||
case mnesia:transaction(FNew) of
|
% end,
|
||||||
{atomic, Result} ->
|
% case mnesia:transaction(FNew) of
|
||||||
?INFO_MSG("Pubsub states table upgraded: ~p",
|
% {atomic, Result} ->
|
||||||
[Result]);
|
% ?INFO_MSG("Pubsub states table upgraded: ~p",
|
||||||
{aborted, Reason} ->
|
% [Result]);
|
||||||
?ERROR_MSG("Problem upgrading Pubsub states table:~n~p",
|
% {aborted, Reason} ->
|
||||||
[Reason])
|
% ?ERROR_MSG("Problem upgrading Pubsub states table:~n~p",
|
||||||
end;
|
% [Reason])
|
||||||
_ ->
|
% end;
|
||||||
ok
|
% _ ->
|
||||||
end,
|
% ok
|
||||||
|
% end,
|
||||||
convert_list_subscriptions(),
|
convert_list_subscriptions(),
|
||||||
convert_list_states().
|
convert_list_states().
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user