At this point both SPARQL QUERY and SPARQL UPDATE requests can be viewed using the status servlet (or the status tab of the workbench) and cancelled either using that status servlet or using the REST API CANCEL method. Each is associated with a UUID which is optionally assigned by the client and otherwise assigned by the server. However no other REST API methods are assigned UUIDs, discoverable via the status servlet, or cancelable via either the status servlet or the REST API CANCEL method.
- done. Make all REST API tasks discoverable by the NSS.
- done. Modify StatusServlet to cancel tasks other than SPARQL UPDATE or SPARQL QUERY.
- done. Modify StatusServlet to report running tasks other than SPARQL UPDATE or SPARQL QUERY.
- Note: As part of this I discovered an issue where following the link provided by the status page to cancel a request would delegate from StatusServlet.doPost() to StatusServlet.doGet() even though the response had already been committed. This has been fixed.
- Note: I modified AbstractApiTask.submit() to NOT run the task in the caller's thread. This was necessary because the FutureTask was not being returned until it was complete. Thus it was not possible to enter the task into the map of currently executing tasks until the task was already finished.
- done Verify that the workbench status page has not been broken by these changes.
- done. Modify the REST client to (a) ensure that the UUID query parameter is always included;
- TODO Modify the REST client to (b) allow the caller to specify that UUID (requires code review, but this has been done for most or perhaps even all methods);
- TODO Modify the REST client to (c) automatically CANCEL an operation if there is a problem (this needs a code review);
- TODO Review shutdown of the REST client: does it attempt to cancel open operations or just abandon them (it should issue a single CANCEL for all outstanding requests)?