17:29:18.309 [grpc-default-executor-0] DEBUG io.camunda.zeebe.client.job.poller - Activated 1 jobs for worker csfservice and job type io.camunda:csfservice-api:1
17:29:18.309 [pool-2-thread-1] INFO io.camunda.connector.runtime.util.outbound.ConnectorJobHandler - Received job 2251799824186822
17:29:18.309 [pool-2-thread-1] DEBUG io.camunda.connector.runtime.util.outbound.ConnectorJobHandler - Exception while processing job 2251799824186822, error: {}
java.util.NoSuchElementException: null
at java.base/java.util.ServiceLoader$2.next(ServiceLoader.java:1318)
at java.base/java.util.ServiceLoader$2.next(ServiceLoader.java:1306)
at java.base/java.util.ServiceLoader$3.next(ServiceLoader.java:1403)
at io.camunda.connector.runtime.util.outbound.ConnectorJobHandler.loadOrCreateSecretProvider(ConnectorJobHandler.java:112)
at io.camunda.connector.runtime.util.outbound.ConnectorJobHandler.getSecretProvider(ConnectorJobHandler.java:104)
at io.camunda.connector.runtime.util.outbound.ConnectorJobHandler.handle(ConnectorJobHandler.java:65)
at io.camunda.zeebe.client.impl.worker.JobRunnableFactory.executeJob(JobRunnableFactory.java:44)
at io.camunda.zeebe.client.impl.worker.JobRunnableFactory.lambda$create$0(JobRunnableFactory.java:39)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
17:29:18.310 [pool-2-thread-1] ERROR io.camunda.connector.runtime.util.outbound.ConnectorJobHandler - Exception while processing job 2251799824186822, error: {}
java.util.NoSuchElementException: null
at java.base/java.util.ServiceLoader$2.next(ServiceLoader.java:1318)
at java.base/java.util.ServiceLoader$2.next(ServiceLoader.java:1306)
at java.base/java.util.ServiceLoader$3.next(ServiceLoader.java:1403)
at io.camunda.connector.runtime.util.outbound.ConnectorJobHandler.loadOrCreateSecretProvider(ConnectorJobHandler.java:112)
at io.camunda.connector.runtime.util.outbound.ConnectorJobHandler.getSecretProvider(ConnectorJobHandler.java:104)
at io.camunda.connector.runtime.util.outbound.ConnectorJobHandler.handle(ConnectorJobHandler.java:65)
at io.camunda.zeebe.client.impl.worker.JobRunnableFactory.executeJob(JobRunnableFactory.java:44)
at io.camunda.zeebe.client.impl.worker.JobRunnableFactory.lambda$create$0(JobRunnableFactory.java:39)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
17:29:18.310 [pool-2-thread-1] ERROR io.camunda.connector.runtime.util.outbound.ConnectorJobHandler - Exception while processing job 2251799824186822, error: {}
java.lang.NullPointerException: null
at io.camunda.zeebe.gateway.protocol.GatewayOuterClass$FailJobRequest$Builder.setErrorMessage(GatewayOuterClass.java:21983)
at io.camunda.zeebe.client.impl.command.FailJobCommandImpl.errorMessage(FailJobCommandImpl.java:67)
at io.camunda.connector.runtime.util.outbound.ConnectorJobHandler.failJob(ConnectorJobHandler.java:128)
at io.camunda.connector.runtime.util.outbound.ConnectorJobHandler.lambda$handle$1(ConnectorJobHandler.java:89)
at java.base/java.util.Optional.ifPresentOrElse(Optional.java:198)
at io.camunda.connector.runtime.util.outbound.ConnectorJobHandler.handle(ConnectorJobHandler.java:77)
at io.camunda.zeebe.client.impl.worker.JobRunnableFactory.executeJob(JobRunnableFactory.java:44)
at io.camunda.zeebe.client.impl.worker.JobRunnableFactory.lambda$create$0(JobRunnableFactory.java:39)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
17:29:18.310 [pool-2-thread-1] WARN io.camunda.zeebe.client.job.worker - Worker csfservice failed to handle job with key 2251799824186822 of type io.camunda:csfservice-api:1, sending fail command to broker
java.lang.NullPointerException: null
at io.camunda.zeebe.gateway.protocol.GatewayOuterClass$FailJobRequest$Builder.setErrorMessage(GatewayOuterClass.java:21983)
at io.camunda.zeebe.client.impl.command.FailJobCommandImpl.errorMessage(FailJobCommandImpl.java:67)
at io.camunda.connector.runtime.util.outbound.ConnectorJobHandler.failJob(ConnectorJobHandler.java:128)
at io.camunda.connector.runtime.util.outbound.ConnectorJobHandler.handle(ConnectorJobHandler.java:94)
at io.camunda.zeebe.client.impl.worker.JobRunnableFactory.executeJob(JobRunnableFactory.java:44)
at io.camunda.zeebe.client.impl.worker.JobRunnableFactory.lambda$create$0(JobRunnableFactory.java:39)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
Found the issue. I’m not sure if it is a bug in the Camunda code, but it might be.
I wrapped my connector in a Zeebe client and without passing a SecretProvider explicitly, exception was thrown as no secret provider was found. I think If you don’t pass it, then it should be provided by default. Let me get into the details.
If I go for something like this then it works:
public void runWorker(ZeebeClient client) {
client.newWorker()
.jobType(CONFIG.jobType())
.handler(new ConnectorJobHandler(new MyFunction(), new SecretProvider() {
@Override
public String getSecret(String s) {
return "some secret";
}
}))
.name(CONFIG.workerName())
.open();
}