forked from lix-project/hydra
RunCommandLogs: init table
This commit is contained in:
parent
f4e86a3236
commit
52843195db
|
@ -499,6 +499,21 @@ __PACKAGE__->belongs_to(
|
||||||
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "CASCADE" },
|
{ is_deferrable => 0, on_delete => "NO ACTION", on_update => "CASCADE" },
|
||||||
);
|
);
|
||||||
|
|
||||||
|
=head2 runcommandlogs
|
||||||
|
|
||||||
|
Type: has_many
|
||||||
|
|
||||||
|
Related object: L<Hydra::Schema::Result::RunCommandLogs>
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
__PACKAGE__->has_many(
|
||||||
|
"runcommandlogs",
|
||||||
|
"Hydra::Schema::Result::RunCommandLogs",
|
||||||
|
{ "foreign.build_id" => "self.id" },
|
||||||
|
undef,
|
||||||
|
);
|
||||||
|
|
||||||
=head2 aggregates
|
=head2 aggregates
|
||||||
|
|
||||||
Type: many_to_many
|
Type: many_to_many
|
||||||
|
@ -528,8 +543,8 @@ __PACKAGE__->many_to_many(
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2021-08-26 12:02:36
|
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2021-11-17 12:42:34
|
||||||
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:WHdSVHhQykmUz0tR/TExVg
|
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:ylttv/NTMDcSZumBXRCOCw
|
||||||
|
|
||||||
__PACKAGE__->has_many(
|
__PACKAGE__->has_many(
|
||||||
"dependents",
|
"dependents",
|
||||||
|
|
157
src/lib/Hydra/Schema/Result/RunCommandLogs.pm
Normal file
157
src/lib/Hydra/Schema/Result/RunCommandLogs.pm
Normal file
|
@ -0,0 +1,157 @@
|
||||||
|
use utf8;
|
||||||
|
package Hydra::Schema::Result::RunCommandLogs;
|
||||||
|
|
||||||
|
# Created by DBIx::Class::Schema::Loader
|
||||||
|
# DO NOT MODIFY THE FIRST PART OF THIS FILE
|
||||||
|
|
||||||
|
=head1 NAME
|
||||||
|
|
||||||
|
Hydra::Schema::Result::RunCommandLogs
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
|
||||||
|
use base 'DBIx::Class::Core';
|
||||||
|
|
||||||
|
=head1 COMPONENTS LOADED
|
||||||
|
|
||||||
|
=over 4
|
||||||
|
|
||||||
|
=item * L<Hydra::Component::ToJSON>
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
__PACKAGE__->load_components("+Hydra::Component::ToJSON");
|
||||||
|
|
||||||
|
=head1 TABLE: C<runcommandlogs>
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
__PACKAGE__->table("runcommandlogs");
|
||||||
|
|
||||||
|
=head1 ACCESSORS
|
||||||
|
|
||||||
|
=head2 id
|
||||||
|
|
||||||
|
data_type: 'integer'
|
||||||
|
is_auto_increment: 1
|
||||||
|
is_nullable: 0
|
||||||
|
sequence: 'runcommandlogs_id_seq'
|
||||||
|
|
||||||
|
=head2 job_matcher
|
||||||
|
|
||||||
|
data_type: 'text'
|
||||||
|
is_nullable: 0
|
||||||
|
|
||||||
|
=head2 build_id
|
||||||
|
|
||||||
|
data_type: 'integer'
|
||||||
|
is_foreign_key: 1
|
||||||
|
is_nullable: 0
|
||||||
|
|
||||||
|
=head2 command
|
||||||
|
|
||||||
|
data_type: 'text'
|
||||||
|
is_nullable: 0
|
||||||
|
|
||||||
|
=head2 start_time
|
||||||
|
|
||||||
|
data_type: 'integer'
|
||||||
|
is_nullable: 1
|
||||||
|
|
||||||
|
=head2 end_time
|
||||||
|
|
||||||
|
data_type: 'integer'
|
||||||
|
is_nullable: 1
|
||||||
|
|
||||||
|
=head2 error_number
|
||||||
|
|
||||||
|
data_type: 'integer'
|
||||||
|
is_nullable: 1
|
||||||
|
|
||||||
|
=head2 exit_code
|
||||||
|
|
||||||
|
data_type: 'integer'
|
||||||
|
is_nullable: 1
|
||||||
|
|
||||||
|
=head2 signal
|
||||||
|
|
||||||
|
data_type: 'integer'
|
||||||
|
is_nullable: 1
|
||||||
|
|
||||||
|
=head2 core_dumped
|
||||||
|
|
||||||
|
data_type: 'boolean'
|
||||||
|
is_nullable: 1
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
__PACKAGE__->add_columns(
|
||||||
|
"id",
|
||||||
|
{
|
||||||
|
data_type => "integer",
|
||||||
|
is_auto_increment => 1,
|
||||||
|
is_nullable => 0,
|
||||||
|
sequence => "runcommandlogs_id_seq",
|
||||||
|
},
|
||||||
|
"job_matcher",
|
||||||
|
{ data_type => "text", is_nullable => 0 },
|
||||||
|
"build_id",
|
||||||
|
{ data_type => "integer", is_foreign_key => 1, is_nullable => 0 },
|
||||||
|
"command",
|
||||||
|
{ data_type => "text", is_nullable => 0 },
|
||||||
|
"start_time",
|
||||||
|
{ data_type => "integer", is_nullable => 1 },
|
||||||
|
"end_time",
|
||||||
|
{ data_type => "integer", is_nullable => 1 },
|
||||||
|
"error_number",
|
||||||
|
{ data_type => "integer", is_nullable => 1 },
|
||||||
|
"exit_code",
|
||||||
|
{ data_type => "integer", is_nullable => 1 },
|
||||||
|
"signal",
|
||||||
|
{ data_type => "integer", is_nullable => 1 },
|
||||||
|
"core_dumped",
|
||||||
|
{ data_type => "boolean", is_nullable => 1 },
|
||||||
|
);
|
||||||
|
|
||||||
|
=head1 PRIMARY KEY
|
||||||
|
|
||||||
|
=over 4
|
||||||
|
|
||||||
|
=item * L</id>
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
__PACKAGE__->set_primary_key("id");
|
||||||
|
|
||||||
|
=head1 RELATIONS
|
||||||
|
|
||||||
|
=head2 build
|
||||||
|
|
||||||
|
Type: belongs_to
|
||||||
|
|
||||||
|
Related object: L<Hydra::Schema::Result::Builds>
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
__PACKAGE__->belongs_to(
|
||||||
|
"build",
|
||||||
|
"Hydra::Schema::Result::Builds",
|
||||||
|
{ id => "build_id" },
|
||||||
|
{ is_deferrable => 0, on_delete => "CASCADE", on_update => "NO ACTION" },
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2021-11-18 12:35:52
|
||||||
|
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:N0G71diB8DNDgkYgaSQrFA
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# You can replace this text with custom code or comments, and it will be preserved on regeneration
|
||||||
|
1;
|
|
@ -562,6 +562,55 @@ create table TaskRetries (
|
||||||
);
|
);
|
||||||
create index IndexTaskRetriesOrdered on TaskRetries(retry_at asc);
|
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.
|
-- The output paths that have permanently failed.
|
||||||
create table FailedPaths (
|
create table FailedPaths (
|
||||||
path text primary key not null
|
path text primary key not null
|
||||||
|
|
|
@ -38,6 +38,7 @@ make_schema_at("Hydra::Schema", {
|
||||||
"nrbuilds" => "NrBuilds",
|
"nrbuilds" => "NrBuilds",
|
||||||
"projectmembers" => "ProjectMembers",
|
"projectmembers" => "ProjectMembers",
|
||||||
"projects" => "Projects",
|
"projects" => "Projects",
|
||||||
|
"runcommandlogs" => "RunCommandLogs",
|
||||||
"schemaversion" => "SchemaVersion",
|
"schemaversion" => "SchemaVersion",
|
||||||
"starredjobs" => "StarredJobs",
|
"starredjobs" => "StarredJobs",
|
||||||
"systemstatus" => "SystemStatus",
|
"systemstatus" => "SystemStatus",
|
||||||
|
|
Loading…
Reference in a new issue