Notify the queue runner when a build is deleted

This commit is contained in:
Eelco Dolstra 2015-07-08 11:43:35 +02:00
parent 95c4294560
commit 89fb723ace
3 changed files with 28 additions and 1 deletions

View file

@ -206,6 +206,7 @@ void State::queueMonitorLoop()
receiver buildsAdded(*conn, "builds_added"); receiver buildsAdded(*conn, "builds_added");
receiver buildsRestarted(*conn, "builds_restarted"); receiver buildsRestarted(*conn, "builds_restarted");
receiver buildsCancelled(*conn, "builds_cancelled"); receiver buildsCancelled(*conn, "builds_cancelled");
receiver buildsDeleted(*conn, "builds_deleted");
auto store = openStore(); // FIXME: pool auto store = openStore(); // FIXME: pool
@ -225,7 +226,7 @@ void State::queueMonitorLoop()
printMsg(lvlTalkative, "got notification: builds restarted"); printMsg(lvlTalkative, "got notification: builds restarted");
lastBuildId = 0; // check all builds lastBuildId = 0; // check all builds
} }
if (buildsCancelled.get()) { if (buildsCancelled.get() || buildsDeleted.get()) {
printMsg(lvlTalkative, "got notification: builds cancelled"); printMsg(lvlTalkative, "got notification: builds cancelled");
removeCancelledBuilds(*conn); removeCancelledBuilds(*conn);
} }

View file

@ -202,6 +202,22 @@ create table Builds (
); );
#ifdef POSTGRESQL
create function notifyBuildDeleted() returns trigger as $$
begin
execute 'notify builds_deleted';
return null;
end;
$$ language plpgsql;
create trigger BuildDeleted after delete on Builds
for each row
execute procedure notifyBuildDeleted();
#endif
create table BuildOutputs ( create table BuildOutputs (
build integer not null, build integer not null,
name text not null, name text not null,

10
src/sql/upgrade-35.sql Normal file
View file

@ -0,0 +1,10 @@
create function notifyBuildDeleted() returns trigger as $$
begin
execute 'notify builds_deleted';
return null;
end;
$$ language plpgsql;
create trigger BuildDeleted after delete on Builds
for each row
execute procedure notifyBuildDeleted();