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

pubsub: ResourceExhausted is considered 'retryable' #793

Closed
sthomp opened this issue Oct 19, 2017 · 3 comments
Closed

pubsub: ResourceExhausted is considered 'retryable' #793

sthomp opened this issue Oct 19, 2017 · 3 comments
Assignees
Labels
api: pubsub Issues related to the Pub/Sub API. type: question Request for information or clarification. Not an issue.

Comments

@sthomp
Copy link

sthomp commented Oct 19, 2017

Hello,

We recently upgrade our gcloud library to use the new streaming pubsub client. We've had a few encounters where the client appears to be idle even with a large number of Undelivered messages showing in stackdriver. After some investigation it appears the root cause is a resource limit:

rpc error: code = ResourceExhausted desc = Your project has exceeded a limit: (type="StreamingPull connections", current=1010, maximum=1000).

We've already reached out for a limit increase but I wanted to make sure from the client perspective that this error should be considered 'retryable'.

func isRetryable(err error) bool {
	s, ok := status.FromError(err)
	if !ok { // includes io.EOF, normal stream close, which causes us to reopen
		return true
	}
	switch s.Code() {
	case codes.DeadlineExceeded, codes.Internal, codes.Canceled, codes.ResourceExhausted:
		return true
	case codes.Unavailable:
		return !strings.Contains(s.Message(), "Server shutdownNow invoked")
	default:
		return false
	}
}

Or perhaps this error should be logged to make it apparent?

@jba jba added api: pubsub Issues related to the Pub/Sub API. type: question Request for information or clarification. Not an issue. labels Oct 19, 2017
@jba
Copy link
Contributor

jba commented Oct 19, 2017

It is indeed retryable, as the code you pasted demonstrates.

I suggest adding a log line to your local copy. We're hesitant to add logging to these clients to avoid spam. Something like this would probably be better surfaced on a metrics dashboard anyway.

@sthomp
Copy link
Author

sthomp commented Oct 19, 2017

Ok will do. It wasn't apparent at first that this is a resource we need to monitor which is what caused problems for us initially. Also, I think we had some misunderstanding about what NumGoRoutines is as each of those go routines seems to take a connection.

@sthomp sthomp closed this as completed Oct 19, 2017
@jba
Copy link
Contributor

jba commented Oct 19, 2017

Yes, each goroutine creates a new stream. If you don't need the throughput, stick to NumGoroutines = 1 and use MaxOutstandingMessages/Bytes to adjust your throughput.

gcf-owl-bot bot added a commit that referenced this issue Apr 6, 2023
Source-Link: googleapis/googleapis@f9702dc

Source-Link: googleapis/googleapis-gen@2d6c055
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiMmQ2YzA1NWYwMTY0NmMxNjM5MTAwZDk5MjJiMjdhOTg5MGJmMmM2NiJ9
gcf-owl-bot bot added a commit that referenced this issue Apr 10, 2023
feat: support per-entity search and autocomplete
feat: support new filter syntax for recommendation
feat: expose A/B experiment info in search response
docs: keep the API doc up-to-date with recent changes

PiperOrigin-RevId: 522675951

Source-Link: googleapis/googleapis@f149e91

Source-Link: googleapis/googleapis-gen@c4538a8
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiYzQ1MzhhODg4ZDJlYzEzY2U3MTljMWExYWE5ZGM3ZGU1YjE3Mzc1YSJ9

feat: support per-entity search and autocomplete
feat: add model get API
feat: support new filter syntax for recommendation
feat: expose A/B experiment info in search response
docs: keep the API doc up-to-date with recent changes

PiperOrigin-RevId: 522675546

Source-Link: googleapis/googleapis@81b0808

Source-Link: googleapis/googleapis-gen@e950439
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiZTk1MDQzOWNkMGQ0ODZhYjhkMmIzMjY3MmI1NGMwYTZiNjQ1MTQyMCJ9

feat: Add support for updating additional pod IPv4 ranges for Standard and Autopilot clusters

Users can append more pod ranges by name to an existing cluster at the cluster level. When users or Node Auto-provisioning create new node pools, GKE will select the most available pod range and assign it to the node pool. These pod ranges can be removed once no node pool is using it.

PiperOrigin-RevId: 522620935

