Browse Source

Entities versioning refactoring

pull/11112/head
ViacheslavKlimov 2 years ago
parent
commit
701260c4e9
  1. 26
      application/src/main/data/upgrade/3.7.0/schema_update.sql
  2. 10
      common/cache/src/main/java/org/thingsboard/server/cache/VersionedCaffeineTbCache.java
  3. 10
      common/cache/src/main/java/org/thingsboard/server/cache/VersionedRedisTbCache.java
  4. 10
      common/cache/src/main/java/org/thingsboard/server/cache/VersionedTbCache.java
  5. 26
      dao/src/main/resources/sql/schema-entities.sql

26
application/src/main/data/upgrade/3.7.0/schema_update.sql

@ -27,18 +27,18 @@ ALTER TABLE ts_kv_latest ADD COLUMN version bigint default 0;
-- ENTITIES VERSIONING UPDATE START -- ENTITIES VERSIONING UPDATE START
ALTER TABLE device ADD COLUMN IF NOT EXISTS version INT DEFAULT 1; ALTER TABLE device ADD COLUMN IF NOT EXISTS version BIGINT DEFAULT 1;
ALTER TABLE device_profile ADD COLUMN IF NOT EXISTS version INT DEFAULT 1; ALTER TABLE device_profile ADD COLUMN IF NOT EXISTS version BIGINT DEFAULT 1;
ALTER TABLE device_credentials ADD COLUMN IF NOT EXISTS version INT DEFAULT 1; ALTER TABLE device_credentials ADD COLUMN IF NOT EXISTS version BIGINT DEFAULT 1;
ALTER TABLE asset ADD COLUMN IF NOT EXISTS version INT DEFAULT 1; ALTER TABLE asset ADD COLUMN IF NOT EXISTS version BIGINT DEFAULT 1;
ALTER TABLE asset_profile ADD COLUMN IF NOT EXISTS version INT DEFAULT 1; ALTER TABLE asset_profile ADD COLUMN IF NOT EXISTS version BIGINT DEFAULT 1;
ALTER TABLE entity_view ADD COLUMN IF NOT EXISTS version INT DEFAULT 1; ALTER TABLE entity_view ADD COLUMN IF NOT EXISTS version BIGINT DEFAULT 1;
ALTER TABLE tb_user ADD COLUMN IF NOT EXISTS version INT DEFAULT 1; ALTER TABLE tb_user ADD COLUMN IF NOT EXISTS version BIGINT DEFAULT 1;
ALTER TABLE customer ADD COLUMN IF NOT EXISTS version INT DEFAULT 1; ALTER TABLE customer ADD COLUMN IF NOT EXISTS version BIGINT DEFAULT 1;
ALTER TABLE edge ADD COLUMN IF NOT EXISTS version INT DEFAULT 1; ALTER TABLE edge ADD COLUMN IF NOT EXISTS version BIGINT DEFAULT 1;
ALTER TABLE rule_chain ADD COLUMN IF NOT EXISTS version INT DEFAULT 1; ALTER TABLE rule_chain ADD COLUMN IF NOT EXISTS version BIGINT DEFAULT 1;
ALTER TABLE dashboard ADD COLUMN IF NOT EXISTS version INT DEFAULT 1; ALTER TABLE dashboard ADD COLUMN IF NOT EXISTS version BIGINT DEFAULT 1;
ALTER TABLE widget_type ADD COLUMN IF NOT EXISTS version INT DEFAULT 1; ALTER TABLE widget_type ADD COLUMN IF NOT EXISTS version BIGINT DEFAULT 1;
ALTER TABLE widgets_bundle ADD COLUMN IF NOT EXISTS version INT DEFAULT 1; ALTER TABLE widgets_bundle ADD COLUMN IF NOT EXISTS version BIGINT DEFAULT 1;
-- ENTITIES VERSIONING UPDATE END -- ENTITIES VERSIONING UPDATE END

10
common/cache/src/main/java/org/thingsboard/server/cache/VersionedCaffeineTbCache.java

