Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Vision API broken: Google App Engine does not support Runtime.addShutdownHook #1800

Closed
ramramanathan1 opened this issue Mar 23, 2017 · 1 comment
Assignees
Labels
api: vision Issues related to the Cloud Vision API. running on app engine

Comments

@ramramanathan1
Copy link

@apimethod(name = "analyzeImage")
public Message analyzeImage(@nAmed("imgURL") String imgURL) {
try {
GoogleCredential credential = GoogleCredential.getApplicationDefault();

         ImageAnnotatorClient vision = ImageAnnotatorClient.create();

     // Performs label detection on the image file
        BatchAnnotateImagesResponse response = vision.batchAnnotateImages(requests);
        List<AnnotateImageResponse> responses = response.getResponsesList();

        for (AnnotateImageResponse res : responses) {
          if (res.hasError()) {
            System.out.printf("Error: %s\n", res.getError().getMessage());
            return new Message("Something broke");
          }

          for (EntityAnnotation annotation : res.getLabelAnnotationsList()) {
            Map<FieldDescriptor, Object> m = annotation.getAllFields();
            Set<FieldDescriptor> s = m.keySet();
            for(FieldDescriptor key : s){
                System.out.printf("%s : %s\n", key, m.get(key).toString());
            }
          }
        }
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return new Message("Hello:" + imgURL);
  } 

However, the line

ImageAnnotatorClient vision = ImageAnnotatorClient.create();

ends up throwing:
java.lang.SecurityException: Google App Engine does not support Runtime.addShutdownHook
at com.google.appengine.runtime.Request.process-75407a6647252b61(Request.java)
at java.lang.Runtime.addShutdownHook(Runtime.java:45)
at com.google.common.util.concurrent.MoreExecutors$Application.addShutdownHook(MoreExecutors.java:232)
at com.google.common.util.concurrent.MoreExecutors$Application.addDelayedShutdownHook(MoreExecutors.java:204)
at com.google.common.util.concurrent.MoreExecutors$Application.getExitingScheduledExecutorService(MoreExecutors.java:196)
at com.google.common.util.concurrent.MoreExecutors$Application.getExitingScheduledExecutorService(MoreExecutors.java:228)
at com.google.common.util.concurrent.MoreExecutors.getExitingScheduledExecutorService(MoreExecutors.java:176)
at com.google.api.gax.grpc.InstantiatingExecutorProvider.getExecutor(InstantiatingExecutorProvider.java:51)
at com.google.api.gax.grpc.ChannelAndExecutor.create(ChannelAndExecutor.java:62)
at com.google.api.gax.grpc.ClientSettings.getChannelAndExecutor(ClientSettings.java:81)
at com.google.cloud.vision.spi.v1.ImageAnnotatorClient.(ImageAnnotatorClient.java:120)
at com.google.cloud.vision.spi.v1.ImageAnnotatorClient.create(ImageAnnotatorClient.java:111)
at com.google.cloud.vision.spi.v1.ImageAnnotatorClient.create(ImageAnnotatorClient.java:102)
at photography.viks.ig.api.InstaSmartSvc.analyzeImage(InstaSmartSvc.java:93)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:42)
at com.google.api.server.spi.SystemService.invokeServiceMethod(SystemService.java:351)
at com.google.api.server.spi.handlers.EndpointsMethodHandler$RestHandler.handle(EndpointsMethodHandler.java:114)
at com.google.api.server.spi.handlers.EndpointsMethodHandler$RestHandler.handle(EndpointsMethodHandler.java:102)
at com.google.api.server.spi.dispatcher.PathDispatcher.dispatch(PathDispatcher.java:49)
at com.google.api.server.spi.EndpointsServlet.service(EndpointsServlet.java:71)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
at com.google.api.control.ControlFilter.doFilter(ControlFilter.java:220)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.api.control.ConfigFilter.doFilter(ConfigFilter.java:120)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)

@garrettjonesgoogle garrettjonesgoogle added running on app engine api: vision Issues related to the Cloud Vision API. labels Mar 23, 2017
@garrettjonesgoogle
Copy link
Member

Development since this issue was filed: Java 8 on App Engine Standard will support gRPC, so Vision should work in that environment. Unfortunately, it won't work on Java 7 and there are no plans to support that. The work to get open issues fixed for Java 8 on App Engine Standard is being tracked in #1918 . I am going to close out the present issue - follow along in #1918 for progress.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api: vision Issues related to the Cloud Vision API. running on app engine
Projects
None yet
Development

No branches or pull requests

2 participants