William Grant has proposed merging lp:~wgrant/launchpad/fix-dbuser-override
into lp:launchpad.
Requested reviews:
Launchpad code reviewers (launchpad-reviewers)
Related bugs:
Bug #842284 in Launchpad itself: "connect_string can't override the username
if already specified"
https://bugs.launchpad.net/launchpad/+bug/842284
For more details, see:
https://code.launchpad.net/~wgrant/launchpad/fix-dbuser-override/+merge/74154
The long-deprecated canonical.database.sqlbase.connect() function is still used
by a few scripts around the place. It takes user and DB names and returns a
psycopg2 connection, bypassing Storm. Most of its dirty work is done by
connect_string(), which merges the requested DB and usernames with
rw_main_master.
c.l.scripts.db_options() does a similar thing with script commandline options,
but merges them into the script's main config. It was changed in r13862 to also
inject dbuser into the connection string, when it had previously just stored it
for connection code to use manually.
Now, most sqlbase.connect() callsites call it with options.dbuser, because
db_options() didn't originally inject it into the connection string. But
connect_string() has an assertion to confirm that it isn't inserting a second
dbuser field into the string -- this is obsolete since it now uses
ConnectionString to *replace* the field, so there is no risk of duplication. So
if db_options() sees a custom username (specified with the -U option), it will
insert it into the connection string, causing scripts that call
connect(options.dbuser) to crash with the obsolete assertion.
This has only manifested itself in staging updates so far, where we run
"full-update.py -U postgres". The eventual solution is to fix the deprecated
callers to not specify options.dbuser, but we need a quick fix for now.
This removal is tested on staging, and it unbreaks full-update.py. And it
pretty clearly isn't going to break anything.
--
https://code.launchpad.net/~wgrant/launchpad/fix-dbuser-override/+merge/74154
Your team Launchpad code reviewers is requested to review the proposed merge of
lp:~wgrant/launchpad/fix-dbuser-override into lp:launchpad.
=== modified file 'lib/canonical/database/sqlbase.py'
--- lib/canonical/database/sqlbase.py 2011-09-02 14:02:57 +0000
+++ lib/canonical/database/sqlbase.py 2011-09-06 02:43:23 +0000
@@ -808,8 +808,6 @@
# directly.
from canonical.database.postgresql import ConnectionString
con_str = ConnectionString(dbconfig.rw_main_master)
- assert con_str.user is None, (
- 'Connection string already contains username')
if user is not None:
con_str.user = user
if lp.dbhost is not None:
_______________________________________________
Mailing list: https://launchpad.net/~launchpad-reviewers
Post to : [email protected]
Unsubscribe : https://launchpad.net/~launchpad-reviewers
More help : https://help.launchpad.net/ListHelp