@ -39,14 +39,14 @@ public abstract class VersionedCaffeineTbCache<K extends Serializable, V extends
@Override @Override
public void put(K key, V value) { public void put(K key, V value) {
Long version = value != null ? value.getVersion() : 0; Long version = getVersion(value);
if (version == null) {
return;
}
doPut(key, value, version); doPut(key, value, version);
} }
private void doPut(K key, V value, Long version) { private void doPut(K key, V value, Long version) {
if (version == null) {
return;
}
lock.lock(); lock.lock();
try { try {
TbPair<Long, V> versionValuePair = doGet(key); TbPair<Long, V> versionValuePair = doGet(key);
@ -85,7 +85,7 @@ public abstract class VersionedCaffeineTbCache<K extends Serializable, V extends
@Override @Override
void doPutIfAbsent(K key, V value) { void doPutIfAbsent(K key, V value) {
cache.putIfAbsent(key, wrapValue(value, value != null ? value.getVersion() : 0)); cache.putIfAbsent(key, wrapValue(value, getVersion(value)));
} }
private TbPair<Long, V> wrapValue(V value, Long version) { private TbPair<Long, V> wrapValue(V value, Long version) {

10
common/cache/src/main/java/org/thingsboard/server/cache/VersionedRedisTbCache.java

@ -168,14 +168,4 @@ public abstract class VersionedRedisTbCache<K extends Serializable, V extends Se
throw new NotImplementedException("evictOrPut is not supported by versioned cache"); throw new NotImplementedException("evictOrPut is not supported by versioned cache");
} }
private Long getVersion(V value) {
if (value == null) {
return 0L;
} else if (value.getVersion() != null) {
return value.getVersion();
} else {
return null;
}
}
} }

10
common/cache/src/main/java/org/thingsboard/server/cache/VersionedTbCache.java

@ -50,4 +50,14 @@ public interface VersionedTbCache<K extends Serializable, V extends Serializable
void evict(K key, Long version); void evict(K key, Long version);
default Long getVersion(V value) {
if (value == null) {
return 0L;
} else if (value.getVersion() != null) {
return value.getVersion();
} else {
return null;
}
}
} }

26
dao/src/main/resources/sql/schema-entities.sql

