mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
fix(coderd/database): remove column updated_at from provisioner_daemons table (#11108)
This commit is contained in:
Generated
-4
@@ -9669,10 +9669,6 @@ const docTemplate = `{
|
|||||||
"type": "string"
|
"type": "string"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"updated_at": {
|
|
||||||
"type": "string",
|
|
||||||
"format": "date-time"
|
|
||||||
},
|
|
||||||
"version": {
|
"version": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
}
|
}
|
||||||
|
|||||||
Generated
-4
@@ -8696,10 +8696,6 @@
|
|||||||
"type": "string"
|
"type": "string"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"updated_at": {
|
|
||||||
"type": "string",
|
|
||||||
"format": "date-time"
|
|
||||||
},
|
|
||||||
"version": {
|
"version": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1145,7 +1145,7 @@ func (q *FakeQuerier) DeleteOldProvisionerDaemons(_ context.Context) error {
|
|||||||
|
|
||||||
var validDaemons []database.ProvisionerDaemon
|
var validDaemons []database.ProvisionerDaemon
|
||||||
for _, p := range q.provisionerDaemons {
|
for _, p := range q.provisionerDaemons {
|
||||||
if (p.CreatedAt.Before(weekAgo) && !p.UpdatedAt.Valid) || (p.UpdatedAt.Valid && p.UpdatedAt.Time.Before(weekAgo)) {
|
if (p.CreatedAt.Before(weekAgo) && !p.LastSeenAt.Valid) || (p.LastSeenAt.Valid && p.LastSeenAt.Time.Before(weekAgo)) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
validDaemons = append(validDaemons, p)
|
validDaemons = append(validDaemons, p)
|
||||||
@@ -4950,11 +4950,10 @@ func (q *FakeQuerier) InsertProvisionerDaemon(_ context.Context, arg database.In
|
|||||||
|
|
||||||
daemon := database.ProvisionerDaemon{
|
daemon := database.ProvisionerDaemon{
|
||||||
ID: arg.ID,
|
ID: arg.ID,
|
||||||
CreatedAt: arg.CreatedAt,
|
|
||||||
Name: arg.Name,
|
Name: arg.Name,
|
||||||
Provisioners: arg.Provisioners,
|
Provisioners: arg.Provisioners,
|
||||||
Tags: arg.Tags,
|
Tags: arg.Tags,
|
||||||
UpdatedAt: arg.UpdatedAt,
|
LastSeenAt: arg.LastSeenAt,
|
||||||
}
|
}
|
||||||
q.provisionerDaemons = append(q.provisionerDaemons, daemon)
|
q.provisionerDaemons = append(q.provisionerDaemons, daemon)
|
||||||
return daemon, nil
|
return daemon, nil
|
||||||
|
|||||||
@@ -215,7 +215,7 @@ func TestDeleteOldProvisionerDaemons(t *testing.T) {
|
|||||||
Name: "external-0",
|
Name: "external-0",
|
||||||
Provisioners: []database.ProvisionerType{"echo"},
|
Provisioners: []database.ProvisionerType{"echo"},
|
||||||
CreatedAt: now.Add(-14 * 24 * time.Hour),
|
CreatedAt: now.Add(-14 * 24 * time.Hour),
|
||||||
UpdatedAt: sql.NullTime{Valid: true, Time: now.Add(-7 * 24 * time.Hour).Add(time.Minute)},
|
LastSeenAt: sql.NullTime{Valid: true, Time: now.Add(-7 * 24 * time.Hour).Add(time.Minute)},
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
_, err = db.InsertProvisionerDaemon(ctx, database.InsertProvisionerDaemonParams{
|
_, err = db.InsertProvisionerDaemon(ctx, database.InsertProvisionerDaemonParams{
|
||||||
@@ -224,7 +224,7 @@ func TestDeleteOldProvisionerDaemons(t *testing.T) {
|
|||||||
Name: "external-1",
|
Name: "external-1",
|
||||||
Provisioners: []database.ProvisionerType{"echo"},
|
Provisioners: []database.ProvisionerType{"echo"},
|
||||||
CreatedAt: now.Add(-8 * 24 * time.Hour),
|
CreatedAt: now.Add(-8 * 24 * time.Hour),
|
||||||
UpdatedAt: sql.NullTime{Valid: true, Time: now.Add(-8 * 24 * time.Hour).Add(time.Hour)},
|
LastSeenAt: sql.NullTime{Valid: true, Time: now.Add(-8 * 24 * time.Hour).Add(time.Hour)},
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
_, err = db.InsertProvisionerDaemon(ctx, database.InsertProvisionerDaemonParams{
|
_, err = db.InsertProvisionerDaemon(ctx, database.InsertProvisionerDaemonParams{
|
||||||
@@ -241,7 +241,7 @@ func TestDeleteOldProvisionerDaemons(t *testing.T) {
|
|||||||
Name: "external-3",
|
Name: "external-3",
|
||||||
Provisioners: []database.ProvisionerType{"echo"},
|
Provisioners: []database.ProvisionerType{"echo"},
|
||||||
CreatedAt: now.Add(-6 * 24 * time.Hour),
|
CreatedAt: now.Add(-6 * 24 * time.Hour),
|
||||||
UpdatedAt: sql.NullTime{Valid: true, Time: now.Add(-6 * 24 * time.Hour)},
|
LastSeenAt: sql.NullTime{Valid: true, Time: now.Add(-6 * 24 * time.Hour)},
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
|||||||
Generated
-1
@@ -509,7 +509,6 @@ CREATE TABLE parameter_values (
|
|||||||
CREATE TABLE provisioner_daemons (
|
CREATE TABLE provisioner_daemons (
|
||||||
id uuid NOT NULL,
|
id uuid NOT NULL,
|
||||||
created_at timestamp with time zone NOT NULL,
|
created_at timestamp with time zone NOT NULL,
|
||||||
updated_at timestamp with time zone,
|
|
||||||
name character varying(64) NOT NULL,
|
name character varying(64) NOT NULL,
|
||||||
provisioners provisioner_type[] NOT NULL,
|
provisioners provisioner_type[] NOT NULL,
|
||||||
replica_id uuid,
|
replica_id uuid,
|
||||||
|
|||||||
@@ -0,0 +1,2 @@
|
|||||||
|
ALTER TABLE provisioner_daemons
|
||||||
|
ADD COLUMN updated_at timestamp with time zone;
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
ALTER TABLE provisioner_daemons DROP COLUMN updated_at;
|
||||||
@@ -1839,7 +1839,6 @@ type ParameterValue struct {
|
|||||||
type ProvisionerDaemon struct {
|
type ProvisionerDaemon struct {
|
||||||
ID uuid.UUID `db:"id" json:"id"`
|
ID uuid.UUID `db:"id" json:"id"`
|
||||||
CreatedAt time.Time `db:"created_at" json:"created_at"`
|
CreatedAt time.Time `db:"created_at" json:"created_at"`
|
||||||
UpdatedAt sql.NullTime `db:"updated_at" json:"updated_at"`
|
|
||||||
Name string `db:"name" json:"name"`
|
Name string `db:"name" json:"name"`
|
||||||
Provisioners []ProvisionerType `db:"provisioners" json:"provisioners"`
|
Provisioners []ProvisionerType `db:"provisioners" json:"provisioners"`
|
||||||
ReplicaID uuid.NullUUID `db:"replica_id" json:"replica_id"`
|
ReplicaID uuid.NullUUID `db:"replica_id" json:"replica_id"`
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ type sqlcQuerier interface {
|
|||||||
DeleteLicense(ctx context.Context, id int32) (int32, error)
|
DeleteLicense(ctx context.Context, id int32) (int32, error)
|
||||||
// Delete provisioner daemons that have been created at least a week ago
|
// Delete provisioner daemons that have been created at least a week ago
|
||||||
// and have not connected to coderd since a week.
|
// and have not connected to coderd since a week.
|
||||||
// A provisioner daemon with "zeroed" updated_at column indicates possible
|
// A provisioner daemon with "zeroed" last_seen_at column indicates possible
|
||||||
// connectivity issues (no provisioner daemon activity since registration).
|
// connectivity issues (no provisioner daemon activity since registration).
|
||||||
DeleteOldProvisionerDaemons(ctx context.Context) error
|
DeleteOldProvisionerDaemons(ctx context.Context) error
|
||||||
// If an agent hasn't connected in the last 7 days, we purge it's logs.
|
// If an agent hasn't connected in the last 7 days, we purge it's logs.
|
||||||
|
|||||||
@@ -3003,14 +3003,14 @@ func (q *sqlQuerier) GetParameterSchemasByJobID(ctx context.Context, jobID uuid.
|
|||||||
|
|
||||||
const deleteOldProvisionerDaemons = `-- name: DeleteOldProvisionerDaemons :exec
|
const deleteOldProvisionerDaemons = `-- name: DeleteOldProvisionerDaemons :exec
|
||||||
DELETE FROM provisioner_daemons WHERE (
|
DELETE FROM provisioner_daemons WHERE (
|
||||||
(created_at < (NOW() - INTERVAL '7 days') AND updated_at IS NULL) OR
|
(created_at < (NOW() - INTERVAL '7 days') AND last_seen_at IS NULL) OR
|
||||||
(updated_at IS NOT NULL AND updated_at < (NOW() - INTERVAL '7 days'))
|
(last_seen_at IS NOT NULL AND last_seen_at < (NOW() - INTERVAL '7 days'))
|
||||||
)
|
)
|
||||||
`
|
`
|
||||||
|
|
||||||
// Delete provisioner daemons that have been created at least a week ago
|
// Delete provisioner daemons that have been created at least a week ago
|
||||||
// and have not connected to coderd since a week.
|
// and have not connected to coderd since a week.
|
||||||
// A provisioner daemon with "zeroed" updated_at column indicates possible
|
// A provisioner daemon with "zeroed" last_seen_at column indicates possible
|
||||||
// connectivity issues (no provisioner daemon activity since registration).
|
// connectivity issues (no provisioner daemon activity since registration).
|
||||||
func (q *sqlQuerier) DeleteOldProvisionerDaemons(ctx context.Context) error {
|
func (q *sqlQuerier) DeleteOldProvisionerDaemons(ctx context.Context) error {
|
||||||
_, err := q.db.ExecContext(ctx, deleteOldProvisionerDaemons)
|
_, err := q.db.ExecContext(ctx, deleteOldProvisionerDaemons)
|
||||||
@@ -3019,7 +3019,7 @@ func (q *sqlQuerier) DeleteOldProvisionerDaemons(ctx context.Context) error {
|
|||||||
|
|
||||||
const getProvisionerDaemons = `-- name: GetProvisionerDaemons :many
|
const getProvisionerDaemons = `-- name: GetProvisionerDaemons :many
|
||||||
SELECT
|
SELECT
|
||||||
id, created_at, updated_at, name, provisioners, replica_id, tags, last_seen_at, version
|
id, created_at, name, provisioners, replica_id, tags, last_seen_at, version
|
||||||
FROM
|
FROM
|
||||||
provisioner_daemons
|
provisioner_daemons
|
||||||
`
|
`
|
||||||
@@ -3036,7 +3036,6 @@ func (q *sqlQuerier) GetProvisionerDaemons(ctx context.Context) ([]ProvisionerDa
|
|||||||
if err := rows.Scan(
|
if err := rows.Scan(
|
||||||
&i.ID,
|
&i.ID,
|
||||||
&i.CreatedAt,
|
&i.CreatedAt,
|
||||||
&i.UpdatedAt,
|
|
||||||
&i.Name,
|
&i.Name,
|
||||||
pq.Array(&i.Provisioners),
|
pq.Array(&i.Provisioners),
|
||||||
&i.ReplicaID,
|
&i.ReplicaID,
|
||||||
@@ -3065,10 +3064,10 @@ INSERT INTO
|
|||||||
"name",
|
"name",
|
||||||
provisioners,
|
provisioners,
|
||||||
tags,
|
tags,
|
||||||
updated_at
|
last_seen_at
|
||||||
)
|
)
|
||||||
VALUES
|
VALUES
|
||||||
($1, $2, $3, $4, $5, $6) RETURNING id, created_at, updated_at, name, provisioners, replica_id, tags, last_seen_at, version
|
($1, $2, $3, $4, $5, $6) RETURNING id, created_at, name, provisioners, replica_id, tags, last_seen_at, version
|
||||||
`
|
`
|
||||||
|
|
||||||
type InsertProvisionerDaemonParams struct {
|
type InsertProvisionerDaemonParams struct {
|
||||||
@@ -3077,7 +3076,7 @@ type InsertProvisionerDaemonParams struct {
|
|||||||
Name string `db:"name" json:"name"`
|
Name string `db:"name" json:"name"`
|
||||||
Provisioners []ProvisionerType `db:"provisioners" json:"provisioners"`
|
Provisioners []ProvisionerType `db:"provisioners" json:"provisioners"`
|
||||||
Tags StringMap `db:"tags" json:"tags"`
|
Tags StringMap `db:"tags" json:"tags"`
|
||||||
UpdatedAt sql.NullTime `db:"updated_at" json:"updated_at"`
|
LastSeenAt sql.NullTime `db:"last_seen_at" json:"last_seen_at"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (q *sqlQuerier) InsertProvisionerDaemon(ctx context.Context, arg InsertProvisionerDaemonParams) (ProvisionerDaemon, error) {
|
func (q *sqlQuerier) InsertProvisionerDaemon(ctx context.Context, arg InsertProvisionerDaemonParams) (ProvisionerDaemon, error) {
|
||||||
@@ -3087,13 +3086,12 @@ func (q *sqlQuerier) InsertProvisionerDaemon(ctx context.Context, arg InsertProv
|
|||||||
arg.Name,
|
arg.Name,
|
||||||
pq.Array(arg.Provisioners),
|
pq.Array(arg.Provisioners),
|
||||||
arg.Tags,
|
arg.Tags,
|
||||||
arg.UpdatedAt,
|
arg.LastSeenAt,
|
||||||
)
|
)
|
||||||
var i ProvisionerDaemon
|
var i ProvisionerDaemon
|
||||||
err := row.Scan(
|
err := row.Scan(
|
||||||
&i.ID,
|
&i.ID,
|
||||||
&i.CreatedAt,
|
&i.CreatedAt,
|
||||||
&i.UpdatedAt,
|
|
||||||
&i.Name,
|
&i.Name,
|
||||||
pq.Array(&i.Provisioners),
|
pq.Array(&i.Provisioners),
|
||||||
&i.ReplicaID,
|
&i.ReplicaID,
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ INSERT INTO
|
|||||||
"name",
|
"name",
|
||||||
provisioners,
|
provisioners,
|
||||||
tags,
|
tags,
|
||||||
updated_at
|
last_seen_at
|
||||||
)
|
)
|
||||||
VALUES
|
VALUES
|
||||||
($1, $2, $3, $4, $5, $6) RETURNING *;
|
($1, $2, $3, $4, $5, $6) RETURNING *;
|
||||||
@@ -20,9 +20,9 @@ VALUES
|
|||||||
-- name: DeleteOldProvisionerDaemons :exec
|
-- name: DeleteOldProvisionerDaemons :exec
|
||||||
-- Delete provisioner daemons that have been created at least a week ago
|
-- Delete provisioner daemons that have been created at least a week ago
|
||||||
-- and have not connected to coderd since a week.
|
-- and have not connected to coderd since a week.
|
||||||
-- A provisioner daemon with "zeroed" updated_at column indicates possible
|
-- A provisioner daemon with "zeroed" last_seen_at column indicates possible
|
||||||
-- connectivity issues (no provisioner daemon activity since registration).
|
-- connectivity issues (no provisioner daemon activity since registration).
|
||||||
DELETE FROM provisioner_daemons WHERE (
|
DELETE FROM provisioner_daemons WHERE (
|
||||||
(created_at < (NOW() - INTERVAL '7 days') AND updated_at IS NULL) OR
|
(created_at < (NOW() - INTERVAL '7 days') AND last_seen_at IS NULL) OR
|
||||||
(updated_at IS NOT NULL AND updated_at < (NOW() - INTERVAL '7 days'))
|
(last_seen_at IS NOT NULL AND last_seen_at < (NOW() - INTERVAL '7 days'))
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -38,7 +38,6 @@ const (
|
|||||||
type ProvisionerDaemon struct {
|
type ProvisionerDaemon struct {
|
||||||
ID uuid.UUID `json:"id" format:"uuid"`
|
ID uuid.UUID `json:"id" format:"uuid"`
|
||||||
CreatedAt time.Time `json:"created_at" format:"date-time"`
|
CreatedAt time.Time `json:"created_at" format:"date-time"`
|
||||||
UpdatedAt NullTime `json:"updated_at,omitempty" format:"date-time"`
|
|
||||||
LastSeenAt NullTime `json:"last_seen_at,omitempty" format:"date-time"`
|
LastSeenAt NullTime `json:"last_seen_at,omitempty" format:"date-time"`
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
Version string `json:"version"`
|
Version string `json:"version"`
|
||||||
|
|||||||
Generated
-2
@@ -707,7 +707,6 @@ curl -X GET http://coder-server:8080/api/v2/organizations/{organization}/provisi
|
|||||||
"property1": "string",
|
"property1": "string",
|
||||||
"property2": "string"
|
"property2": "string"
|
||||||
},
|
},
|
||||||
"updated_at": "2019-08-24T14:15:22Z",
|
|
||||||
"version": "string"
|
"version": "string"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -733,7 +732,6 @@ Status Code **200**
|
|||||||
| `» provisioners` | array | false | | |
|
| `» provisioners` | array | false | | |
|
||||||
| `» tags` | object | false | | |
|
| `» tags` | object | false | | |
|
||||||
| `»» [any property]` | string | false | | |
|
| `»» [any property]` | string | false | | |
|
||||||
| `» updated_at` | string(date-time) | false | | |
|
|
||||||
| `» version` | string | false | | |
|
| `» version` | string | false | | |
|
||||||
|
|
||||||
To perform this operation, you must be authenticated. [Learn more](authentication.md).
|
To perform this operation, you must be authenticated. [Learn more](authentication.md).
|
||||||
|
|||||||
Generated
-2
@@ -3827,7 +3827,6 @@ AuthorizationObject can represent a "set" of objects, such as: all workspaces in
|
|||||||
"property1": "string",
|
"property1": "string",
|
||||||
"property2": "string"
|
"property2": "string"
|
||||||
},
|
},
|
||||||
"updated_at": "2019-08-24T14:15:22Z",
|
|
||||||
"version": "string"
|
"version": "string"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
@@ -3843,7 +3842,6 @@ AuthorizationObject can represent a "set" of objects, such as: all workspaces in
|
|||||||
| `provisioners` | array of string | false | | |
|
| `provisioners` | array of string | false | | |
|
||||||
| `tags` | object | false | | |
|
| `tags` | object | false | | |
|
||||||
| » `[any property]` | string | false | | |
|
| » `[any property]` | string | false | | |
|
||||||
| `updated_at` | string | false | | |
|
|
||||||
| `version` | string | false | | |
|
| `version` | string | false | | |
|
||||||
|
|
||||||
## codersdk.ProvisionerJob
|
## codersdk.ProvisionerJob
|
||||||
|
|||||||
@@ -320,7 +320,6 @@ func convertProvisionerDaemon(daemon database.ProvisionerDaemon) codersdk.Provis
|
|||||||
result := codersdk.ProvisionerDaemon{
|
result := codersdk.ProvisionerDaemon{
|
||||||
ID: daemon.ID,
|
ID: daemon.ID,
|
||||||
CreatedAt: daemon.CreatedAt,
|
CreatedAt: daemon.CreatedAt,
|
||||||
UpdatedAt: codersdk.NullTime{NullTime: daemon.UpdatedAt},
|
|
||||||
LastSeenAt: codersdk.NullTime{NullTime: daemon.LastSeenAt},
|
LastSeenAt: codersdk.NullTime{NullTime: daemon.LastSeenAt},
|
||||||
Name: daemon.Name,
|
Name: daemon.Name,
|
||||||
Tags: daemon.Tags,
|
Tags: daemon.Tags,
|
||||||
|
|||||||
Generated
-1
@@ -777,7 +777,6 @@ export interface ProvisionerConfig {
|
|||||||
export interface ProvisionerDaemon {
|
export interface ProvisionerDaemon {
|
||||||
readonly id: string;
|
readonly id: string;
|
||||||
readonly created_at: string;
|
readonly created_at: string;
|
||||||
readonly updated_at?: string;
|
|
||||||
readonly last_seen_at?: string;
|
readonly last_seen_at?: string;
|
||||||
readonly name: string;
|
readonly name: string;
|
||||||
readonly version: string;
|
readonly version: string;
|
||||||
|
|||||||
@@ -327,7 +327,6 @@ export const SuspendedMockUser: TypesGen.User = {
|
|||||||
|
|
||||||
export const MockProvisioner: TypesGen.ProvisionerDaemon = {
|
export const MockProvisioner: TypesGen.ProvisionerDaemon = {
|
||||||
created_at: "2022-05-17T17:39:01.382927298Z",
|
created_at: "2022-05-17T17:39:01.382927298Z",
|
||||||
updated_at: "2022-05-17T17:39:01.382927298Z",
|
|
||||||
id: "test-provisioner",
|
id: "test-provisioner",
|
||||||
name: "Test Provisioner",
|
name: "Test Provisioner",
|
||||||
provisioners: ["echo"],
|
provisioners: ["echo"],
|
||||||
|
|||||||
Reference in New Issue
Block a user