aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2016-11-21 21:34:56 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2016-11-21 21:34:56 +0300
commit3189bb3bb907335ac9288b1ef0e9738c6cfd56ea (patch)
tree1c0566b1cece3f8ace1f053689b129f3468ce445 /src
parentMerge branch 'master' of github.com:processone/ejabberd (diff)
Set 'sql_pool_size' to 1 by default for sqlite
Diffstat (limited to 'src')
-rw-r--r--src/ejabberd_sql_sup.erl22
1 files changed, 18 insertions, 4 deletions
diff --git a/src/ejabberd_sql_sup.erl b/src/ejabberd_sql_sup.erl
index 682414557..29099fce3 100644
--- a/src/ejabberd_sql_sup.erl
+++ b/src/ejabberd_sql_sup.erl
@@ -61,10 +61,6 @@ start_link(Host) ->
?MODULE, [Host]).
init([Host]) ->
- PoolSize = ejabberd_config:get_option(
- {sql_pool_size, Host},
- fun(I) when is_integer(I), I>0 -> I end,
- ?DEFAULT_POOL_SIZE),
StartInterval = ejabberd_config:get_option(
{sql_start_interval, Host},
fun(I) when is_integer(I), I>0 -> I end,
@@ -76,6 +72,7 @@ init([Host]) ->
(mssql) -> mssql;
(odbc) -> odbc
end, odbc),
+ PoolSize = get_pool_size(Type, Host),
case Type of
sqlite ->
check_sqlite_db(Host);
@@ -117,6 +114,23 @@ remove_pid(Host, Pid) ->
end,
mnesia:ets(F).
+-spec get_pool_size(atom(), binary()) -> pos_integer().
+get_pool_size(SQLType, Host) ->
+ PoolSize = ejabberd_config:get_option(
+ {sql_pool_size, Host},
+ fun(I) when is_integer(I), I>0 -> I end,
+ case SQLType of
+ sqlite -> 1;
+ _ -> ?DEFAULT_POOL_SIZE
+ end),
+ if PoolSize > 1 andalso SQLType == sqlite ->
+ ?WARNING_MSG("it's not recommended to set sql_pool_size > 1 for "
+ "sqlite, because it may cause race conditions", []);
+ true ->
+ ok
+ end,
+ PoolSize.
+
transform_options(Opts) ->
lists:foldl(fun transform_options/2, [], Opts).