You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							190 lines
						
					
					
						
							6.6 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							190 lines
						
					
					
						
							6.6 KiB
						
					
					
				| 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", | |
| 				}, | |
| 			}, | |
| 		}, | |
| 	} | |
| }
 |