Skip to content

Commit bbadf10

Browse files
committed
use describeNamespace
1 parent 76672fa commit bbadf10

File tree

2 files changed

+35
-3
lines changed

2 files changed

+35
-3
lines changed

temporal-sdk/src/main/java/io/temporal/worker/WorkerFactory.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import com.google.common.base.Preconditions;
55
import com.google.common.base.Strings;
66
import com.uber.m3.tally.Scope;
7+
import io.temporal.api.workflowservice.v1.DescribeNamespaceRequest;
8+
import io.temporal.api.workflowservice.v1.DescribeNamespaceResponse;
79
import io.temporal.client.WorkflowClient;
810
import io.temporal.client.WorkflowClientOptions;
911
import io.temporal.common.converter.DataConverter;
@@ -196,9 +198,14 @@ public synchronized void start() {
196198

197199
// Workers check and require that Temporal Server is available during start to fail-fast in case
198200
// of configuration issues.
199-
// TODO(https://github.com/temporalio/sdk-java/issues/2060) consider using describeNamespace as
200-
// a connection check.
201-
workflowClient.getWorkflowServiceStubs().getServerCapabilities();
201+
DescribeNamespaceResponse response =
202+
workflowClient
203+
.getWorkflowServiceStubs()
204+
.blockingStub()
205+
.describeNamespace(
206+
DescribeNamespaceRequest.newBuilder()
207+
.setNamespace(workflowClient.getOptions().getNamespace())
208+
.build());
202209

203210
for (Worker worker : workers.values()) {
204211
worker.start();

temporal-sdk/src/test/java/io/temporal/workerFactory/WorkerFactoryTests.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
11
package io.temporal.workerFactory;
22

3+
import static org.junit.Assert.assertEquals;
34
import static org.junit.Assert.assertFalse;
5+
import static org.junit.Assert.assertThrows;
46
import static org.junit.Assert.assertTrue;
57

8+
import io.grpc.Status;
9+
import io.grpc.StatusRuntimeException;
610
import io.temporal.client.WorkflowClient;
11+
import io.temporal.client.WorkflowClientOptions;
712
import io.temporal.serviceclient.WorkflowServiceStubs;
813
import io.temporal.serviceclient.WorkflowServiceStubsOptions;
914
import io.temporal.worker.WorkerFactory;
@@ -128,4 +133,24 @@ public void factoryCanBeShutdownMoreThanOnce() {
128133
factory.shutdown();
129134
factory.awaitTermination(1, TimeUnit.MILLISECONDS);
130135
}
136+
137+
@Test
138+
public void startFailsOnNonexistentNamespace() {
139+
WorkflowServiceStubs serviceLocal =
140+
WorkflowServiceStubs.newServiceStubs(
141+
WorkflowServiceStubsOptions.newBuilder().setTarget(serviceAddress).build());
142+
WorkflowClient clientLocal =
143+
WorkflowClient.newInstance(
144+
serviceLocal, WorkflowClientOptions.newBuilder().setNamespace("i_dont_exist").build());
145+
WorkerFactory factoryLocal = WorkerFactory.newInstance(clientLocal);
146+
factoryLocal.newWorker("task-queue");
147+
148+
StatusRuntimeException ex = assertThrows(StatusRuntimeException.class, factoryLocal::start);
149+
assertEquals(Status.Code.NOT_FOUND, ex.getStatus().getCode());
150+
151+
factoryLocal.shutdownNow();
152+
factoryLocal.awaitTermination(5, TimeUnit.SECONDS);
153+
serviceLocal.shutdownNow();
154+
serviceLocal.awaitTermination(5, TimeUnit.SECONDS);
155+
}
131156
}

0 commit comments

Comments
 (0)