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

DEADLINE_EXCEEDED when using Cloud Pub/Sub library from Compute Engine #1430

Closed
codemoped opened this issue Nov 28, 2016 · 36 comments
Closed
Assignees
Labels
api: core api: logging Issues related to the Cloud Logging API. api: pubsub Issues related to the Pub/Sub API.

Comments

@codemoped
Copy link

When using the Cloud Pub/Sub library in a Java application that has been deployed in a Google Compute Engine instance, a DEADLINE_EXCEEDED exception occurs. The application resides in a Docker container within a Container Engine-managed Compute Engine instance. The Pub/Sub topic and the Compute Engine instance are in the same project.

The Compute Engine service account has project editor permissions.

No problems with the old google-api-services-pubsub library.

The code to create the instance looks like this:

InputStream credentialsStream = IOUtils.toInputStream(SERVICE_ACCOUNT_JSON, StandardCharsets.UTF_8);
Credentials credentials = ServiceAccountCredentials.fromStream(credentialsStream);
PubSubOptions options = PubSubOptions.newBuilder().setCredentials(credentials).build();
PubSub pubsub = options.getService();

Then doing something like this (or alternatively, create a topic):

for (Subscription subscription : pubsub.listSubscriptions().getValues()) {
...
}

results in the following:

com.google.cloud.pubsub.PubSubException: io.grpc.StatusRuntimeException: DEADLINE_EXCEEDED

Versions:

google-cloud-pubsub - v0.6.0
google-auth-library-oauth2-http - v0.6.0
google-auth-library-credentials - v0.6.0
google-* - v1.22.0

I also found this issue at Stackoverflow

@colintemple
Copy link

+1. I was the one who asked the question on Stack Overflow.

In my case, the following simple code caused DEADLINE_EXCEEDED errors when run on a Compute Engine instance within the same project as the Pub/Sub topic I wanted to publish to:

PubSub pubSub = PubSubOptions.getDefaultInstance().toBuilder()
        .build().getService();

String messageId = pubSub.publish(topic, message);

I could communicate with Pub/Sub using google-api-services-pubsub library, or via gcloud from the command line on the instance.

@garrettjonesgoogle
Copy link
Member

I intend on investigating but it will take a couple days due to other commitments.

@garrettjonesgoogle garrettjonesgoogle added type: bug Error or flaw in code with unintended results or allowing sub-optimal usage patterns. api: pubsub Issues related to the Pub/Sub API. labels Dec 1, 2016
@timkettering
Copy link

+1. Encountering this issue with any type of call made w/ the PubSub client.

@jonatanpettersson
Copy link

+1. We had to revert back to the API while waiting for a fix to this.

@BodySplash
Copy link

+1 I'm trying to find why in the mean time, even if I have no clue.

@garrettjonesgoogle
Copy link
Member

Investigating now.

@BodySplash
Copy link

So far, not good. I tought maybe I was polling pubsub a bit to aggressively, but It works like a charm on my machine. Maybe a network issue of some sort in the way k8n nodes are configured ? 

@qtxo
Copy link

qtxo commented Dec 15, 2016

I had the same DEADLINE_EXCEEDED problem (for any pubsub request) in my windows 7 laptop, in GCE the same application runs fine. I fixed my problem forcing the Netty version to the one expected by google-cloud 0.8.0 that is 4.1.3.Final.
Before the fix I was using the version 4.1.5.Final as a dependency of vertx-core-3.3.3.jar. (I hope vertx is not affected by this change, but at least I know what the problem is)

I can reproduce DEADLINE_EXCEEDED errors in google-cloud-examples forcing Netty version to 4.1.5.Final or 4.16.Final, look at the pom.xml

@BodySplash
Copy link

interesting, I have indeed a version conflict with netty. I'll try to fix my version to 4.1.3.

@BodySplash
Copy link

didn't seem to change anything on my side :(

@garrettjonesgoogle
Copy link
Member

I was able to make a successful call to Pub/Sub from a docker image on GCE. Could someone who is still having a problem give their pom.xml (or build.gradle as the case may be)?

@BodySplash
Copy link

Here you are. I tried de strip this files to the bare minimum.

@garrettjonesgoogle
Copy link
Member

