mirror of
https://github.com/processone/ejabberd.git
synced 2024-11-24 16:23:40 +01:00
* src/odbc/ejabberd_odbc.erl: Added a way to retry database
connection connect for 5 minutes when the connection is lost. No further connection is retry after 5 minutes (EJAB-22 & EJAB-25) * src/odbc/ejabberd_odbc_sup.erl: likewise SVN Revision: 485
This commit is contained in:
parent
54a1ced6f6
commit
c7bafe0056
@ -6,6 +6,10 @@
|
||||
* src/mod_vcard_odbc.erl: likewise.
|
||||
* src/odbc/mysql.sql: Fixed MySQL database creation script: Was
|
||||
not properly working with all MySQL version.
|
||||
* src/odbc/ejabberd_odbc.erl: Added a way to retry database
|
||||
connection connect for 5 minutes when the connection is lost. No
|
||||
further connection is retry after.
|
||||
* src/odbc/ejabberd_odbc_sup.erl: likewise.
|
||||
|
||||
2006-01-13 Alexey Shchepin <alexey@sevcom.net>
|
||||
|
||||
|
@ -171,6 +171,11 @@ code_change(_OldVsn, State, _Extra) ->
|
||||
%% {noreply, State, Timeout} |
|
||||
%% {stop, Reason, State} (terminate/2 is called)
|
||||
%%----------------------------------------------------------------------
|
||||
%% We receive the down signal when we loose the MySQL connection (we are
|
||||
%% monitoring the connection)
|
||||
%% => We exit and let the supervisor restart the connection.
|
||||
handle_info({'DOWN', _MonitorRef, process, _Pid, _Info}, State) ->
|
||||
{stop, connection_dropped, State};
|
||||
handle_info(_Info, State) ->
|
||||
{noreply, State}.
|
||||
|
||||
@ -185,7 +190,6 @@ terminate(_Reason, _State) ->
|
||||
%%%----------------------------------------------------------------------
|
||||
%%% Internal functions
|
||||
%%%----------------------------------------------------------------------
|
||||
|
||||
sql_query_internal(State, Query) ->
|
||||
case State#state.db_type of
|
||||
odbc ->
|
||||
@ -223,6 +227,8 @@ odbc_connect(SQLServer) ->
|
||||
{error, Reason} ->
|
||||
?ERROR_MSG("ODBC connection (~s) failed: ~p~n",
|
||||
[SQLServer, Reason]),
|
||||
%% If we can't connect we wait for 30 seconds before retrying
|
||||
timer:sleep(30000),
|
||||
{stop, odbc_connection_failed}
|
||||
end.
|
||||
|
||||
@ -237,6 +243,8 @@ pgsql_connect(Server, DB, Username, Password) ->
|
||||
{ok, #state{db_ref = Ref, db_type = pgsql}};
|
||||
{error, Reason} ->
|
||||
?ERROR_MSG("PostgreSQL connection failed: ~p~n", [Reason]),
|
||||
%% If we can't connect we wait for 30 seconds before retrying
|
||||
timer:sleep(30000),
|
||||
{stop, pgsql_connection_failed}
|
||||
end.
|
||||
|
||||
@ -271,9 +279,12 @@ mysql_connect(Server, DB, Username, Password) ->
|
||||
NoLogFun = fun(_Level,_Format,_Argument) -> ok end,
|
||||
case mysql_conn:start(Server, ?MYSQL_PORT, Username, Password, DB, NoLogFun) of
|
||||
{ok, Ref} ->
|
||||
erlang:monitor(process, Ref),
|
||||
{ok, #state{db_ref = Ref, db_type = mysql}};
|
||||
{error, Reason} ->
|
||||
?ERROR_MSG("MySQL connection failed: ~p~n", [Reason]),
|
||||
%% If we can't connect we wait for 30 seconds before retrying
|
||||
timer:sleep(30000),
|
||||
{stop, mysql_connection_failed}
|
||||
end.
|
||||
|
||||
|
@ -25,7 +25,7 @@ start_link(Host) ->
|
||||
init([Host]) ->
|
||||
% TODO
|
||||
N = 10,
|
||||
{ok, {{one_for_one, 10, 1},
|
||||
{ok, {{one_for_one, 10, 6},
|
||||
lists:map(
|
||||
fun(I) ->
|
||||
{I,
|
||||
|
Loading…
Reference in New Issue
Block a user