diff --git a/application/src/main/data/upgrade/basic/schema_update.sql b/application/src/main/data/upgrade/basic/schema_update.sql index ecb2a147bc..e4bbe4c69e 100644 --- a/application/src/main/data/upgrade/basic/schema_update.sql +++ b/application/src/main/data/upgrade/basic/schema_update.sql @@ -14,6 +14,8 @@ -- limitations under the License. -- +-- UPDATE TENANT PROFILE CASSANDRA RATE LIMITS START + UPDATE tenant_profile SET profile_data = jsonb_set( profile_data, @@ -42,3 +44,18 @@ SET profile_data = jsonb_set( ) WHERE profile_data -> 'configuration' ? 'cassandraQueryTenantRateLimitsConfiguration'; +-- UPDATE TENANT PROFILE CASSANDRA RATE LIMITS END + +-- UPDATE NOTIFICATION RULE CASSANDRA RATE LIMITS START + +UPDATE notification_rule +SET trigger_config = REGEXP_REPLACE( + trigger_config, + '"CASSANDRA_QUERIES"', + '"CASSANDRA_WRITE_QUERIES_CORE","CASSANDRA_READ_QUERIES_CORE","CASSANDRA_WRITE_QUERIES_RULE_ENGINE","CASSANDRA_READ_QUERIES_RULE_ENGINE","CASSANDRA_WRITE_QUERIES_MONOLITH","CASSANDRA_READ_QUERIES_MONOLITH"', + 'g' + ) +WHERE trigger_type = 'RATE_LIMITS' + AND trigger_config LIKE '%"CASSANDRA_QUERIES"%'; + +-- UPDATE NOTIFICATION RULE CASSANDRA RATE LIMITS END diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/limit/LimitedApi.java b/common/data/src/main/java/org/thingsboard/server/common/data/limit/LimitedApi.java index a2582db9f3..ef839247ab 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/limit/LimitedApi.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/limit/LimitedApi.java @@ -38,11 +38,11 @@ public enum LimitedApi { CASSANDRA_READ_QUERIES_MONOLITH( RateLimitUtil.merge( DefaultTenantProfileConfiguration::getCassandraReadQueryTenantCoreRateLimits, - DefaultTenantProfileConfiguration::getCassandraReadQueryTenantRuleEngineRateLimits), "Telemetry read queries", true), + DefaultTenantProfileConfiguration::getCassandraReadQueryTenantRuleEngineRateLimits), "Monolith telemetry Cassandra read queries", true), CASSANDRA_WRITE_QUERIES_MONOLITH( RateLimitUtil.merge( DefaultTenantProfileConfiguration::getCassandraWriteQueryTenantCoreRateLimits, - DefaultTenantProfileConfiguration::getCassandraWriteQueryTenantRuleEngineRateLimits), "Telemetry write queries", true), + DefaultTenantProfileConfiguration::getCassandraWriteQueryTenantRuleEngineRateLimits), "Monolith telemetry Cassandra write queries", true), EDGE_EVENTS(DefaultTenantProfileConfiguration::getEdgeEventRateLimits, "Edge events", true), EDGE_EVENTS_PER_EDGE(DefaultTenantProfileConfiguration::getEdgeEventRateLimitsPerEdge, "Edge events per edge", false), EDGE_UPLINK_MESSAGES(DefaultTenantProfileConfiguration::getEdgeUplinkMessagesRateLimits, "Edge uplink messages", true), diff --git a/ui-ngx/src/app/shared/models/limited-api.models.ts b/ui-ngx/src/app/shared/models/limited-api.models.ts index 3f4c20012d..f7a3f87cd9 100644 --- a/ui-ngx/src/app/shared/models/limited-api.models.ts +++ b/ui-ngx/src/app/shared/models/limited-api.models.ts @@ -22,7 +22,12 @@ export enum LimitedApi { REST_REQUESTS_PER_TENANT = 'REST_REQUESTS_PER_TENANT', REST_REQUESTS_PER_CUSTOMER = 'REST_REQUESTS_PER_CUSTOMER', WS_UPDATES_PER_SESSION = 'WS_UPDATES_PER_SESSION', - CASSANDRA_QUERIES = 'CASSANDRA_QUERIES', + CASSANDRA_WRITE_QUERIES_CORE = 'CASSANDRA_WRITE_QUERIES_CORE', + CASSANDRA_READ_QUERIES_CORE = 'CASSANDRA_READ_QUERIES_CORE', + CASSANDRA_WRITE_QUERIES_RULE_ENGINE = 'CASSANDRA_WRITE_QUERIES_RULE_ENGINE', + CASSANDRA_READ_QUERIES_RULE_ENGINE = 'CASSANDRA_READ_QUERIES_RULE_ENGINE', + CASSANDRA_WRITE_QUERIES_MONOLITH = 'CASSANDRA_WRITE_QUERIES_MONOLITH', + CASSANDRA_READ_QUERIES_MONOLITH = 'CASSANDRA_READ_QUERIES_MONOLITH', TRANSPORT_MESSAGES_PER_TENANT = 'TRANSPORT_MESSAGES_PER_TENANT', TRANSPORT_MESSAGES_PER_DEVICE = 'TRANSPORT_MESSAGES_PER_DEVICE', TRANSPORT_MESSAGES_PER_GATEWAY = 'TRANSPORT_MESSAGES_PER_GATEWAY', @@ -42,7 +47,12 @@ export const LimitedApiTranslationMap = new Map( [LimitedApi.REST_REQUESTS_PER_TENANT, 'api-limit.rest-api-requests'], [LimitedApi.REST_REQUESTS_PER_CUSTOMER, 'api-limit.rest-api-requests-per-customer'], [LimitedApi.WS_UPDATES_PER_SESSION, 'api-limit.ws-updates-per-session'], - [LimitedApi.CASSANDRA_QUERIES, 'api-limit.cassandra-queries'], + [LimitedApi.CASSANDRA_WRITE_QUERIES_CORE, 'api-limit.cassandra-write-queries-core'], + [LimitedApi.CASSANDRA_READ_QUERIES_CORE, 'api-limit.cassandra-read-queries-core'], + [LimitedApi.CASSANDRA_WRITE_QUERIES_RULE_ENGINE, 'api-limit.cassandra-write-queries-rule-engine'], + [LimitedApi.CASSANDRA_READ_QUERIES_RULE_ENGINE, 'api-limit.cassandra-read-queries-rule-engine'], + [LimitedApi.CASSANDRA_WRITE_QUERIES_MONOLITH, 'api-limit.cassandra-write-queries-monolith'], + [LimitedApi.CASSANDRA_READ_QUERIES_MONOLITH, 'api-limit.cassandra-read-queries-monolith'], [LimitedApi.TRANSPORT_MESSAGES_PER_TENANT, 'api-limit.transport-messages'], [LimitedApi.TRANSPORT_MESSAGES_PER_DEVICE, 'api-limit.transport-messages-per-device'], [LimitedApi.TRANSPORT_MESSAGES_PER_GATEWAY, 'api-limit.transport-messages-per-gateway'], diff --git a/ui-ngx/src/assets/locale/locale.constant-en_US.json b/ui-ngx/src/assets/locale/locale.constant-en_US.json index 59b81edb63..5dd81cd72d 100644 --- a/ui-ngx/src/assets/locale/locale.constant-en_US.json +++ b/ui-ngx/src/assets/locale/locale.constant-en_US.json @@ -924,7 +924,12 @@ "view-statistics": "View statistics" }, "api-limit": { - "cassandra-queries": "Cassandra queries", + "cassandra-write-queries-core": "Rest API Cassandra write queries", + "cassandra-read-queries-core": "Rest API and WS telemetry Cassandra read queries", + "cassandra-write-queries-rule-engine": "Rule Engine telemetry Cassandra write queries", + "cassandra-read-queries-rule-engine": "Rule Engine telemetry Cassandra read queries", + "cassandra-write-queries-monolith": "Monolith telemetry Cassandra write queries", + "cassandra-read-queries-monolith": "Monolith telemetry Cassandra read queries", "entity-version-creation": "Entity version creation", "entity-version-load": "Entity version load", "notification-requests": "Notification requests",