From 092d064f4eca17ed78b2601b66617c8f1e7f0e75 Mon Sep 17 00:00:00 2001 From: Clint Wylie Date: Tue, 14 May 2019 13:30:51 -0700 Subject: [PATCH] fix lookup editor to use lookup tiers instead of historical tiers (#7647) * fix lookup editor to use lookup tiers instead of historical tiers * use default tier if empty response, fix if configured lookups is null * fixes * fix typo --- docs/content/querying/lookups.md | 2 +- .../server/http/LookupCoordinatorResource.java | 13 ++++++++++--- .../server/http/LookupCoordinatorResourceTest.java | 9 ++++++--- web-console/src/views/lookups-view.tsx | 6 ++++-- 4 files changed, 21 insertions(+), 9 deletions(-) diff --git a/docs/content/querying/lookups.md b/docs/content/querying/lookups.md index a072317820a5..b54f769a8d44 100644 --- a/docs/content/querying/lookups.md +++ b/docs/content/querying/lookups.md @@ -296,7 +296,7 @@ A `DELETE` to `/druid/coordinator/v1/lookups/config/{tier}/{id}` will remove tha ## List tier names A `GET` to `/druid/coordinator/v1/lookups/config` will return a list of known tier names in the dynamic configuration. -To discover a list of tiers currently active in the cluster **instead of** ones known in the dynamic configuration, the parameter `discover=true` can be added as per `/druid/coordinator/v1/lookups?discover=true`. +To discover a list of tiers currently active in the cluster in addition to ones known in the dynamic configuration, the parameter `discover=true` can be added as per `/druid/coordinator/v1/lookups/config?discover=true`. ## List lookup names A `GET` to `/druid/coordinator/v1/lookups/config/{tier}` will return a list of known lookup names for that tier. diff --git a/server/src/main/java/org/apache/druid/server/http/LookupCoordinatorResource.java b/server/src/main/java/org/apache/druid/server/http/LookupCoordinatorResource.java index b79acea71612..7affefea9bc1 100644 --- a/server/src/main/java/org/apache/druid/server/http/LookupCoordinatorResource.java +++ b/server/src/main/java/org/apache/druid/server/http/LookupCoordinatorResource.java @@ -61,9 +61,11 @@ import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.Set; /** * Contains information about lookups exposed through the coordinator @@ -97,11 +99,16 @@ public Response getTiers( ) { try { + final Map> knownLookups = + lookupCoordinatorManager.getKnownLookups(); if (discover) { - return Response.ok().entity(lookupCoordinatorManager.discoverTiers()).build(); + final Set discovered = new HashSet<>(lookupCoordinatorManager.discoverTiers()); + if (knownLookups != null) { + discovered.addAll(knownLookups.keySet()); + } + return Response.ok().entity(discovered).build(); } - final Map> knownLookups = lookupCoordinatorManager - .getKnownLookups(); + if (knownLookups == null) { return Response.status(Response.Status.NOT_FOUND).build(); } else { diff --git a/server/src/test/java/org/apache/druid/server/http/LookupCoordinatorResourceTest.java b/server/src/test/java/org/apache/druid/server/http/LookupCoordinatorResourceTest.java index 17f3d46e11ed..fb6e22d7205c 100644 --- a/server/src/test/java/org/apache/druid/server/http/LookupCoordinatorResourceTest.java +++ b/server/src/test/java/org/apache/druid/server/http/LookupCoordinatorResourceTest.java @@ -148,9 +148,10 @@ public void testExceptionalGet() @Test public void testDiscoveryGet() { - final Set tiers = ImmutableSet.of(); + final Set tiers = ImmutableSet.of("discoveredLookupTier"); final LookupCoordinatorManager lookupCoordinatorManager = EasyMock.createStrictMock( LookupCoordinatorManager.class); + EasyMock.expect(lookupCoordinatorManager.getKnownLookups()).andReturn(SINGLE_TIER_MAP).once(); EasyMock.expect(lookupCoordinatorManager.discoverTiers()).andReturn(tiers).once(); EasyMock.replay(lookupCoordinatorManager); final LookupCoordinatorResource lookupCoordinatorResource = new LookupCoordinatorResource( @@ -160,7 +161,8 @@ public void testDiscoveryGet() ); final Response response = lookupCoordinatorResource.getTiers(true); Assert.assertEquals(200, response.getStatus()); - Assert.assertEquals(tiers, response.getEntity()); + + Assert.assertEquals(ImmutableSet.of("lookupTier", "discoveredLookupTier"), response.getEntity()); EasyMock.verify(lookupCoordinatorManager); } @@ -171,6 +173,7 @@ public void testDiscoveryExceptionalGet() final RuntimeException ex = new RuntimeException(errMsg); final LookupCoordinatorManager lookupCoordinatorManager = EasyMock.createStrictMock( LookupCoordinatorManager.class); + EasyMock.expect(lookupCoordinatorManager.getKnownLookups()).andReturn(SINGLE_TIER_MAP).once(); EasyMock.expect(lookupCoordinatorManager.discoverTiers()).andThrow(ex).once(); EasyMock.replay(lookupCoordinatorManager); final LookupCoordinatorResource lookupCoordinatorResource = new LookupCoordinatorResource( @@ -189,7 +192,7 @@ public void testSimpleGetLookup() { final LookupExtractorFactoryMapContainer container = new LookupExtractorFactoryMapContainer( "v0", - new HashMap() + new HashMap<>() ); final LookupCoordinatorManager lookupCoordinatorManager = EasyMock.createStrictMock( LookupCoordinatorManager.class); diff --git a/web-console/src/views/lookups-view.tsx b/web-console/src/views/lookups-view.tsx index df525ae0cb5e..c6f4b13c1ee2 100644 --- a/web-console/src/views/lookups-view.tsx +++ b/web-console/src/views/lookups-view.tsx @@ -38,6 +38,8 @@ import './lookups-view.scss'; const tableColumns: string[] = ['Lookup name', 'Tier', 'Type', 'Version', 'Actions']; +const DEFAULT_LOOKUP_TIER: string = '__default'; + export interface LookupsViewProps extends React.Props { } @@ -89,8 +91,8 @@ export class LookupsView extends React.Component { - const tiersResp = await axios.get('/druid/coordinator/v1/tiers'); - const tiers = tiersResp.data; + const tiersResp = await axios.get('/druid/coordinator/v1/lookups/config?discover=true'); + const tiers = tiersResp.data && tiersResp.data.length > 0 ? tiersResp.data : [DEFAULT_LOOKUP_TIER]; const lookupEntries: {}[] = []; const lookupResp = await axios.get('/druid/coordinator/v1/lookups/config/all');