@BodySplash , starting with your build.gradle for your common jar, I added a simple file to call pubsub plus a dependency on com.github.jengelman.gradle.plugins:shadow:1.2.4 to create a fat jar, and it worked in a docker image on GCE. Could you provide a minimal Dockerfile too? Maybe something is different there.

@BodySplash
Copy link

It is very simple for now, maybe the issue is in the way I use the new lib. Or maybe, since I cleaned up a little bit my build.gradles before posting them, it solved the issue.
`
FROM java:8-jre-alpine
maintainer Jean-Baptiste Dusseaut <>

ENV destination /app
COPY build/libs/gsoi-ufo-cards.jar ${destination}/app.jar
WORKDIR ${destination}
CMD ["java", "-jar", "app.jar"]
`

@timkettering
Copy link

@garrettjonesgoogle - i'm still encountering the DEADLINE blocker. could you share your test project so i can run it locally and see if its something w/ my setup, or a system-wide issue?

@garrettjonesgoogle
Copy link
Member

Here is my test project:

https://github.com/garrettjonesgoogle/gcloud-java/tree/deadline-exceeded-issue/google-cloud-example-docker-gradle

Notes:

  • You need to figure out auth yourself.
  • You can build and run it locally this way:
./gradlew jar shadowJar
java -cp build/libs/google-cloud-example-docker-gradle-all.jar com.google.cloud.pubsub.spi.v1.PublisherSmokeTest --project_id YOUR_PROJECT_HERE

@BodySplash
Copy link

BodySplash commented Jan 5, 2017

I looked at your sample project quickly. Is setting project-id mandatory or is it just for local testing ?

Anyway, I'll try to give it a try as soon as possible, thank you for sharing it.

@garrettjonesgoogle
Copy link
Member

PubSub needs to get a project somehow - either explicitly or implicitly (I think there are environmental sources for project). My sample code does it explicitly.

@BodySplash
Copy link

BodySplash commented Jan 5, 2017

Ok I was finally abled to make my service work. Here is the catch : I was using java:8-jre-alpine as my base image (I like my images to be small). Looking at your own dockerfile, I saw you were installing manually a java 8 jdk on an ubuntu, that was really the last significant difference with my own setup.

I can't really say where the problem come from though. Is it using a jre or using alpine ? And in any case why ? Alpine and K8S had their issues in the past.
I'll try to base my Docker image on java:8-jdk to see if it still works.

It would be a pitty not to be able to use a jre alpine as base image.

@jonatanpettersson
Copy link

We're also using jre-alpine, so guess there's a common denominator there.

@BodySplash
Copy link

I played a little bit with different base images, it's really a matter of alpine vs debian/ubuntu.
My service is running fine with 8-jre, not with any version of alpine.

@garrettjonesgoogle
Copy link
Member

I tried alpine myself and duplicated the issue. I turned on FINE logging and this showed up, which is the root cause of the DEADLINE_EXCEEDED error:

FINE: Unable to load the library: netty-tcnative-linux-x86_64.
java.lang.UnsatisfiedLinkError: /tmp/libnetty-tcnative-linux-x86_646695900156633723588.so: Error loading shared library libcrypt.so.1: No such file or directory (needed by /tmp/libnetty-tcnative-linux-x86_646695900156633723588.so)

@garrettjonesgoogle
Copy link
Member

Actually this is the more appropriate error:

Jan 06, 2017 10:07:36 PM io.netty.handler.ssl.OpenSsl <clinit>
FINE: Failed to load netty-tcnative; OpenSslEngine will be unavailable, unless the application has already loaded the symbols by some other means. See http://netty.io/wiki/forked-tomcat-native.html for more information.
java.lang.IllegalArgumentException: Failed to load any of the given libraries: [netty-tcnative-linux-x86_64, netty-tcnative-linux-x86_64-fedora, netty-tcnative]
...
Jan 06, 2017 10:07:36 PM io.netty.handler.ssl.OpenSsl <clinit>
FINE: Failed to initialize netty-tcnative; OpenSslEngine will be unavailable. See http://netty.io/wiki/forked-tomcat-native.html for more information.
java.lang.UnsatisfiedLinkError: org.apache.tomcat.jni.Library.version(I)I

@garrettjonesgoogle
Copy link
Member

