RunCommandLogs: init table
This commit is contained in:
@ -562,6 +562,55 @@ create table TaskRetries (
|
||||
);
|
||||
create index IndexTaskRetriesOrdered on TaskRetries(retry_at asc);
|
||||
|
||||
|
||||
-- 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.
|
||||
);
|
||||
|
||||
-- The output paths that have permanently failed.
|
||||
create table FailedPaths (
|
||||
path text primary key not null
|
||||
|
@ -38,6 +38,7 @@ make_schema_at("Hydra::Schema", {
|
||||
"nrbuilds" => "NrBuilds",
|
||||
"projectmembers" => "ProjectMembers",
|
||||
"projects" => "Projects",
|
||||
"runcommandlogs" => "RunCommandLogs",
|
||||
"schemaversion" => "SchemaVersion",
|
||||
"starredjobs" => "StarredJobs",
|
||||
"systemstatus" => "SystemStatus",
|
||||
|
Reference in New Issue
Block a user