aboutsummaryrefslogtreecommitdiff
path: root/src/ejabberd_app.erl (unfollow)
Commit message (Collapse)AuthorFilesLines
2018-06-21Add new options for OOM watchdogEvgeniy Khramtsov1-1/+1
* oom_watermark: 1..100 Start OOM watchdog only when system memory usage exceeds this value in percents. When the usage drops below the value, OOM watchdog is stopped. The default is 80 (percents). Note that once OOM watchdog is started, it performs full garbage collection periodically: this can be seen as spikes in CPU utilization and drops in RAM usage. If your system is permanently above the watermark, it may cause significant CPU overhead. * oom_queue: positive integer Only trigger OOM killer when total amount of messages in all queues of all Erlang processes is above this value. The default is 10000. Note that this value only takes effect when `oom_killer` is set to `true` (this is the default). Otherwise, only a warning will be logged.
2018-06-14Get rid of ejabberd.hrl headerEvgeniy Khramtsov1-3/+4
The header consisted of too many unrelated stuff and macros misuse. Some stuff is moved into scram.hrl and type_compat.hrl. All macros have been replaced with the corresponding function calls. TODO: probably type_compat.hrl is not even needed anymore since we support only Erlang >= OTP 17.5
2018-05-09Stop ejabberd initialization on invalid/unknown optionsEvgeniy Khramtsov1-16/+21
Since now, ejabberd doesn't ignore unknown options and doesn't allow to have options with malformed values. The rationale for this is to avoid unexpected behaviour during runtime, i.e. to conform to "fail early" approach. Note that it's safe to reload a configuration with potentialy invalid and/or unknown options: this will not halt ejabberd, but will only prevent the configuration from loading. ***NOTE FOR PACKAGE BUILDERS*** This new behaviour should be documented in the upgrade notes.
2018-03-29Don't produce a crash dump during intentional exitEvgeniy Khramtsov1-2/+1
Also halt faster without relying on timeouts for buffers flushing
2018-01-15Always build eimp dependencyEvgeniy Khramtsov1-9/+1
Even if no suitable C graphics libraries are detected at compile time, the package is still usable because it provides `eimp:get_type/1` which is used by mod_avatar.
2018-01-05Update copyright datesEvgeniy Khramtsov1-1/+1
2017-12-27Revert "Start os_mon application"Paweł Chmielowski1-1/+0
This reverts commit 82b3bbf360ecf9bb9e96dcd59fc631ecbdd5fc0d.
2017-12-27Start os_mon applicationPaweł Chmielowski1-0/+1
2017-12-17Rewrite ejabberd system monitorEvgeniy Khramtsov1-0/+1
Previous version was inefficient: it had a lot of false positives along with a lot of false negatives, making its usage pointless. The new verion is based on memsup(3erl) application: the OOM watchdog is only started when total OS memory consumption is more than 80%. A watchdog periodically inspects all running processes and collects statistics about overloaded ones (those queueing a lot of messages). If the OOM killer is enabled (`oom_killer: true`), all overloaded processes would be killed. By default, OOM killer is enabled. When memory consumption is back to normal, the OOM watchdog is stopped.
2017-11-14Halt ejabberd if the top supervisor fails to startEvgeniy Khramtsov1-1/+3
2017-09-17Introduce mod_avatarEvgeniy Khramtsov1-1/+10
The purpose of the module is to cope with legacy and modern XMPP clients posting avatars. It automatically converts vCard based avatars (XEP-0153) to PEP based avatars (XEP-0084) and vice versa. Also, the module supports convertation between avatar image formats on the fly: this is controlled by `convert` option. For example, to convert all avatars into PNG format, configure the module as: mod_avatar: convert: default: png In order to convert only `webp` format to `jpeg`, set the following: mod_avatar: convert: webp: jpeg Note: the module depends on mod_vcard, mod_vcard_xupdate and mod_pubsub. Also, ejabberd should be built with --enable-graphics option.
2017-07-06Make ejabberd_cluster modularEvgeniy Khramtsov1-23/+2
For setting the cluster backend new global option 'cluster_backend' is introduced. The default and only available value at the moment is 'mnesia'
2017-05-08Add type specs for Module:opt_type/1Evgeniy Khramtsov1-0/+3
2017-04-29Don't validate an option in ejabberd_config:get_option() functionsEvgeniy Khramtsov1-10/+2
The commit introduces the following changes: * Now there is no need to pass validating function in ejabberd_config:get_option() functions, because the configuration keeps already validated values. * New function ejabberd_config:get_option/1 is introduced * Function ejabberd_config:get_option/3 is deprecated. If the function is still called, the second argument (validating function) is simply ignored. * The second argument for ejabberd_config:get_option/2 is now a default value, not a validating function.
2017-04-27Store options using p1_options moduleEvgeniy Khramtsov1-1/+3
2017-04-21Speedup Mnesia tables initializationEvgeniy Khramtsov1-24/+1
2017-04-03Change mnesia dir detectionAlexey Shchepin1-1/+1
2017-03-18Log startup timeEvgeniy Khramtsov1-2/+4
2017-03-10Add support for file-based queuesEvgeniy Khramtsov1-0/+11
It's now possible to use files as internal packet queues. The following options are introduced: * queue_type: the option can be set to `ram` (default) or `file`. The option can be set per virtual host. * queue_dir: path to the directory where queues will be allocated. The default is 'queue' directory inside Mnesia directory. This is a global option and cannot be set per virtual host.
2017-02-27Change loglevel on configuration reloadEvgeniy Khramtsov1-15/+1
2017-02-26Put more stuff under supervisionEvgeniy Khramtsov1-13/+9
2017-02-24Improve startup procedureEvgeniy Khramtsov1-33/+3
2017-02-23Start/stop virtual hosts when reloading configuration fileEvgeniy Khramtsov1-13/+3
2017-01-11Implement database backend interface for ejabberd_routerEvgeniy Khramtsov1-5/+5
2017-01-02Update copyright date automatically (#1442)Badlop1-1/+1
2016-12-28Add xmpp_stream_out behaviour and rewrite s2s/SM codeEvgeniy Khramtsov1-1/+1
2016-11-21Don't forget to start XMPP applicationEvgeniy Khramtsov1-3/+1
2016-11-14Use p1_http from p1_utils 1.0.6Christophe Romain1-1/+0
2016-10-05New api permissions frameworkPaweł Chmielowski1-0/+1
2016-09-27Add http_p1.erl, rest.erl, and oauth2 ReST backend for tokens.Alexey Shchepin1-0/+1
2016-09-08Revert "Don't log an [error] message if Elixir is missing"Holger Weiss1-1/+1
This reverts commit 41386d718dbc5f6e846baaac568ba1cae5eb7ec4. The issue was fixed with commit 4bd45bada70fc233bb87bc7ab099fc2407cea30b.
2016-09-08Don't log an [error] message if Elixir is missingHolger Weiss1-1/+1
The Elixir support is still optional. Closes #1250.
2016-09-08Start elixir config code only if elixir was enabled in configure scriptPaweł Chmielowski1-4/+9
2016-09-08Support for Elixir configuration file #1208gabrielgatu1-0/+14
Contribution for Google Summer of code 2016 by Gabriel Gatu
2016-09-07Merge pull request #1253 from Amuhar/xep0356Christophe Romain1-0/+1
2016-08-01Remove compile warningMickael Remond1-1/+1
2016-07-28Start elixir application after ejabberd_app:start_apps()gabrielgatu1-0/+7
2016-06-07When stopping ejabberd, stop modules after broadcasting c2s shutdown (#1144)Badlop1-1/+1
2016-05-09Handle Redis connection in a separate moduleEvgeniy Khramtsov1-0/+1
2016-03-29Move start and stop_modules/0 from ejabberd_app to gen_mod (#1039)Badlop1-39/+3
2016-03-16Start ezlib only if required, as it's optional (#1006)Badlop1-1/+0
2016-02-03Switch to Fast XML moduleMickael Remond1-1/+1
2016-02-03Switch to fast_tls and update app namesMickael Remond1-1/+1
2016-02-03Convert more dependencies to new repository / packagesMickael Remond1-1/+1
2016-02-03Convert code to use Fast YAMLMickael Remond1-1/+1
2016-02-03Use stringprep app nameMickael Remond1-1/+1
2016-01-13Update copyright to 2016 (#901)Badlop1-1/+1
2015-12-01Update cache_tab app nameMickael Remond1-1/+1
2015-11-24Move JID related functions to jid.erl (#847)Evgeniy Khramtsov1-1/+1
2015-11-03Faster string_to_jid/1 implementationPaweł Chmielowski1-0/+1
This version is about 10-15% faster than old one