From 1878e5be10445bddaa10ab8afc10f38466def579 Mon Sep 17 00:00:00 2001 From: ViacheslavKlimov Date: Thu, 24 Oct 2024 12:37:05 +0300 Subject: [PATCH 1/3] Track changes to Git repository; ignore sync if no changes --- .../service/entitiy/dashboard/DashboardSyncService.java | 4 ++-- .../server/service/install/InstallScripts.java | 2 +- .../server/service/sync/DefaultGitSyncService.java | 8 ++++++-- .../thingsboard/server/dao/resource/ResourceService.java | 2 +- .../thingsboard/server/service/sync/vc/GitRepository.java | 6 ++++-- .../server/dao/resource/BaseResourceService.java | 2 +- 6 files changed, 15 insertions(+), 9 deletions(-) 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 Date: Thu, 24 Oct 2024 12:38:55 +0300 Subject: [PATCH 2/3] Update tailwind css safelist --- ui-ngx/tailwind.config.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ui-ngx/tailwind.config.js b/ui-ngx/tailwind.config.js index 9f79c3fa9e..e1e1d18d4a 100644 --- a/ui-ngx/tailwind.config.js +++ b/ui-ngx/tailwind.config.js @@ -167,7 +167,10 @@ module.exports = { }, safelist: [ 'lt-md:gap-3', - 'md:!hidden' + 'md:!hidden', + 'gap-6', + 'gap-7', + 'gap-10' ], corePlugins: { preflight: false From cdeb779ba2999be8be4003f4af5b4d82f9018a19 Mon Sep 17 00:00:00 2001 From: Igor Kulikov Date: Thu, 24 Oct 2024 15:52:11 +0300 Subject: [PATCH 3/3] Update tailwind css safelist --- ui-ngx/tailwind.config.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ui-ngx/tailwind.config.js b/ui-ngx/tailwind.config.js index e1e1d18d4a..f459324348 100644 --- a/ui-ngx/tailwind.config.js +++ b/ui-ngx/tailwind.config.js @@ -170,7 +170,8 @@ module.exports = { 'md:!hidden', 'gap-6', 'gap-7', - 'gap-10' + 'gap-10', + 'gt-md:justify-center' ], corePlugins: { preflight: false