From 67ea71131940c48c8b68d9b8dfc8cd238b8f829e Mon Sep 17 00:00:00 2001 From: Mayur Singal <39544459+ulixius9@users.noreply.github.com> Date: Wed, 4 Jan 2023 14:01:07 +0530 Subject: [PATCH] Fix #8422: Fix False usage query count (#9587) --- .../src/metadata/ingestion/ometa/mixins/table_mixin.py | 2 +- .../org/openmetadata/service/jdbi3/CollectionDAO.java | 9 ++++++--- .../org/openmetadata/service/jdbi3/UsageRepository.java | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/ingestion/src/metadata/ingestion/ometa/mixins/table_mixin.py b/ingestion/src/metadata/ingestion/ometa/mixins/table_mixin.py index 8dbb88b2758..d52a5df068f 100644 --- a/ingestion/src/metadata/ingestion/ometa/mixins/table_mixin.py +++ b/ingestion/src/metadata/ingestion/ometa/mixins/table_mixin.py @@ -194,7 +194,7 @@ class OMetaTableMixin: :param table: Table Entity to update :param table_usage_request: Usage data to add """ - resp = self.client.put( + resp = self.client.post( f"/usage/table/{table.id.__root__}", data=table_usage_request.json() ) logger.debug("published table usage %s", resp) diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/CollectionDAO.java b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/CollectionDAO.java index 58d57e87344..014579c6f31 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/CollectionDAO.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/CollectionDAO.java @@ -2263,16 +2263,19 @@ public interface CollectionDAO { + "(:count1 + (SELECT COALESCE(SUM(count1), 0) FROM entity_usage WHERE id = :id AND usageDate >= :date - " + "INTERVAL 6 DAY)), " + "(:count1 + (SELECT COALESCE(SUM(count1), 0) FROM entity_usage WHERE id = :id AND usageDate >= :date - " - + "INTERVAL 29 DAY))", + + "INTERVAL 29 DAY))" + + "ON DUPLICATE KEY UPDATE count7 = count7 - count1 + :count1, count30 = count30 - count1 + :count1, count1 = :count1", connectionType = MYSQL) @ConnectionAwareSqlUpdate( value = "INSERT INTO entity_usage (usageDate, id, entityType, count1, count7, count30) " + "SELECT (:date :: date), :id, :entityType, :count1, " + "(:count1 + (SELECT COALESCE(SUM(count1), 0) FROM entity_usage WHERE id = :id AND usageDate >= (:date :: date) - INTERVAL '6 days')), " - + "(:count1 + (SELECT COALESCE(SUM(count1), 0) FROM entity_usage WHERE id = :id AND usageDate >= (:date :: date) - INTERVAL '29 days'))", + + "(:count1 + (SELECT COALESCE(SUM(count1), 0) FROM entity_usage WHERE id = :id AND usageDate >= (:date :: date) - INTERVAL '29 days'))" + + "ON CONFLICT (usageDate, id) DO UPDATE SET count7 = entity_usage.count7 - entity_usage.count1 + :count1," + + "count30 = entity_usage.count30 - entity_usage.count1 + :count1, count1 = :count1", connectionType = POSTGRES) - void insert( + void insertOrReplaceCount( @Bind("date") String date, @Bind("id") String id, @Bind("entityType") String entityType, diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/UsageRepository.java b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/UsageRepository.java index 1d9eb076f8b..bfc9c243194 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/UsageRepository.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/jdbi3/UsageRepository.java @@ -190,7 +190,7 @@ public class UsageRepository { private void insertToUsageRepository(String method, String entityId, String entityType, DailyCount usage) { if (method.equals(POST)) { - dao.usageDAO().insert(usage.getDate(), entityId, entityType, usage.getCount()); + dao.usageDAO().insertOrReplaceCount(usage.getDate(), entityId, entityType, usage.getCount()); } else if (method.equals(PUT)) { dao.usageDAO().insertOrUpdateCount(usage.getDate(), entityId, entityType, usage.getCount()); }