[tor-bugs] #5232 [BridgeDB]: Import bridges into BridgeDB in a separate thread and database transaction
Tor Bug Tracker & Wiki
torproject-admin at torproject.org
Sat Feb 25 21:08:10 UTC 2012
#5232: Import bridges into BridgeDB in a separate thread and database transaction
----------------------+-----------------------------------------------------
Reporter: karsten | Owner: aagbsn
Type: defect | Status: new
Priority: major | Milestone:
Component: BridgeDB | Version:
Keywords: | Parent: #4499
Points: | Actualpoints:
----------------------+-----------------------------------------------------
Comment(by aagbsn):
After some coffee:
Bridges are placed in BridgeRings in memory; so this will be more
complicated than just a db transaction.
One possible solution could be to create a new copy of these
datastructures and then swap atomically.
It might look something like this:
(in Main.py, load())
1. create a new thread
2. create new splitter(s) and rings
3. get a db transaction
4. insert bridges
5. get a lock
6. swap the datastructures
7. commit the transaction
8. release the lock
Things to check when testing:
1. BridgeDB should serve up bridges during the update process
2. The email distributor touches the database. Make sure it works properly
during the update.
3. Additional HUPs should not deadlock.
4. Make sure that any references held by distributors are updated
properly.
Anything else I forgot?
--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/5232#comment:1>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online
More information about the tor-bugs
mailing list