[SERVER-2212] Server automatically abort queries/commands after user-specified time limit Created: 13/Dec/10 Updated: 28/Feb/23 Resolved: 14/Nov/13 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | Querying |
| Affects Version/s: | None |
| Fix Version/s: | 2.5.4 |
| Type: | New Feature | Priority: | Major - P3 |
| Reporter: | ppalka | Assignee: | J Rassi |
| Resolution: | Done | Votes: | 35 |
| Labels: | query_triage | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Participants: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Description |
|
Add { $maxTimeMS: <integer> } as a query option, and add { maxTimeMS: <integer> } as a command option to all commands. Operations that exceed their time limit will be aborted, and an error will be returned to the client. A cursor.maxTimeMS() shell helper will be provided for queries. Details:
|
| Comments |
| Comment by auto [ 01/Nov/13 ] |
|
Author: {u'username': u'jrassi', u'name': u'j. rassi', u'email': u'rassi@10gen.com'}Message: |
| Comment by auto [ 31/Oct/13 ] |
|
Author: {u'username': u'jrassi', u'name': u'Jason Rassi', u'email': u'rassi@10gen.com'}Message: Wait for inserts to complete before expecting count to include them. |
| Comment by auto [ 31/Oct/13 ] |
|
Author: {u'username': u'jrassi', u'name': u'Jason Rassi', u'email': u'rassi@10gen.com'}Message: |
| Comment by auto [ 31/Oct/13 ] |
|
Author: {u'username': u'jrassi', u'name': u'Jason Rassi', u'email': u'rassi@10gen.com'}Message: |
| Comment by auto [ 31/Oct/13 ] |
|
Author: {u'username': u'jrassi', u'name': u'Jason Rassi', u'email': u'rassi@10gen.com'}Message: If a maxTimeMS sharded query exceeds its time limit, the next request |
| Comment by auto [ 31/Oct/13 ] |
|
Author: {u'username': u'jrassi', u'name': u'Jason Rassi', u'email': u'rassi@10gen.com'}Message: |
| Comment by auto [ 31/Oct/13 ] |
|
Author: {u'username': u'jrassi', u'name': u'Jason Rassi', u'email': u'rassi@10gen.com'}Message: |
| Comment by auto [ 25/Sep/13 ] |
|
Author: {u'username': u'jrassi', u'name': u'Jason Rassi', u'email': u'rassi@10gen.com'}Message: |
| Comment by auto [ 25/Sep/13 ] |
|
Author: {u'username': u'jrassi', u'name': u'Jason Rassi', u'email': u'rassi@10gen.com'}Message: Includes:
|
| Comment by auto [ 16/Sep/13 ] |
|
Author: {u'username': u'jrassi', u'name': u'Jason Rassi', u'email': u'rassi@10gen.com'}Message: |
| Comment by auto [ 12/Sep/13 ] |
|
Author: {u'username': u'jrassi', u'name': u'Jason Rassi', u'email': u'rassi@10gen.com'}Message: Adds support for the command option "maxTimeMS", and removes For normal queries: specify "$maxTimeMS" as a top-level query option For commands: specify "maxTimeMS" at the command document level |
| Comment by auto [ 12/Sep/13 ] |
|
Author: {u'username': u'jrassi', u'name': u'Jason Rassi', u'email': u'rassi@10gen.com'}Message: |
| Comment by auto [ 11/Sep/13 ] |
|
Author: {u'username': u'jrassi', u'name': u'Jason Rassi', u'email': u'rassi@10gen.com'}Message: |
| Comment by auto [ 26/Jul/13 ] |
|
Author: {u'username': u'jrassi', u'name': u'Jason Rassi', u'email': u'rassi@10gen.com'}Message: $maxTimeMS can be added as a top-level field to any query or |
| Comment by auto [ 26/Jul/13 ] |
|
Author: {u'username': u'jrassi', u'name': u'Jason Rassi', u'email': u'rassi@10gen.com'}Message: If a CurOp object generating a cursor has a time limit imposed, |
| Comment by auto [ 26/Jul/13 ] |
|
Author: {u'username': u'jrassi', u'name': u'Jason Rassi', u'email': u'rassi@10gen.com'}Message:
|
| Comment by auto [ 26/Jul/13 ] |
|
Author: {u'username': u'jrassi', u'name': u'Jason Rassi', u'email': u'rassi@10gen.com'}Message: |
| Comment by auto [ 26/Jul/13 ] |
|
Author: {u'username': u'jrassi', u'name': u'Jason Rassi', u'email': u'rassi@10gen.com'}Message: |
| Comment by Chelliah Thirunavukkarasu [ 17/Apr/13 ] |
|
In the interim, would it be possible to change db.currentOp() to at least print query's comment? We have written a "governor" that kills queries if they have exceeded a time limit and we are using db.currentOp() to get the list of queries. We also use query's comment to mark the queries that are safe to be killed. If the query expression is too complicated, db.currentOp() does not print the query and therefore the query comment and this prevents us from reliably identifying the queries that are safe to be killed. |
| Comment by Victor [ 14/Jun/11 ] |
|
It would be great that not only JDBC driver stopped waiting for long query but also server killed the query. |
| Comment by Alexey Palazhchenko [ 19/May/11 ] |
|
Something like $maxTime would be very helpful. I noticed a situation when HTTP requests were timed out, but queries are running in database. |
| Comment by Adrien Mogenet [ 12/Jan/11 ] |
|
$maxScan or $maxTime ? (maybe $maxScan could be a hint for query optimizer when browsing indexes ?) |