prototype TAP-1.1 service
Patrick Dowler
patrick.dowler at nrc-cnrc.gc.ca
Thu May 28 00:05:11 CEST 2015
I have updated the CADC TAP service with some TAP-1.1 goodies:
1. VOSI-capabilities describes the standard TAP-1.0 "base URL" interface
and separate TAP-1.1#sync and TAP-1.1#async capabilities with multiple
interfaces (differing by securityMethod).
http://www.cadc-ccda.hia-iha.nrc-cnrc.gc.ca/tap/capabilities
I was unable to describe the TAP-1.1 capabilities with TAPRegExt because
it restricts the standardID to a single value. That makes no sense to me
since one should be able to use that description to describe any service
where that metadata is applicable, not just TAP-1.0; it certainly isn't
supportive of new versions. But the content is hiding there in a comment
and shows that I would in fact describe my sync and async capabilities
differently.
2. The default version of our service is now 1.1:
- REQUEST parameter ignored (certainly not required)
- response code of 400 for any bad input
- response code of 500 if there is some server-side failure
- response body still has a VOTable document describing the failure
If the caller specifies VERSION=1.0, they get the old behaviour:
REQUEST=doQuery required and response code 200 for bad user input (still
500 for server failure since that is usually out of app control anyway).
I think this complies to the defined behaviour of VERSION and it would
certainly help a finicky client. Very useful? I do prefer deploying one
tap service to two, but since "old" clients probably don't include
VERSION=1.0 in the parameters they are still going to need a small tweak
to get working if another change breaks them... and so far the changes
are minimal so I could make it work, but when I think about having to
pass the version value into *all* possible code that might make a
distinction.... *shudder*
3. The async job list (UWS) now supports listing your jobs (must be
authenticated*) and still gives a 403 (forbidden) for anonymous attempt
at job listing. Note that we don't ever delete old jobs that are past
the destruction time so the ist could be long if you don't delete them
yourself. I am working on a tool to put old jobs into ARCHIVED phase so
they don't show up in the default listing.
4. The async jobs now support the UWS blocking query (WAIT) with a
current maximum wait time of 60 (sec), at which point you just get the
job in the current phase (phase when the wait started). It isn't a very
fancy implementation: it just does some server side polling of the job
phase with increasing delta (1, 2, 4, 8 sec then stays at 8) because we
have 4 web servers and no distributed event notification system in place
to wake up blockers on a different server from the one actually running
the job. But, I think this is OK for what it does, which is relieve the
client from doing polling with all the connection overhead.
* Excercise for the curious: You will have to look in the
VOSI-capabilities to figure out how to authenticate :-)
--
Patrick Dowler
Canadian Astronomy Data Centre
National Research Council Canada
5071 West Saanich Road
Victoria, BC V9E 2E7
250-363-0044 (office) 250-363-0045 (fax)
More information about the dal
mailing list