@ -148,7 +148,7 @@ CREATE TABLE IF NOT EXISTS customer (
zip varchar(255), zip varchar(255),
external_id uuid, external_id uuid,
is_public boolean, is_public boolean,
version INT DEFAULT 1, version BIGINT DEFAULT 1,
CONSTRAINT customer_title_unq_key UNIQUE (tenant_id, title), CONSTRAINT customer_title_unq_key UNIQUE (tenant_id, title),
CONSTRAINT customer_external_id_unq_key UNIQUE (tenant_id, external_id) CONSTRAINT customer_external_id_unq_key UNIQUE (tenant_id, external_id)
); );
@ -164,7 +164,7 @@ CREATE TABLE IF NOT EXISTS dashboard (
mobile_order int, mobile_order int,
image varchar(1000000), image varchar(1000000),
external_id uuid, external_id uuid,
version INT DEFAULT 1, version BIGINT DEFAULT 1,
CONSTRAINT dashboard_external_id_unq_key UNIQUE (tenant_id, external_id) CONSTRAINT dashboard_external_id_unq_key UNIQUE (tenant_id, external_id)
); );
@ -180,7 +180,7 @@ CREATE TABLE IF NOT EXISTS rule_chain (
debug_mode boolean, debug_mode boolean,
tenant_id uuid, tenant_id uuid,
external_id uuid, external_id uuid,
version INT DEFAULT 1, version BIGINT DEFAULT 1,
CONSTRAINT rule_chain_external_id_unq_key UNIQUE (tenant_id, external_id) CONSTRAINT rule_chain_external_id_unq_key UNIQUE (tenant_id, external_id)
); );
@ -258,7 +258,7 @@ CREATE TABLE IF NOT EXISTS asset_profile (
default_queue_name varchar(255), default_queue_name varchar(255),
default_edge_rule_chain_id uuid, default_edge_rule_chain_id uuid,
external_id uuid, external_id uuid,
version INT DEFAULT 1, version BIGINT DEFAULT 1,
CONSTRAINT asset_profile_name_unq_key UNIQUE (tenant_id, name), CONSTRAINT asset_profile_name_unq_key UNIQUE (tenant_id, name),
CONSTRAINT asset_profile_external_id_unq_key UNIQUE (tenant_id, external_id), CONSTRAINT asset_profile_external_id_unq_key UNIQUE (tenant_id, external_id),
CONSTRAINT fk_default_rule_chain_asset_profile FOREIGN KEY (default_rule_chain_id) REFERENCES rule_chain(id), CONSTRAINT fk_default_rule_chain_asset_profile FOREIGN KEY (default_rule_chain_id) REFERENCES rule_chain(id),
@ -277,7 +277,7 @@ CREATE TABLE IF NOT EXISTS asset (
tenant_id uuid, tenant_id uuid,
type varchar(255), type varchar(255),
external_id uuid, external_id uuid,
version INT DEFAULT 1, version BIGINT DEFAULT 1,
CONSTRAINT asset_name_unq_key UNIQUE (tenant_id, name), CONSTRAINT asset_name_unq_key UNIQUE (tenant_id, name),
CONSTRAINT asset_external_id_unq_key UNIQUE (tenant_id, external_id), CONSTRAINT asset_external_id_unq_key UNIQUE (tenant_id, external_id),
CONSTRAINT fk_asset_profile FOREIGN KEY (asset_profile_id) REFERENCES asset_profile(id) CONSTRAINT fk_asset_profile FOREIGN KEY (asset_profile_id) REFERENCES asset_profile(id)
@ -303,7 +303,7 @@ CREATE TABLE IF NOT EXISTS device_profile (
provision_device_key varchar, provision_device_key varchar,
default_edge_rule_chain_id uuid, default_edge_rule_chain_id uuid,
external_id uuid, external_id uuid,
version INT DEFAULT 1, version BIGINT DEFAULT 1,
CONSTRAINT device_profile_name_unq_key UNIQUE (tenant_id, name), CONSTRAINT device_profile_name_unq_key UNIQUE (tenant_id, name),
CONSTRAINT device_provision_key_unq_key UNIQUE (provision_device_key), CONSTRAINT device_provision_key_unq_key UNIQUE (provision_device_key),
CONSTRAINT device_profile_external_id_unq_key UNIQUE (tenant_id, external_id), CONSTRAINT device_profile_external_id_unq_key UNIQUE (tenant_id, external_id),
@ -349,7 +349,7 @@ CREATE TABLE IF NOT EXISTS device (
firmware_id uuid, firmware_id uuid,
software_id uuid, software_id uuid,
external_id uuid, external_id uuid,
version INT DEFAULT 1, version BIGINT DEFAULT 1,
CONSTRAINT device_name_unq_key UNIQUE (tenant_id, name), CONSTRAINT device_name_unq_key UNIQUE (tenant_id, name),
CONSTRAINT device_external_id_unq_key UNIQUE (tenant_id, external_id), CONSTRAINT device_external_id_unq_key UNIQUE (tenant_id, external_id),
CONSTRAINT fk_device_profile FOREIGN KEY (device_profile_id) REFERENCES device_profile(id), CONSTRAINT fk_device_profile FOREIGN KEY (device_profile_id) REFERENCES device_profile(id),
@ -364,7 +364,7 @@ CREATE TABLE IF NOT EXISTS device_credentials (
credentials_type varchar(255), credentials_type varchar(255),
credentials_value varchar, credentials_value varchar,
device_id uuid, device_id uuid,
version INT DEFAULT 1, version BIGINT DEFAULT 1,
CONSTRAINT device_credentials_id_unq_key UNIQUE (credentials_id), CONSTRAINT device_credentials_id_unq_key UNIQUE (credentials_id),
CONSTRAINT device_credentials_device_id_unq_key UNIQUE (device_id) CONSTRAINT device_credentials_device_id_unq_key UNIQUE (device_id)
); );
@ -450,7 +450,7 @@ CREATE TABLE IF NOT EXISTS tb_user (
last_name varchar(255), last_name varchar(255),
phone varchar(255), phone varchar(255),
tenant_id uuid, tenant_id uuid,
version INT DEFAULT 1 version BIGINT DEFAULT 1
); );
CREATE TABLE IF NOT EXISTS tenant_profile ( CREATE TABLE IF NOT EXISTS tenant_profile (
@ -506,7 +506,7 @@ CREATE TABLE IF NOT EXISTS widget_type (
description varchar(1024), description varchar(1024),
tags text[], tags text[],
external_id uuid, external_id uuid,
version INT DEFAULT 1, version BIGINT DEFAULT 1,
CONSTRAINT uq_widget_type_fqn UNIQUE (tenant_id, fqn), CONSTRAINT uq_widget_type_fqn UNIQUE (tenant_id, fqn),
CONSTRAINT widget_type_external_id_unq_key UNIQUE (tenant_id, external_id) CONSTRAINT widget_type_external_id_unq_key UNIQUE (tenant_id, external_id)
); );
@ -521,7 +521,7 @@ CREATE TABLE IF NOT EXISTS widgets_bundle (
description varchar(1024), description varchar(1024),
widgets_bundle_order int, widgets_bundle_order int,
external_id uuid, external_id uuid,
version INT DEFAULT 1, version BIGINT DEFAULT 1,
CONSTRAINT uq_widgets_bundle_alias UNIQUE (tenant_id, alias), CONSTRAINT uq_widgets_bundle_alias UNIQUE (tenant_id, alias),
CONSTRAINT widgets_bundle_external_id_unq_key UNIQUE (tenant_id, external_id) CONSTRAINT widgets_bundle_external_id_unq_key UNIQUE (tenant_id, external_id)
); );
@ -549,7 +549,7 @@ CREATE TABLE IF NOT EXISTS entity_view (
end_ts bigint, end_ts bigint,
additional_info varchar, additional_info varchar,
external_id uuid, external_id uuid,
version INT DEFAULT 1, version BIGINT DEFAULT 1,
CONSTRAINT entity_view_external_id_unq_key UNIQUE (tenant_id, external_id) CONSTRAINT entity_view_external_id_unq_key UNIQUE (tenant_id, external_id)
); );
@ -758,7 +758,7 @@ CREATE TABLE IF NOT EXISTS edge (
routing_key varchar(255), routing_key varchar(255),
secret varchar(255), secret varchar(255),
tenant_id uuid, tenant_id uuid,
version INT DEFAULT 1, version BIGINT DEFAULT 1,
CONSTRAINT edge_name_unq_key UNIQUE (tenant_id, name), CONSTRAINT edge_name_unq_key UNIQUE (tenant_id, name),
CONSTRAINT edge_routing_key_unq_key UNIQUE (routing_key) CONSTRAINT edge_routing_key_unq_key UNIQUE (routing_key)
); );

Loading…
Cancel
Save