Fix PBS job task history filters

This commit is contained in:
rcourtman
2026-05-13 17:09:45 +01:00
parent d55888fb7f
commit 21fd49d98d
2 changed files with 66 additions and 6 deletions
+14 -6
View File
@@ -1165,6 +1165,14 @@ type taskHistoryQuery struct {
Until int64
}
const (
pbsTaskTypeBackup = "backup"
pbsTaskTypeSyncJob = "syncjob"
pbsTaskTypeVerificationJob = "verificationjob"
pbsTaskTypePruneJob = "prunejob"
pbsTaskTypeGarbageCollection = "garbage_collection"
)
func (c *Client) listTaskHistory(ctx context.Context, datastores []string, opts JobHealthOptions) ([]JobHealthEvidence, []JobHealthEvidence, error) {
now := time.Now()
until := now.Unix()
@@ -1235,24 +1243,24 @@ func buildTaskHistoryQueries(datastores []string, opts JobHealthOptions, since,
if opts.MonitorBackups {
stores := uniqueNonEmptyStrings(datastores)
if len(stores) == 0 {
add("backup", "backup", "")
add("backup", pbsTaskTypeBackup, "")
} else {
for _, store := range stores {
add("backup", "backup", store)
add("backup", pbsTaskTypeBackup, store)
}
}
}
if opts.MonitorSyncJobs {
add("sync", "sync", "")
add("sync", pbsTaskTypeSyncJob, "")
}
if opts.MonitorVerifyJobs {
add("verify", "verif", "")
add("verify", pbsTaskTypeVerificationJob, "")
}
if opts.MonitorPruneJobs {
add("prune", "prune", "")
add("prune", pbsTaskTypePruneJob, "")
}
if opts.MonitorGarbageJobs {
add("garbage", "garbage", "")
add("garbage", pbsTaskTypeGarbageCollection, "")
}
return queries
}
+52
View File
@@ -136,6 +136,58 @@ func TestClient_GetJobHealthEvidence_MergesConfigAndTaskFacts(t *testing.T) {
}
}
func TestPBSJobTaskHistoryQueries_UsesWorkerTypeFilters(t *testing.T) {
queries := buildTaskHistoryQueries([]string{"fast", "fast", "slow"}, JobHealthOptions{
MonitorBackups: true,
MonitorSyncJobs: true,
MonitorVerifyJobs: true,
MonitorPruneJobs: true,
MonitorGarbageJobs: true,
}, 1700000000, 1700003600)
got := make(map[string][]taskHistoryQuery)
for _, query := range queries {
got[query.Family] = append(got[query.Family], query)
if query.Since != 1700000000 || query.Until != 1700003600 {
t.Fatalf("query %s bounds = (%d, %d), want (1700000000, 1700003600)", query.Family, query.Since, query.Until)
}
}
backupQueries := got["backup"]
if len(backupQueries) != 2 {
t.Fatalf("backup query count = %d, want 2: %#v", len(backupQueries), backupQueries)
}
backupStores := map[string]bool{}
for _, query := range backupQueries {
if query.TypeFilter != "backup" {
t.Fatalf("backup typefilter = %q, want backup", query.TypeFilter)
}
backupStores[query.Store] = true
}
if !backupStores["fast"] || !backupStores["slow"] {
t.Fatalf("backup stores = %#v, want fast and slow", backupStores)
}
for family, want := range map[string]string{
"sync": "syncjob",
"verify": "verificationjob",
"prune": "prunejob",
"garbage": "garbage_collection",
} {
familyQueries := got[family]
if len(familyQueries) != 1 {
t.Fatalf("%s query count = %d, want 1: %#v", family, len(familyQueries), familyQueries)
}
query := familyQueries[0]
if query.TypeFilter != want {
t.Fatalf("%s typefilter = %q, want %q", family, query.TypeFilter, want)
}
if query.Store != "" {
t.Fatalf("%s store filter = %q, want empty", family, query.Store)
}
}
}
func TestClient_GetJobHealthEvidence_UsesBoundedFilteredTaskHistory(t *testing.T) {
oldLimit := pbsTaskHistoryPageLimit
oldPages := pbsTaskHistoryMaxPages