The busy attribute on a node

Dave Morris dave.morris at metagrid.co.uk
Wed Apr 27 16:20:30 CEST 2016


Hiya,

On 2016-04-26 23:16, Matthew Graham wrote:
> 
> The second issue is that this means the VOSpace node featured in a
> pushToVoSpace or pullToVoSpace operation should have its busy flag set
> to true whilst the operation is in progress and this is not explicitly
> stated under these operations. This would then have the consequence
> that any pullFromVoSpace/pushFromVoSpace operation using such a node
> should fail.
> 

Could we change that last sentence to make it a bit more flexible.

Suggestion :

"This would then have the consequence that *some* 
pullFromVoSpace/pushFromVoSpace operations using such a node *may* 
fail."

"It is up to each specific transfer protocol or view to define how they 
behave when invoked on a busy node."

----
Use case #1

Definition:
"Simple HTTP GET would not be valid for a busy node."

----
Use case #2

If we defined a PaginatedProtocol that supported pagination for tabular 
data (one wiki page defining four property URI's would probably cover 
it), then while a long running database query is in progress, the node 
for the query results would be 'busy' and the complete data set would 
not available, but if we know it has already generated 1000 rows then a 
PaginatedProtocol transfer request for the first 10 rows would be valid.

Definition:
"A PaginatedProtocol transfer request would be valid for a busy node, if 
the requested page is within the range of available data."

----
Use case #3

An important VOEvent is broadcast that refers to a tar.gz archive of 
background reference material and suddenly everyone wants a copy of it. 
Using something like BitTorrent might be the best way to distribute the 
tar.gz to multiple destinations.

If we are using something like BitTorrent for the transfer protocol, 
then it would be valid to start a pull request from a node that does not 
itself have all of the data yet and is still busy pulling the data in 
from somewhere else.

Definition:
"A BitTorrentLike transfer request would be valid for a busy node, if 
the list of blocks and checksums is available."

----
Should we add something to the specification to say:

"During a protocol negotiation, a node should only offer transfer 
protocols that are valid at the point when the negotiation is taking 
place."

In other words, a busy node should not offer a transfer protocol that it 
knows would fail while the node is busy.

In the example of a long running query:

While the query is running the node should not offer simple HTTP GET, 
because it would fail.

The node may offer PaginatedProtocol while the query is running, but it 
can only offer simple HTTP GET once the query has finished and all the 
data is in place.

In the example of a BitTorrent archive:

While the inbound transfer is running the node should not offer simple 
HTTP GET, because it would fail.

The node may offer BitTorrentLike transfer while the inbound transfer is 
running, but it can only offer simple HTTP GET once the inbound transfer 
has finished and the whole of the tar.gz archive is available.



--------
Dave Morris
Software Developer
Wide Field Astronomy Unit
Institute for Astronomy
University of Edinburgh
--------



More information about the grid mailing list