Query Monitoring and Termination¶
What’s in this document?
Query monitoring and termination can be done manually from the Workbench or by running a JMX operation, and automatically by configuring GraphDB to abort queries after a certain query timeout is reached.
Query monitoring and termination using the Workbench¶
When there are running queries, their number is shown up next to the Repositories dropdown menu.
To track and interrupt long running queries:
Go to Running queries status next to the Repositories dropdown menu.
or click thePress the Abort query button to stop a query.
To pause the current state of the running queries, use the Pause button. Note that this will not stop their execution on the server.

To interrupt long running queries, click the Abort query button.
Attribute |
Description |
---|---|
|
the ID of the query |
|
local or remote worker node repository ID |
|
the operation type QUERY or UPDATE |
|
the first 500 characters of the query string |
|
the time in seconds since the iterator was created |
|
the low level details for the current query collected over the JMX interface |
You can also interrupt a query directly from the SPARQL Editor:

Query monitoring and termination using the JMX interface¶
Query monitoring¶
GraphDB offers a number of monitoring and control functions through JMX. It also provides detailed statistics about executing queries, or, more accurately,
query result iterators. This is done through the RepositoryMonitor
MBean, one for each repository instance. Each bean instance is named
after the storage directory of the repository to which it relates.
Package |
com.ontotext |
---|---|
MBean name |
RepositoryMonitor |
The RepositoryMonitor
MBean has two attributes - TrackRecords
and TrackRecordsNumber
.
The TrackRecords
attribute is an array of objects with the following attributes:
Attribute |
Description |
---|---|
|
the time (in ms) since the iterator was created |
|
the total number of operations for this iterator |
|
indicates if the query has been requested to terminate early (see below) |
|
the full text of the query |
|
the current state of the iterator: |
|
a unique alias for this iterator given by the client |
|
a unique ID for this iterator - if debug level is used to increase the detail of the GraphDB output, then this value is used to identify queries when logging the query execution plan and optimization information |
|
the type of this iterator - |
The TrackRecordsNumber
attribute is the number of running queries.

The collection of these objects grows for each executing/executed query. However, older objects in the CLOSED state expire and are removed from the collection, as the query result iterators are garbage collected.
Terminating a query¶
The following operations are available with RepositoryMonitor
MBean:
Operation |
Description |
---|---|
|
Requests that a query terminates early; parameter: trackId of the query to stop |
|
Requests that a query terminates early; parameter: trackAlias of the query to stop |
|
Returns the full text of the query; parameter: trackId of the query |
The requestStop
and requestStopByAlias
operations allow an administrator to request earliest as possible termination of a query.
To terminate a query, execute the requestStop
command with given trackId
of the query; or requestStopByAlias
with given trackAlias
.
As a result:
The
requestedToStop
attribute is set totrue
.The query terminates normally when
hasNext()
returnsfalse
.The so far collected result will be returned by the interrupted query.
Terminating a transaction¶
It is also possible to terminate a long committing update transaction. For example, when committing a ‘chain’ of many thousands of statements using some transitive property, the inferencer will attempt to materialize all possible combinations leading to hundreds of millions of inferred statements. In such a situation, you can abort the commit operation and roll back to the state the database had before the commit was attempted.
The following MBean is used:
Package |
com.ontotext |
---|---|
MBean name |
OwlimRepositoryManager |
This MBean has no attributes:
Operation |
Description |
---|---|
abortTransactionCommit |
Requests that the currently executing (lengthy) commit operation be terminated and rolled back. |
Automatically prevent long running queries¶
You can set a global query timeout period by adding a query-timeout configuration parameter. All queries will stop after the number of seconds you have set in it, where a default value of 0
indicates no limit.