| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- package maintenance
- import (
- "github.com/seaweedfs/seaweedfs/weed/admin/config"
- )
- // Type aliases for backward compatibility
- type ConfigFieldType = config.FieldType
- type ConfigFieldUnit = config.FieldUnit
- type ConfigField = config.Field
- // Constant aliases for backward compatibility
- const (
- FieldTypeBool = config.FieldTypeBool
- FieldTypeInt = config.FieldTypeInt
- FieldTypeDuration = config.FieldTypeDuration
- FieldTypeInterval = config.FieldTypeInterval
- FieldTypeString = config.FieldTypeString
- FieldTypeFloat = config.FieldTypeFloat
- )
- const (
- UnitSeconds = config.UnitSeconds
- UnitMinutes = config.UnitMinutes
- UnitHours = config.UnitHours
- UnitDays = config.UnitDays
- UnitCount = config.UnitCount
- UnitNone = config.UnitNone
- )
- // Function aliases for backward compatibility
- var (
- SecondsToIntervalValueUnit = config.SecondsToIntervalValueUnit
- IntervalValueUnitToSeconds = config.IntervalValueUnitToSeconds
- )
- // MaintenanceConfigSchema defines the schema for maintenance configuration
- type MaintenanceConfigSchema struct {
- config.Schema // Embed common schema functionality
- }
- // GetMaintenanceConfigSchema returns the schema for maintenance configuration
- func GetMaintenanceConfigSchema() *MaintenanceConfigSchema {
- return &MaintenanceConfigSchema{
- Schema: config.Schema{
- Fields: []*config.Field{
- {
- Name: "enabled",
- JSONName: "enabled",
- Type: config.FieldTypeBool,
- DefaultValue: true,
- Required: false,
- DisplayName: "Enable Maintenance System",
- Description: "When enabled, the system will automatically scan for and execute maintenance tasks",
- HelpText: "Toggle this to enable or disable the entire maintenance system",
- InputType: "checkbox",
- CSSClasses: "form-check-input",
- },
- {
- Name: "scan_interval_seconds",
- JSONName: "scan_interval_seconds",
- Type: config.FieldTypeInterval,
- DefaultValue: 30 * 60, // 30 minutes in seconds
- MinValue: 1 * 60, // 1 minute
- MaxValue: 24 * 60 * 60, // 24 hours
- Required: true,
- DisplayName: "Scan Interval",
- Description: "How often to scan for maintenance tasks",
- HelpText: "The system will check for new maintenance tasks at this interval",
- Placeholder: "30",
- Unit: config.UnitMinutes,
- InputType: "interval",
- CSSClasses: "form-control",
- },
- {
- Name: "worker_timeout_seconds",
- JSONName: "worker_timeout_seconds",
- Type: config.FieldTypeInterval,
- DefaultValue: 5 * 60, // 5 minutes
- MinValue: 1 * 60, // 1 minute
- MaxValue: 60 * 60, // 1 hour
- Required: true,
- DisplayName: "Worker Timeout",
- Description: "How long to wait for worker heartbeat before considering it inactive",
- HelpText: "Workers that don't send heartbeats within this time are considered offline",
- Placeholder: "5",
- Unit: config.UnitMinutes,
- InputType: "interval",
- CSSClasses: "form-control",
- },
- {
- Name: "task_timeout_seconds",
- JSONName: "task_timeout_seconds",
- Type: config.FieldTypeInterval,
- DefaultValue: 2 * 60 * 60, // 2 hours
- MinValue: 10 * 60, // 10 minutes
- MaxValue: 24 * 60 * 60, // 24 hours
- Required: true,
- DisplayName: "Task Timeout",
- Description: "Maximum time allowed for a task to complete",
- HelpText: "Tasks that exceed this duration will be marked as failed",
- Placeholder: "2",
- Unit: config.UnitHours,
- InputType: "interval",
- CSSClasses: "form-control",
- },
- {
- Name: "retry_delay_seconds",
- JSONName: "retry_delay_seconds",
- Type: config.FieldTypeInterval,
- DefaultValue: 15 * 60, // 15 minutes
- MinValue: 1 * 60, // 1 minute
- MaxValue: 24 * 60 * 60, // 24 hours
- Required: true,
- DisplayName: "Retry Delay",
- Description: "How long to wait before retrying a failed task",
- HelpText: "Failed tasks will be retried after this delay",
- Placeholder: "15",
- Unit: config.UnitMinutes,
- InputType: "interval",
- CSSClasses: "form-control",
- },
- {
- Name: "max_retries",
- JSONName: "max_retries",
- Type: config.FieldTypeInt,
- DefaultValue: 3,
- MinValue: 0,
- MaxValue: 10,
- Required: true,
- DisplayName: "Max Retries",
- Description: "Maximum number of times to retry a failed task",
- HelpText: "Tasks that fail more than this many times will be marked as permanently failed",
- Placeholder: "3",
- Unit: config.UnitCount,
- InputType: "number",
- CSSClasses: "form-control",
- },
- {
- Name: "cleanup_interval_seconds",
- JSONName: "cleanup_interval_seconds",
- Type: config.FieldTypeInterval,
- DefaultValue: 24 * 60 * 60, // 24 hours
- MinValue: 1 * 60 * 60, // 1 hour
- MaxValue: 7 * 24 * 60 * 60, // 7 days
- Required: true,
- DisplayName: "Cleanup Interval",
- Description: "How often to run maintenance cleanup operations",
- HelpText: "Removes old task records and temporary files at this interval",
- Placeholder: "24",
- Unit: config.UnitHours,
- InputType: "interval",
- CSSClasses: "form-control",
- },
- {
- Name: "task_retention_seconds",
- JSONName: "task_retention_seconds",
- Type: config.FieldTypeInterval,
- DefaultValue: 7 * 24 * 60 * 60, // 7 days
- MinValue: 1 * 24 * 60 * 60, // 1 day
- MaxValue: 30 * 24 * 60 * 60, // 30 days
- Required: true,
- DisplayName: "Task Retention",
- Description: "How long to keep completed task records",
- HelpText: "Task history older than this duration will be automatically deleted",
- Placeholder: "7",
- Unit: config.UnitDays,
- InputType: "interval",
- CSSClasses: "form-control",
- },
- {
- Name: "global_max_concurrent",
- JSONName: "global_max_concurrent",
- Type: config.FieldTypeInt,
- DefaultValue: 10,
- MinValue: 1,
- MaxValue: 100,
- Required: true,
- DisplayName: "Global Max Concurrent Tasks",
- Description: "Maximum number of maintenance tasks that can run simultaneously across all workers",
- HelpText: "Limits the total number of maintenance operations to control system load",
- Placeholder: "10",
- Unit: config.UnitCount,
- InputType: "number",
- CSSClasses: "form-control",
- },
- },
- },
- }
- }
|