[VOSI] Re: TAP 1.0: sync vs async

Patrick Dowler patrick.dowler at nrc-cnrc.gc.ca
Mon Jul 20 12:25:00 PDT 2009


Prescript: I was off last week, so have many responses coming. I will try to 
divide them into smaller messages and put something indicative in the subject 
line.

On Thursday 16 July 2009 02:24:30 Gerard wrote:
> One "argument" against leaving it optional to support sync is that the VOSI
> requests are currently implemented on the sync/ end point.
> Irrespective of how we decide on sync vs async, I propose the VOSI requests
> should NOT be put on top of the sync/ end point, but "next to" sync/ and
> async/. They are different things from the actual service requests and
> should/need not be mixed with them.

Current draft:

$base/async?REQUEST=doQuery&...
$base/sync?REQUEST=doQuery&...
$base/sync?REQUEST=getAvailability
$base/sync?REQUEST=getCapabilities
$base/sync?REQUEST=getTableMetadata

Proposed (e.g.):

$base/async
$base/sync
$base/availability
$base/capabilities
$base/tableMetadata

As a side effect, this makes REQUEST obsolete since there is only one possible 
value (doQuery). On the surface, this is unlike DAL2 (specifically, SSA 1.0) 
which is syntactically like the sync endpoint of TAP. On the other hand, it is 
very much like the VOSpace 2.0 (REST) draft, with service-specific and common 
resources:

$base/nodes
$base/transfers
$base/availability
$base/capabilities

In the previous discussions, we considered this mainly a stylistic issue and 
it looks a lot like DAL-style vs GWS-style :-) However, as has been discovered 
and pointed out, putting VOSI resources under a service-specific resource 
couples the mandatory-ness and I find that to be a compelling reason to make 
this change. Discussions of required vs optional should not be encumbered in 
this way.

On the technical side, Guy is correct that one is forced to write dispatch 
code (the primary thing that application servers do for you) to 
forward/redirect the VOSI requests from the /sync code to some other code. I 
have that exact code in our prototype and even though the metadata I did 
implement is generated dynamically it still makes sense to keep the code 
separate. So in the end you write some logic and forwarding code, you write 
tests to make sure the logic is followed correctly, etc. In the design of our 
TAP 1.0 implementation, it seems that availability is inherently dynamic, 
capabilities are likely very static, and table metadata will be implemented 
dynamically to avoid redundancy (it will be generated from TAP_SCHEMA), but it 
could be static or at least generated, cached, and served as a static 
resource.

If we were to make this change, it would open up the possibility to make one 
or both of sync and async optional and whose presence/support would be 
described by capabilities. Maybe that would be a change for the future as I 
think it is easy enough to relax restrictions. I certainly can see other types 
of services not wanting to require both and hence having to break with the 
style used in TAP (or SSA) anyway, and if that is the case maybe now is a 
better time than later to at least make it cleanly possible by separating the 
VOSI and service resources.


-- 

Patrick Dowler
Tel/Tél: (250) 363-0044
Canadian Astronomy Data Centre
National Research Council Canada
5071 West Saanich Road
Victoria, BC V9E 2M7

Centre canadien de donnees astronomiques
Conseil national de recherches Canada
5071, chemin West Saanich
Victoria (C.-B.) V9E 2M7



More information about the dal mailing list