# HG changeset patch # User Vincent Tondellier # Date 1498079623 -7200 # Node ID 0705ab429133fd5abe2280e55f9032fea6b14e0f # Parent 6b56182fd4919f7c649fd99539a6d193d531ca22 Improve update, remove unused groups diff -r 6b56182fd491 -r 0705ab429133 lib/CrashTest/Plugin/Storage/Sql/Model/CrashGroup.pm --- a/lib/CrashTest/Plugin/Storage/Sql/Model/CrashGroup.pm Wed Jun 21 23:11:42 2017 +0200 +++ b/lib/CrashTest/Plugin/Storage/Sql/Model/CrashGroup.pm Wed Jun 21 23:13:43 2017 +0200 @@ -197,8 +197,6 @@ sub _create_pg94 { my ($self, $db, $uuid, $sig, $title) = @_; - my $tx = $db->begin; - # avoid race condition, no other safe way without upsert $db->query("LOCK TABLE crash_groups IN EXCLUSIVE MODE")->finish; @@ -217,8 +215,6 @@ warn "crash group is null after insert, reselected " . $crash_group->{id} . "\n"; } - $tx->commit; - return $crash_group; } @@ -257,4 +253,10 @@ return $crash_group; } +sub delete_unused { + my ($self, $db) = @_; + + $db->query("DELETE FROM crash_groups WHERE NOT EXISTS (SELECT 1 FROM crash_reports WHERE crash_group_id = crash_groups.id)")->finish; +} + 1; diff -r 6b56182fd491 -r 0705ab429133 lib/CrashTest/Plugin/Storage/Sql/Model/CrashReport.pm --- a/lib/CrashTest/Plugin/Storage/Sql/Model/CrashReport.pm Wed Jun 21 23:11:42 2017 +0200 +++ b/lib/CrashTest/Plugin/Storage/Sql/Model/CrashReport.pm Wed Jun 21 23:13:43 2017 +0200 @@ -252,14 +252,23 @@ my $dbcrash = $db->query("SELECT id FROM crash_reports WHERE uuid = ?", $uuid)->hash; - my $crash_group = $self->crash_groups->find_or_create($uuid, $pjson, $db); - $db->query(" UPDATE crash_report_datas SET processed = ? WHERE crash_report_id = ?", encode_json($pjson), $dbcrash->{id}, ); + + $db->query(" + UPDATE crash_reports SET crash_group_id = NULL, crash_group_distance = NULL + WHERE id = ?", + $dbcrash->{id}, + ); + + $self->crash_groups->delete_unused($db); + + my $crash_group = $self->crash_groups->find_or_create($uuid, $pjson, $db); + $db->query(" UPDATE crash_reports SET crash_group_id = ?, crash_group_distance = ? WHERE id = ?",