-
Notifications
You must be signed in to change notification settings - Fork 189
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
K8SPXC-1482: Add waiting period after peer list update #1854
base: main
Are you sure you want to change the base?
Conversation
This helps to avoid acting too frequently on stale DNS resolves
@s10 i am having a hard time to reasoning behind 30 seconds interval. for example, if some pod goes down in this period, we'll need to wait for this to reflected. can you explain more about these changes? |
If one pod goes down and then the second pod goes down, then yes, an update for the following pod would wait 30 seconds. I consider such behaviour a better option than giving an application 10-20 MySQL connection resets within 30 seconds. Here is an excerpt from the linked issue, describing the problem this PR tries to ease.
|
@s10 now i understand better, thank you. i agree 30 seconds sound more reasonable. but i also think if we can adjust the behavior of [sorry for late reply, i missed this notification.] |
It would be nice to make this side effect easier. The problem is that disruption is caused by the percona/percona-docker#893 , and it couldn't be easily changed back to larger timeout without bringing back K8SPXC-1335 |
commit: 78570cd |
This helps to avoid acting too frequently on stale DNS resolves
CHANGE DESCRIPTION
Problem:
peer-list updates might be issued several times after database pod recreation.
Cause:
Currently, peer-list performs an infinite loop with a fixed 1-second period and watches for SRV records update
using golang net.LookupSRV function.
Unfortunately, this doesn't account for possible TTL in the K8S DNS.
Solution:
Add a 30-second waiting period after peer update.
CHECKLIST
Jira
Needs Doc
) and QA (Needs QA
)?Tests
compare/*-oc.yml
)?Config/Logging/Testability