Browse Source

clone repo if tmp directory was deleted

pull/10321/head
dashevchenko 2 years ago
parent
commit
2e216242f2
  1. 39
      common/version-control/src/main/java/org/thingsboard/server/service/sync/vc/DefaultGitRepositoryService.java

39
common/version-control/src/main/java/org/thingsboard/server/service/sync/vc/DefaultGitRepositoryService.java

@ -157,7 +157,7 @@ public class DefaultGitRepositoryService implements GitRepositoryService {
@Override
public void fetch(TenantId tenantId) throws GitAPIException {
var repository = repositories.get(tenantId);
var repository = checkRepository(tenantId);
if (repository != null) {
log.debug("[{}] Fetching tenant repository.", tenantId);
repository.fetch();
@ -195,8 +195,17 @@ public class DefaultGitRepositoryService implements GitRepositoryService {
}
private GitRepository checkRepository(TenantId tenantId) {
return Optional.ofNullable(repositories.get(tenantId))
GitRepository gitRepository = Optional.ofNullable(repositories.get(tenantId))
.orElseThrow(() -> new IllegalStateException("Repository is not initialized"));
if (!Files.exists(Path.of(gitRepository.getDirectory()))) {
try {
return cloneRepository(tenantId, gitRepository.getSettings());
} catch (Exception e) {
throw new IllegalStateException("Repository is not initialized");
}
}
return gitRepository;
}
@Override
@ -229,17 +238,7 @@ public class DefaultGitRepositoryService implements GitRepositoryService {
testRepository(tenantId, settings);
clearRepository(tenantId);
log.debug("[{}] Init tenant repository started.", tenantId);
Path repositoryDirectory = Path.of(repositoriesFolder, tenantId.getId().toString());
GitRepository repository;
if (Files.exists(repositoryDirectory)) {
FileUtils.forceDelete(repositoryDirectory.toFile());
}
Files.createDirectories(repositoryDirectory);
repository = GitRepository.clone(settings, repositoryDirectory.toFile());
repositories.put(tenantId, repository);
log.debug("[{}] Init tenant repository completed.", tenantId);
cloneRepository(tenantId, settings);
}
@Override
@ -276,4 +275,18 @@ public class DefaultGitRepositoryService implements GitRepositoryService {
String entityId = StringUtils.substringBetween(path, "/", ".json");
return EntityIdFactory.getByTypeAndUuid(entityType, entityId);
}
private GitRepository cloneRepository(TenantId tenantId, RepositorySettings settings) throws Exception {
log.debug("[{}] Init tenant repository started.", tenantId);
Path repositoryDirectory = Path.of(repositoriesFolder, tenantId.getId().toString());
if (Files.exists(repositoryDirectory)) {
FileUtils.forceDelete(repositoryDirectory.toFile());
}
Files.createDirectories(repositoryDirectory);
GitRepository repository = GitRepository.clone(settings, repositoryDirectory.toFile());
repositories.put(tenantId, repository);
log.debug("[{}] Init tenant repository completed.", tenantId);
return repository;
}
}

Loading…
Cancel
Save