mirror of
https://github.com/ClusterCockpit/cc-backend
synced 2025-11-26 03:23:07 +01:00
69 lines
2.2 KiB
Go
69 lines
2.2 KiB
Go
// Copyright (C) NHR@FAU, University Erlangen-Nuremberg.
|
|
// All rights reserved. This file is part of cc-backend.
|
|
// Use of this source code is governed by a MIT-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package repository
|
|
|
|
import "time"
|
|
|
|
// RepositoryConfig holds configuration for repository operations.
|
|
// All fields have sensible defaults, so this configuration is optional.
|
|
type RepositoryConfig struct {
|
|
// CacheSize is the LRU cache size in bytes for job metadata and energy footprints.
|
|
// Default: 1MB (1024 * 1024 bytes)
|
|
CacheSize int
|
|
|
|
// MaxOpenConnections is the maximum number of open database connections.
|
|
// Default: 4
|
|
MaxOpenConnections int
|
|
|
|
// MaxIdleConnections is the maximum number of idle database connections.
|
|
// Default: 4
|
|
MaxIdleConnections int
|
|
|
|
// ConnectionMaxLifetime is the maximum amount of time a connection may be reused.
|
|
// Default: 1 hour
|
|
ConnectionMaxLifetime time.Duration
|
|
|
|
// ConnectionMaxIdleTime is the maximum amount of time a connection may be idle.
|
|
// Default: 1 hour
|
|
ConnectionMaxIdleTime time.Duration
|
|
|
|
// MinRunningJobDuration is the minimum duration in seconds for a job to be
|
|
// considered in "running jobs" queries. This filters out very short jobs.
|
|
// Default: 600 seconds (10 minutes)
|
|
MinRunningJobDuration int
|
|
}
|
|
|
|
// DefaultConfig returns the default repository configuration.
|
|
// These values are optimized for typical deployments.
|
|
func DefaultConfig() *RepositoryConfig {
|
|
return &RepositoryConfig{
|
|
CacheSize: 1 * 1024 * 1024, // 1MB
|
|
MaxOpenConnections: 4,
|
|
MaxIdleConnections: 4,
|
|
ConnectionMaxLifetime: time.Hour,
|
|
ConnectionMaxIdleTime: time.Hour,
|
|
MinRunningJobDuration: 600, // 10 minutes
|
|
}
|
|
}
|
|
|
|
// repoConfig is the package-level configuration instance.
|
|
// It is initialized with defaults and can be overridden via SetConfig.
|
|
var repoConfig *RepositoryConfig = DefaultConfig()
|
|
|
|
// SetConfig sets the repository configuration.
|
|
// This must be called before any repository initialization (Connect, GetJobRepository, etc.).
|
|
// If not called, default values from DefaultConfig() are used.
|
|
func SetConfig(cfg *RepositoryConfig) {
|
|
if cfg != nil {
|
|
repoConfig = cfg
|
|
}
|
|
}
|
|
|
|
// GetConfig returns the current repository configuration.
|
|
func GetConfig() *RepositoryConfig {
|
|
return repoConfig
|
|
}
|