[ 
https://issues.apache.org/jira/browse/JDO-623?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12671967#action_12671967
 ] 

Craig Russell commented on JDO-623:
-----------------------------------

> Since Query.cancel() cannot be invoked from the thread which started the 
> execution, should PM.setMultithreaded(true) be invoked ? 

No, multithreaded is intended to require that the implementation protect data 
structures from harm in case multiple threads are active in data structures 
visible to the application. Query.cancel doesn't operate on visible data 
structures.

> If setMultithreaded(true) is mandatory, should cancel() throw an Exception if 
> multithreaded flag is false? 

No.

> Is it the case to handle Query.cancel() without multithreaded flag being true 
> ?

Yes. Since the thread that is stuck in a query can't be simultaneously 
modifying data structures, normal care is all that's needed by the 
implementation to avoid corruption.



> Query cancel and timeout support
> --------------------------------
>
>                 Key: JDO-623
>                 URL: https://issues.apache.org/jira/browse/JDO-623
>             Project: JDO
>          Issue Type: New Feature
>          Components: api2, tck2
>            Reporter: Andy Jefferson
>            Assignee: Andy Jefferson
>             Fix For: JDO 2 maintenance release 3
>
>         Attachments: query_timeout.patch
>
>
> JDO doesn't have a mechanism to stop queries from overrunning. JPA2 now 
> allows 
> a persistence property to allow timing them out, and most JDO implementations 
> have allowed this as an extension since JDO1. It would make sense for JDO 
> (2.3) to have the same or a variation. I propose having the following
> Simple PMF property "javax.jdo.option.queryTimeout" to specify the number of 
> millisecs (or secs) before any query is timed out. Throw a 
> QueryTimeoutException (extends JDOException) when the timeout happens.
> Add methods Query.setTimeout(int), Query.getTimeout() to allow 
> setting/retrieving the timeout interval on a per-query basis.
> Add method Query.cancel() to cancel any running query. If an implementation 
> doesn't support cancelling of queries then it should throw a 
> JDOUnsupportedOptionException. Any query execute() that is cancelled will 
> throw a QueryInterruptedException (extends JDOUserException).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to