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

engine: reduce connection retry noise #5918

Merged
merged 1 commit into from
Oct 19, 2023
Merged

Conversation

sipsma
Copy link
Contributor

@sipsma sipsma commented Oct 18, 2023

The engine client initializes its session w/ the server in a separate goroutine (due to the fact that it blocks for the duration of the session). This causes initial connection attempts to usually fail while the session is still be setup.

This creates a lot of scary-looking but harmless logs in the common case.

This changes the logic to only start printing failed connection attempts once the retry logic is going to wait over a second before the next attempt. The idea is to balance not showing useless errors but also not leave the user hanging for too long with no output and not hide errors that may useful for debugging.

Would love to have a test for this, but very hard to test timing things w/out flakes, so just manually tested so far.

One potentially better solution would be to have a debug mode and always hide errors unless that's enabled, but that would likely impact every SDK because they all use the CLI via the session subcommand, so scoping that out for now to get this fix in quick.

cc @kpenfound

Fixes #5911

@sipsma sipsma requested a review from vito October 18, 2023 21:23
The engine client initializes its session w/ the server in a separate
goroutine (due to the fact that it blocks for the duration of the
session). This causes initial connection attempts to usually fail while
the session is still be setup.

This creates a lot of scary-looking but harmless logs in the common
case.

This changes the logic to only start printing failed connection attempts
once the retry logic is going to wait over a second before the next
attempt. The idea is to balance not showing useless errors but also not
leave the user hanging for too long with no output and not hide errors
that may useful for debugging.

Would love to have a test for this, but very hard to test timing things
w/out flakes, so just manually tested so far.

One potentially better solution would be to have a debug mode and always
hide errors unless that's enabled, but that would likely impact every
SDK because they all use the CLI via the `session` subcommand, so
scoping that out for now to get this fix in quick.

Signed-off-by: Erik Sipsma <erik@dagger.io>
Copy link
Contributor

@vito vito left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nice, makes sense!

@sipsma sipsma merged commit 572bd3d into dagger:main Oct 19, 2023
36 checks passed
@gerhard gerhard added this to the v0.9.0 milestone Oct 20, 2023
schlapzz pushed a commit to schlapzz/dagger that referenced this pull request Oct 24, 2023
The engine client initializes its session w/ the server in a separate
goroutine (due to the fact that it blocks for the duration of the
session). This causes initial connection attempts to usually fail while
the session is still be setup.

This creates a lot of scary-looking but harmless logs in the common
case.

This changes the logic to only start printing failed connection attempts
once the retry logic is going to wait over a second before the next
attempt. The idea is to balance not showing useless errors but also not
leave the user hanging for too long with no output and not hide errors
that may useful for debugging.

Would love to have a test for this, but very hard to test timing things
w/out flakes, so just manually tested so far.

One potentially better solution would be to have a debug mode and always
hide errors unless that's enabled, but that would likely impact every
SDK because they all use the CLI via the `session` subcommand, so
scoping that out for now to get this fix in quick.

Signed-off-by: Erik Sipsma <erik@dagger.io>
Signed-off-by: Christian Schlatter <schlatter@puzzle.ch>
schlapzz pushed a commit to schlapzz/dagger that referenced this pull request Nov 24, 2023
The engine client initializes its session w/ the server in a separate
goroutine (due to the fact that it blocks for the duration of the
session). This causes initial connection attempts to usually fail while
the session is still be setup.

This creates a lot of scary-looking but harmless logs in the common
case.

This changes the logic to only start printing failed connection attempts
once the retry logic is going to wait over a second before the next
attempt. The idea is to balance not showing useless errors but also not
leave the user hanging for too long with no output and not hide errors
that may useful for debugging.

Would love to have a test for this, but very hard to test timing things
w/out flakes, so just manually tested so far.

One potentially better solution would be to have a debug mode and always
hide errors unless that's enabled, but that would likely impact every
SDK because they all use the CLI via the `session` subcommand, so
scoping that out for now to get this fix in quick.

