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
ALTER TABLE device ADD COLUMN IF NOT EXISTS version INT DEFAULT 1;
ALTER TABLE device_profile ADD COLUMN IF NOT EXISTS version INT DEFAULT 1;
ALTER TABLE device_credentials ADD COLUMN IF NOT EXISTS version INT DEFAULT 1;
ALTER TABLE asset ADD COLUMN IF NOT EXISTS version INT DEFAULT 1;
ALTER TABLE asset_profile ADD COLUMN IF NOT EXISTS version INT DEFAULT 1;
ALTER TABLE entity_view ADD COLUMN IF NOT EXISTS version INT DEFAULT 1;
ALTER TABLE tb_user ADD COLUMN IF NOT EXISTS version INT DEFAULT 1;
ALTER TABLE customer ADD COLUMN IF NOT EXISTS version INT DEFAULT 1;
ALTER TABLE edge ADD COLUMN IF NOT EXISTS version INT DEFAULT 1;
ALTER TABLE rule_chain ADD COLUMN IF NOT EXISTS version INT DEFAULT 1;
ALTER TABLE dashboard ADD COLUMN IF NOT EXISTS version INT DEFAULT 1;
ALTER TABLE widget_type ADD COLUMN IF NOT EXISTS version INT DEFAULT 1;
ALTER TABLE widgets_bundle 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 BIGINT DEFAULT 1;
ALTER TABLE device_credentials ADD COLUMN IF NOT EXISTS version BIGINT DEFAULT 1;
ALTER TABLE asset ADD COLUMN IF NOT EXISTS version BIGINT 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 BIGINT DEFAULT 1;
ALTER TABLE tb_user ADD COLUMN IF NOT EXISTS version BIGINT DEFAULT 1;
ALTER TABLE customer ADD COLUMN IF NOT EXISTS version BIGINT DEFAULT 1;
ALTER TABLE edge ADD COLUMN IF NOT EXISTS version BIGINT DEFAULT 1;
ALTER TABLE rule_chain ADD COLUMN IF NOT EXISTS version BIGINT DEFAULT 1;
ALTER TABLE dashboard ADD COLUMN IF NOT EXISTS version BIGINT 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 BIGINT DEFAULT 1;
-- 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
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);
}
private void doPut(K key, V value, Long version) {
if (version == null) {
return;
}
lock.lock();
try {
TbPair<Long, V> versionValuePair = doGet(key);
@ -85,7 +85,7 @@ public abstract class VersionedCaffeineTbCache<K extends Serializable, V extends
@Override
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) {

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");
}
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);
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),
external_id uuid,
is_public boolean,
version INT DEFAULT 1,
version BIGINT DEFAULT 1,
CONSTRAINT customer_title_unq_key UNIQUE (tenant_id, title),
CONSTRAINT customer_external_id_unq_key UNIQUE (tenant_id, external_id)
);
@ -164,7 +164,7 @@ CREATE TABLE IF NOT EXISTS dashboard (
mobile_order int,
image varchar(1000000),
external_id uuid,
version INT DEFAULT 1,
version BIGINT DEFAULT 1,
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,
tenant_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)
);
@ -258,7 +258,7 @@ CREATE TABLE IF NOT EXISTS asset_profile (
default_queue_name varchar(255),
default_edge_rule_chain_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_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),
@ -277,7 +277,7 @@ CREATE TABLE IF NOT EXISTS asset (
tenant_id uuid,
type varchar(255),
external_id uuid,
version INT DEFAULT 1,
version BIGINT DEFAULT 1,
CONSTRAINT asset_name_unq_key UNIQUE (tenant_id, name),
CONSTRAINT asset_external_id_unq_key UNIQUE (tenant_id, external_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,
default_edge_rule_chain_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_provision_key_unq_key UNIQUE (provision_device_key),
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,
software_id uuid,
external_id uuid,
version INT DEFAULT 1,
version BIGINT DEFAULT 1,
CONSTRAINT device_name_unq_key UNIQUE (tenant_id, name),
CONSTRAINT device_external_id_unq_key UNIQUE (tenant_id, external_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_value varchar,
device_id uuid,
version INT DEFAULT 1,
version BIGINT DEFAULT 1,
CONSTRAINT device_credentials_id_unq_key UNIQUE (credentials_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),
phone varchar(255),
tenant_id uuid,
version INT DEFAULT 1
version BIGINT DEFAULT 1
);
CREATE TABLE IF NOT EXISTS tenant_profile (
@ -506,7 +506,7 @@ CREATE TABLE IF NOT EXISTS widget_type (
description varchar(1024),
tags text[],
external_id uuid,
version INT DEFAULT 1,
version BIGINT DEFAULT 1,
CONSTRAINT uq_widget_type_fqn UNIQUE (tenant_id, fqn),
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),
widgets_bundle_order int,
external_id uuid,
version INT DEFAULT 1,
version BIGINT DEFAULT 1,
CONSTRAINT uq_widgets_bundle_alias UNIQUE (tenant_id, alias),
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,
additional_info varchar,
external_id uuid,
version INT DEFAULT 1,
version BIGINT DEFAULT 1,
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),
secret varchar(255),
tenant_id uuid,
version INT DEFAULT 1,
version BIGINT DEFAULT 1,
CONSTRAINT edge_name_unq_key UNIQUE (tenant_id, name),
CONSTRAINT edge_routing_key_unq_key UNIQUE (routing_key)
);

Loading…
Cancel
Save