Skip to content

Commit 832c0f9

Browse files
committed
Removed max_time option for mod.recv. Makes no sense because :timeout from DBConnection is always used for every connection. So adding max_time to :timeout does not help here.
1 parent 7d218b6 commit 832c0f9

File tree

2 files changed

+18
-21
lines changed

2 files changed

+18
-21
lines changed

lib/mongo/mongo_db_connection.ex

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -259,26 +259,23 @@ defmodule Mongo.MongoDBConnection do
259259
cmd = cmd ++ ["$db": opts[:database] || state.database,
260260
"$readPreference": [mode: update_read_preferences(opts[:slave_ok])]]
261261

262-
timeout = Keyword.get(opts, :max_time, 0)
263-
264262
# MongoDB 3.6 only allows certain command arguments to be provided this way. These are:
265263
op = case pulling_out?(cmd, :documents) || pulling_out?(cmd, :updates) || pulling_out?(cmd, :deletes) do
266264
nil -> op_msg(flags: 0, sections: [section(payload_type: 0, payload: payload(doc: cmd))])
267265
key -> pulling_out(cmd, key)
268266
end
269267

270-
with {:ok, doc} <- Utils.post_request(op, state.request_id, state, timeout),
268+
with {:ok, doc} <- Utils.post_request(op, state.request_id, state),
271269
state = %{state | request_id: state.request_id + 1} do
272270
{:ok, doc, state}
273271
end
274272
end
275273
defp execute_action(:command, [cmd], opts, state) do
276274

277-
timeout = Keyword.get(opts, :max_time, 0)
278-
flags = Keyword.take(opts, @find_one_flags)
279-
op = op_query(coll: Utils.namespace("$cmd", state, opts[:database]), query: cmd, select: "", num_skip: 0, num_return: 1, flags: flags(flags))
275+
flags = Keyword.take(opts, @find_one_flags)
276+
op = op_query(coll: Utils.namespace("$cmd", state, opts[:database]), query: cmd, select: "", num_skip: 0, num_return: 1, flags: flags(flags))
280277

281-
with {:ok, doc} <- Utils.post_request(op, state.request_id, state, timeout),
278+
with {:ok, doc} <- Utils.post_request(op, state.request_id, state),
282279
state = %{state | request_id: state.request_id + 1} do
283280
{:ok, doc, state}
284281
end

lib/mongo_db_connection/utils.ex

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@ defmodule Mongo.MongoDBConnection.Utils do
1313
Sends a request id and waits for the response with the same id
1414
1515
"""
16-
def post_request(op, id, state, timeout \\ 0) do
16+
def post_request(op, id, state) do
1717

1818
with :ok <- send_data(encode(id, op), state),
19-
{:ok, ^id, response} <- recv_data(nil, "", state, timeout),
19+
{:ok, ^id, response} <- recv_data(nil, "", state),
2020
{:ok, doc} <- get_doc(response),
2121
do: {:ok, doc}
2222
end
@@ -39,7 +39,7 @@ defmodule Mongo.MongoDBConnection.Utils do
3939
command = command ++ ["$db": db]
4040

4141
op_msg(flags: 0, sections: [section(payload_type: 0, payload: payload(doc: command))])
42-
|> post_request(id, state, 0)
42+
|> post_request(id, state)
4343

4444
end
4545
def command(id, command, state) do
@@ -52,7 +52,7 @@ defmodule Mongo.MongoDBConnection.Utils do
5252
end
5353

5454
op_query(coll: ns, query: command, select: "", num_skip: 0, num_return: 1, flags: [])
55-
|> post_request(id, state, 0)
55+
|> post_request(id, state)
5656

5757
end
5858

@@ -84,28 +84,28 @@ defmodule Mongo.MongoDBConnection.Utils do
8484
end
8585
end
8686

87-
defp recv_data(nil, "", %{connection: {mod, socket}} = state, timeout) do
88-
case mod.recv(socket, 0, timeout + state.timeout) do
89-
{:ok, tail} -> recv_data(nil, tail, state, timeout)
87+
defp recv_data(nil, "", %{connection: {mod, socket}} = state) do
88+
case mod.recv(socket, 0, state.timeout) do
89+
{:ok, tail} -> recv_data(nil, tail, state)
9090
{:error, reason} -> recv_error(reason, state)
9191
end
9292
end
93-
defp recv_data(nil, data, %{connection: {mod, socket}} = state, timeout) do
93+
defp recv_data(nil, data, %{connection: {mod, socket}} = state) do
9494
case decode_header(data) do
95-
{:ok, header, rest} -> recv_data(header, rest, state, timeout)
95+
{:ok, header, rest} -> recv_data(header, rest, state)
9696
:error ->
97-
case mod.recv(socket, 0, timeout + state.timeout) do
98-
{:ok, tail} -> recv_data(nil, [data|tail], state, timeout)
97+
case mod.recv(socket, 0, state.timeout) do
98+
{:ok, tail} -> recv_data(nil, [data|tail], state)
9999
{:error, reason} -> recv_error(reason, state)
100100
end
101101
end
102102
end
103-
defp recv_data(header, data, %{connection: {mod, socket}} = state, timeout) do
103+
defp recv_data(header, data, %{connection: {mod, socket}} = state) do
104104
case decode_response(header, data) do
105105
{:ok, id, reply, ""} -> {:ok, id, reply}
106106
:error ->
107-
case mod.recv(socket, 0, timeout + state.timeout) do
108-
{:ok, tail} -> recv_data(header, [data|tail], state, timeout)
107+
case mod.recv(socket, 0, state.timeout) do
108+
{:ok, tail} -> recv_data(header, [data|tail], state)
109109
{:error, reason} -> recv_error(reason, state)
110110
end
111111
end

0 commit comments

Comments
 (0)