Skip to content

Commit 3cfc7d8

Browse files
authored
[+] add timetable.execution_log.ignore_error column, closes #629 (#630)
* [+] add `timetable.execution_log.ignore_error` column, closes #629
1 parent ffb8705 commit 3cfc7d8

File tree

7 files changed

+28
-17
lines changed

7 files changed

+28
-17
lines changed

internal/pgengine/access.go

+4-3
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,12 @@ func (pge *PgEngine) IsAlive() bool {
3030
// LogTaskExecution will log current chain element execution status including retcode
3131
func (pge *PgEngine) LogTaskExecution(ctx context.Context, task *ChainTask, retCode int, output string) {
3232
_, err := pge.ConfigDb.Exec(ctx, `INSERT INTO timetable.execution_log (
33-
chain_id, task_id, command, kind, last_run, finished, returncode, pid, output, client_name, txid)
34-
VALUES ($1, $2, $3, $4, clock_timestamp() - $5 :: interval, clock_timestamp(), $6, $7, NULLIF($8, ''), $9, $10)`,
33+
chain_id, task_id, command, kind, last_run, finished, returncode, pid, output, client_name, txid, ignore_error)
34+
VALUES ($1, $2, $3, $4, clock_timestamp() - $5 :: interval, clock_timestamp(), $6, $7, NULLIF($8, ''), $9, $10, $11)`,
3535
task.ChainID, task.TaskID, task.Script, task.Kind,
3636
fmt.Sprintf("%f seconds", float64(task.Duration)/1000000),
37-
retCode, pge.Getsid(), strings.TrimSpace(output), pge.ClientName, task.Txid)
37+
retCode, pge.Getsid(), strings.TrimSpace(output), pge.ClientName, task.Txid,
38+
task.IgnoreError)
3839
if err != nil {
3940
pge.l.WithError(err).Error("Failed to log chain element execution status")
4041
}

internal/pgengine/access_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ func TestLogChainElementExecution(t *testing.T) {
107107
t.Run("Check LogChainElementExecution if sql fails", func(t *testing.T) {
108108
mockPool.ExpectExec("INSERT INTO .*execution_log").WithArgs(
109109
pgxmock.AnyArg(), pgxmock.AnyArg(), pgxmock.AnyArg(), pgxmock.AnyArg(), pgxmock.AnyArg(), pgxmock.AnyArg(),
110-
pgxmock.AnyArg(), pgxmock.AnyArg(), pgxmock.AnyArg(), pgxmock.AnyArg()).
110+
pgxmock.AnyArg(), pgxmock.AnyArg(), pgxmock.AnyArg(), pgxmock.AnyArg(), pgxmock.AnyArg()).
111111
WillReturnError(errors.New("Failed to log chain element execution status"))
112112
pge.LogTaskExecution(context.Background(), &pgengine.ChainTask{}, 0, "STATUS")
113113
})

internal/pgengine/migration.go

+6
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,12 @@ var Migrations func() migrator.Option = func() migrator.Option {
135135
return ExecuteMigrationScript(ctx, tx, "00575.sql")
136136
},
137137
},
138+
&migrator.Migration{
139+
Name: "00629 Add ignore_error column to timetable.execution_log",
140+
Func: func(ctx context.Context, tx pgx.Tx) error {
141+
return ExecuteMigrationScript(ctx, tx, "00629.sql")
142+
},
143+
},
138144
// adding new migration here, update "timetable"."migration" in "sql/init.sql"
139145
// and "dbapi" variable in main.go!
140146

internal/pgengine/sql/ddl.sql

+12-11
Original file line numberDiff line numberDiff line change
@@ -105,17 +105,18 @@ COMMENT ON TABLE timetable.log IS
105105
'Stores log entries of active sessions';
106106

107107
CREATE TABLE timetable.execution_log (
108-
chain_id BIGINT,
109-
task_id BIGINT,
110-
txid BIGINT NOT NULL,
111-
last_run TIMESTAMPTZ DEFAULT now(),
112-
finished TIMESTAMPTZ,
113-
pid BIGINT,
114-
returncode INTEGER,
115-
kind timetable.command_kind,
116-
command TEXT,
117-
output TEXT,
118-
client_name TEXT NOT NULL
108+
chain_id BIGINT,
109+
task_id BIGINT,
110+
txid BIGINT NOT NULL,
111+
last_run TIMESTAMPTZ DEFAULT now(),
112+
finished TIMESTAMPTZ,
113+
pid BIGINT,
114+
returncode INTEGER,
115+
ignore_error BOOLEAN,
116+
kind timetable.command_kind,
117+
command TEXT,
118+
output TEXT,
119+
client_name TEXT NOT NULL
119120
);
120121

121122
COMMENT ON TABLE timetable.execution_log IS

internal/pgengine/sql/init.sql

+2-1
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,5 @@ VALUES
2525
(9, '00534 Use cron_split_to_arrays() in cron domain check'),
2626
(10, '00560 Alter txid column to bigint'),
2727
(11, '00573 Add ability to start a chain with delay'),
28-
(12, '00575 Add on_error handling');
28+
(12, '00575 Add on_error handling'),
29+
(13, '00629 Add ignore_error column to timetable.execution_log');
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
ALTER TABLE timetable.execution_log
2+
ADD COLUMN ignore_error BOOLEAN;

main.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ var (
5454
commit = "000000"
5555
version = "master"
5656
date = "unknown"
57-
dbapi = "00573"
57+
dbapi = "00629"
5858
)
5959

6060
func printVersion() {

0 commit comments

Comments
 (0)