diff --git a/extensions-imply/ingest-service/src/main/java/io/imply/druid/ingest/server/TablesResource.java b/extensions-imply/ingest-service/src/main/java/io/imply/druid/ingest/server/TablesResource.java index 5965392cc612..878aaa13e17d 100644 --- a/extensions-imply/ingest-service/src/main/java/io/imply/druid/ingest/server/TablesResource.java +++ b/extensions-imply/ingest-service/src/main/java/io/imply/druid/ingest/server/TablesResource.java @@ -10,7 +10,6 @@ package io.imply.druid.ingest.server; import com.google.common.base.Function; -import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Lists; import com.google.inject.Inject; @@ -168,7 +167,9 @@ public Response stageIngestJob( @PathParam("table") String tableName ) { - Preconditions.checkArgument(metadataStore.druidTableExists(tableName)); + if (!metadataStore.druidTableExists(tableName)) { + return Response.status(Response.Status.NOT_FOUND).build(); + } // make jobId uuid, generate URL for file dropoff // write staging job to somewhere with 'staged' state final JobRunner jobTypeToUse = jobType != null ? jobType : new BatchAppendJobRunner(); diff --git a/extensions-imply/ingest-service/src/test/java/io/imply/druid/ingest/server/TablesResourceTest.java b/extensions-imply/ingest-service/src/test/java/io/imply/druid/ingest/server/TablesResourceTest.java index 6561bb5acef3..03df497d00e2 100644 --- a/extensions-imply/ingest-service/src/test/java/io/imply/druid/ingest/server/TablesResourceTest.java +++ b/extensions-imply/ingest-service/src/test/java/io/imply/druid/ingest/server/TablesResourceTest.java @@ -40,7 +40,6 @@ import java.net.URISyntaxException; import java.util.Map; - public class TablesResourceTest { private static final String TABLE = "test"; @@ -100,7 +99,7 @@ public void teardown() } @Test - public void testStageJob() throws URISyntaxException + public void testStageJobShoulWorkWhenTableExists() throws URISyntaxException { // expectAuthorizationTokenCheck(); see resource filter annotations are not called when testing in this manner // see https://github.com/apache/druid/issues/6685 @@ -123,7 +122,25 @@ public void testStageJob() throws URISyntaxException Assert.assertEquals(200, response.getStatus()); } - + + @Test + public void testStageJobShoulReturn404WhenTableDoesNotExist() + { + // expectAuthorizationTokenCheck(); see resource filter annotations are not called when testing in this manner + // see https://github.com/apache/druid/issues/6685 + String id = UUIDUtils.generateUuid(); + EasyMock.expect(metadataStore.druidTableExists(EasyMock.eq(TABLE))).andReturn(false).once(); + + EasyMock.replay(fileStore, metadataStore, req); + + Response response = tablesResource.stageIngestJob(null, TABLE); + + Map responseEntity = (Map) response.getEntity(); + + Assert.assertEquals(404, response.getStatus()); + } + + @Test public void testScheduleIngestJobShouldSucceedWhenJobExists() {