From bb9476dd895daaaa871dffa33484141e099d1413 Mon Sep 17 00:00:00 2001 From: Magnus Hagander Date: Wed, 21 Mar 2018 10:51:58 +0100 Subject: [PATCH] Only request subscribers from upstream if told to sync subscribers --- loader/pglister_sync.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/loader/pglister_sync.py b/loader/pglister_sync.py index dd1b098..0691353 100755 --- a/loader/pglister_sync.py +++ b/loader/pglister_sync.py @@ -23,13 +23,19 @@ if __name__=="__main__": except: connstr = 'need_connstr' + if cfg.has_option('pglister', 'subscribers') and cfg.getint('pglister', 'subscribers'): + do_subscribers=1 + else: + do_subscribers=0 + psycopg2.extensions.register_type(psycopg2.extensions.UNICODE) conn = psycopg2.connect(connstr) curs = conn.cursor() - r = requests.get('{0}/api/archive/{1}/lists/'.format( + r = requests.get('{0}/api/archive/{1}/lists/?subscribers={2}'.format( cfg.get('pglister', 'root'), cfg.get('pglister', 'myname'), + do_subscribers and 1 or 0, ), headers={ 'X-Api-Key': cfg.get('pglister', 'apikey'), }) @@ -72,7 +78,7 @@ if __name__=="__main__": for n, in curs.fetchall(): print "Updated list %s " % n - if cfg.has_option('pglister', 'subscribers') and cfg.getint('pglister', 'subscribers'): + if do_subscribers: # If we synchronize subscribers, we do so on all lists for now. curs.execute("WITH t(u) AS (SELECT UNNEST(%(usernames)s)), ins(un) AS (INSERT INTO listsubscribers (username, list_id) SELECT u, %(listid)s FROM t WHERE NOT EXISTS (SELECT 1 FROM listsubscribers WHERE username=u AND list_id=%(listid)s) RETURNING username), del(un) AS (DELETE FROM listsubscribers WHERE list_id=%(listid)s AND NOT EXISTS (SELECT 1 FROM t WHERE u=username) RETURNING username) SELECT 'ins',un FROM ins UNION ALL SELECT 'del',un FROM del ORDER BY 1,2", { 'usernames': l['subscribers'], -- 2.39.5