# Copyright (c) Huawei Technologies Co., Ltd. 2025-2026. All rights reserved.
# MindIE is licensed under Mulan PSL v2.
# You can use this software according to the terms and conditions of the Mulan PSL v2.
# You may obtain a copy of Mulan PSL v2 at:
# http://license.coscl.org.cn/MulanPSL2
# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
# See the Mulan PSL v2 for more details.
from dataclasses import dataclass
LOCK_SLASH = "/"
@dataclass
class StandbyConfig:
"""Standby (master/standby) configuration class"""
# master/standby feature enable/disable
enable_master_standby: bool = False
# master/standby check interval in seconds
master_standby_check_interval: int = 5
# master lock lease TTL in seconds
# Raised from 10s to 15s to provide headroom for transient etcd/network
# issues while keeping failover recovery time acceptable.
master_lock_ttl: int = 15
# master lock retry interval in seconds
master_lock_retry_interval: int = 5
# max consecutive lock failures
master_lock_max_failures: int = 3
# master lock key path in ETCD
# Note: controller and coordinator will automatically
# add "/controller/" and "/coordinator/" prefixes respectively
master_lock_key: str = "/master_lock"