I did some research, and it seems that there are missing C libraries in Alpine because Alpine attempts to be very minimal, so there are numerous cases of products that won't work on Alpine. The core issue I saw when trying it myself is that netty-tcnative needs glibc, but glibc is not available out of the box in Alpine.

I think this is outside the scope of google-cloud-java, and is up to each person who wants to use Alpine to figure out how to pull in all of the right dependencies to satisfy the linker issues.

@garrettjonesgoogle garrettjonesgoogle added api: logging Issues related to the Cloud Logging API. and removed blocking GA labels Jan 6, 2017
@BodySplash
Copy link

Hum interesting question. I tend to agree with you, but in the other hand alpine is becoming the de-facto standard as base image in the docker world. I guess at very least it should be clearly documented somewhere.
Thanks anyway for your support and the new lib. It has by far a much better developper experience than the previous one.

@garrettjonesgoogle garrettjonesgoogle added triaged for beta and removed type: bug Error or flaw in code with unintended results or allowing sub-optimal usage patterns. labels Feb 23, 2017
@vendettacoder
Copy link

+1

Faced the same issue running the google cloud api java client on ubuntu.
Apparently even the latest version of the google vision api : 0.9.4-beta needs netty-all 4.1.3.Final for its java client to work. So just force use this version in your existing project. Should work fine!

@ricardoneves93
Copy link

I am having this problem when running locally in my project.
I'm using google-cloud version 0.8.0.
I've tried the previous suggestions and nothing solved my problem. I'm still getting this exception:

java.util.concurrent.ExecutionException: com.google.cloud.pubsub.PubSubException: io.grpc.StatusRuntimeException: DEADLINE_EXCEEDED.

Does anyone have any similar problem?

@garrettjonesgoogle
Copy link
Member

@ricardoneves93 could you file a new issue? You might have a different root cause, and it would be easier to track it separately.

@kilaka
Copy link

kilaka commented Mar 30, 2017

Happening to me as well with google-cloud-speech v0.8.1-alpha and v0.8.0 on tomcat v8.5.8 on Ubuntu 16.04 64bit.

@vtvttech
Copy link

vtvttech commented Apr 6, 2017

While using in raspberry pi 3 model B with raspbian os grpc channel created and topic is also created but when trying to publish message DEADLINE_EXCEEDED Runtime exception occurs.
It is running fine in ubuntu 16.04 but its failed every time in raspberry pi.
Also google cloud speech api having same issue its running fine in ubuntu but failing in raspberry pi.

@olivierboucher
Copy link

Is there any update on this? With the popularity of Alpine, I have trouble believing support with simply be cut out

@garrettjonesgoogle
Copy link
Member

Note added in README about non-support of Alpine in #1430 .

@olivierboucher could you file a separate issue requesting support for Alpine? This particular issue has become a little messy.

@ayushj158
Copy link

We are facing similar issues on version ( <spring-cloud-gcp.version>1.0.0.M3</spring-cloud-gcp.version>) . Is there a fix already available for this is any of the version ?

