Open
Description
We're having issues with connections to our prod cluster. Sometimes a query will work, but more often than not, it will throw:
** (stop) exited in: :gen_server.call(#PID<6382.29775.0>, {:checkout, #Reference<6382.893348796.102498306.96870>, true}, 5000)
** (EXIT) no process: the process is not alive or there's no process currently associated with the given name, possibly because its application isn't started
(stdlib) gen_server.erl:214: :gen_server.call/3
src/poolboy.erl:55: :poolboy.checkout/3
lib/db_connection/poolboy.ex:41: DBConnection.Poolboy.checkout/2
lib/db_connection.ex:920: DBConnection.checkout/2
lib/db_connection.ex:742: DBConnection.run/3
lib/db_connection.ex:1133: DBConnection.run_meter/3
lib/db_connection.ex:636: DBConnection.execute/4
lib/mongo.ex:431: Mongo.kill_cursors/3
when called directly from the server. We're not clear on what process it is saying is not alive.
Our logs show tcp connect
errors that look like:
04:05:52.177 [error] Mongo.Protocol (#PID<0.388.0>) failed to connect: ** (Mongo.Error) tcp connect: unknown POSIX error - :timeout
04:05:52.270 [error] GenServer #PID<0.388.0> terminating
** (stop) exited in: :gen_server.call(#PID<0.388.0>, {:checkout, #Reference<0.893348796.90439682.33221>, true, 5000}, 5000)
** (EXIT) time out
Last message: []
State: Mongo.Protocol
04:05:52.271 [error] GenServer #PID<0.375.0> terminating
** (stop) exited in: :gen_server.call(#PID<0.388.0>, {:checkout, #Reference<0.893348796.90439682.33221>, true, 5000}, 5000)
** (EXIT) time out
Last message: {:EXIT, #PID<0.348.0>, {:timeout, {:gen_server, :call, [#PID<0.388.0>, {:checkout, #Reference<0.893348796.90439682.33221>, true, 5000}, 5000]}}}
State: {:state, #PID<0.376.0>, [#PID<0.386.0>, #PID<0.385.0>, #PID<0.384.0>, #PID<0.383.0>, #PID<0.382.0>, #PID<0.381.0>, #PID<0.380.0>, #PID<0.379.0>, #PID<0.378.0>, #PID<0.377.0>], {[], []}, #Reference<0.893348796.90570754.33113>, 10, 0, 0, :fifo}
and repeat indefinitely.
We're starting mongo in our supervision tree like:
...
{Mongo, mongo()}
...
defp mongo do
config = Application.get_env(:blah, :mongo)
if Keyword.has_key?(config, :seeds) do
Keyword.update!(config, :seeds, fn seeds -> String.split(seeds, ",") end)
else
config
end
end
With config:
config :blah,
mongo: [
name: :blah_db,
seeds: System.get_env("MONGODB_HOSTS"),
database: System.get_env("MONGODB_NAME"),
username: System.get_env("MONGODB_USERNAME"),
password: System.get_env("MONGODB_PASSWORD"),
pool: DBConnection.Poolboy,
]
We are not having any problems on our staging server which is using a standalone server.
We're using the current release 0.4.3
.
Please help!