Temporary Signup Problems - Blog
2020-02-12We've resolved a bug that was preventing signups for some potential users.
The bug was a small one, and quick to track down, despite it only happening for some users.
Bug Breakdown
To check if an email address is already in use, we have to iterate every user, as we keep it encrypted at rest.
Whilst iterating, sometimes, depending on the number of active users, the iterator would try and open a database that is currently still updating its contents.
When that happens, instead of bailing or waiting, the iterator would raise an exception, which we hadn't predicted that it could raise (nor had the linters or type checkers).
Bug Fix
Quite simple, we push that particular database to the back of the test, to retry again later.
try:
db = connect(x.resolve())
except DatabaseError:
continue
Note: This might look like the usually available sqlite3
library from Python. It is not. Just the same API.
This does raise the edgecase about a database being constantly locked - which we had already accounted for.
Continue reading...
- 2021-03-10 Sherlock in Color
- 2021-01-08 Playlists
- 2020-10-24 Return of Service
- 2020-10-16 Enhanced Audio and Upload Delays
- 2020-09-10 Experimental Interface
- 2020-06-26 Gunsmith Hits HD
- 2020-06-11 Creating Something From Nothing
- 2020-03-18 Filmscope Progress
- 2020-03-10 2019 Releases
- 2020-03-05 Downtime Postmortem
- 2020-02-12 Temporary Signup Problems
- 2020-02-12 Statistics
- 2020-02-01 Search Regression
- 2020-02-01 High Load DDoS Attack
- 2020-01-30 The Phantom reCreeps
- 2020-01-25 Simple is Best
- 2020-01-06 New Features
- 2020-01-04 Displaying Credit
- 2019-12-29 Performance Enhancements
- 2019-12-18 Experimental Rendering
- 2019-12-10 MPV Support
- 2019-12-03 Introducing Filmscope
- 2019-11-21 DDoS Attack
- 2019-11-20 Security Report
- 2019-11-20 Report
- 2019-10-21 The World of Preservation
- 2019-10-15 Endless Battle For Quality
- 2019-10-06 Giving Back
- 2019-10-02 What's in a Cookie?
- 2019-10-01 PGP
- 2019-09-28 SIXTEENmm