diff options
author | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2018-02-11 12:54:15 +0300 |
---|---|---|
committer | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2018-02-11 12:54:15 +0300 |
commit | 66fc1bf3b6cab63559fa58a086a1439ecdebfea7 (patch) | |
tree | cdc0ce2d21249f31060a1c302e4708abc507d10e /src/mod_muc.erl | |
parent | Bump xmpp version (diff) |
Remove 'iqdisc' option
Since we got rid of all bottle-neck processes and we have
a connection pool for every database, the option is no longer
needed and in fact is detrimental: in practice what you get
is just a bunch of overloaded processes in the IQ handlers pool
no matter how much you increase the `iqdisc` value.
Given that there are close to zero operators understanding
the meaning of the option and, hence, not using it all,
it's not simply deprecated but completely removed.
The commit also deprecates the following functions:
- gen_iq_handler:add_iq_handler/6
- gen_iq_handler:handle/5
- gen_iq_handler:iqdisc/1
Diffstat (limited to 'src/mod_muc.erl')
-rw-r--r-- | src/mod_muc.erl | 33 |
1 files changed, 10 insertions, 23 deletions
diff --git a/src/mod_muc.erl b/src/mod_muc.erl index 0cf03fa81..acfbb90a0 100644 --- a/src/mod_muc.erl +++ b/src/mod_muc.erl @@ -233,7 +233,6 @@ get_online_rooms_by_user(ServerHost, LUser, LServer) -> init([Host, Opts]) -> process_flag(trap_exit, true), - IQDisc = gen_mod:get_opt(iqdisc, Opts), #state{access = Access, hosts = MyHosts, history_size = HistorySize, queue_type = QueueType, room_shaper = RoomShaper} = State = init_state(Host, Opts), @@ -243,7 +242,7 @@ init([Host, Opts]) -> RMod:init(Host, [{hosts, MyHosts}|Opts]), lists:foreach( fun(MyHost) -> - register_iq_handlers(MyHost, IQDisc), + register_iq_handlers(MyHost), ejabberd_router:register_route(MyHost, Host), load_permanent_rooms(MyHost, Host, Access, HistorySize, RoomShaper, QueueType) @@ -273,8 +272,6 @@ handle_call({create, Room, Host, From, Nick, Opts}, _From, {reply, ok, State}. handle_cast({reload, ServerHost, NewOpts, OldOpts}, #state{hosts = OldHosts}) -> - NewIQDisc = gen_mod:get_opt(iqdisc, NewOpts), - OldIQDisc = gen_mod:get_opt(iqdisc, OldOpts), NewMod = gen_mod:db_mod(ServerHost, NewOpts, ?MODULE), NewRMod = gen_mod:ram_db_mod(ServerHost, NewOpts, ?MODULE), OldMod = gen_mod:db_mod(ServerHost, OldOpts, ?MODULE), @@ -290,18 +287,10 @@ handle_cast({reload, ServerHost, NewOpts, OldOpts}, #state{hosts = OldHosts}) -> true -> ok end, - if (NewIQDisc /= OldIQDisc) -> - lists:foreach( - fun(NewHost) -> - register_iq_handlers(NewHost, NewIQDisc) - end, NewHosts -- (NewHosts -- OldHosts)); - true -> - ok - end, lists:foreach( fun(NewHost) -> ejabberd_router:register_route(NewHost, ServerHost), - register_iq_handlers(NewHost, NewIQDisc) + register_iq_handlers(NewHost) end, NewHosts -- OldHosts), lists:foreach( fun(OldHost) -> @@ -372,19 +361,19 @@ init_state(Host, Opts) -> max_rooms_discoitems = MaxRoomsDiscoItems, room_shaper = RoomShaper}. -register_iq_handlers(Host, IQDisc) -> +register_iq_handlers(Host) -> gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_REGISTER, - ?MODULE, process_register, IQDisc), + ?MODULE, process_register), gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_VCARD, - ?MODULE, process_vcard, IQDisc), + ?MODULE, process_vcard), gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_MUCSUB, - ?MODULE, process_mucsub, IQDisc), + ?MODULE, process_mucsub), gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_MUC_UNIQUE, - ?MODULE, process_muc_unique, IQDisc), + ?MODULE, process_muc_unique), gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_DISCO_INFO, - ?MODULE, process_disco_info, IQDisc), + ?MODULE, process_disco_info), gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_DISCO_ITEMS, - ?MODULE, process_disco_items, IQDisc). + ?MODULE, process_disco_items). unregister_iq_handlers(Host) -> gen_iq_handler:remove_iq_handler(ejabberd_local, Host, ?NS_REGISTER), @@ -972,8 +961,7 @@ mod_opt_type({default_room_options, presence_broadcast}) -> (participant) -> participant; (visitor) -> visitor end, L) - end; -mod_opt_type(iqdisc) -> fun gen_iq_handler:check_type/1. + end. mod_options(Host) -> [{access, all}, @@ -982,7 +970,6 @@ mod_options(Host) -> {access_persistent, all}, {db_type, ejabberd_config:default_db(Host, ?MODULE)}, {ram_db_type, ejabberd_config:default_ram_db(Host, ?MODULE)}, - {iqdisc, gen_iq_handler:iqdisc(Host)}, {history_size, 20}, {host, <<"conference.@HOST@">>}, {hosts, []}, |