aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvgeny Khramtsov <xramtsov@gmail.com>2014-04-29 13:05:58 +0400
committerEvgeny Khramtsov <xramtsov@gmail.com>2014-04-29 13:05:58 +0400
commit29aead19d9a8c8e1ebbd4b2749d3713fd42a7788 (patch)
treeee26882e2f2727d048847da1e8f73d2927fe28a4
parentMerge pull request #184 from weiss/properly-abort-s2s-in (diff)
parentadded get_random_pid/1 error handling (diff)
Merge pull request #179 from hamano/added_get_random_pid_error_handling
added get_random_pid/1 error handling
-rw-r--r--src/ejabberd_odbc.erl9
-rw-r--r--src/ejabberd_odbc_sup.erl6
2 files changed, 10 insertions, 5 deletions
diff --git a/src/ejabberd_odbc.erl b/src/ejabberd_odbc.erl
index 6a7d9de6d..802e32ae2 100644
--- a/src/ejabberd_odbc.erl
+++ b/src/ejabberd_odbc.erl
@@ -140,9 +140,12 @@ sql_bloc(Host, F) -> sql_call(Host, {sql_bloc, F}).
sql_call(Host, Msg) ->
case get(?STATE_KEY) of
undefined ->
- (?GEN_FSM):sync_send_event(ejabberd_odbc_sup:get_random_pid(Host),
- {sql_cmd, Msg, now()},
- ?TRANSACTION_TIMEOUT);
+ case ejabberd_odbc_sup:get_random_pid(Host) of
+ none -> ?WARNING_MSG("SQL calling unknown host: ~p~n", [Host]);
+ Pid ->
+ (?GEN_FSM):sync_send_event(Pid,{sql_cmd, Msg, now()},
+ ?TRANSACTION_TIMEOUT)
+ end;
_State -> nested_op(Msg)
end.
diff --git a/src/ejabberd_odbc_sup.erl b/src/ejabberd_odbc_sup.erl
index bfad5428e..d05fd139e 100644
--- a/src/ejabberd_odbc_sup.erl
+++ b/src/ejabberd_odbc_sup.erl
@@ -82,8 +82,10 @@ get_pids(Host) ->
[R#sql_pool.pid || R <- Rs].
get_random_pid(Host) ->
- Pids = get_pids(Host),
- lists:nth(erlang:phash(now(), length(Pids)), Pids).
+ case get_pids(Host) of
+ [] -> none;
+ Pids -> lists:nth(erlang:phash(now(), length(Pids)), Pids)
+ end.
add_pid(Host, Pid) ->
F = fun () ->