mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2026-09-18 12:30:46 +02:00
* admin: honor a persisted or admin.toml maintenance enabled=false The startup path discarded an operator's enabled=false twice over: ApplyDefaultsToProtobuf treated the bool zero value as unset and applied the schema default of true, and a force-enable migration block flipped any survivor. With the legacy /maintenance UI routes gone, nothing could write the config either, so the maintenance system ran unconditionally. Keep the persisted enabled flag across schema-default application in LoadMaintenanceConfig, drop the force-enable block, and add a top-level [maintenance] enabled key to admin.toml as the config surface, persisted through SaveMaintenanceConfig like the per-task settings. Absent config still defaults to enabled. * admin: track presence on the maintenance enabled flag A plain proto3 bool cannot distinguish an operator's persisted false from a legacy file that simply omits the field, so honoring false would have silently switched maintenance off for configs written before the toggle could be persisted. Make the field optional: files that predate presence tracking keep the enabled default, while a file that explicitly persists the toggle is honored either way.
23 lines
800 B
Go
23 lines
800 B
Go
package maintenance
|
|
|
|
import (
|
|
"github.com/seaweedfs/seaweedfs/weed/pb/worker_pb"
|
|
"google.golang.org/protobuf/proto"
|
|
)
|
|
|
|
// DefaultMaintenanceConfigProto returns default configuration as protobuf
|
|
func DefaultMaintenanceConfigProto() *worker_pb.MaintenanceConfig {
|
|
return &worker_pb.MaintenanceConfig{
|
|
Enabled: proto.Bool(true),
|
|
ScanIntervalSeconds: 30 * 60, // 30 minutes
|
|
WorkerTimeoutSeconds: 5 * 60, // 5 minutes
|
|
TaskTimeoutSeconds: 2 * 60 * 60, // 2 hours
|
|
RetryDelaySeconds: 15 * 60, // 15 minutes
|
|
MaxRetries: 3,
|
|
CleanupIntervalSeconds: 24 * 60 * 60, // 24 hours
|
|
TaskRetentionSeconds: 7 * 24 * 60 * 60, // 7 days
|
|
// Policy field will be populated dynamically from separate task configuration files
|
|
Policy: nil,
|
|
}
|
|
}
|