You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@druid.apache.org by fj...@apache.org on 2019/02/08 19:06:09 UTC
[incubator-druid] branch master updated: Add an api to get all
lookup specs (#7025)
This is an automated email from the ASF dual-hosted git repository.
fjy 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 d42de57 Add an api to get all lookup specs (#7025)
d42de57 is described below
commit d42de574d66c6188ec10a3e0acd6a3d8694b9463
Author: Jihoon Son <ji...@apache.org>
AuthorDate: Fri Feb 8 11:05:59 2019 -0800
Add an api to get all lookup specs (#7025)
* Add an api to get all lookup specs
* add doc
---
docs/content/querying/lookups.md | 5 +-
.../server/http/LookupCoordinatorResource.java | 50 +++++++++++++----
.../server/http/LookupCoordinatorResourceTest.java | 65 ++++++++++++++++++++++
3 files changed, 109 insertions(+), 11 deletions(-)
diff --git a/docs/content/querying/lookups.md b/docs/content/querying/lookups.md
index 7c7ad81..14d9fe2 100644
--- a/docs/content/querying/lookups.md
+++ b/docs/content/querying/lookups.md
@@ -260,8 +260,11 @@ For example, a post to `/druid/coordinator/v1/lookups/config/realtime_customer1/
This will replace the `site_id_customer1` lookup in the `realtime_customer1` with the definition above.
+## Get All Lookups
+A `GET` to `/druid/coordinator/v1/lookups/config/all` will return all known lookup specs for all tiers.
+
## Get Lookup
-A `GET` to a particular lookup extractor factory is accomplished via `/druid/coordinator/v1/lookups/{tier}/{id}`
+A `GET` to a particular lookup extractor factory is accomplished via `/druid/coordinator/v1/lookups/config/{tier}/{id}`
Using the prior example, a `GET` to `/druid/coordinator/v1/lookups/config/realtime_customer2/site_id_customer2` should return
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 90e5694..b79acea 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
@@ -100,7 +100,8 @@ public class LookupCoordinatorResource
if (discover) {
return Response.ok().entity(lookupCoordinatorManager.discoverTiers()).build();
}
- final Map<String, Map<String, LookupExtractorFactoryMapContainer>> knownLookups = lookupCoordinatorManager.getKnownLookups();
+ final Map<String, Map<String, LookupExtractorFactoryMapContainer>> knownLookups = lookupCoordinatorManager
+ .getKnownLookups();
if (knownLookups == null) {
return Response.status(Response.Status.NOT_FOUND).build();
} else {
@@ -113,6 +114,26 @@ public class LookupCoordinatorResource
}
}
+ @GET
+ @Produces({MediaType.APPLICATION_JSON})
+ @Path("/config/all")
+ public Response getAllLookupSpecs()
+ {
+ try {
+ final Map<String, Map<String, LookupExtractorFactoryMapContainer>> knownLookups = lookupCoordinatorManager
+ .getKnownLookups();
+ if (knownLookups == null) {
+ return Response.status(Response.Status.NOT_FOUND).build();
+ } else {
+ return Response.ok().entity(knownLookups).build();
+ }
+ }
+ catch (Exception ex) {
+ LOG.error(ex, "Error getting lookups status");
+ return Response.serverError().entity(ServletResourceUtils.sanitizeException(ex)).build();
+ }
+ }
+
@POST
@Path("/config")
@Produces({MediaType.APPLICATION_JSON, SmileMediaTypes.APPLICATION_JACKSON_SMILE})
@@ -314,14 +335,16 @@ public class LookupCoordinatorResource
)
{
try {
- Map<String, Map<String, LookupExtractorFactoryMapContainer>> configuredLookups = lookupCoordinatorManager.getKnownLookups();
+ Map<String, Map<String, LookupExtractorFactoryMapContainer>> configuredLookups = lookupCoordinatorManager
+ .getKnownLookups();
if (configuredLookups == null) {
return Response.status(Response.Status.NOT_FOUND)
.entity(ServletResourceUtils.jsonize("No lookups found"))
.build();
}
- Map<HostAndPort, LookupsState<LookupExtractorFactoryMapContainer>> lookupsStateOnNodes = lookupCoordinatorManager.getLastKnownLookupsStateOnNodes();
+ Map<HostAndPort, LookupsState<LookupExtractorFactoryMapContainer>> lookupsStateOnNodes = lookupCoordinatorManager
+ .getLastKnownLookupsStateOnNodes();
Map<String, Map<String, LookupStatus>> result = new HashMap<>();
@@ -362,7 +385,8 @@ public class LookupCoordinatorResource
)
{
try {
- Map<String, Map<String, LookupExtractorFactoryMapContainer>> configuredLookups = lookupCoordinatorManager.getKnownLookups();
+ Map<String, Map<String, LookupExtractorFactoryMapContainer>> configuredLookups = lookupCoordinatorManager
+ .getKnownLookups();
if (configuredLookups == null) {
return Response.status(Response.Status.NOT_FOUND)
.entity(ServletResourceUtils.jsonize("No lookups found"))
@@ -380,7 +404,8 @@ public class LookupCoordinatorResource
Map<String, LookupStatus> lookupStatusMap = new HashMap<>();
Collection<HostAndPort> hosts = lookupCoordinatorManager.discoverNodesInTier(tier);
- Map<HostAndPort, LookupsState<LookupExtractorFactoryMapContainer>> lookupsStateOnNodes = lookupCoordinatorManager.getLastKnownLookupsStateOnNodes();
+ Map<HostAndPort, LookupsState<LookupExtractorFactoryMapContainer>> lookupsStateOnNodes = lookupCoordinatorManager
+ .getLastKnownLookupsStateOnNodes();
for (Map.Entry<String, LookupExtractorFactoryMapContainer> lookupsEntry : tierLookups.entrySet()) {
lookupStatusMap.put(
@@ -407,7 +432,8 @@ public class LookupCoordinatorResource
)
{
try {
- Map<String, Map<String, LookupExtractorFactoryMapContainer>> configuredLookups = lookupCoordinatorManager.getKnownLookups();
+ Map<String, Map<String, LookupExtractorFactoryMapContainer>> configuredLookups = lookupCoordinatorManager
+ .getKnownLookups();
if (configuredLookups == null) {
return Response.status(Response.Status.NOT_FOUND)
.entity(ServletResourceUtils.jsonize("No lookups found"))
@@ -486,7 +512,8 @@ public class LookupCoordinatorResource
if (discover) {
tiers = lookupCoordinatorManager.discoverTiers();
} else {
- Map<String, Map<String, LookupExtractorFactoryMapContainer>> configuredLookups = lookupCoordinatorManager.getKnownLookups();
+ Map<String, Map<String, LookupExtractorFactoryMapContainer>> configuredLookups = lookupCoordinatorManager
+ .getKnownLookups();
if (configuredLookups == null) {
return Response.status(Response.Status.NOT_FOUND)
.entity(ServletResourceUtils.jsonize("No lookups configured."))
@@ -495,7 +522,8 @@ public class LookupCoordinatorResource
tiers = configuredLookups.keySet();
}
- Map<HostAndPort, LookupsState<LookupExtractorFactoryMapContainer>> lookupsStateOnHosts = lookupCoordinatorManager.getLastKnownLookupsStateOnNodes();
+ Map<HostAndPort, LookupsState<LookupExtractorFactoryMapContainer>> lookupsStateOnHosts = lookupCoordinatorManager
+ .getLastKnownLookupsStateOnNodes();
Map<String, Map<HostAndPort, LookupsState<LookupExtractorFactoryMapContainer>>> result = new HashMap<>();
@@ -531,7 +559,8 @@ public class LookupCoordinatorResource
)
{
try {
- Map<HostAndPort, LookupsState<LookupExtractorFactoryMapContainer>> lookupsStateOnHosts = lookupCoordinatorManager.getLastKnownLookupsStateOnNodes();
+ Map<HostAndPort, LookupsState<LookupExtractorFactoryMapContainer>> lookupsStateOnHosts = lookupCoordinatorManager
+ .getLastKnownLookupsStateOnNodes();
Map<HostAndPort, LookupsState<LookupExtractorFactoryMapContainer>> tierNodesStatus = new HashMap<>();
@@ -563,7 +592,8 @@ public class LookupCoordinatorResource
)
{
try {
- Map<HostAndPort, LookupsState<LookupExtractorFactoryMapContainer>> lookupsStateOnHosts = lookupCoordinatorManager.getLastKnownLookupsStateOnNodes();
+ Map<HostAndPort, LookupsState<LookupExtractorFactoryMapContainer>> lookupsStateOnHosts = lookupCoordinatorManager
+ .getLastKnownLookupsStateOnNodes();
LookupsState<LookupExtractorFactoryMapContainer> lookupsState = lookupsStateOnHosts.get(hostAndPort);
if (lookupsState == null) {
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 621479b..17f3d46 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
@@ -39,6 +39,7 @@ import org.junit.Test;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.Status;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -1078,4 +1079,68 @@ public class LookupCoordinatorResourceTest
EasyMock.verify(lookupCoordinatorManager);
}
+
+ @Test
+ public void testGetAllLookupSpecs()
+ {
+ final Map<String, Map<String, LookupExtractorFactoryMapContainer>> lookups = ImmutableMap.of(
+ "tier1",
+ ImmutableMap.of(
+ "lookup1",
+ new LookupExtractorFactoryMapContainer(
+ "v0",
+ ImmutableMap.of("k1", "v2")
+ ),
+ "lookup2",
+ new LookupExtractorFactoryMapContainer(
+ "v1",
+ ImmutableMap.of("k", "v")
+ )
+ ),
+ "tier2",
+ ImmutableMap.of(
+ "lookup1",
+ new LookupExtractorFactoryMapContainer(
+ "v0",
+ ImmutableMap.of("k1", "v2")
+ )
+ )
+ );
+ final LookupCoordinatorManager lookupCoordinatorManager = EasyMock.createStrictMock(
+ LookupCoordinatorManager.class
+ );
+ EasyMock.expect(lookupCoordinatorManager.getKnownLookups())
+ .andReturn(lookups)
+ .once();
+ EasyMock.replay(lookupCoordinatorManager);
+ final LookupCoordinatorResource lookupCoordinatorResource = new LookupCoordinatorResource(
+ lookupCoordinatorManager,
+ mapper,
+ mapper
+ );
+ final Response response = lookupCoordinatorResource.getAllLookupSpecs();
+ Assert.assertEquals(Status.OK.getStatusCode(), response.getStatus());
+ Assert.assertEquals(lookups, response.getEntity());
+ EasyMock.verify(lookupCoordinatorManager);
+ }
+
+ @Test
+ public void testGetEmptyAllLookupSpecs()
+ {
+ final LookupCoordinatorManager lookupCoordinatorManager = EasyMock.createStrictMock(
+ LookupCoordinatorManager.class
+ );
+ EasyMock.expect(lookupCoordinatorManager.getKnownLookups())
+ .andReturn(null)
+ .once();
+ EasyMock.replay(lookupCoordinatorManager);
+ final LookupCoordinatorResource lookupCoordinatorResource = new LookupCoordinatorResource(
+ lookupCoordinatorManager,
+ mapper,
+ mapper
+ );
+ final Response response = lookupCoordinatorResource.getAllLookupSpecs();
+ Assert.assertEquals(Status.NOT_FOUND.getStatusCode(), response.getStatus());
+ EasyMock.verify(lookupCoordinatorManager);
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@druid.apache.org
For additional commands, e-mail: commits-help@druid.apache.org