Skip to content

Commit 1f7b74f

Browse files
authored
PYTHON-3943 Serverless failure - TestUnifiedRunCursorCommand (#1374)
1 parent 8eb7483 commit 1f7b74f

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

pymongo/server.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,8 @@ def run_operation(
132132

133133
if publish:
134134
cmd, dbn = operation.as_command(conn)
135+
if "$db" not in cmd:
136+
cmd["$db"] = dbn
135137
assert listeners is not None
136138
listeners.publish_command_start(
137139
cmd, dbn, request_id, conn.address, service_id=conn.service_id

test/test_cursor.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
import threading
2323
import time
2424

25+
import pymongo
26+
2527
sys.path[0:0] = [""]
2628

2729
from test import IntegrationTest, client_context, unittest
@@ -1586,6 +1588,28 @@ def test_monitoring(self):
15861588
n += 4
15871589
listener.reset()
15881590

1591+
@client_context.require_version_min(5, 0, -1)
1592+
@client_context.require_no_mongos
1593+
def test_exhaust_cursor_db_set(self):
1594+
listener = OvertCommandListener()
1595+
client = rs_or_single_client(event_listeners=[listener])
1596+
self.addCleanup(client.close)
1597+
c = client.pymongo_test.test
1598+
c.delete_many({})
1599+
c.insert_many([{"_id": i} for i in range(3)])
1600+
1601+
listener.reset()
1602+
1603+
result = list(c.find({}, cursor_type=pymongo.CursorType.EXHAUST, batch_size=1))
1604+
1605+
self.assertEqual(len(result), 3)
1606+
1607+
self.assertEqual(
1608+
listener.started_command_names(), ["find", "getMore", "getMore", "getMore"]
1609+
)
1610+
for cmd in listener.started_events:
1611+
self.assertEqual(cmd.command["$db"], "pymongo_test")
1612+
15891613

15901614
if __name__ == "__main__":
15911615
unittest.main()

0 commit comments

Comments
 (0)