@@ -1648,7 +1648,10 @@ nextBatch (Cursor fcol batchSize var) = liftDB $ modifyMVar var $ \dBatch -> do
1648
1648
(0 , _) -> return (emptyBatch, resultDocs)
1649
1649
(_, Just 0 ) -> do
1650
1650
pipe <- asks mongoPipe
1651
- liftIOE ConnectionFailure $ P. send pipe [KillCursors [cid]]
1651
+ let sd = P. serverData pipe
1652
+ if maxWireVersion sd < opMsgOnlyWireVersion
1653
+ then liftIOE ConnectionFailure $ P. send pipe [KillCursors [cid]]
1654
+ else liftIOE ConnectionFailure $ P. sendOpMsg pipe [Kc (P. KillC (KillCursors [cid]) fcol)] (Just MoreToCome ) []
1652
1655
return (emptyBatch, resultDocs)
1653
1656
(_, _) -> (, resultDocs) <$> getNextBatch
1654
1657
@@ -1710,11 +1713,14 @@ rest :: MonadIO m => Cursor -> Action m [Document]
1710
1713
rest c = loop (next c)
1711
1714
1712
1715
closeCursor :: MonadIO m => Cursor -> Action m ()
1713
- closeCursor (Cursor _ _ var) = liftDB $ modifyMVar var $ \ dBatch -> do
1716
+ closeCursor (Cursor fcol _ var) = liftDB $ modifyMVar var $ \ dBatch -> do
1714
1717
Batch _ cid _ <- fulfill dBatch
1715
1718
unless (cid == 0 ) $ do
1716
1719
pipe <- asks mongoPipe
1717
- liftIOE ConnectionFailure $ P. send pipe [KillCursors [cid]]
1720
+ let sd = P. serverData pipe
1721
+ if maxWireVersion sd < opMsgOnlyWireVersion
1722
+ then liftIOE ConnectionFailure $ P. send pipe [KillCursors [cid]]
1723
+ else liftIOE ConnectionFailure $ P. sendOpMsg pipe [Kc (P. KillC (KillCursors [cid]) fcol)] (Just MoreToCome ) []
1718
1724
return (return $ Batch (Just 0 ) 0 [] , () )
1719
1725
1720
1726
isCursorClosed :: MonadIO m => Cursor -> Action m Bool
0 commit comments