From ec83fb64942647218f6cd56929b13405527af686 Mon Sep 17 00:00:00 2001 From: Dannon Baker Date: Thu, 31 Mar 2016 17:15:12 -0400 Subject: [PATCH] Change user disk usage pgcalc function up a bit to make a slightly safer dry-run, since it doesn't appear that in some environments (not sure why) the rollback isn't actually happening. --- lib/galaxy/model/util.py | 41 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/lib/galaxy/model/util.py b/lib/galaxy/model/util.py index 76128609496..7295589ab44 100644 --- a/lib/galaxy/model/util.py +++ b/lib/galaxy/model/util.py @@ -10,25 +10,24 @@ def pgcalc( sa_session, id, dryrun=False ): TODO: Check against the recently updated versions of sqlalchemy if this 'special' postgresql version is even necessary. """ - sql = """ - UPDATE galaxy_user - SET disk_usage = (SELECT COALESCE(SUM(total_size), 0) - FROM ( SELECT DISTINCT ON (d.id) d.total_size, d.id - FROM history_dataset_association hda - JOIN history h ON h.id = hda.history_id - JOIN dataset d ON hda.dataset_id = d.id - WHERE h.user_id = :id - AND h.purged = false - AND hda.purged = false - AND d.purged = false - AND d.id NOT IN (SELECT dataset_id - FROM library_dataset_dataset_association) - ) sizes) - WHERE id = :id - RETURNING disk_usage; - """ - r = sa_session.execute(sql, {'id': id}) - new = r.fetchone()[0] + sql_calc = """SELECT COALESCE(SUM(total_size), 0) + FROM ( SELECT DISTINCT ON (d.id) d.total_size, d.id + FROM history_dataset_association hda + JOIN history h ON h.id = hda.history_id + JOIN dataset d ON hda.dataset_id = d.id + WHERE h.user_id = :id + AND h.purged = false + AND hda.purged = false + AND d.purged = false + AND d.id NOT IN (SELECT dataset_id + FROM library_dataset_dataset_association) + ) sizes""" + sql_update = """UPDATE galaxy_user + SET disk_usage = (%s) + WHERE id = :id + RETURNING disk_usage;""" % sql_calc if dryrun: - sa_session.rollback() - return new + r = sa_session.execute(sql_calc, {'id': id}) + else: + r = sa_session.execute(sql_update, {'id': id}) + return r.fetchone()[0]