Source-Link: googleapis/googleapis@2ddfcb8

Source-Link: googleapis/googleapis-gen@8c7eccd
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiOGM3ZWNjZDA5N2I3OTg5ZDcyY2FlOTU1ZmFmNWVkOGUzZmRjYmM3NSJ9

chore: disable Go compute targets (#794)

Source-Link: googleapis/googleapis@cc293c6

Source-Link: googleapis/googleapis-gen@6bb5382
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiNmJiNTM4MmFiM2NkMzIyY2MxMjI4ZWI1ODdhZGI1ZTEyMzVjNWJkMyJ9

fix: add diregapic flag for compute (#793)

Source-Link: googleapis/googleapis@f9702dc

Source-Link: googleapis/googleapis-gen@2d6c055
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiMmQ2YzA1NWYwMTY0NmMxNjM5MTAwZDk5MjJiMjdhOTg5MGJmMmM2NiJ9

chore: add Go build targets for compute (#792)

Note: manually updated proto file, but it yields the same result of the new disco-converter would generate.

Fixes: #7345
Source-Link: googleapis/googleapis@59828ba

Source-Link: googleapis/googleapis-gen@2649582
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiMjY0OTU4MjU3YzUzNTJkYjBiYzkxMGMwMGYxNDdiODIxYjAxMDYzNiJ9

chore: update gapic-generator-go version to 0.35.4
chore: add snippets to BUILD.bazel go_gapic_assembly_pkg

PiperOrigin-RevId: 522373543

Source-Link: googleapis/googleapis@130f097

Source-Link: googleapis/googleapis-gen@7d1457a
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiN2QxNDU3YWJlYzJmMGQyMDVmZGE2NzNhNGU2NTA4YjQxZGMxZTYzMSJ9

feat: Launch UploadConversation endpoint

PiperOrigin-RevId: 522129764

Source-Link: googleapis/googleapis@dabc235

Source-Link: googleapis/googleapis-gen@5609ad0
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiNTYwOWFkMDg4Y2NmMTVhMWMyMmRmN2FhZWIzMTMzZmJlYTU2Nzk5ZSJ9

feat: add support for disabling pod IP cidr overprovision

This feature requires special allowlisting for the projects.

PiperOrigin-RevId: 522103451

Source-Link: googleapis/googleapis@013b597

Source-Link: googleapis/googleapis-gen@2fe6962
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiMmZlNjk2MmY5YzhlNzcwMzk2ZGNmYzg4ZTEwNGU1ZDcxM2MyZTY2ZSJ9

feat: added ignore_dependent_resources to DeleteCaPoolRequest, DeleteCertificateAuthorityRequest, DisableCertificateAuthorityRequest

PiperOrigin-RevId: 522096199

Source-Link: googleapis/googleapis@d9592ed

Source-Link: googleapis/googleapis-gen@0ab428e
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiMGFiNDI4ZTM5MzQ5ODFkYjljOGM3YmYxN2IxZmVhNWQ3NDY4MmFmYiJ9
gcf-owl-bot bot added a commit that referenced this issue Apr 10, 2023
feat: support per-entity search and autocomplete
feat: support new filter syntax for recommendation
feat: expose A/B experiment info in search response
docs: keep the API doc up-to-date with recent changes

PiperOrigin-RevId: 522675951

Source-Link: googleapis/googleapis@f149e91

Source-Link: googleapis/googleapis-gen@c4538a8
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiYzQ1MzhhODg4ZDJlYzEzY2U3MTljMWExYWE5ZGM3ZGU1YjE3Mzc1YSJ9

feat: support per-entity search and autocomplete
feat: add model get API
feat: support new filter syntax for recommendation
feat: expose A/B experiment info in search response
docs: keep the API doc up-to-date with recent changes

PiperOrigin-RevId: 522675546

Source-Link: googleapis/googleapis@81b0808

Source-Link: googleapis/googleapis-gen@e950439
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiZTk1MDQzOWNkMGQ0ODZhYjhkMmIzMjY3MmI1NGMwYTZiNjQ1MTQyMCJ9

feat: Add support for updating additional pod IPv4 ranges for Standard and Autopilot clusters

Users can append more pod ranges by name to an existing cluster at the cluster level. When users or Node Auto-provisioning create new node pools, GKE will select the most available pod range and assign it to the node pool. These pod ranges can be removed once no node pool is using it.

PiperOrigin-RevId: 522620935

Source-Link: googleapis/googleapis@2ddfcb8

Source-Link: googleapis/googleapis-gen@8c7eccd
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiOGM3ZWNjZDA5N2I3OTg5ZDcyY2FlOTU1ZmFmNWVkOGUzZmRjYmM3NSJ9

chore: disable Go compute targets (#794)

Source-Link: googleapis/googleapis@cc293c6

Source-Link: googleapis/googleapis-gen@6bb5382
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiNmJiNTM4MmFiM2NkMzIyY2MxMjI4ZWI1ODdhZGI1ZTEyMzVjNWJkMyJ9

fix: add diregapic flag for compute (#793)

Source-Link: googleapis/googleapis@f9702dc

Source-Link: googleapis/googleapis-gen@2d6c055
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiMmQ2YzA1NWYwMTY0NmMxNjM5MTAwZDk5MjJiMjdhOTg5MGJmMmM2NiJ9

chore: add Go build targets for compute (#792)

Note: manually updated proto file, but it yields the same result of the new disco-converter would generate.

Fixes: #7345
Source-Link: googleapis/googleapis@59828ba

Source-Link: googleapis/googleapis-gen@2649582
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiMjY0OTU4MjU3YzUzNTJkYjBiYzkxMGMwMGYxNDdiODIxYjAxMDYzNiJ9

chore: update gapic-generator-go version to 0.35.4
chore: add snippets to BUILD.bazel go_gapic_assembly_pkg

PiperOrigin-RevId: 522373543

Source-Link: googleapis/googleapis@130f097

Source-Link: googleapis/googleapis-gen@7d1457a
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiN2QxNDU3YWJlYzJmMGQyMDVmZGE2NzNhNGU2NTA4YjQxZGMxZTYzMSJ9

feat: Launch UploadConversation endpoint

PiperOrigin-RevId: 522129764

Source-Link: googleapis/googleapis@dabc235

Source-Link: googleapis/googleapis-gen@5609ad0
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiNTYwOWFkMDg4Y2NmMTVhMWMyMmRmN2FhZWIzMTMzZmJlYTU2Nzk5ZSJ9

feat: add support for disabling pod IP cidr overprovision

This feature requires special allowlisting for the projects.

PiperOrigin-RevId: 522103451

Source-Link: googleapis/googleapis@013b597

Source-Link: googleapis/googleapis-gen@2fe6962
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiMmZlNjk2MmY5YzhlNzcwMzk2ZGNmYzg4ZTEwNGU1ZDcxM2MyZTY2ZSJ9

feat: added ignore_dependent_resources to DeleteCaPoolRequest, DeleteCertificateAuthorityRequest, DisableCertificateAuthorityRequest

PiperOrigin-RevId: 522096199

Source-Link: googleapis/googleapis@d9592ed

Source-Link: googleapis/googleapis-gen@0ab428e
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiMGFiNDI4ZTM5MzQ5ODFkYjljOGM3YmYxN2IxZmVhNWQ3NDY4MmFmYiJ9
codyoss pushed a commit that referenced this issue Apr 10, 2023
feat: support per-entity search and autocomplete
feat: support new filter syntax for recommendation
feat: expose A/B experiment info in search response
docs: keep the API doc up-to-date with recent changes

PiperOrigin-RevId: 522675951

Source-Link: googleapis/googleapis@f149e91

Source-Link: googleapis/googleapis-gen@c4538a8
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiYzQ1MzhhODg4ZDJlYzEzY2U3MTljMWExYWE5ZGM3ZGU1YjE3Mzc1YSJ9
BEGIN_NESTED_COMMIT
feat(retail): support per-entity search and autocomplete
feat: add model get API
feat: support new filter syntax for recommendation
feat: expose A/B experiment info in search response
docs: keep the API doc up-to-date with recent changes

PiperOrigin-RevId: 522675546

Source-Link: googleapis/googleapis@81b0808

Source-Link: googleapis/googleapis-gen@e950439
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiZTk1MDQzOWNkMGQ0ODZhYjhkMmIzMjY3MmI1NGMwYTZiNjQ1MTQyMCJ9
END_NESTED_COMMIT
BEGIN_NESTED_COMMIT
feat(container): Add support for updating additional pod IPv4 ranges for Standard and Autopilot clusters

Users can append more pod ranges by name to an existing cluster at the cluster level. When users or Node Auto-provisioning create new node pools, GKE will select the most available pod range and assign it to the node pool. These pod ranges can be removed once no node pool is using it.

PiperOrigin-RevId: 522620935

Source-Link: googleapis/googleapis@2ddfcb8

Source-Link: googleapis/googleapis-gen@8c7eccd
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiOGM3ZWNjZDA5N2I3OTg5ZDcyY2FlOTU1ZmFmNWVkOGUzZmRjYmM3NSJ9
END_NESTED_COMMIT
BEGIN_NESTED_COMMIT
chore(compute): disable Go compute targets (#794)

Source-Link: googleapis/googleapis@cc293c6

Source-Link: googleapis/googleapis-gen@6bb5382
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiNmJiNTM4MmFiM2NkMzIyY2MxMjI4ZWI1ODdhZGI1ZTEyMzVjNWJkMyJ9
END_NESTED_COMMIT
BEGIN_NESTED_COMMIT
fix(compute): add diregapic flag for compute (#793)

Source-Link: googleapis/googleapis@f9702dc

Source-Link: googleapis/googleapis-gen@2d6c055
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiMmQ2YzA1NWYwMTY0NmMxNjM5MTAwZDk5MjJiMjdhOTg5MGJmMmM2NiJ9
END_NESTED_COMMIT
BEGIN_NESTED_COMMIT
chore(compute): add Go build targets for compute (#792)

Note: manually updated proto file, but it yields the same result of the new disco-converter would generate.

Fixes: #7345
Source-Link: googleapis/googleapis@59828ba

Source-Link: googleapis/googleapis-gen@2649582
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiMjY0OTU4MjU3YzUzNTJkYjBiYzkxMGMwMGYxNDdiODIxYjAxMDYzNiJ9
END_NESTED_COMMIT
BEGIN_NESTED_COMMIT
chore(workflows): update gapic-generator-go version to 0.35.4
chore: add snippets to BUILD.bazel go_gapic_assembly_pkg

PiperOrigin-RevId: 522373543

Source-Link: googleapis/googleapis@130f097

Source-Link: googleapis/googleapis-gen@7d1457a
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiN2QxNDU3YWJlYzJmMGQyMDVmZGE2NzNhNGU2NTA4YjQxZGMxZTYzMSJ9
END_NESTED_COMMIT
BEGIN_NESTED_COMMIT
feat(contactcenterinsights): Launch UploadConversation endpoint

PiperOrigin-RevId: 522129764

Source-Link: googleapis/googleapis@dabc235

Source-Link: googleapis/googleapis-gen@5609ad0
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiNTYwOWFkMDg4Y2NmMTVhMWMyMmRmN2FhZWIzMTMzZmJlYTU2Nzk5ZSJ9
END_NESTED_COMMIT
BEGIN_NESTED_COMMIT
feat(container): add support for disabling pod IP cidr overprovision

This feature requires special allowlisting for the projects.

PiperOrigin-RevId: 522103451

Source-Link: googleapis/googleapis@013b597

Source-Link: googleapis/googleapis-gen@2fe6962
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiMmZlNjk2MmY5YzhlNzcwMzk2ZGNmYzg4ZTEwNGU1ZDcxM2MyZTY2ZSJ9
END_NESTED_COMMIT
BEGIN_NESTED_COMMIT
feat(security/privateca): added ignore_dependent_resources to DeleteCaPoolRequest, DeleteCertificateAuthorityRequest, DisableCertificateAuthorityRequest

PiperOrigin-RevId: 522096199

Source-Link: googleapis/googleapis@d9592ed

Source-Link: googleapis/googleapis-gen@0ab428e
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiMGFiNDI4ZTM5MzQ5ODFkYjljOGM3YmYxN2IxZmVhNWQ3NDY4MmFmYiJ9
END_NESTED_COMMIT
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api: pubsub Issues related to the Pub/Sub API. type: question Request for information or clarification. Not an issue.
Projects
None yet
Development

No branches or pull requests

2 participants