You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@druid.apache.org by hi...@apache.org on 2019/09/27 10:55:13 UTC

[incubator-druid] branch master updated: bug fix for lookup leak when we remove the last lookup from lookup tier (#8598)

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

himanshug pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-druid.git


The following commit(s) were added to refs/heads/master by this push:
     new e1b4a3a  bug fix for lookup leak when we remove the last lookup from lookup tier (#8598)
e1b4a3a is described below

commit e1b4a3ab7162e74ab86465f90ad50c72c1c19f15
Author: Faxian Zhao <23...@qq.com>
AuthorDate: Fri Sep 27 18:55:02 2019 +0800

    bug fix for lookup leak when we remove the last lookup from lookup tier (#8598)
    
    * bug fix for lookup leak when we remove the last lookup from lookup tier
    
    * warnings about lookups that will never be loaded
    
    * fix unit test
---
 .../lookup/cache/LookupCoordinatorManager.java      | 21 ++++++++++++++++-----
 .../lookup/cache/LookupCoordinatorManagerTest.java  |  4 ++++
 2 files changed, 20 insertions(+), 5 deletions(-)

diff --git a/server/src/main/java/org/apache/druid/server/lookup/cache/LookupCoordinatorManager.java b/server/src/main/java/org/apache/druid/server/lookup/cache/LookupCoordinatorManager.java
index b6589aa..cd3ac2c 100644
--- a/server/src/main/java/org/apache/druid/server/lookup/cache/LookupCoordinatorManager.java
+++ b/server/src/main/java/org/apache/druid/server/lookup/cache/LookupCoordinatorManager.java
@@ -557,16 +557,27 @@ public class LookupCoordinatorManager
 
     try {
       List<ListenableFuture<Map.Entry>> futures = new ArrayList<>();
-      for (Map.Entry<String, Map<String, LookupExtractorFactoryMapContainer>> tierEntry : allLookupTiers.entrySet()) {
 
-        LOG.debug("Starting lookup mgmt for tier [%s].", tierEntry.getKey());
+      Set<String> discoveredLookupTiers = lookupNodeDiscovery.getAllTiers();
 
-        final Map<String, LookupExtractorFactoryMapContainer> tierLookups = tierEntry.getValue();
-        for (final HostAndPortWithScheme node : lookupNodeDiscovery.getNodesInTier(tierEntry.getKey())) {
+      // Check and Log warnings about lookups configured by user in DB but no nodes discovered to load those.
+      for (String tierInDB : allLookupTiers.keySet()) {
+        if (!discoveredLookupTiers.contains(tierInDB) &&
+            !allLookupTiers.getOrDefault(tierInDB, ImmutableMap.of()).isEmpty()) {
+          LOG.warn("Found lookups for tier [%s] in DB, but no nodes discovered for it", tierInDB);
+        }
+      }
+
+      for (String tier : discoveredLookupTiers) {
+
+        LOG.debug("Starting lookup mgmt for tier [%s].", tier);
+
+        final Map<String, LookupExtractorFactoryMapContainer> tierLookups = allLookupTiers.getOrDefault(tier, ImmutableMap.of());
+        for (final HostAndPortWithScheme node : lookupNodeDiscovery.getNodesInTier(tier)) {
 
           LOG.debug(
               "Starting lookup mgmt for tier [%s] and host [%s:%s:%s].",
-              tierEntry.getKey(),
+              tier,
               node.getScheme(),
               node.getHostText(),
               node.getPort()
diff --git a/server/src/test/java/org/apache/druid/server/lookup/cache/LookupCoordinatorManagerTest.java b/server/src/test/java/org/apache/druid/server/lookup/cache/LookupCoordinatorManagerTest.java
index 772b185..962c950 100644
--- a/server/src/test/java/org/apache/druid/server/lookup/cache/LookupCoordinatorManagerTest.java
+++ b/server/src/test/java/org/apache/druid/server/lookup/cache/LookupCoordinatorManagerTest.java
@@ -1139,6 +1139,10 @@ public class LookupCoordinatorManagerTest
 
     EasyMock.reset(lookupNodeDiscovery);
     EasyMock
+        .expect(lookupNodeDiscovery.getAllTiers())
+        .andReturn(ImmutableSet.of("tier1"))
+        .once();
+    EasyMock
         .expect(lookupNodeDiscovery.getNodesInTier("tier1"))
         .andReturn(ImmutableList.of(host1, host2))
         .anyTimes();


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@druid.apache.org
For additional commands, e-mail: commits-help@druid.apache.org