[
https://issues.apache.org/jira/browse/JENA-2141?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Andy Seaborne updated JENA-2141:
--------------------------------
Description:
This follows on from JENA-2139. It is the more general case.
This is query 1 from the [report from: Cristóbal Miranda on
users@|https://lists.apache.org/thread.html/r410953678c75caef6e2391081f881b96a9c648ee77ef9aa3748feda9%40%3Cusers.jena.apache.org%3E].
Query cancellation happens when an async timeout call {{queryIterator.abort}}
in QueryExecutionBase.
But {{queryIterator}} is only set after the execution tree of iterators has
been built, bottom-up.
If building takes a long time, the timeout callback can not call {{.abort}}.
The code needs to have a flag setup so it can be set at any time.
The mechanism added in Jena-2139, and similar code in {{QueryIterSort}},
{{QueryIterGroup}} and {{QueryIterTopN}}, which uses delayed initialization is
better when this is possible. However, sometimes it is not easy to know when in
the initialization phase.
One possibility is adding this to the {{ExecutionContext}} which exists and is
passed to all query iterators during the setup phase.
{{QueryExecutionBase}} is being renamed as {{QueryExecDataset}} in
[PR#1003|https://github.com/apache/jena/pull/1030] as part of JENA-2128 in
JENA-2125.
was:
This follows on from JENA-2139. It is the more general case.
This is query 1 from the [report from: Cristóbal Miranda on
users@|https://lists.apache.org/thread.html/r410953678c75caef6e2391081f881b96a9c648ee77ef9aa3748feda9%40%3Cusers.jena.apache.org%3E].
Query cancellation happens when an async timeout call {{queryIterator.abort}}
in QueryExecutionBase.
But {{queryIterator}} is only set after the execution tree of iterators has
been built, bottom-up.
If building takes a long time, the timeout callback can not call {{.abort}}.
The code needs to have a flag setup so it can be set at any time.
The mechanism added in Jena-2139, and similar code in {{QueryIterSort}},
{{QueryIterGroup}} and {{QueryIterTopN}}, which uses delayed initialization is
better when this is possible. However, sometimes it is not easy to know when in
the initialization phase.
One possibility is adding this to the {{ExecutionContext}}which exists and is
passed to all query iterators during the setup phase.
{{QueryExecutionBase}} is being renamed as {{QueryExecDataset}} in
[PR#1003|https://github.com/apache/jena/pull/1030] as part of JENA-2128 in
JENA-2125.
> Query timeout may not be seen if during execution initialization.
> -----------------------------------------------------------------
>
> Key: JENA-2141
> URL: https://issues.apache.org/jira/browse/JENA-2141
> Project: Apache Jena
> Issue Type: Bug
> Components: ARQ
> Affects Versions: Jena 4.1.0
> Reporter: Andy Seaborne
> Assignee: Andy Seaborne
> Priority: Major
>
> This follows on from JENA-2139. It is the more general case.
> This is query 1 from the [report from: Cristóbal Miranda on
> users@|https://lists.apache.org/thread.html/r410953678c75caef6e2391081f881b96a9c648ee77ef9aa3748feda9%40%3Cusers.jena.apache.org%3E].
> Query cancellation happens when an async timeout call {{queryIterator.abort}}
> in QueryExecutionBase.
> But {{queryIterator}} is only set after the execution tree of iterators has
> been built, bottom-up.
> If building takes a long time, the timeout callback can not call {{.abort}}.
> The code needs to have a flag setup so it can be set at any time.
> The mechanism added in Jena-2139, and similar code in {{QueryIterSort}},
> {{QueryIterGroup}} and {{QueryIterTopN}}, which uses delayed initialization
> is better when this is possible. However, sometimes it is not easy to know
> when in the initialization phase.
> One possibility is adding this to the {{ExecutionContext}} which exists and
> is passed to all query iterators during the setup phase.
>
> {{QueryExecutionBase}} is being renamed as {{QueryExecDataset}} in
> [PR#1003|https://github.com/apache/jena/pull/1030] as part of JENA-2128 in
> JENA-2125.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)