Introduction
Excerpt |
---|
In order to distribute the data in the object repositories amongst the relay servers, they should be replicated. This design describes how this is done. |
Protocol
The repository replication protocol has three commands. The first one is to query the object repositories to check which ones there are and what data they contain. The second command and third commands are get and put.
Querying object repositories
This command can be used to exchange information about available object repositories and the versions they contain. Information is exchanged between the central server and client. You ask the server what versions it has, either for a specific repository or for all repositories. The result is a collection of services and range of versions. You can then act on that and ask for versions you don't have.
GET repository/query - returns a full list of repositories and their version ranges;
GET repository/query?customer=luminis&name=shop - returns a version range numbers for a specific repository;
GET repository/query?filter=(customer='luminis') - returns versions for any repository that matches the filter.
Info | ||
---|---|---|
| ||
Queries (for log information or entries) come in three forms:
|
Getting a version
Here you're asking the other server for data. As part of the request, you ask for specific information about one version for one repository.
GET replicate/checkout?customer=luminis&name=shop&version=x - returns a stream of data for version x from the repository.
Putting a version
Putting a version is done from the client to the server.
POST replication/put?customer=luminis&name=shop&version=x - Put a stream of data into the repository.