Google datastore queries fail with ApiProxy$CallNotFoundException

81 Views Asked by At

I have converted a web application from Java 8 to Java 17 on App Engine. It uses Jakarta servlets and is packaged as a fat jar.

Everything works on Java 8, but with Java 17 I get this error deep down in Google code whenever I try to access the datastore. We are not doing any threading ourselves. The previous line is a very simple Datastore.get():

com.google.apphosting.api.ApiProxy$CallNotFoundException: Can't make API call datastore_v3.Get in a thread that is neither the original request thread nor a thread created by ThreadManager
        at com.google.apphosting.api.ApiProxy$CallNotFoundException.foreignThread(ApiProxy.java:855)
        at com.google.apphosting.api.ApiProxy$1.get(ApiProxy.java:183)
        at com.google.apphosting.api.ApiProxy$1.get(ApiProxy.java:180)
        at com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:107)
        at com.google.appengine.api.datastore.AsyncDatastoreServiceImpl$5.getFutureWithOptionalTimeout(AsyncDatastoreServiceImpl.java:361)
        at com.google.appengine.api.datastore.AsyncDatastoreServiceImpl$5.aggregate(AsyncDatastoreServiceImpl.java:330)
        at com.google.appengine.api.datastore.AsyncDatastoreServiceImpl$5.get(AsyncDatastoreServiceImpl.java:291)
        at com.google.appengine.api.datastore.AsyncDatastoreServiceImpl$5.get(AsyncDatastoreServiceImpl.java:280)
        at com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:107)
        at com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:107)
        at com.google.appengine.api.datastore.FutureHelper.getInternal(FutureHelper.java:83)
        at com.google.appengine.api.datastore.FutureHelper.quietGet(FutureHelper.java:70)
        at com.google.appengine.api.datastore.DatastoreServiceImpl.get(DatastoreServiceImpl.java:55)

Where should I start? Google did not return anything that I could relate to what we are doing.

My Tomcat and App Engine dependencies:

    <maven.compiler.source>17</maven.compiler.source>
    <maven.compiler.target>17</maven.compiler.target>

    <maven.clean.plugin.version>3.3.1</maven.clean.plugin.version>
    <maven.compiler.plugin.version>3.11.0</maven.compiler.plugin.version>
    <maven.dependency.plugin.version>3.6.0</maven.dependency.plugin.version>
    <maven.deploy.plugin.version>3.1.1</maven.deploy.plugin.version>
    <maven.enforcer.plugin.version>3.4.0</maven.enforcer.plugin.version>
    <maven.install.plugin.version>3.1.1</maven.install.plugin.version>
    <maven.shade.plugin.version>3.5.1</maven.shade.plugin.version>
    <maven.jar.plugin.version>3.3.0</maven.jar.plugin.version>
    <maven.war.plugin.version>3.4.0</maven.war.plugin.version>
    <maven.javadoc.plugin.version>3.5.0</maven.javadoc.plugin.version>
    <maven.resources.plugin.version>3.3.1</maven.resources.plugin.version>
    <maven.source.plugin.version>3.3.0</maven.source.plugin.version>
    <maven.surefire.plugin.version>3.1.2</maven.surefire.plugin.version>
    <exec.plugin.version>3.1.1</exec.plugin.version>
    <license.plugin.version>4.2</license.plugin.version>

    <jetty.version>11.0.15</jetty.version>
    <tomcat.version>10.1.18</tomcat.version>
   <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-core</artifactId>
        <version>${tomcat.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <version>${tomcat.version}</version>
    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>google-cloud-storage</artifactId>
      <version>2.31.0</version>
    </dependency>
    <dependency>
        <groupId>com.google.appengine.tools</groupId>
        <artifactId>appengine-gcs-client</artifactId>
        <version>0.8.3</version>
    </dependency>
    <dependency>
    <groupId>com.google.cloud</groupId>
        <artifactId>google-cloud-datastore</artifactId>
        <version>2.17.3</version>
    </dependency>
0

There are 0 best solutions below