github-actions bot pushed a commit that referenced this issue Aug 9, 2022
…14.1 (#1430)

[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [com.google.cloud:google-cloud-bigquery](https://togithub.com/googleapis/java-bigquery) | `2.13.4` -> `2.14.1` | [![age](https://badges.renovateapi.com/packages/maven/com.google.cloud:google-cloud-bigquery/2.14.1/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/maven/com.google.cloud:google-cloud-bigquery/2.14.1/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/maven/com.google.cloud:google-cloud-bigquery/2.14.1/compatibility-slim/2.13.4)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/maven/com.google.cloud:google-cloud-bigquery/2.14.1/confidence-slim/2.13.4)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>googleapis/java-bigquery</summary>

### [`v2.14.1`](https://togithub.com/googleapis/java-bigquery/blob/HEAD/CHANGELOG.md#&#8203;2141-httpsgithubcomgoogleapisjava-bigquerycomparev2140v2141-2022-07-27)

[Compare Source](https://togithub.com/googleapis/java-bigquery/compare/v2.14.0...v2.14.1)

##### Dependencies

-   update dependency org.junit.vintage:junit-vintage-engine to v5.9.0 ([#&#8203;2183](https://togithub.com/googleapis/java-bigquery/issues/2183)) ([f8325cf](https://togithub.com/googleapis/java-bigquery/commit/f8325cff22af3f087b23d6376ab96e78648efd00))

### [`v2.14.0`](https://togithub.com/googleapis/java-bigquery/blob/HEAD/CHANGELOG.md#&#8203;2140-httpsgithubcomgoogleapisjava-bigquerycomparev2138v2140-2022-07-22)

[Compare Source](https://togithub.com/googleapis/java-bigquery/compare/v2.13.8...v2.14.0)

##### Features

-   Add decimal target type ([#&#8203;2166](https://togithub.com/googleapis/java-bigquery/issues/2166)) ([ebbd8f5](https://togithub.com/googleapis/java-bigquery/commit/ebbd8f52853d3c0ca918a47d826474cc5825a58a))
-   **bigquery:** enable use of GEOGRAPHY query params ([#&#8203;2158](https://togithub.com/googleapis/java-bigquery/issues/2158)) ([b19ad76](https://togithub.com/googleapis/java-bigquery/commit/b19ad767a53a9bd5d14b4cb36716cbb1c7b44ed6))

##### Bug Fixes

-   Add query dryRun logic to get the schema when null schema is returned from the backend ([#&#8203;2106](https://togithub.com/googleapis/java-bigquery/issues/2106)) ([c98d22b](https://togithub.com/googleapis/java-bigquery/commit/c98d22b2b4f45e20d7d0666c5342cdbfadd30bde))
-   enable longpaths support for windows test ([#&#8203;1485](https://togithub.com/googleapis/java-bigquery/issues/1485)) ([#&#8203;2164](https://togithub.com/googleapis/java-bigquery/issues/2164)) ([e18b9f8](https://togithub.com/googleapis/java-bigquery/commit/e18b9f8b4d2f194577b1710ad64710fe0f3d88d9))
-   **java:** make field accessible to address Java 17 issue with arrow ([#&#8203;2165](https://togithub.com/googleapis/java-bigquery/issues/2165)) ([d605b81](https://togithub.com/googleapis/java-bigquery/commit/d605b8149954e79c05461630915b674e11793889))

##### Dependencies

-   update dependency org.graalvm.buildtools:junit-platform-native to v0.9.13 ([#&#8203;2160](https://togithub.com/googleapis/java-bigquery/issues/2160)) ([970135b](https://togithub.com/googleapis/java-bigquery/commit/970135bec33b831925476855da9a84c34311068d))
-   update dependency org.graalvm.buildtools:native-maven-plugin to v0.9.13 ([#&#8203;2161](https://togithub.com/googleapis/java-bigquery/issues/2161)) ([3507bf7](https://togithub.com/googleapis/java-bigquery/commit/3507bf7c9fc2aef299d06d9771cfcc06e3080b87))

### [`v2.13.8`](https://togithub.com/googleapis/java-bigquery/blob/HEAD/CHANGELOG.md#&#8203;2138-httpsgithubcomgoogleapisjava-bigquerycomparev2137v2138-2022-07-01)

[Compare Source](https://togithub.com/googleapis/java-bigquery/compare/v2.13.7...v2.13.8)

##### Dependencies

-   update dependency com.google.cloud:google-cloud-storage to v2.9.0 ([#&#8203;2149](https://togithub.com/googleapis/java-bigquery/issues/2149)) ([a07c714](https://togithub.com/googleapis/java-bigquery/commit/a07c714cb90c7ff62a43f7500abe8d54a5cd0936))

### [`v2.13.7`](https://togithub.com/googleapis/java-bigquery/blob/HEAD/CHANGELOG.md#&#8203;2137-httpsgithubcomgoogleapisjava-bigquerycomparev2136v2137-2022-06-29)

[Compare Source](https://togithub.com/googleapis/java-bigquery/compare/v2.13.6...v2.13.7)

##### Dependencies

-   update dependency com.google.cloud:google-cloud-datacatalog-bom to v1.8.4 ([#&#8203;2140](https://togithub.com/googleapis/java-bigquery/issues/2140)) ([c7ef597](https://togithub.com/googleapis/java-bigquery/commit/c7ef597832505e6c05adb38ac1db5dd15e32d024))

### [`v2.13.6`](https://togithub.com/googleapis/java-bigquery/blob/HEAD/CHANGELOG.md#&#8203;2136-httpsgithubcomgoogleapisjava-bigquerycomparev2135v2136-2022-06-24)

[Compare Source](https://togithub.com/googleapis/java-bigquery/compare/v2.13.5...v2.13.6)

##### Dependencies

-   update dependency com.google.apis:google-api-services-bigquery to v2-rev20220611-1.32.1 ([#&#8203;2132](https://togithub.com/googleapis/java-bigquery/issues/2132)) ([bddefcf](https://togithub.com/googleapis/java-bigquery/commit/bddefcf647d50ee12fffea80c04613b38b8d02d0))
-   update dependency com.google.cloud:google-cloud-datacatalog-bom to v1.8.3 ([#&#8203;2135](https://togithub.com/googleapis/java-bigquery/issues/2135)) ([0bd5ddc](https://togithub.com/googleapis/java-bigquery/commit/0bd5ddc0df0a978692252e50c37c94f41a3c4e1d))

### [`v2.13.5`](https://togithub.com/googleapis/java-bigquery/blob/HEAD/CHANGELOG.md#&#8203;2135-httpsgithubcomgoogleapisjava-bigquerycomparev2134v2135-2022-06-23)

[Compare Source](https://togithub.com/googleapis/java-bigquery/compare/v2.13.4...v2.13.5)

##### Dependencies

-   update dependency com.google.cloud:google-cloud-shared-dependencies to v2.13.0 ([#&#8203;2128](https://togithub.com/googleapis/java-bigquery/issues/2128)) ([3043533](https://togithub.com/googleapis/java-bigquery/commit/3043533608c5659be0313f1942d20314d2157fd4))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, click this checkbox.

---

This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/googleapis/java-bigquerydatatransfer).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzMi4xMzUuMSIsInVwZGF0ZWRJblZlciI6IjMyLjEzNS4xIn0=-->
github-actions bot pushed a commit that referenced this issue Aug 9, 2022
🤖 I have created a release *beep* *boop*
---


## [2.3.3](googleapis/java-bigquerydatatransfer@v2.3.2...v2.3.3) (2022-08-09)


### Dependencies

* update dependency com.google.cloud:google-cloud-bigquery to v2.14.1 ([#1430](googleapis/java-bigquerydatatransfer#1430)) ([befed25](googleapis/java-bigquerydatatransfer@befed25))
* update dependency com.google.cloud:google-cloud-bigquery to v2.14.2 ([#1433](googleapis/java-bigquerydatatransfer#1433)) ([30b6942](googleapis/java-bigquerydatatransfer@30b6942))
* update dependency com.google.cloud:google-cloud-bigquery to v2.14.3 ([#1434](googleapis/java-bigquerydatatransfer#1434)) ([5c054b0](googleapis/java-bigquerydatatransfer@5c054b0))
* update dependency com.google.cloud:google-cloud-pubsub to v1.120.10 ([#1432](googleapis/java-bigquerydatatransfer#1432)) ([4ab39e9](googleapis/java-bigquerydatatransfer@4ab39e9))
* update dependency com.google.cloud:google-cloud-pubsub to v1.120.8 ([#1428](googleapis/java-bigquerydatatransfer#1428)) ([ddab51f](googleapis/java-bigquerydatatransfer@ddab51f))
* update dependency com.google.cloud:google-cloud-pubsub to v1.120.9 ([#1431](googleapis/java-bigquerydatatransfer#1431)) ([f909343](googleapis/java-bigquerydatatransfer@f909343))
* update dependency com.google.cloud:google-cloud-shared-dependencies to v3 ([#1426](googleapis/java-bigquerydatatransfer#1426)) ([8a2c31e](googleapis/java-bigquerydatatransfer@8a2c31e))
* update dependency com.google.protobuf:protobuf-java-util to v3.21.3 ([#1423](googleapis/java-bigquerydatatransfer#1423)) ([50bc04e](googleapis/java-bigquerydatatransfer@50bc04e))
* update dependency com.google.protobuf:protobuf-java-util to v3.21.4 ([#1425](googleapis/java-bigquerydatatransfer#1425)) ([60d8c78](googleapis/java-bigquerydatatransfer@60d8c78))

---
This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api: core api: logging Issues related to the Cloud Logging API. api: pubsub Issues related to the Pub/Sub API.
Projects
None yet
Development

No branches or pull requests