0

After deploying my Google Endpoints API I get the error below even if I hit just the server url / or /_ah/warmup

Uncaught exception from servlet
java.lang.NoSuchMethodError: com.google.api.Service.hasQuota()Z
    at com.google.api.control.model.MethodRegistry.extractQuota(MethodRegistry.java:290)
    at com.google.api.control.model.MethodRegistry.<init>(MethodRegistry.java:72)
    at com.google.api.control.ConfigFilter.init(ConfigFilter.java:89)

The crazy thing is that this happens intermittently. Sometimes the deploy just works, but most times it fails.

This used to work fine as is until March 1st, so I rolled back the gcloud components version as well, but still get the same error.

Tried upgrading to the latest version if the appengine and endpoints libaries, but still get the error below.

EDIT-1

Here is the build.gradle for reference

buildscript {
    repositories {
        mavenCentral()
        jcenter()
    }
    dependencies {
        // App Engine Gradle plugin
        classpath 'com.google.cloud.tools:appengine-gradle-plugin:2.4.1'

        // Endpoints Frameworks Gradle plugin
        classpath 'com.google.cloud.tools:endpoints-framework-gradle-plugin:2.1.0'
    }
}

// Dev
def projectIdValue = 'dev-sample-api'

repositories {
    mavenCentral()
    jcenter()
}

apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'com.google.cloud.tools.appengine'
apply plugin: 'com.google.cloud.tools.endpoints-framework-server'

sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8

sourceSets {
    main {
        java {
            srcDirs 'src/main/java'
        }
    }
}

dependencies {
    // App Engine API
    implementation group: 'com.google.appengine', name: 'appengine-api-1.0-sdk', version: '1.9.86'

    // Endpoints Frameworks v2.0
    implementation ('com.google.endpoints:endpoints-framework:2.2.2') {
        exclude group: 'org.slf4j', module: 'slf4j-nop'
    }
    implementation group: 'com.google.endpoints', name: 'endpoints-management-control-appengine', version: '1.0.14'
    implementation group: 'com.google.endpoints', name: 'endpoints-framework-auth', version: '1.0.14'
    implementation group: 'com.google.protobuf', name: 'protobuf-java-util', version: '3.15.6'
    implementation group: 'io.grpc', name: 'grpc-stub', version: '1.36.0'
    implementation group: 'io.grpc', name: 'grpc-protobuf', version: '1.36.0'


    // App Engine and Endpoint dependencies
    compileOnly 'javax.servlet:javax.servlet-api:3.1.0'
    implementation 'jstl:jstl:1.2'
    implementation group: 'javax.inject', name: 'javax.inject', version: '1'

    // Logging
    implementation 'org.slf4j:slf4j-api:1.7.30'
    implementation 'org.slf4j:slf4j-jdk14:1.7.30'

    // Objectify for data storage and access
    implementation 'com.googlecode.objectify:objectify:5.1.9'

    // Common Utils and Libraries
    implementation 'com.google.guava:guava:20.0'
    implementation 'commons-validator:commons-validator:1.6'
    implementation 'joda-time:joda-time:2.10.8'
    implementation group: 'com.darwinsys', name: 'hirondelle-date4j', version: '1.5.1'
}

endpointsServer {
    // Endpoints Framework Plugin server-side configuration
    hostname = "${projectIdValue}.appspot.com"
}


// this replaces the ${endpoints.project.id} in appengine-web.xml and web.xml
task replaceProjectId(type: Copy) {
    from 'src/main/webapp/WEB-INF/'
    include '*.xml'
    into "build/exploded-${archivesBaseName}/WEB-INF"
    expand(endpoints:[project:[id:projectIdValue]])
    filteringCharset = 'UTF-8'
}
assemble.dependsOn replaceProjectId

appengine {
    deploy {   // deploy configuration
        version = "GCLOUD_CONFIG"
        projectId = "GCLOUD_CONFIG"

        def promoteProp = findProperty("appengine.deploy.promote")
        if (promoteProp != null) {
            promote = new Boolean(promoteProp)
        }
    }
    run {
        host = "0.0.0.0"
        port = 8080
    }
}

abhideep
  • 125
  • 6
  • Could you share the code that is generating this? Also, it would be helpful if you shared your `pom.xml` dependencies. – Ralemos Mar 23 '21 at 12:38
  • 1
    @RafaelLemos Added the buid.gradle for reference. For some reason I can no longer replicate the problem, even though I have not changed any code. The only thing that has changed was ```gcloud components``` update this morning I do use a customer JwtClaimsAuthenticator that just delegates to an EspAuthenticator but that hasn't changed either. Will close this if I am unable to replicate the problem. – abhideep Mar 24 '21 at 06:27
  • hmm, maybe this was a problem with an older version of some component then. You can create and answer saying that and accept it, this will indicate to the community that the the issue is fixed. – Ralemos Mar 24 '21 at 15:48

2 Answers2

1

Closing this based on suggestion by @RafaelLemos.

"Maybe this was a problem with an older version of some component"

Not reproducible. Probable fix

gcloud components update
abhideep
  • 125
  • 6
1

Just for the records - correct command line would be:

gcloud components update
Eric Aya
  • 69,473
  • 35
  • 181
  • 253
H. Evers
  • 78
  • 7