Skip to content

google-cloud makes endpoints-framework wont work #1267

Closed

Description

@pauloleitemoreira

When we put the google-cloud dependency in last endpoints framework sample, you can deploy everythink normally, but when try to request endpoins, it return an error.

To reproduce this error:

1. Clone this sample from github:
https://github.com/GoogleCloudPlatform/java-docs-samples/tree/master/appengine/endpoints-frameworks-v2/backend

2. Add Google Cloud Dependency:

    <dependency>
        <groupId>com.google.cloud</groupId>
        <artifactId>google-cloud</artifactId>
        <version>0.3.0</version>
    </dependency>

3. Deploy in google cloud

4. Test request

curl -H "Content-Type: application/json" -X POST -d "{\"message\":\"echo\"}" https://{service-subdomain}.appspot.com/_ah/api/echo/v1/echo

5. Wait reponse from echo request, and you got it:

    <HTML>
    <HEAD>
    <TITLE>Internal Server Error</TITLE>
    </HEAD>
    <BODY BGCOLOR="#FFFFFF" TEXT="#000000">
    <H1>Internal Server Error</H1>
    <H2>Error 500</H2>
    </BODY>
    </HTML>

Console report error:

java.lang.NoClassDefFoundError: com/google/protobuf/AbstractMessage$BuilderParent
at com.google.api.servicecontrol.v1.ReportRequest.toBuilder (ReportRequest.java:369)
at com.google.api.servicecontrol.v1.ReportRequest.newBuilder (ReportRequest.java:363)
at com.google.api.control.aggregator.ReportRequestAggregator.generatedFlushRequests (ReportRequestAggregator.java:212)
at com.google.api.control.aggregator.ReportRequestAggregator.flush (ReportRequestAggregator.java:166)
at com.google.api.control.Client.flushAndScheduleReports (Client.java:335)
at com.google.api.control.Client.initializeFlushing (Client.java:270)
at com.google.api.control.Client.start (Client.java:127)
at com.google.api.control.ControlFilter.init (ControlFilter.java:118)
at org.mortbay.jetty.servlet.FilterHolder.doStart (FilterHolder.java:97)
at org.mortbay.component.AbstractLifeCycle.start (AbstractLifeCycle.java:50)
at org.mortbay.jetty.servlet.ServletHandler.initialize (ServletHandler.java:662)
at org.mortbay.jetty.servlet.Context.startContext (Context.java:140)
at org.mortbay.jetty.webapp.WebAppContext.startContext (WebAppContext.java:1250)
at org.mortbay.jetty.handler.ContextHandler.doStart (ContextHandler.java:517)
at org.mortbay.jetty.webapp.WebAppContext.doStart (WebAppContext.java:467)
at org.mortbay.component.AbstractLifeCycle.start (AbstractLifeCycle.java:50)
at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.createHandler (AppVersionHandlerMap.java:206)
at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.getHandler (AppVersionHandlerMap.java:179)
at com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest (JettyServletEngineAdapter.java:136)
at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run (JavaRuntime.java:504)
at com.google.tracing.TraceContext$TraceContextRunnable.runInContext (TraceContext.java:446)
at com.google.tracing.TraceContext$TraceContextRunnable$1.run (TraceContext.java:453)
at com.google.tracing.CurrentContext.runInContext (CurrentContext.java:276)
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref (TraceContext.java:312)
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext (TraceContext.java:304)
at com.google.tracing.TraceContext$TraceContextRunnable.run (TraceContext.java:450)
at com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run (ThreadGroupPool.java:235)
at java.lang.Thread.run (Thread.java:745)

Activity

  1. pauloleitemoreira commented on Sep 17, 2016

    @pauloleitemoreira
    Author

    Ofcourse when you take out the google-cloud dependency, everythink works well.

  2. mziccard commented on Sep 17, 2016

    @mziccard
    Contributor

    Hi @pauloleitemoreira, thanks for the report. This is kind of a duplicate of #1239 (you might want to have a look there).

    I had a look at your dependency tree:com.google.endpoints:endpoints-management-control-appengine pulls down com.google.protobuf:protobuf-java:jar:3.0.0 as a dependency, while google-cloud still requires com.google.protobuf:protobuf-java:jar:3.0.0-beta-3.

    com.google.protobuf:protobuf-java:jar:3.0.0-beta-3 is closer to the root of your dependency tree and is being used, thus causing the error. Unfortunately, forcing com.google.protobuf:protobuf-java:jar:3.0.0 to be used will cause google-cloud to fail, since breaking changes were introduced in protobuf-java between 3.0.0-beta-3 and 3.0.0.

    Our VeneerToolkit layer still uses 3.0.0-beta-3 but this should be updated very soon. If you feel this answer makes sense consider closing this issue and subscribing to #1239 where I'll keep everybody posted.

  3. pauloleitemoreira commented on Sep 29, 2016

    @pauloleitemoreira
    Author

    fixed in google-cloud 0.4.0 by #1239

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions