Hi Temporal team!
I’m looking for ways to simplify Temporal development experience for new engineers from my organization. As part of that, I’ve created a small generic code that could automatically create a namespace on worker/starter application startup. The idea is to have it off for staging and production (so namespaces have to be manually created there) but be able to automatically create required namespaces on a local machine.
To do that, I make a DescribeNamespace
call and it fails, make a RegisterNamespace
call. This works fine in the sense that namespace is created and is visible in Temporal web, however, it’s not immediately “useful” as for ~10-15 seconds after namespace was created requests fail with
io.grpc.StatusRuntimeException: NOT_FOUND: namespace: basic_worker-namespace not found
at io.grpc.stub.ClientCalls.toStatusRuntimeException(ClientCalls.java:262)
at io.grpc.stub.ClientCalls.getUnchecked(ClientCalls.java:243)
at io.grpc.stub.ClientCalls.blockingUnaryCall(ClientCalls.java:156)
at io.temporal.api.workflowservice.v1.WorkflowServiceGrpc$WorkflowServiceBlockingStub.startWorkflowExecution(WorkflowServiceGrpc.java:2614)
at io.temporal.internal.external.GenericWorkflowClientExternalImpl.lambda$start$0(GenericWorkflowClientExternalImpl.java:88)
at io.temporal.internal.common.GrpcRetryer.retryWithResult(GrpcRetryer.java:97)
at io.temporal.internal.external.GenericWorkflowClientExternalImpl.start(GenericWorkflowClientExternalImpl.java:81)
I tried to run another DescribeNamespace
call after RegisterNamespace
but it succeeds and indicated the namespace is already created. Same with ListNamespaces
.
The best workaround I’ve found for now is to make a GetWorkflowExecutionHistory
request for some fake workflow id. If it fails with status code NOT_FOUND
I deduce the namespace is not propagated yet, once it fails with INVALID_ARGUMENT
I assume the namespace is ready and I can let worker and client request go.
Is there a way to tell that the namespace is “ready” and other calls can be initiated? I feel I’m missing something pretty obvious.