added ttl for events
This commit is contained in:
parent
3a3cee375b
commit
dc3d1dd794
@ -123,3 +123,18 @@ BEGIN
|
|||||||
END LOOP;
|
END LOOP;
|
||||||
END
|
END
|
||||||
$$;
|
$$;
|
||||||
|
|
||||||
|
CREATE OR REPLACE PROCEDURE cleanup_events_by_ttl(IN system_ttl bigint, INOUT deleted bigint)
|
||||||
|
LANGUAGE plpgsql AS
|
||||||
|
$$
|
||||||
|
DECLARE
|
||||||
|
ttl_ts bigint;
|
||||||
|
BEGIN
|
||||||
|
IF system_ttl > 0 THEN
|
||||||
|
ttl_ts := (EXTRACT(EPOCH FROM current_timestamp) * 1000 - system_ttl::bigint * 1000)::bigint;
|
||||||
|
EXECUTE format(
|
||||||
|
'WITH deleted AS (DELETE FROM event WHERE ts < %L::bigint RETURNING *) SELECT count(*) FROM deleted', ttl_ts) into deleted;
|
||||||
|
END IF;
|
||||||
|
END
|
||||||
|
$$;
|
||||||
|
|
||||||
|
|||||||
@ -221,6 +221,11 @@ public class SqlDatabaseUpgradeService implements DatabaseEntitiesUpgradeService
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
try {
|
||||||
|
long ts = System.currentTimeMillis();
|
||||||
|
conn.createStatement().execute("ALTER TABLE event ADD COLUMN ts bigint DEFAULT " + ts + ";"); //tiNOSONAR, ignoring because method used to execute thingsboard database upgrade script
|
||||||
|
} catch (Exception e) {
|
||||||
|
}
|
||||||
log.info("Schema updated.");
|
log.info("Schema updated.");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
@ -50,8 +50,7 @@ public class EventsCleanUpService extends AbstractCleanUpService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void doCleanUp(Connection connection) {
|
protected void doCleanUp(Connection connection) {
|
||||||
log.info("ttl: [{}]", ttl);
|
long totalEventsRemoved = executeQuery(connection, "call cleanup_events_by_ttl(" + ttl + ", 0);");
|
||||||
log.info("ttlTaskExecutionEnabled: [{}]", ttlTaskExecutionEnabled);
|
log.info("Total events removed by TTL: [{}]", totalEventsRemoved);
|
||||||
// TODO: 4/15/20 Do a clean up.
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -32,6 +32,9 @@ public class ModelConstants {
|
|||||||
public static final String NULL_UUID_STR = UUIDConverter.fromTimeUUID(NULL_UUID);
|
public static final String NULL_UUID_STR = UUIDConverter.fromTimeUUID(NULL_UUID);
|
||||||
public static final TenantId SYSTEM_TENANT = new TenantId(ModelConstants.NULL_UUID);
|
public static final TenantId SYSTEM_TENANT = new TenantId(ModelConstants.NULL_UUID);
|
||||||
|
|
||||||
|
// this is the difference between midnight October 15, 1582 UTC and midnight January 1, 1970 UTC as 100 nanosecond units
|
||||||
|
public static final long EPOCH_DIFF = 122192928000000000L;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generic constants.
|
* Generic constants.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -37,6 +37,9 @@ import javax.persistence.EnumType;
|
|||||||
import javax.persistence.Enumerated;
|
import javax.persistence.Enumerated;
|
||||||
import javax.persistence.Table;
|
import javax.persistence.Table;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import static org.thingsboard.server.dao.model.ModelConstants.EPOCH_DIFF;
|
||||||
import static org.thingsboard.server.dao.model.ModelConstants.EVENT_BODY_PROPERTY;
|
import static org.thingsboard.server.dao.model.ModelConstants.EVENT_BODY_PROPERTY;
|
||||||
import static org.thingsboard.server.dao.model.ModelConstants.EVENT_COLUMN_FAMILY_NAME;
|
import static org.thingsboard.server.dao.model.ModelConstants.EVENT_COLUMN_FAMILY_NAME;
|
||||||
import static org.thingsboard.server.dao.model.ModelConstants.EVENT_ENTITY_ID_PROPERTY;
|
import static org.thingsboard.server.dao.model.ModelConstants.EVENT_ENTITY_ID_PROPERTY;
|
||||||
@ -44,6 +47,7 @@ import static org.thingsboard.server.dao.model.ModelConstants.EVENT_ENTITY_TYPE_
|
|||||||
import static org.thingsboard.server.dao.model.ModelConstants.EVENT_TENANT_ID_PROPERTY;
|
import static org.thingsboard.server.dao.model.ModelConstants.EVENT_TENANT_ID_PROPERTY;
|
||||||
import static org.thingsboard.server.dao.model.ModelConstants.EVENT_TYPE_PROPERTY;
|
import static org.thingsboard.server.dao.model.ModelConstants.EVENT_TYPE_PROPERTY;
|
||||||
import static org.thingsboard.server.dao.model.ModelConstants.EVENT_UID_PROPERTY;
|
import static org.thingsboard.server.dao.model.ModelConstants.EVENT_UID_PROPERTY;
|
||||||
|
import static org.thingsboard.server.dao.model.ModelConstants.TS_COLUMN;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
@ -73,9 +77,13 @@ public class EventEntity extends BaseSqlEntity<Event> implements BaseEntity<Eve
|
|||||||
@Column(name = EVENT_BODY_PROPERTY)
|
@Column(name = EVENT_BODY_PROPERTY)
|
||||||
private JsonNode body;
|
private JsonNode body;
|
||||||
|
|
||||||
|
@Column(name = TS_COLUMN)
|
||||||
|
private long ts;
|
||||||
|
|
||||||
public EventEntity(Event event) {
|
public EventEntity(Event event) {
|
||||||
if (event.getId() != null) {
|
if (event.getId() != null) {
|
||||||
this.setId(event.getId().getId());
|
this.setId(event.getId().getId());
|
||||||
|
this.ts = getTs(event.getId().getId());
|
||||||
}
|
}
|
||||||
if (event.getTenantId() != null) {
|
if (event.getTenantId() != null) {
|
||||||
this.tenantId = toString(event.getTenantId().getId());
|
this.tenantId = toString(event.getTenantId().getId());
|
||||||
@ -101,4 +109,8 @@ public class EventEntity extends BaseSqlEntity<Event> implements BaseEntity<Eve
|
|||||||
event.setUid(eventUid);
|
event.setUid(eventUid);
|
||||||
return event;
|
return event;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private long getTs(UUID uuid) {
|
||||||
|
return (uuid.timestamp() - EPOCH_DIFF) / 1000;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -144,6 +144,7 @@ CREATE TABLE IF NOT EXISTS event (
|
|||||||
event_type varchar(255),
|
event_type varchar(255),
|
||||||
event_uid varchar(255),
|
event_uid varchar(255),
|
||||||
tenant_id varchar(31),
|
tenant_id varchar(31),
|
||||||
|
ts bigint,
|
||||||
CONSTRAINT event_unq_key UNIQUE (tenant_id, entity_type, entity_id, event_type, event_uid)
|
CONSTRAINT event_unq_key UNIQUE (tenant_id, entity_type, entity_id, event_type, event_uid)
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -249,3 +250,17 @@ CREATE TABLE IF NOT EXISTS entity_view (
|
|||||||
search_text varchar(255),
|
search_text varchar(255),
|
||||||
additional_info varchar
|
additional_info varchar
|
||||||
);
|
);
|
||||||
|
|
||||||
|
CREATE OR REPLACE PROCEDURE cleanup_events_by_ttl(IN system_ttl bigint, INOUT deleted bigint)
|
||||||
|
LANGUAGE plpgsql AS
|
||||||
|
$$
|
||||||
|
DECLARE
|
||||||
|
ttl_ts bigint;
|
||||||
|
BEGIN
|
||||||
|
IF system_ttl > 0 THEN
|
||||||
|
ttl_ts := (EXTRACT(EPOCH FROM current_timestamp) * 1000 - system_ttl::bigint * 1000)::bigint;
|
||||||
|
EXECUTE format(
|
||||||
|
'WITH deleted AS (DELETE FROM event WHERE ts < %L::bigint RETURNING *) SELECT count(*) FROM deleted', ttl_ts) into deleted;
|
||||||
|
END IF;
|
||||||
|
END
|
||||||
|
$$;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user