Signed-off-by: Erik Sipsma <erik@dagger.io>
Signed-off-by: Christian Schlatter <schlatter@puzzle.ch>
schlapzz pushed a commit to schlapzz/dagger that referenced this pull request Nov 24, 2023
The engine client initializes its session w/ the server in a separate
goroutine (due to the fact that it blocks for the duration of the
session). This causes initial connection attempts to usually fail while
the session is still be setup.

This creates a lot of scary-looking but harmless logs in the common
case.

This changes the logic to only start printing failed connection attempts
once the retry logic is going to wait over a second before the next
attempt. The idea is to balance not showing useless errors but also not
leave the user hanging for too long with no output and not hide errors
that may useful for debugging.

Would love to have a test for this, but very hard to test timing things
w/out flakes, so just manually tested so far.

One potentially better solution would be to have a debug mode and always
hide errors unless that's enabled, but that would likely impact every
SDK because they all use the CLI via the `session` subcommand, so
scoping that out for now to get this fix in quick.

Signed-off-by: Erik Sipsma <erik@dagger.io>
schlapzz pushed a commit to schlapzz/dagger that referenced this pull request Nov 24, 2023
The engine client initializes its session w/ the server in a separate
goroutine (due to the fact that it blocks for the duration of the
session). This causes initial connection attempts to usually fail while
the session is still be setup.

This creates a lot of scary-looking but harmless logs in the common
case.

This changes the logic to only start printing failed connection attempts
once the retry logic is going to wait over a second before the next
attempt. The idea is to balance not showing useless errors but also not
leave the user hanging for too long with no output and not hide errors
that may useful for debugging.

Would love to have a test for this, but very hard to test timing things
w/out flakes, so just manually tested so far.

One potentially better solution would be to have a debug mode and always
hide errors unless that's enabled, but that would likely impact every
SDK because they all use the CLI via the `session` subcommand, so
scoping that out for now to get this fix in quick.

Signed-off-by: Erik Sipsma <erik@dagger.io>
schlapzz pushed a commit to schlapzz/dagger that referenced this pull request Nov 24, 2023
The engine client initializes its session w/ the server in a separate
goroutine (due to the fact that it blocks for the duration of the
session). This causes initial connection attempts to usually fail while
the session is still be setup.

This creates a lot of scary-looking but harmless logs in the common
case.

This changes the logic to only start printing failed connection attempts
once the retry logic is going to wait over a second before the next
attempt. The idea is to balance not showing useless errors but also not
leave the user hanging for too long with no output and not hide errors
that may useful for debugging.

Would love to have a test for this, but very hard to test timing things
w/out flakes, so just manually tested so far.

One potentially better solution would be to have a debug mode and always
hide errors unless that's enabled, but that would likely impact every
SDK because they all use the CLI via the `session` subcommand, so
scoping that out for now to get this fix in quick.

Signed-off-by: Erik Sipsma <erik@dagger.io>
schlapzz pushed a commit to schlapzz/dagger that referenced this pull request Nov 24, 2023
The engine client initializes its session w/ the server in a separate
goroutine (due to the fact that it blocks for the duration of the
session). This causes initial connection attempts to usually fail while
the session is still be setup.

This creates a lot of scary-looking but harmless logs in the common
case.

This changes the logic to only start printing failed connection attempts
once the retry logic is going to wait over a second before the next
attempt. The idea is to balance not showing useless errors but also not
leave the user hanging for too long with no output and not hide errors
that may useful for debugging.

Would love to have a test for this, but very hard to test timing things
w/out flakes, so just manually tested so far.

One potentially better solution would be to have a debug mode and always
hide errors unless that's enabled, but that would likely impact every
SDK because they all use the CLI via the `session` subcommand, so
scoping that out for now to get this fix in quick.

Signed-off-by: Erik Sipsma <erik@dagger.io>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

POST http://dagger/query rpc error
3 participants