diff --git a/internal/repository/jobQuery.go b/internal/repository/jobQuery.go index 0c457ec2..445d91d3 100644 --- a/internal/repository/jobQuery.go +++ b/internal/repository/jobQuery.go @@ -197,11 +197,16 @@ func BuildWhereClause(filter *model.JobFilter, query sq.SelectBuilder) sq.Select query = buildStringCondition("job.cluster_partition", filter.Partition, query) } if filter.State != nil { - states := make([]string, len(filter.State)) - for i, val := range filter.State { - states[i] = string(val) + if len(filter.State) == 1 { + singleStat := string(filter.State[0]) + query = query.Where("job.job_state = ?", singleStat) + } else { + states := make([]string, len(filter.State)) + for i, val := range filter.State { + states[i] = string(val) + } + query = query.Where(sq.Eq{"job.job_state": states}) } - query = query.Where(sq.Eq{"job.job_state": states}) } if filter.Shared != nil { query = query.Where("job.shared = ?", *filter.Shared) diff --git a/internal/repository/migrations/sqlite3/08_add-footprint.down.sql b/internal/repository/migrations/sqlite3/08_add-footprint.down.sql index cc2d3e95..fefa54f6 100644 --- a/internal/repository/migrations/sqlite3/08_add-footprint.down.sql +++ b/internal/repository/migrations/sqlite3/08_add-footprint.down.sql @@ -101,3 +101,5 @@ DROP INDEX IF EXISTS jobs_numnodes_starttime; DROP INDEX IF EXISTS jobs_numhwthreads_starttime; DROP INDEX IF EXISTS jobs_numacc_starttime; DROP INDEX IF EXISTS jobs_energy_starttime; + +PRAGMA optimize; diff --git a/internal/repository/migrations/sqlite3/12_stats-covering-index.down.sql b/internal/repository/migrations/sqlite3/12_stats-covering-index.down.sql index 1368eb1f..0d5e3865 100644 --- a/internal/repository/migrations/sqlite3/12_stats-covering-index.down.sql +++ b/internal/repository/migrations/sqlite3/12_stats-covering-index.down.sql @@ -1 +1,4 @@ DROP INDEX IF EXISTS jobs_cluster_user_starttime_stats; +DROP INDEX IF EXISTS jobs_cluster_project_starttime_stats; + +PRAGMA optimize; diff --git a/web/frontend/src/DashPublic.root.svelte b/web/frontend/src/DashPublic.root.svelte index c9e0523c..e824f881 100644 --- a/web/frontend/src/DashPublic.root.svelte +++ b/web/frontend/src/DashPublic.root.svelte @@ -149,7 +149,6 @@ jobsStatistics( filter: $jobFilter page: $paging - sortBy: TOTALJOBS groupBy: CLUSTER ) { id @@ -185,7 +184,7 @@ from: from.toISOString(), clusterFrom: clusterFrom.toISOString(), to: to.toISOString(), - jobFilter: [{ state: ["running"] }, { cluster: { eq: presetCluster } }], + jobFilter: [{ cluster: { eq: presetCluster } }, { state: ["running"] }], nodeFilter: { cluster: { eq: presetCluster }}, paging: { itemsPerPage: -1, page: 1 }, // Get all: -1 sorting: { field: "startTime", type: "col", order: "DESC" } diff --git a/web/frontend/src/Node.root.svelte b/web/frontend/src/Node.root.svelte index db424a2f..a9ce8a74 100644 --- a/web/frontend/src/Node.root.svelte +++ b/web/frontend/src/Node.root.svelte @@ -119,8 +119,8 @@ const filter = $derived([ { cluster: { eq: cluster } }, - { node: { eq: hostname } }, { state: ["running"] }, + { node: { eq: hostname } }, ]); const systemUnits = $derived.by(() => { diff --git a/web/frontend/src/status/DashInternal.svelte b/web/frontend/src/status/DashInternal.svelte index 145ac4dc..35ba6e9b 100644 --- a/web/frontend/src/status/DashInternal.svelte +++ b/web/frontend/src/status/DashInternal.svelte @@ -155,7 +155,6 @@ jobsStatistics( filter: $jobFilter page: $paging - sortBy: TOTALJOBS groupBy: CLUSTER ) { id @@ -190,7 +189,7 @@ from: from.toISOString(), to: to.toISOString(), clusterFrom: clusterFrom.toISOString(), - jobFilter: [{ state: ["running"] }, { cluster: { eq: presetCluster } }], + jobFilter: [{ cluster: { eq: presetCluster } }, { state: ["running"] }], paging: { itemsPerPage: -1, page: 1 }, // Get all: -1 sorting: { field: "startTime", type: "col", order: "DESC" } }, @@ -216,7 +215,7 @@ } `, variables: { - filter: [{ state: ["running"] }, { cluster: { eq: presetCluster} }], + filter: [{ cluster: { eq: presetCluster} }, { state: ["running"] }], paging: pagingState // Top 10 }, requestPolicy: "network-only" diff --git a/web/frontend/src/status/dashdetails/StatisticsDash.svelte b/web/frontend/src/status/dashdetails/StatisticsDash.svelte index d83adc15..6c0e17fc 100644 --- a/web/frontend/src/status/dashdetails/StatisticsDash.svelte +++ b/web/frontend/src/status/dashdetails/StatisticsDash.svelte @@ -72,7 +72,7 @@ } `, variables: { - filter: [{ state: ["running"] }, { cluster: { eq: cluster} }], + filter: [{ cluster: { eq: cluster} }, { state: ["running"] }], selectedHistograms: selectedHistograms }, requestPolicy: "network-only" diff --git a/web/frontend/src/status/dashdetails/StatusDash.svelte b/web/frontend/src/status/dashdetails/StatusDash.svelte index 0c2626d0..228b1ae8 100644 --- a/web/frontend/src/status/dashdetails/StatusDash.svelte +++ b/web/frontend/src/status/dashdetails/StatusDash.svelte @@ -163,7 +163,6 @@ jobsStatistics( filter: $jobFilter page: $paging - sortBy: TOTALJOBS groupBy: SUBCLUSTER ) { id @@ -179,7 +178,7 @@ metrics: ["flops_any", "mem_bw"], // Fixed names for roofline and status bars from: from.toISOString(), to: to.toISOString(), - jobFilter: [{ state: ["running"] }, { cluster: { eq: cluster } }], + jobFilter: [{ cluster: { eq: cluster } }, { state: ["running"] }], nodeFilter: { cluster: { eq: cluster }}, paging: { itemsPerPage: -1, page: 1 }, // Get all: -1 sorting: { field: "startTime", type: "col", order: "DESC" } diff --git a/web/frontend/src/status/dashdetails/UsageDash.svelte b/web/frontend/src/status/dashdetails/UsageDash.svelte index 89e6977c..29a34697 100644 --- a/web/frontend/src/status/dashdetails/UsageDash.svelte +++ b/web/frontend/src/status/dashdetails/UsageDash.svelte @@ -60,11 +60,11 @@ const statusFilter = $derived( presetSubCluster ? [ - { state: ["running"] }, { cluster: { eq: presetCluster } }, { subCluster: { eq: presetSubCluster } }, + { state: ["running"] }, ] - : [{ state: ["running"] }, { cluster: { eq: presetCluster } }], + : [{ cluster: { eq: presetCluster } }, { state: ["running"] }], ); const topStatsQuery = $derived( loadMe @@ -585,4 +585,3 @@ >Cannot render accelerator status charts: No data! {/if} - diff --git a/web/frontend/src/systems/nodelist/NodeListRow.svelte b/web/frontend/src/systems/nodelist/NodeListRow.svelte index 558d0642..62b6517b 100644 --- a/web/frontend/src/systems/nodelist/NodeListRow.svelte +++ b/web/frontend/src/systems/nodelist/NodeListRow.svelte @@ -63,8 +63,8 @@ /* Derived */ const filter = $derived([ { cluster: { eq: cluster } }, - { node: { contains: nodeData.host } }, { state: ["running"] }, + { node: { contains: nodeData.host } }, ]); const nodeJobsData = $derived(queryStore({ client: client,