diff --git a/application/src/main/java/org/thingsboard/server/service/entitiy/dashboard/DashboardSyncService.java b/application/src/main/java/org/thingsboard/server/service/entitiy/dashboard/DashboardSyncService.java index 42c692f82f..8cdc30216a 100644 --- a/application/src/main/java/org/thingsboard/server/service/entitiy/dashboard/DashboardSyncService.java +++ b/application/src/main/java/org/thingsboard/server/service/entitiy/dashboard/DashboardSyncService.java @@ -74,7 +74,7 @@ public class DashboardSyncService { List resources = listFiles("resources"); for (RepoFile resourceFile : resources) { String data = getFileContent(resourceFile.path()); - resourceService.updateSystemResource(ResourceType.JS_MODULE, resourceFile.name(), data); + resourceService.createOrUpdateSystemResource(ResourceType.JS_MODULE, resourceFile.name(), data); } Stream widgetsBundles = listFiles("widget_bundles").stream() @@ -85,7 +85,7 @@ public class DashboardSyncService { RepoFile dashboardFile = listFiles("dashboards").get(0); String dashboardJson = getFileContent(dashboardFile.path()); - resourceService.updateSystemResource(ResourceType.DASHBOARD, GATEWAYS_DASHBOARD_KEY, dashboardJson); + resourceService.createOrUpdateSystemResource(ResourceType.DASHBOARD, GATEWAYS_DASHBOARD_KEY, dashboardJson); log.info("Gateways dashboard sync completed"); } diff --git a/application/src/main/java/org/thingsboard/server/service/install/InstallScripts.java b/application/src/main/java/org/thingsboard/server/service/install/InstallScripts.java index 76bf7b2e69..ba0972a1e2 100644 --- a/application/src/main/java/org/thingsboard/server/service/install/InstallScripts.java +++ b/application/src/main/java/org/thingsboard/server/service/install/InstallScripts.java @@ -523,7 +523,7 @@ public class InstallScripts { String resourceKey = resourceFile.getFileName().toString(); try { String data = getContent(resourceFile); - TbResource resource = resourceService.updateSystemResource(resourceType, resourceKey, data); + TbResource resource = resourceService.createOrUpdateSystemResource(resourceType, resourceKey, data); log.info("{} resource {}", (resource.getId() == null ? "Created" : "Updated"), resourceKey); } catch (Exception e) { throw new RuntimeException("Unable to load system resource " + resourceFile, e); diff --git a/application/src/main/java/org/thingsboard/server/service/sync/DefaultGitSyncService.java b/application/src/main/java/org/thingsboard/server/service/sync/DefaultGitSyncService.java index 7714cf80fe..30a22fe5ca 100644 --- a/application/src/main/java/org/thingsboard/server/service/sync/DefaultGitSyncService.java +++ b/application/src/main/java/org/thingsboard/server/service/sync/DefaultGitSyncService.java @@ -70,8 +70,12 @@ public class DefaultGitSyncService implements GitSyncService { try { log.debug("[{}] Fetching repository", key); - repository.fetch(); - onUpdate(key); + boolean updated = repository.fetch(); + if (updated) { + onUpdate(key); + } else { + log.debug("[{}] No changes in the repository", key); + } } catch (Throwable e) { log.error("[{}] Failed to fetch repository", key, e); } diff --git a/common/dao-api/src/main/java/org/thingsboard/server/dao/resource/ResourceService.java b/common/dao-api/src/main/java/org/thingsboard/server/dao/resource/ResourceService.java index 18549ab0d6..d6da107c60 100644 --- a/common/dao-api/src/main/java/org/thingsboard/server/dao/resource/ResourceService.java +++ b/common/dao-api/src/main/java/org/thingsboard/server/dao/resource/ResourceService.java @@ -64,7 +64,7 @@ public interface ResourceService extends EntityDaoService { long sumDataSizeByTenantId(TenantId tenantId); - TbResource updateSystemResource(ResourceType resourceType, String resourceKey, String data); + TbResource createOrUpdateSystemResource(ResourceType resourceType, String resourceKey, String data); String checkSystemResourcesUsage(String content, ResourceType... usedResourceTypes); diff --git a/common/version-control/src/main/java/org/thingsboard/server/service/sync/vc/GitRepository.java b/common/version-control/src/main/java/org/thingsboard/server/service/sync/vc/GitRepository.java index 1f434c1447..50d1a00b09 100644 --- a/common/version-control/src/main/java/org/thingsboard/server/service/sync/vc/GitRepository.java +++ b/common/version-control/src/main/java/org/thingsboard/server/service/sync/vc/GitRepository.java @@ -68,6 +68,7 @@ import org.thingsboard.server.common.data.page.SortOrder; import org.thingsboard.server.common.data.sync.vc.BranchInfo; import org.thingsboard.server.common.data.sync.vc.RepositoryAuthMethod; import org.thingsboard.server.common.data.sync.vc.RepositorySettings; +import org.thingsboard.server.common.data.util.CollectionsUtil; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; @@ -184,9 +185,9 @@ public class GitRepository { } } - public void fetch() throws GitAPIException { + public boolean fetch() throws GitAPIException { if (settings.isLocalOnly()) { - return; + return false; } log.debug("Executing fetch [{}]", settings.getRepositoryUri()); FetchResult result = execute(git.fetch() @@ -195,6 +196,7 @@ public class GitRepository { if (head != null) { this.headId = head.getObjectId(); } + return CollectionsUtil.isNotEmpty(result.getTrackingRefUpdates()); } public void deleteLocalBranchIfExists(String branch) throws GitAPIException { diff --git a/dao/src/main/java/org/thingsboard/server/dao/resource/BaseResourceService.java b/dao/src/main/java/org/thingsboard/server/dao/resource/BaseResourceService.java index bed84027f4..d169134632 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/resource/BaseResourceService.java +++ b/dao/src/main/java/org/thingsboard/server/dao/resource/BaseResourceService.java @@ -240,7 +240,7 @@ public class BaseResourceService extends AbstractCachedEntityService