-
Notifications
You must be signed in to change notification settings - Fork 185
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
Storage Server Version Triage #1007
Conversation
neuroscr
commented
Mar 25, 2020
•
edited
edited
- builds a pool per version (and a reverse map)
- filters pools with 2.0.2 or greater for file server proxy
- mark as bad removes from random and version pools
- increased start up retries from 1s to 10s (as this PR adds 10-20s delay to proxy services while we get versions and sorts in the usable buckets)
- takes about 10mins to get versions from 980 sndoes
….2 or newer versions
…sionPools now, lint
… 1s, randomize list of snodes, only report status every 10%
What would this mean in terms of startup time and receiving messages?
Wouldn't it be better to query snodes until we have X amount that are of a certain version, and keep doing it in the background? |
Only should really affect proxy requests (RSS, version check, attachments, device mapping fetching)
The version fetching is backgrounded for the most part. |
Notes for V2:
|
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.
Looks good for v1, will wait on what Maxim has to say and we can decide is we want to merge v1 and v2 seperate or just have all the changes in together
…able() make handle edge removal cases and optimize snode lookup
Refined patch to only affect file upload (attachments/avatars) proxy requests allowing RSS, version check, and device mapping fetching to proceed normally since their content is usually under 1mb. Also handled some edge cases in the markRandomSNodeBad when we haven't got it's version yet, so we retry, so we can mark it bad if/when we do get it. |
await this.refreshRandomPool(); | ||
} | ||
if (this.randomSnodePool.length === 0) { | ||
throw new window.textsecure.SeedNodeError('Invalid seed node response'); |
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.
Should we throw this in refreshRandomPool()
instead?
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.
Not sure, @Mikunj do you know if this is an issue that we throw inside a promise instead of the outer function?
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.
Throwing inside async
should reject the promise and await
ing on rejected promise should just re-throw the original exception.
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.
which we catch on line 483 and rethrow
I really hate how this floods the log with |