From 5d376e6865a1c48469c129075f7c72839a7c577e Mon Sep 17 00:00:00 2001 From: Christoph Kluge Date: Wed, 14 Jan 2026 16:03:34 +0100 Subject: [PATCH 1/5] fix clustername array init size --- web/web.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/web.go b/web/web.go index 6ff01403..b4c3749a 100644 --- a/web/web.go +++ b/web/web.go @@ -261,7 +261,7 @@ func RenderTemplate(rw http.ResponseWriter, file string, page *Page) { } if page.Clusters == nil { - page.Clusters = make([]string, 2) + page.Clusters = make([]string, 0) } if page.SubClusters == nil { From 94b86ef11acf8844ae7037b44ba67a6c56c37d23 Mon Sep 17 00:00:00 2001 From: Michael Panzlaff Date: Wed, 14 Jan 2026 16:06:35 +0100 Subject: [PATCH 2/5] Mismatched event types are not something to be concerned about If a different CCMessage type was sent over the same subject as requested, that shouldn't raise a warning. This may happen in production instances, but in order to ease debugging, lower it to 'debug' level. --- internal/api/nats.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/api/nats.go b/internal/api/nats.go index 48c6449b..9fdfbbb2 100644 --- a/internal/api/nats.go +++ b/internal/api/nats.go @@ -152,14 +152,14 @@ func (api *NatsAPI) handleJobEvent(subject string, data []byte) { } if !m.IsEvent() { - cclog.Warnf("NATS %s: received non-event message, skipping", subject) + cclog.Debugf("NATS %s: received non-event message, skipping", subject) continue } if m.Name() == "job" { api.processJobEvent(m) } else { - cclog.Warnf("NATS %s: unexpected measurement name '%s', expected 'job'", subject, m.Name()) + cclog.Debugf("NATS %s: unexpected measurement name '%s', expected 'job'", subject, m.Name()) } } } From 9deee54e41566fd4ab930a1382ae38951f0952eb Mon Sep 17 00:00:00 2001 From: Christoph Kluge Date: Wed, 14 Jan 2026 17:18:21 +0100 Subject: [PATCH 3/5] make nextPage query conditional if no return limit is requested --- internal/graph/schema.resolvers.go | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/internal/graph/schema.resolvers.go b/internal/graph/schema.resolvers.go index 2cb4f992..920dfe57 100644 --- a/internal/graph/schema.resolvers.go +++ b/internal/graph/schema.resolvers.go @@ -590,21 +590,24 @@ func (r *queryResolver) Jobs(ctx context.Context, filter []*model.JobFilter, pag // Note: Even if App-Default 'config.Keys.UiDefaults["job_list_usePaging"]' is set, always return hasNextPage boolean. // Users can decide in frontend to use continuous scroll, even if app-default is paging! + // Skip if page.ItemsPerPage == -1 ("Load All" -> No Next Page required, Status Dashboards) /* Example Page 4 @ 10 IpP : Does item 41 exist? Minimal Page 41 @ 1 IpP : If len(result) is 1, Page 5 @ 10 IpP exists. */ - nextPage := &model.PageRequest{ - ItemsPerPage: 1, - Page: ((page.Page * page.ItemsPerPage) + 1), + hasNextPage := false + if page.ItemsPerPage != -1 { + nextPage := &model.PageRequest{ + ItemsPerPage: 1, + Page: ((page.Page * page.ItemsPerPage) + 1), + } + nextJobs, err := r.Repo.QueryJobs(ctx, filter, nextPage, order) + if err != nil { + cclog.Warn("Error while querying next jobs") + return nil, err + } + hasNextPage = len(nextJobs) == 1 } - nextJobs, err := r.Repo.QueryJobs(ctx, filter, nextPage, order) - if err != nil { - cclog.Warn("Error while querying next jobs") - return nil, err - } - - hasNextPage := len(nextJobs) == 1 return &model.JobResultList{Items: jobs, Count: &count, HasNextPage: &hasNextPage}, nil } From e5c620ca2050c4098c87d8691d76f6d2256b7c3b Mon Sep 17 00:00:00 2001 From: Christoph Kluge Date: Wed, 14 Jan 2026 19:22:31 +0100 Subject: [PATCH 4/5] filter metrics for NodeMetrics query --- internal/graph/schema.resolvers.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/internal/graph/schema.resolvers.go b/internal/graph/schema.resolvers.go index 920dfe57..881d07e9 100644 --- a/internal/graph/schema.resolvers.go +++ b/internal/graph/schema.resolvers.go @@ -756,10 +756,16 @@ func (r *queryResolver) NodeMetrics(ctx context.Context, cluster string, nodes [ return nil, errors.New("you need to be administrator or support staff for this query") } + defaultMetrics := make([]string, 0) + for _, mc := range archive.GetCluster(cluster).MetricConfig { + defaultMetrics = append(defaultMetrics, mc.Name) + } if metrics == nil { - for _, mc := range archive.GetCluster(cluster).MetricConfig { - metrics = append(metrics, mc.Name) - } + metrics = defaultMetrics + } else { + metrics = slices.DeleteFunc(metrics, func(metric string) bool { + return !slices.Contains(defaultMetrics, metric) // Remove undefined metrics. + }) } data, err := metricdispatch.LoadNodeData(cluster, metrics, nodes, scopes, from, to, ctx) From 3b7fc44ce944072a9349669df28f15e8ede3671e Mon Sep 17 00:00:00 2001 From: Christoph Kluge Date: Thu, 15 Jan 2026 10:11:31 +0100 Subject: [PATCH 5/5] specify job count return logs, move to debug level --- internal/repository/job.go | 4 ++-- internal/repository/jobFind.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/repository/job.go b/internal/repository/job.go index b1e92424..80082315 100644 --- a/internal/repository/job.go +++ b/internal/repository/job.go @@ -630,7 +630,7 @@ func (r *JobRepository) FindRunningJobs(cluster string) ([]*schema.Job, error) { jobs = append(jobs, job) } - cclog.Infof("Return job count %d", len(jobs)) + cclog.Debugf("JobRepository.FindRunningJobs(): Return job count %d (cluster: %s)", len(jobs), cluster) return jobs, nil } @@ -684,7 +684,7 @@ func (r *JobRepository) FindJobsBetween(startTimeBegin int64, startTimeEnd int64 jobs = append(jobs, job) } - cclog.Infof("Return job count %d", len(jobs)) + cclog.Debugf("JobRepository.FindJobsBetween(): Return job count %d (omitTagged: %v)", len(jobs), omitTagged) return jobs, nil } diff --git a/internal/repository/jobFind.go b/internal/repository/jobFind.go index 8f6daeb4..4386be2d 100644 --- a/internal/repository/jobFind.go +++ b/internal/repository/jobFind.go @@ -154,7 +154,7 @@ func (r *JobRepository) GetJobList(limit int, offset int) ([]int64, error) { jl = append(jl, id) } - cclog.Infof("Return job count %d", len(jl)) + cclog.Debugf("JobRepository.GetJobList(): Return job count %d", len(jl)) return jl, nil }