-
Notifications
You must be signed in to change notification settings - Fork 9.8k
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
clientv3: put at most once #8335
clientv3: put at most once #8335
Conversation
Think this grpc/grpc-go#1369 has changed the behavior? On This is the commit with all diffs be794d5?diff=unified#diff-e3c9e37b41869259a878bdb08e61af6cL903. |
Was retrying when it shouldn't, causing multiple puts
Switching endpoints on the same client was triggering balancer reconnect errors that should be tested in clientv3/integration.
Still gets transport closing errors, but no unavailable endpoint errors.
c4e830e
to
fdba9e5
Compare
Failing on #6934; merging |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
cool, distinguish the read and write retry
clientv3/retry.go
Outdated
return err | ||
}) | ||
return resp, err | ||
return rkv.KVClient.Put(ctx, in, opts...) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good, if grpc return the error like remote network not availabe, I think we should still do retry
Was able to get errors out of put in 1.4 but the upgrade to 1.5 grpc seems to have changed error handling; haven't investigated fully. Removed the retry and added a test for at-most-once semantics during disconnects.
/cc @HardySimpson