Skip to content

Commit

Permalink
fix: 原地slave重建生成单据前检查实例是否存活 TencentBlueKing#8865
Browse files Browse the repository at this point in the history
  • Loading branch information
zfrendo authored and iSecloud committed Jan 2, 2025
1 parent f08ed98 commit e79a8c8
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,11 @@

from django.utils.translation import ugettext as _

from backend.components import DRSApi
from backend.configuration.constants import DBType
from backend.constants import IP_PORT_DIVIDER, IP_PORT_DIVIDER_FOR_DNS
from backend.db_meta.enums import ClusterType, InstanceInnerRole, InstancePhase, InstanceStatus
from backend.db_meta.exceptions import InstanceNotExistException
from backend.db_meta.models import Cluster
from backend.db_package.models import Package
from backend.flow.consts import MediumEnum
Expand Down Expand Up @@ -433,6 +435,20 @@ def restore_local_slave_flow(self):
machine__ip=self.data["slave_ip"],
port=self.data["slave_port"],
)

res = DRSApi.rpc(
{
"addresses": [target_slave.ip_port],
"cmds": ["select version()"],
"force": False,
"bk_cloud_id": target_slave.machine.bk_cloud_id,
}
)
if res[0]["error_msg"]:
raise InstanceNotExistException(
_("请检查实例 {} 是否存活,是否正常可访问,slave原地重建是实例级别的,且必须保证实例存活方可提单进行").format(target_slave.ip_port)
)

master = cluster_model.storageinstance_set.get(instance_inner_role=InstanceInnerRole.MASTER.value)
self.data["new_slave_ip"] = target_slave.machine.ip
self.data["bk_biz_id"] = cluster_model.bk_biz_id
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,10 @@
from django.utils.crypto import get_random_string
from django.utils.translation import ugettext as _

from backend.components import DRSApi
from backend.configuration.constants import DBType
from backend.db_meta.enums import InstancePhase, InstanceStatus
from backend.db_meta.exceptions import InstanceNotExistException
from backend.db_meta.models import Cluster
from backend.flow.engine.bamboo.scene.common.builder import Builder, SubBuilder
from backend.flow.engine.bamboo.scene.common.get_file_list import GetFileList
Expand Down Expand Up @@ -115,6 +117,20 @@ def tendb_remote_slave_local_recover(self):
self.data["master_port"] = shard.storage_instance_tuple.ejector.port
self.data["slave_port"] = shard.storage_instance_tuple.receiver.port
target_slave = cluster_class.storageinstance_set.get(id=shard.storage_instance_tuple.receiver.id)
# 检查slave是否存活
res = DRSApi.rpc(
{
"addresses": [target_slave.ip_port],
"cmds": ["select version()"],
"force": False,
"bk_cloud_id": target_slave.machine.bk_cloud_id,
}
)
if res[0]["error_msg"]:
raise InstanceNotExistException(
_("请检查实例 {} 是否存活,是否正常可访问,slave原地重建是实例级别的,且必须保证实例存活方可提单进行").format(target_slave.ip_port)
)

master = cluster_class.storageinstance_set.get(id=shard.storage_instance_tuple.ejector.id)
cluster = {
"phase": InstancePhase.TRANS_STAGE.value,
Expand Down

0 comments on commit e79a8c8

Please sign in to comment.