actions-on-google / actions-on-google-java

Java/Kotlin library for Actions on Google
Apache License 2.0
286 stars 39 forks source link

Regarding the 'NOT_FOUND: Requested Entity was not Found' error log #55

Open Beginner-hww opened 4 years ago

Beginner-hww commented 4 years ago

In my application, the device state change was reported to Google, and the program was working most of the time, but there were a few users whose devices reported their status and would throw [NOT_FOUND: Requested Entity was not found]. According to the error message, as if the device was not found (I'm not sure) ? Since I didn't receive a request from Google to unbind, I reported the device status as usual. And these devices can execute Query and Control instructions correctly.

What was the cause of the error? How do I fix it?

Caused by: io.grpc.StatusRuntimeException: NOT_FOUND: Requested entity was not found.
    at io.grpc.stub.ClientCalls.toStatusRuntimeException(ClientCalls.java:233) ~[grpc-stub-1.15.1.jar:1.15.1]
    at io.grpc.stub.ClientCalls.getUnchecked(ClientCalls.java:214) ~[grpc-stub-1.15.1.jar:1.15.1]
    at io.grpc.stub.ClientCalls.blockingUnaryCall$original$uyr4MtQf(ClientCalls.java:139) ~[grpc-stub-1.15.1.jar:1.15.1]
    at io.grpc.stub.ClientCalls.blockingUnaryCall$original$uyr4MtQf$accessor$XhDmMxbU(ClientCalls.java) ~[grpc-stub-1.15.1.jar:1.15.1]
    at io.grpc.stub.ClientCalls$auxiliary$TBZXSM5e.call(Unknown Source) ~[grpc-stub-1.15.1.jar:1.15.1]
    at org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.StaticMethodsInter.intercept(StaticMethodsInter.java:86) ~[skywalking-agent.jar:6.3.0]
    at io.grpc.stub.ClientCalls.blockingUnaryCall(ClientCalls.java) ~[grpc-stub-1.15.1.jar:1.15.1]
    at com.google.home.graph.v1.HomeGraphApiServiceGrpc$HomeGraphApiServiceBlockingStub.reportStateAndNotification(HomeGraphApiServiceGrpc.java:425) ~[actions-on-google-1.8.0.jar:?]

I used the method SmartHomeApp.reportState in actions-on-google-1.5.0.jar to reported the status.

   /**
     * <pre>
     * Reports device state and optionally sends device notifications. Called by
     * an agent when the device state of a third-party changes or the agent wants
     * to send a notification about the device.
     * This method updates a predefined set of States for a device, which all
     * devices have (for example a light will have OnOff, Color, Brightness).
     * A new State may not be created and an INVALID_ARGUMENT code will be thrown
     * if so. It also optionally takes in a list of Notifications that may be
     * created, which are associated to this State change.
     * Third-party user's identity is passed in as agent_user_id.
     * Agent is identified by the JWT signed by the partner's service account.
     * </pre>
     */
    public com.google.home.graph.v1.HomeGraphApiServiceProto.ReportStateAndNotificationResponse reportStateAndNotification(com.google.home.graph.v1.HomeGraphApiServiceProto.ReportStateAndNotificationRequest request) {
      return blockingUnaryCall(
          getChannel(), METHOD_REPORT_STATE_AND_NOTIFICATION, getCallOptions(), request);
    }