Commit 71bf15caf79e7cd25f36227e969bf7910b3e0fc0

Authored by Dmytro Shvaika
1 parent 00592143

improvements

@@ -124,17 +124,27 @@ BEGIN @@ -124,17 +124,27 @@ BEGIN
124 END 124 END
125 $$; 125 $$;
126 126
127 -CREATE OR REPLACE PROCEDURE cleanup_events_by_ttl(IN system_ttl bigint, INOUT deleted bigint) 127 +CREATE OR REPLACE PROCEDURE cleanup_events_by_ttl(IN ttl bigint, IN debug_ttl bigint, INOUT deleted bigint)
128 LANGUAGE plpgsql AS 128 LANGUAGE plpgsql AS
129 $$ 129 $$
130 - DECLARE  
131 - ttl_ts bigint; 130 +DECLARE
  131 + ttl_ts bigint;
  132 + debug_ttl_ts bigint;
  133 + ttl_deleted_count bigint DEFAULT 0;
  134 + debug_ttl_deleted_count bigint DEFAULT 0;
132 BEGIN 135 BEGIN
133 - IF system_ttl > 0 THEN  
134 - ttl_ts := (EXTRACT(EPOCH FROM current_timestamp) * 1000 - system_ttl::bigint * 1000)::bigint; 136 + IF ttl > 0 THEN
  137 + ttl_ts := (EXTRACT(EPOCH FROM current_timestamp) * 1000 - ttl::bigint * 1000)::bigint;
  138 + EXECUTE format(
  139 + 'WITH deleted AS (DELETE FROM event WHERE ts < %L::bigint AND (event_type != %L::varchar AND event_type != %L::varchar) RETURNING *) SELECT count(*) FROM deleted', ttl_ts, 'DEBUG_RULE_NODE', 'DEBUG_RULE_CHAIN') into ttl_deleted_count;
  140 + END IF;
  141 + IF debug_ttl > 0 THEN
  142 + debug_ttl_ts := (EXTRACT(EPOCH FROM current_timestamp) * 1000 - debug_ttl::bigint * 1000)::bigint;
135 EXECUTE format( 143 EXECUTE format(
136 - 'WITH deleted AS (DELETE FROM event WHERE ts < %L::bigint RETURNING *) SELECT count(*) FROM deleted', ttl_ts) into deleted; 144 + 'WITH deleted AS (DELETE FROM event WHERE ts < %L::bigint AND (event_type = %L::varchar OR event_type = %L::varchar) RETURNING *) SELECT count(*) FROM deleted', debug_ttl_ts, 'DEBUG_RULE_NODE', 'DEBUG_RULE_CHAIN') into debug_ttl_deleted_count;
137 END IF; 145 END IF;
  146 + RAISE NOTICE 'Events removed by ttl: %', ttl_deleted_count;
  147 + RAISE NOTICE 'Debug Events removed by ttl: %', debug_ttl_deleted_count;
  148 + deleted := ttl_deleted_count + debug_ttl_deleted_count;
