Jesse Sightler created CAMEL-19783:
--------------------------------------

             Summary: grpc will not resubscribe on connection failure if no 
messages have been received
                 Key: CAMEL-19783
                 URL: https://issues.apache.org/jira/browse/CAMEL-19783
             Project: Camel
          Issue Type: Bug
          Components: camel-salesforce
    Affects Versions: 4.0.0
            Reporter: Jesse Sightler


Relevant log:

{code}

: io.grpc.StatusRuntimeException: UNAUTHENTICATED: An authentication exception 
occurred. Provide valid authentication via metadata headers. rpcId: 
d493e4d9-9ac9-4723-a9d9-9179e4d58067
        at io.grpc.Status.asRuntimeException(Status.java:539)
        at 
io.grpc.stub.ClientCalls$StreamObserverToCallListenerAdapter.onClose(ClientCalls.java:491)
        at 
io.grpc.internal.DelayedClientCall$DelayedListener$3.run(DelayedClientCall.java:489)
        at 
io.grpc.internal.DelayedClientCall$DelayedListener.delayOrExecute(DelayedClientCall.java:453)
        at 
io.grpc.internal.DelayedClientCall$DelayedListener.onClose(DelayedClientCall.java:486)
        at 
io.grpc.internal.ClientCallImpl.closeObserver(ClientCallImpl.java:567)
        at io.grpc.internal.ClientCallImpl.access$300(ClientCallImpl.java:71)
        at 
io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInternal(ClientCallImpl.java:735)
        at 
io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInContext(ClientCallImpl.java:716)
        at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37)
        at 
io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:133)
        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)
2023-08-23T09:01:12.618+0000 ERROR 1 --- [grpc-default-executor-1] 
org.apache.camel.component.salesforce.in : camel-breadcrumb-id="" request-id="" 
Trailers:
2023-08-23T09:01:12.618+0000 ERROR 1 --- [grpc-default-executor-1] 
org.apache.camel.component.salesforce.in : camel-breadcrumb-id="" request-id="" 
Trailer: date, Value: Wed, 23 Aug 2023 09:01:12 GMT
2023-08-23T09:01:12.618+0000 ERROR 1 --- [grpc-default-executor-1] 
org.apache.camel.component.salesforce.in : camel-breadcrumb-id="" request-id="" 
Trailer: content-type, Value: application/grpc
2023-08-23T09:01:12.618+0000 ERROR 1 --- [grpc-default-executor-1] 
org.apache.camel.component.salesforce.in : camel-breadcrumb-id="" request-id="" 
Trailer: rpc-id, Value: d493e4d9-9ac9-4723-a9d9-9179e4d58067
2023-08-23T09:01:12.618+0000 ERROR 1 --- [grpc-default-executor-1] 
org.apache.camel.component.salesforce.in : camel-breadcrumb-id="" request-id="" 
Trailer: error-code, Value: sfdc.platform.eventbus.grpc.service.auth.error
2023-08-23T09:01:12.619+0000 ERROR 1 --- [grpc-default-executor-1] 
org.apache.camel.component.salesforce.in : camel-breadcrumb-id="" request-id="" 
Trailer: type, Value: Subscribe
2023-08-23T09:01:12.619+0000 ERROR 1 --- [grpc-default-executor-1] 
org.apache.camel.component.salesforce.in : camel-breadcrumb-id="" request-id="" 
attempting login
2023-08-23T09:01:12.986+0000  INFO 1 --- [main-EventThread] 
org.apache.camel.component.salesforce.in : camel-breadcrumb-id="" request-id="" 
Login successful
2023-08-23T09:01:12.986+0000  INFO 1 --- [main-EventThread] 
com.redhat.sfdc.tools.outboundmessaging. : camel-breadcrumb-id="" request-id="" 
Forced login complete.
2023-08-23T09:01:12.986+0000  WARN 1 --- [grpc-default-executor-1] 
org.apache.camel.component.salesforce.in : camel-breadcrumb-id="" request-id="" 
Not re-subscribing after error because replayId is null. Topic: 
/event/IE_Outbound__e
{code}

The text "Not re-subscribing after error because replayId is null" is printed 
by the private class FetchResponseObserver. The replayId is also private and 
appears to only be set by the class itself when it receives a message. It is 
not set based upon the initialReplayId and it also will not make reasonable 
assumptions if there was no initialReplayId (eg, started with LATEST).

As a result, it is extremely easy for this consumer to end up in a state with 
few obvious error messages, but no messages being consumed.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to