This is an automated email from the ASF dual-hosted git repository.

madhan pushed a commit to branch branch-1.0
in repository https://gitbox.apache.org/repos/asf/atlas.git


The following commit(s) were added to refs/heads/branch-1.0 by this push:
     new 0e4a2f6  ATLAS-3052: removed caching of metrics query results
0e4a2f6 is described below

commit 0e4a2f696bd9c72b3b026fa0a28eceb1fcf5c2e5
Author: Nikhil Bonte <nikhil.bo...@freestoneinfotech.com>
AuthorDate: Wed Feb 13 23:17:49 2019 -0800

    ATLAS-3052: removed caching of metrics query results
    
    Change-Id: Ifeabb13acb387781a72d00146d4acd4ea9a279d8
    Signed-off-by: Madhan Neethiraj <mad...@apache.org>
    (cherry picked from commit ee99930f5203ac321a5da41b9e3ab63df98e2faf)
---
 .../org/apache/atlas/services/MetricsService.java  | 133 +++++++++------------
 .../apache/atlas/services/MetricsServiceTest.java  |   2 +-
 .../apache/atlas/web/resources/AdminResource.java  |   4 +-
 3 files changed, 57 insertions(+), 82 deletions(-)

diff --git 
a/repository/src/main/java/org/apache/atlas/services/MetricsService.java 
b/repository/src/main/java/org/apache/atlas/services/MetricsService.java
index d74acfb..607b830 100644
--- a/repository/src/main/java/org/apache/atlas/services/MetricsService.java
+++ b/repository/src/main/java/org/apache/atlas/services/MetricsService.java
@@ -59,108 +59,95 @@ public class MetricsService {
     protected static final String METRIC_TAG_COUNT         = TAG + "Count";
     protected static final String METRIC_ENTITIES_PER_TAG  = TAG + "Entities";
 
-    public static final String METRIC_QUERY_CACHE_TTL                = 
"atlas.metric.query.cache.ttlInSecs";
-    public static final String METRIC_QUERY_GREMLIN_TYPES_BATCH_SIZE = 
"atlas.metric.query.gremlin.typesBatchSize";
-    public static final int    DEFAULT_CACHE_TTL_IN_SECS             = 900;
     public static final String METRIC_COLLECTION_TIME                = 
"collectionTime";
 
     private final AtlasGraph        atlasGraph;
     private final AtlasTypeRegistry typeRegistry;
-    private final int               cacheTTLInSecs;
     private final String            indexSearchPrefix = 
AtlasGraphUtilsV2.getIndexSearchPrefix();
 
-    private AtlasMetrics cachedMetrics       = null;
-    private long         cacheExpirationTime = 0;
-
     @Inject
-    public MetricsService(final Configuration configuration, final AtlasGraph 
graph, final AtlasTypeRegistry typeRegistry) {
-        this.atlasGraph = graph;
-        this.cacheTTLInSecs = configuration != null ? 
configuration.getInt(METRIC_QUERY_CACHE_TTL, DEFAULT_CACHE_TTL_IN_SECS) : 
DEFAULT_CACHE_TTL_IN_SECS;
+    public MetricsService(final AtlasGraph graph, final AtlasTypeRegistry 
typeRegistry) {
+        this.atlasGraph   = graph;
         this.typeRegistry = typeRegistry;
 
     }
 
     @SuppressWarnings("unchecked")
-    public AtlasMetrics getMetrics(boolean ignoreCache) {
-        if (ignoreCache || !isCacheValid()) {
-            AtlasMetrics metrics = new AtlasMetrics();
+    public AtlasMetrics getMetrics() {
+        AtlasMetrics metrics = new AtlasMetrics();
 
-            metrics.addMetric(GENERAL, METRIC_TYPE_COUNT, getAllTypesCount());
-            metrics.addMetric(GENERAL, METRIC_TAG_COUNT, getAllTagsCount());
+        metrics.addMetric(GENERAL, METRIC_TYPE_COUNT, getAllTypesCount());
+        metrics.addMetric(GENERAL, METRIC_TAG_COUNT, getAllTagsCount());
 
-            Map<String, Long> activeCountMap  = new HashMap<>();
-            Map<String, Long> deletedCountMap = new HashMap<>();
+        Map<String, Long> activeCountMap  = new HashMap<>();
+        Map<String, Long> deletedCountMap = new HashMap<>();
 
-            // metrics for classifications
-            Collection<String> classificationDefNames = 
typeRegistry.getAllClassificationDefNames();
+        // metrics for classifications
+        Collection<String> classificationDefNames = 
typeRegistry.getAllClassificationDefNames();
 
-            if (classificationDefNames != null) {
-                for (String classificationDefName : classificationDefNames) {
-                    activeCountMap.put(classificationDefName, 
getTypeCount(classificationDefName, ACTIVE));
-                }
+        if (classificationDefNames != null) {
+            for (String classificationDefName : classificationDefNames) {
+                activeCountMap.put(classificationDefName, 
getTypeCount(classificationDefName, ACTIVE));
             }
+        }
 
-            // metrics for entities
-            Collection<String> entityDefNames = 
typeRegistry.getAllEntityDefNames();
+        // metrics for entities
+        Collection<String> entityDefNames = 
typeRegistry.getAllEntityDefNames();
 
-            if (entityDefNames != null) {
-                for (String entityDefName : entityDefNames) {
-                    activeCountMap.put(entityDefName, 
getTypeCount(entityDefName, ACTIVE));
-                    deletedCountMap.put(entityDefName, 
getTypeCount(entityDefName, DELETED));
-                }
+        if (entityDefNames != null) {
+            for (String entityDefName : entityDefNames) {
+                activeCountMap.put(entityDefName, getTypeCount(entityDefName, 
ACTIVE));
+                deletedCountMap.put(entityDefName, getTypeCount(entityDefName, 
DELETED));
             }
+        }
 
-            Map<String, Long> activeEntityCount  = new HashMap<>();
-            Map<String, Long> deletedEntityCount = new HashMap<>();
-            long              unusedTypeCount    = 0;
-            long              totalEntities      = 0;
+        Map<String, Long> activeEntityCount  = new HashMap<>();
+        Map<String, Long> deletedEntityCount = new HashMap<>();
+        long              unusedTypeCount    = 0;
+        long              totalEntities      = 0;
 
-            for (String entityDefName : typeRegistry.getAllEntityDefNames()) {
-                Long activeCount  = activeCountMap.get(entityDefName);
-                Long deletedCount = deletedCountMap.get(entityDefName);
+        for (String entityDefName : typeRegistry.getAllEntityDefNames()) {
+            Long activeCount  = activeCountMap.get(entityDefName);
+            Long deletedCount = deletedCountMap.get(entityDefName);
 
-                if (activeCount > 0) {
-                    activeEntityCount.put(entityDefName, activeCount);
-                    totalEntities += activeCount.longValue();
-                }
+            if (activeCount > 0) {
+                activeEntityCount.put(entityDefName, activeCount);
+                totalEntities += activeCount.longValue();
+            }
 
-                if (deletedCount > 0) {
-                    deletedEntityCount.put(entityDefName, deletedCount);
-                    totalEntities += deletedCount.longValue();
-                }
+            if (deletedCount > 0) {
+                deletedEntityCount.put(entityDefName, deletedCount);
+                totalEntities += deletedCount.longValue();
+            }
 
-                if (activeCount == 0 && deletedCount == 0) {
-                    unusedTypeCount++;
-                }
+            if (activeCount == 0 && deletedCount == 0) {
+                unusedTypeCount++;
             }
+        }
 
-            metrics.addMetric(GENERAL, METRIC_TYPE_UNUSED_COUNT, 
unusedTypeCount);
-            metrics.addMetric(GENERAL, METRIC_ENTITY_COUNT, totalEntities);
-            metrics.addMetric(ENTITY, METRIC_ENTITY_ACTIVE, activeEntityCount);
-            metrics.addMetric(ENTITY, METRIC_ENTITY_DELETED, 
deletedEntityCount);
+        metrics.addMetric(GENERAL, METRIC_TYPE_UNUSED_COUNT, unusedTypeCount);
+        metrics.addMetric(GENERAL, METRIC_ENTITY_COUNT, totalEntities);
+        metrics.addMetric(ENTITY, METRIC_ENTITY_ACTIVE, activeEntityCount);
+        metrics.addMetric(ENTITY, METRIC_ENTITY_DELETED, deletedEntityCount);
 
-            Map<String, Long> taggedEntityCount = new HashMap<>();
+        Map<String, Long> taggedEntityCount = new HashMap<>();
 
-            for (String classificationName : 
typeRegistry.getAllClassificationDefNames()) {
-                Long count = activeCountMap.get(classificationName);
+        for (String classificationName : 
typeRegistry.getAllClassificationDefNames()) {
+            Long count = activeCountMap.get(classificationName);
 
-                if (count > 0) {
-                    taggedEntityCount.put(classificationName, count);
-                }
+            if (count > 0) {
+                taggedEntityCount.put(classificationName, count);
             }
+        }
 
-            metrics.addMetric(TAG, METRIC_ENTITIES_PER_TAG, taggedEntityCount);
-
-            // Miscellaneous metrics
-            long collectionTime = System.currentTimeMillis();
+        metrics.addMetric(TAG, METRIC_ENTITIES_PER_TAG, taggedEntityCount);
 
-            metrics.addMetric(GENERAL, METRIC_COLLECTION_TIME, collectionTime);
+        // Miscellaneous metrics
+        long collectionTime = System.currentTimeMillis();
 
-            this.cachedMetrics       = metrics;
-            this.cacheExpirationTime = (collectionTime + cacheTTLInSecs * 
1000);
-        }
+        metrics.addMetric(GENERAL, METRIC_COLLECTION_TIME, collectionTime);
 
-        return cachedMetrics;
+        return metrics;
     }
 
     private Long getTypeCount(String typeName, Status status) {
@@ -183,16 +170,4 @@ public class MetricsService {
 
         return CollectionUtils.isNotEmpty(allTagNames) ? allTagNames.size() : 
0;
     }
-
-    private boolean isCacheValid() {
-        boolean valid = cachedMetrics != null && System.currentTimeMillis() < 
cacheExpirationTime;
-
-        if (LOG.isDebugEnabled()) {
-            LOG.debug("cachedMetrics: {}", cachedMetrics != null);
-            LOG.debug("cacheExpirationTime: {}", cacheExpirationTime);
-            LOG.debug("valid: {}", valid);
-        }
-
-        return valid;
-    }
 }
\ No newline at end of file
diff --git 
a/repository/src/test/java/org/apache/atlas/services/MetricsServiceTest.java 
b/repository/src/test/java/org/apache/atlas/services/MetricsServiceTest.java
index 2b8d837..78e5803 100644
--- a/repository/src/test/java/org/apache/atlas/services/MetricsServiceTest.java
+++ b/repository/src/test/java/org/apache/atlas/services/MetricsServiceTest.java
@@ -124,7 +124,7 @@ public class MetricsServiceTest {
 
     @Test
     public void testGetMetrics() {
-        AtlasMetrics metrics = metricsService.getMetrics(true);
+        AtlasMetrics metrics = metricsService.getMetrics();
 
         assertNotNull(metrics);
 
diff --git 
a/webapp/src/main/java/org/apache/atlas/web/resources/AdminResource.java 
b/webapp/src/main/java/org/apache/atlas/web/resources/AdminResource.java
index 3c24418..085dcee 100755
--- a/webapp/src/main/java/org/apache/atlas/web/resources/AdminResource.java
+++ b/webapp/src/main/java/org/apache/atlas/web/resources/AdminResource.java
@@ -319,12 +319,12 @@ public class AdminResource {
     @GET
     @Path("metrics")
     @Produces(Servlets.JSON_MEDIA_TYPE)
-    public AtlasMetrics getMetrics(@QueryParam("ignoreCache") boolean 
ignoreCache) {
+    public AtlasMetrics getMetrics() {
         if (LOG.isDebugEnabled()) {
             LOG.debug("==> AdminResource.getMetrics()");
         }
 
-        AtlasMetrics metrics = metricsService.getMetrics(ignoreCache);
+        AtlasMetrics metrics = metricsService.getMetrics();
 
         if (LOG.isDebugEnabled()) {
             LOG.debug("<== AdminResource.getMetrics()");

Reply via email to