138 END 149 END
139 $$; 150 $$;
140 -  
@@ -31,9 +31,12 @@ import java.sql.SQLException; @@ -31,9 +31,12 @@ import java.sql.SQLException;
31 @Service 31 @Service
32 public class EventsCleanUpService extends AbstractCleanUpService { 32 public class EventsCleanUpService extends AbstractCleanUpService {
33 33
34 - @Value("${sql.ttl.events.events_key_value_ttl}") 34 + @Value("${sql.ttl.events.events_ttl}")
35 private long ttl; 35 private long ttl;
36 36
  37 + @Value("${sql.ttl.events.debug_events_ttl}")
  38 + private long debugTtl;
  39 +
37 @Value("${sql.ttl.events.enabled}") 40 @Value("${sql.ttl.events.enabled}")
38 private boolean ttlTaskExecutionEnabled; 41 private boolean ttlTaskExecutionEnabled;
39 42
@@ -50,7 +53,7 @@ public class EventsCleanUpService extends AbstractCleanUpService { @@ -50,7 +53,7 @@ public class EventsCleanUpService extends AbstractCleanUpService {
50 53
51 @Override 54 @Override
52 protected void doCleanUp(Connection connection) { 55 protected void doCleanUp(Connection connection) {
53 - long totalEventsRemoved = executeQuery(connection, "call cleanup_events_by_ttl(" + ttl + ", 0);"); 56 + long totalEventsRemoved = executeQuery(connection, "call cleanup_events_by_ttl(" + ttl + ", " + debugTtl + ", 0);");
54 log.info("Total events removed by TTL: [{}]", totalEventsRemoved); 57 log.info("Total events removed by TTL: [{}]", totalEventsRemoved);
55 } 58 }
56 } 59 }
@@ -205,12 +205,13 @@ sql: @@ -205,12 +205,13 @@ sql:
205 ttl: 205 ttl:
206 ts: 206 ts:
207 enabled: "${SQL_TTL_TS_ENABLED:true}" 207 enabled: "${SQL_TTL_TS_ENABLED:true}"
208 - execution_interval_ms: "${SQL_TTL_TS_EXECUTION_INTERVAL:86400000}" # Number of miliseconds. The current value corresponds to one day 208 + execution_interval_ms: "${SQL_TTL_TS_EXECUTION_INTERVAL:10000}" # Number of miliseconds. The current value corresponds to one day
209 ts_key_value_ttl: "${SQL_TTL_TS_TS_KEY_VALUE_TTL:0}" # Number of seconds 209 ts_key_value_ttl: "${SQL_TTL_TS_TS_KEY_VALUE_TTL:0}" # Number of seconds
210 events: 210 events:
211 enabled: "${SQL_TTL_EVENTS_ENABLED:true}" 211 enabled: "${SQL_TTL_EVENTS_ENABLED:true}"
212 - execution_interval_ms: "${SQL_TTL_EVENTS_EXECUTION_INTERVAL:86400000}" # Number of miliseconds. The current value corresponds to one day  
213 - events_key_value_ttl: "${SQL_TTL_EVENTS_EVENTS_KEY_VALUE_TTL:0}" # Number of seconds 212 + execution_interval_ms: "${SQL_TTL_EVENTS_EXECUTION_INTERVAL:10000}" # Number of miliseconds. The current value corresponds to one day
  213 + events_ttl: "${SQL_TTL_EVENTS_EVENTS_TTL:900}" # Number of seconds
  214 + debug_events_ttl: "${SQL_TTL_EVENTS_DEBUG_EVENTS_TTL:900}" # Number of seconds. The current value corresponds to one week
214 215
215 # Actor system parameters 216 # Actor system parameters
216 actors: 217 actors:
@@ -371,7 +372,7 @@ spring: @@ -371,7 +372,7 @@ spring:
371 database-platform: "${SPRING_JPA_DATABASE_PLATFORM:org.hibernate.dialect.PostgreSQLDialect}" 372 database-platform: "${SPRING_JPA_DATABASE_PLATFORM:org.hibernate.dialect.PostgreSQLDialect}"
372 datasource: 373 datasource:
373 driverClassName: "${SPRING_DRIVER_CLASS_NAME:org.postgresql.Driver}" 374 driverClassName: "${SPRING_DRIVER_CLASS_NAME:org.postgresql.Driver}"
374 - url: "${SPRING_DATASOURCE_URL:jdbc:postgresql://localhost:5432/thingsboard}" 375 + url: "${SPRING_DATASOURCE_URL:jdbc:postgresql://localhost:5432/thingsboard_ttl_test}"
375 username: "${SPRING_DATASOURCE_USERNAME:postgres}" 376 username: "${SPRING_DATASOURCE_USERNAME:postgres}"
376 password: "${SPRING_DATASOURCE_PASSWORD:postgres}" 377 password: "${SPRING_DATASOURCE_PASSWORD:postgres}"
377 hikari: 378 hikari:
@@ -144,6 +144,7 @@ CREATE TABLE IF NOT EXISTS event ( @@ -144,6 +144,7 @@ CREATE TABLE IF NOT EXISTS event (
144 event_type varchar(255), 144 event_type varchar(255),
145 event_uid varchar(255), 145 event_uid varchar(255),
146 tenant_id varchar(31), 146 tenant_id varchar(31),
  147 + ts bigint NOT NULL,
147 CONSTRAINT event_unq_key UNIQUE (tenant_id, entity_type, entity_id, event_type, event_uid) 148 CONSTRAINT event_unq_key UNIQUE (tenant_id, entity_type, entity_id, event_type, event_uid)
148 ); 149 );
149 150
@@ -251,3 +252,29 @@ CREATE TABLE IF NOT EXISTS entity_view ( @@ -251,3 +252,29 @@ CREATE TABLE IF NOT EXISTS entity_view (
251 search_text varchar(255), 252 search_text varchar(255),
252 additional_info varchar 253 additional_info varchar
253 ); 254 );
  255 +
  256 +CREATE OR REPLACE PROCEDURE cleanup_events_by_ttl(IN ttl bigint, IN debug_ttl bigint, INOUT deleted bigint)
  257 + LANGUAGE plpgsql AS
  258 +$$
  259 +DECLARE
  260 + ttl_ts bigint;
  261 + debug_ttl_ts bigint;
  262 + ttl_deleted_count bigint DEFAULT 0;
  263 + debug_ttl_deleted_count bigint DEFAULT 0;
  264 +BEGIN
  265 + IF ttl > 0 THEN
  266 + ttl_ts := (EXTRACT(EPOCH FROM current_timestamp) * 1000 - ttl::bigint * 1000)::bigint;
  267 + EXECUTE format(
  268 + 'WITH deleted AS (DELETE FROM event WHERE ts < %L::bigint AND (event_type != %L::varchar AND event_type != %L::varchar) RETURNING *) SELECT count(*) FROM deleted', ttl_ts, 'DEBUG_RULE_NODE', 'DEBUG_RULE_CHAIN') into ttl_deleted_count;
  269 + END IF;
  270 + IF debug_ttl > 0 THEN
  271 + debug_ttl_ts := (EXTRACT(EPOCH FROM current_timestamp) * 1000 - debug_ttl::bigint * 1000)::bigint;
  272 + EXECUTE format(
  273 + 'WITH deleted AS (DELETE FROM event WHERE ts < %L::bigint AND (event_type = %L::varchar OR event_type = %L::varchar) RETURNING *) SELECT count(*) FROM deleted', debug_ttl_ts, 'DEBUG_RULE_NODE', 'DEBUG_RULE_CHAIN') into debug_ttl_deleted_count;
  274 + END IF;
  275 + RAISE NOTICE 'Events removed by ttl: %', ttl_deleted_count;
  276 + RAISE NOTICE 'Debug Events removed by ttl: %', debug_ttl_deleted_count;
  277 + deleted := ttl_deleted_count + debug_ttl_deleted_count;
  278 +END
  279 +$$;
  280 +
@@ -144,7 +144,7 @@ CREATE TABLE IF NOT EXISTS event ( @@ -144,7 +144,7 @@ CREATE TABLE IF NOT EXISTS event (
144 event_type varchar(255), 144 event_type varchar(255),
145 event_uid varchar(255), 145 event_uid varchar(255),
146 tenant_id varchar(31), 146 tenant_id varchar(31),
147 - ts bigint, 147 + ts bigint NOT NULL,
148 CONSTRAINT event_unq_key UNIQUE (tenant_id, entity_type, entity_id, event_type, event_uid) 148 CONSTRAINT event_unq_key UNIQUE (tenant_id, entity_type, entity_id, event_type, event_uid)
149 ); 149 );
150 150
@@ -253,16 +253,27 @@ CREATE TABLE IF NOT EXISTS entity_view ( @@ -253,16 +253,27 @@ CREATE TABLE IF NOT EXISTS entity_view (
253 additional_info varchar 253 additional_info varchar
254 ); 254 );
255 255
256 -CREATE OR REPLACE PROCEDURE cleanup_events_by_ttl(IN system_ttl bigint, INOUT deleted bigint) 256 +CREATE OR REPLACE PROCEDURE cleanup_events_by_ttl(IN ttl bigint, IN debug_ttl bigint, INOUT deleted bigint)
257 LANGUAGE plpgsql AS 257 LANGUAGE plpgsql AS
258 $$ 258 $$
259 DECLARE 259 DECLARE
260 ttl_ts bigint; 260 ttl_ts bigint;
  261 + debug_ttl_ts bigint;
  262 + ttl_deleted_count bigint DEFAULT 0;
  263 + debug_ttl_deleted_count bigint DEFAULT 0;
261 BEGIN 264 BEGIN
262 - IF system_ttl > 0 THEN  
263 - ttl_ts := (EXTRACT(EPOCH FROM current_timestamp) * 1000 - system_ttl::bigint * 1000)::bigint; 265 + IF ttl > 0 THEN
  266 + ttl_ts := (EXTRACT(EPOCH FROM current_timestamp) * 1000 - ttl::bigint * 1000)::bigint;
264 EXECUTE format( 267 EXECUTE format(
265 - 'WITH deleted AS (DELETE FROM event WHERE ts < %L::bigint RETURNING *) SELECT count(*) FROM deleted', ttl_ts) into deleted; 268 + 'WITH deleted AS (DELETE FROM event WHERE ts < %L::bigint AND (event_type != %L::varchar AND event_type != %L::varchar) RETURNING *) SELECT count(*) FROM deleted', ttl_ts, 'DEBUG_RULE_NODE', 'DEBUG_RULE_CHAIN') into ttl_deleted_count;
266 END IF; 269 END IF;
  270 + IF debug_ttl > 0 THEN
  271 + debug_ttl_ts := (EXTRACT(EPOCH FROM current_timestamp) * 1000 - debug_ttl::bigint * 1000)::bigint;
  272 + EXECUTE format(
  273 + 'WITH deleted AS (DELETE FROM event WHERE ts < %L::bigint AND (event_type = %L::varchar OR event_type = %L::varchar) RETURNING *) SELECT count(*) FROM deleted', debug_ttl_ts, 'DEBUG_RULE_NODE', 'DEBUG_RULE_CHAIN') into debug_ttl_deleted_count;
  274 + END IF;
  275 + RAISE NOTICE 'Events removed by ttl: %', ttl_deleted_count;
  276 + RAISE NOTICE 'Debug Events removed by ttl: %', debug_ttl_deleted_count;
  277 + deleted := ttl_deleted_count + debug_ttl_deleted_count;
267 END 278 END
268 $$; 279 $$;