Issue #1012
closedTask #1014: Short Term Improvements for Pulp's use of MongoDB
If the first database seed listed in server.conf is not the current Primary replica, Pulp will not be able to write to the database
Description
Pulp only tells pymongo about the first of the database seeds, even if there are multiple of the specified in the seeds field of the [database] section in server.conf. This means that if the first seed listed is not the current primary, Pulp will not be able to issue any writes.
The fix for this is to try the first seed, and if it is not the primary or cannot connect for some network reason to iterate through the remaining seeds until a valid connection is formed. It should log at info level for each of these connections so Pulp reports as it progresses. If a valid connection cannot be formed it should log at error level as it does today.
QE instructions¶
1. create a 3 node mongoDB setup that uses a basic replica_set configuration
2. determine which mongoDB hostname is the secondary
3. configure server.conf [database] section with seeds="" to the comma separated list of these 3 mongoDB hosts. It's very important that the "primary" mongoDB server be the last one in the seeds list
4. start Pulp and verify that it logs that a connection is created to the first seed, the second seed, and finally the primary.
5. ensure pulp can be fully used while connected to the third seed (the primary)
6. stop all pulp services.
7. edit server.conf and remove the primary from the seeds list so that only the two secondary servers are present
8) start Pulp and verify that it cannot form a valid connection to a mongoDB server
Related issues
Properly handles ['database']['seeds'] config
This patch enables pulp to iterate over a list of seeds until a connection is made. When more than one seed is present, an exception is raised if no 'replica_set' config is specified. An exception is also raised if an empty string is passed in as value for 'seeds'.
re #1012 https://pulp.plan.io/issues/1012