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