You are looking at documentation for an older release. Not what you want? See the current release documentation.
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 createRepository(String backupId,
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
all clusterNodes
with RepositoryEntry
, so each cluster node starts new
Repository.
There are two ways to create a repository: make it in single step - just
call createRepository(String backupId, RepositoryEntry)
; or reserve
repositoryName
at first (reserveRepositoryName(String repositoryName)
,
then create the reserved repository (createRepository(String backupId,
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
repositories data.
RPCService
is an optional component, but
RepositoryCreatorService
cannot communicate with other cluster-nodes
without it.