forked from lix-project/hydra
Add migration 79: RunCommand logs
This commit is contained in:
parent
fe149613b3
commit
2f382ba067
49
src/sql/upgrade-79.sql
Normal file
49
src/sql/upgrade-79.sql
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
|
||||||
|
|
||||||
|
-- Records of RunCommand executions
|
||||||
|
--
|
||||||
|
-- The intended flow is:
|
||||||
|
--
|
||||||
|
-- 1. Create a RunCommandLogs entry when the task is "queued" to run
|
||||||
|
-- 2. Update the start_time when it begins
|
||||||
|
-- 3. Update the end_time and exit_code when it completes
|
||||||
|
create table RunCommandLogs (
|
||||||
|
id serial primary key not null,
|
||||||
|
job_matcher text not null,
|
||||||
|
build_id integer not null,
|
||||||
|
-- TODO: evaluation_id integer not null,
|
||||||
|
-- can we do this in a principled way? a build can be part of many evaluations
|
||||||
|
-- but a "bug" of RunCommand, imho, is that it should probably run per evaluation?
|
||||||
|
command text not null,
|
||||||
|
start_time integer,
|
||||||
|
end_time integer,
|
||||||
|
error_number integer,
|
||||||
|
exit_code integer,
|
||||||
|
signal integer,
|
||||||
|
core_dumped boolean,
|
||||||
|
|
||||||
|
foreign key (build_id) references Builds(id) on delete cascade,
|
||||||
|
-- foreign key (evaluation_id) references Builds(id) on delete cascade,
|
||||||
|
|
||||||
|
|
||||||
|
constraint RunCommandLogs_not_started_no_exit_time_no_code check (
|
||||||
|
-- If start time is null, then end_time, exit_code, signal, and core_dumped should be null.
|
||||||
|
-- A logical implication operator would be nice :).
|
||||||
|
(start_time is not null) or (
|
||||||
|
end_time is null
|
||||||
|
and error_number is null
|
||||||
|
and exit_code is null
|
||||||
|
and signal is null
|
||||||
|
and core_dumped is null
|
||||||
|
)
|
||||||
|
),
|
||||||
|
constraint RunCommandLogs_end_time_has_start_time check (
|
||||||
|
-- If end time is not null, then end_time, exit_code, and core_dumped should not be null
|
||||||
|
(end_time is null) or (start_time is not null)
|
||||||
|
)
|
||||||
|
|
||||||
|
-- Note: if exit_code is not null then signal and core_dumped must be null.
|
||||||
|
-- Similarly, if signal is not null then exit_code must be null and
|
||||||
|
-- core_dumped must not be null. However, these semantics are tricky
|
||||||
|
-- to encode as constraints and probably provide limited actual value.
|
||||||
|
);
|
Loading…
Reference in a new issue