RepositoryCreationService is the service which is used to create repositories in runtime. The service can be used in a standalone or cluster environment.
RepositoryConfigurationService depends on the next components:
DBCreator which is used to create new database for each unbinded datasource.
BackupManager which is used to create repository from backup.
RPCService which is used for communicating between cluster-nodes.
RPCService may not be configured. In this case, RepositoryService will work as a standalone service.
The user executes
reserveRepositoryName(String repositoryName) -
client-node calls coordinator-node to reserve
repositoryName. If this
name is already reserved or repository with this name exists,
client-node will fetch
RepositoryCreationException. If not, Client will
get token string.
Instead of executing
RepositoryEntry rEntry, String token), Coordinator-node checks the
token, and creates Repository.
When the repository has been created, the user-node broadcasts a message to
RepositoryEntry, so each cluster node starts new
There are two ways to create a repository: make it in single step - just
createRepository(String backupId, RepositoryEntry); or reserve
repositoryName at first (
then create the reserved repository
RepositoryEntry rEntry, String token).
Each datasource in
RepositoryEntry of a new Repository must have
unbinded datasources. This means such a datasource must not have database behind it.
This restriction is to avoid corruption with existing
RPCService is an optional component, but
RepositoryCreatorService cannot communicate with other cluster-nodes