[SERVER-12123] audit interrupt points for new query system runners Created: 16/Dec/13  Updated: 10/Dec/14  Resolved: 22/Jan/14

Status: Closed
Project: Core Server
Component/s: Querying
Affects Version/s: 2.5.4
Fix Version/s: None

Type: Task Priority: Major - P3
Reporter: David Storch Assignee: David Storch
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Participants:

 Description   

Right now the query system doesn't do a good job of checking whether the operation has been killed using

killCurrentOp.checkForInterrupt()

This can make it impossible to kill long-running queries. Runners should check for interrupt inside their getNext() method.



 Comments   
Comment by Eric Milkie [ 16/Dec/13 ]

Definitely still a good idea to audit the new runner to make sure interrupt points (and yield points) are hit at all proper times through the loop; a lot has changed since the original query code.

Comment by David Storch [ 16/Dec/13 ]

milkie, good to know, thanks. Discussed with Hari earlier and thought there may be some missing interrupt points in the runners. If we already check for interrupt at yield points, then there may not be any action to take here.

Comment by Eric Milkie [ 16/Dec/13 ]

In general, I believe that we check for interrupt at yield points, and a well-behaved query will yield at a reasonable interval.
Unfortunately, the "sleep" functionality does not yield (I think it just calls process sleep for the amount of time requested), and thus is not a good test of the killing/yielding functionality.

Generated at Thu Feb 08 03:27:40 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.