From 05f0fc1142d5e848e45614e22209d040b33b9d30 Mon Sep 17 00:00:00 2001 From: YevhenBondarenko Date: Mon, 2 Dec 2024 11:01:16 +0100 Subject: [PATCH] refactoring due to comments --- .../server/install/ThingsboardInstallService.java | 9 +++------ .../DefaultDatabaseSchemaSettingsService.java | 12 +++--------- .../install/update/DefaultDataUpdateService.java | 6 ++++++ 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/application/src/main/java/org/thingsboard/server/install/ThingsboardInstallService.java b/application/src/main/java/org/thingsboard/server/install/ThingsboardInstallService.java index 52a079815c..661eab6aac 100644 --- a/application/src/main/java/org/thingsboard/server/install/ThingsboardInstallService.java +++ b/application/src/main/java/org/thingsboard/server/install/ThingsboardInstallService.java @@ -99,21 +99,18 @@ public class ThingsboardInstallService { if ("cassandra-latest-to-postgres".equals(upgradeFromVersion)) { log.info("Migrating ThingsBoard latest timeseries data from cassandra to SQL database ..."); latestMigrateService.migrate(); - } else if (upgradeFromVersion.equals("3.6.2-images")) { - installScripts.updateImages(); } else { databaseSchemaVersionService.validateSchemaSettings(); //TODO DON'T FORGET to update SUPPORTED_VERSIONS_FROM in DatabaseSchemaVersionService, // this list should include last version and can include previous versions without upgrade String fromVersion = databaseSchemaVersionService.getDbSchemaVersion(); String toVersion = databaseSchemaVersionService.getPackageSchemaVersion(); - cacheCleanupService.clearCache(); log.info("Upgrading ThingsBoard from version {} to {} ...", fromVersion, toVersion); + cacheCleanupService.clearCache(); + entityDatabaseSchemaService.createDatabaseSchema(false); databaseEntitiesUpgradeService.upgradeDatabase(); -// dataUpdateService.updateData(); - installScripts.updateResourcesUsage(); + dataUpdateService.updateData(); //TODO: update data should be cleaned after each release - entityDatabaseSchemaService.createDatabaseSchema(false); entityDatabaseSchemaService.createOrUpdateViewsAndFunctions(); entityDatabaseSchemaService.createOrUpdateDeviceInfoView(persistToTelemetry); entityDatabaseSchemaService.createDatabaseIndexes(); diff --git a/application/src/main/java/org/thingsboard/server/service/install/DefaultDatabaseSchemaSettingsService.java b/application/src/main/java/org/thingsboard/server/service/install/DefaultDatabaseSchemaSettingsService.java index 2b1ba2dc12..e3cc1d9356 100644 --- a/application/src/main/java/org/thingsboard/server/service/install/DefaultDatabaseSchemaSettingsService.java +++ b/application/src/main/java/org/thingsboard/server/service/install/DefaultDatabaseSchemaSettingsService.java @@ -19,7 +19,6 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.info.BuildProperties; import org.springframework.context.annotation.Profile; -import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; import org.thingsboard.server.service.install.update.DefaultDataUpdateService; @@ -71,13 +70,8 @@ public class DefaultDatabaseSchemaSettingsService implements DatabaseSchemaSetti @Deprecated(forRemoval = true, since = "3.9.0") private void createProductIfNotExists() { - boolean isCommunityEdition; - try { - jdbcTemplate.queryForObject("SELECT 1 FROM information_schema.tables WHERE table_name = 'integration'", Integer.class); - isCommunityEdition = false; - } catch (EmptyResultDataAccessException e) { - isCommunityEdition = true; - } + boolean isCommunityEdition = jdbcTemplate.queryForList( + "SELECT 1 FROM information_schema.tables WHERE table_name = 'integration'", Integer.class).isEmpty(); String product = isCommunityEdition ? "CE" : "PE"; jdbcTemplate.execute("ALTER TABLE tb_schema_settings ADD COLUMN IF NOT EXISTS product varchar(2) DEFAULT '" + product + "'"); } @@ -140,7 +134,7 @@ public class DefaultDatabaseSchemaSettingsService implements DatabaseSchemaSetti } private void onSchemaSettingsError(String message) { - Runtime.getRuntime().addShutdownHook(new Thread(() -> log.info(message))); + Runtime.getRuntime().addShutdownHook(new Thread(() -> log.error(message))); throw new RuntimeException(message); } } diff --git a/application/src/main/java/org/thingsboard/server/service/install/update/DefaultDataUpdateService.java b/application/src/main/java/org/thingsboard/server/service/install/update/DefaultDataUpdateService.java index 2381dd5fd7..dd69533779 100644 --- a/application/src/main/java/org/thingsboard/server/service/install/update/DefaultDataUpdateService.java +++ b/application/src/main/java/org/thingsboard/server/service/install/update/DefaultDataUpdateService.java @@ -34,6 +34,7 @@ import org.thingsboard.server.dao.rule.RuleChainService; import org.thingsboard.server.dao.sql.JpaExecutorService; import org.thingsboard.server.service.component.ComponentDiscoveryService; import org.thingsboard.server.service.component.RuleNodeClassInfo; +import org.thingsboard.server.service.install.InstallScripts; import org.thingsboard.server.utils.TbNodeUpgradeUtils; import java.util.ArrayList; @@ -57,9 +58,14 @@ public class DefaultDataUpdateService implements DataUpdateService { @Autowired JpaExecutorService jpaExecutorService; + @Autowired + private InstallScripts installScripts; + @Override public void updateData() throws Exception { log.info("Updating data ..."); + //TODO: should be cleaned after each release + installScripts.updateResourcesUsage(); log.info("Data updated."); }