~launchpad-pqm/launchpad/devel

« back to all changes in this revision

Viewing changes to test_on_merge.py

Emit information about rouge database connections so we can track them down

Show diffs side-by-side

added added

removed removed

Lines of Context:
73
73
    except psycopg2.ProgrammingError, x:
74
74
        if 'does not exist' not in str(x):
75
75
            raise
76
 
    cur.execute("""
77
 
        select count(*) from pg_stat_activity
78
 
        where datname in ('launchpad_dev',
79
 
            'launchpad_ftest_template', 'launchpad_ftest')
80
 
        """)
81
 
    existing_connections = cur.fetchone()[0]
82
 
    if existing_connections > 0:
83
 
        print 'Cannot rebuild database. There are %d open connections.' % (
84
 
                existing_connections,
85
 
                )
 
76
 
 
77
    # If there are existing database connections, terminate. We have
 
78
    # rogue processes still connected to the database.
 
79
    for loop in range(2):
 
80
        cur.execute("""
 
81
            SELECT usename, current_query
 
82
            FROM pg_stat_activity
 
83
            WHERE datname IN (
 
84
                'launchpad_dev', 'launchpad_ftest_template', 'launchpad_ftest')
 
85
            """)
 
86
        results = list(cur.fetchall())
 
87
        if not results:
 
88
            break
 
89
        # Rogue processes. Report, sleep for a bit, and try again.
 
90
        for usename, current_query in results:
 
91
            print '!! Open connection %s - %s' % (usename, current_query)
 
92
        print 'Sleeping'
 
93
        time.sleep(20)
 
94
    else:
 
95
        print 'Cannot rebuild database. There are open connections.'
86
96
        return 1
 
97
 
87
98
    cur.close()
88
99
    con.close()
89
100