Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
github
orchestrator
提交
37d3cf19
O
orchestrator
项目概览
github
/
orchestrator
9 个月 前同步成功
通知
18
Star
5143
Fork
916
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
orchestrator
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
37d3cf19
编写于
7月 15, 2021
作者:
P
Philipp Heckel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Re-read replica instance to ensure they are up-to-date (races with
InstancePollSeconds)
上级
9bc50948
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
20 addition
and
3 deletion
+20
-3
go/inst/instance_dao.go
go/inst/instance_dao.go
+14
-0
go/inst/instance_topology_dao.go
go/inst/instance_topology_dao.go
+6
-3
未找到文件。
go/inst/instance_dao.go
浏览文件 @
37d3cf19
...
...
@@ -204,6 +204,20 @@ func ReadTopologyInstance(instanceKey *InstanceKey) (*Instance, error) {
return
ReadTopologyInstanceBufferable
(
instanceKey
,
false
,
nil
)
}
// ReadTopologyInstances is a convenience method that calls ReadTopologyInstance
// for all the instance keys and returns a slice of Instance.
func
ReadTopologyInstances
(
instanceKeys
[]
InstanceKey
)
([]
*
Instance
,
error
)
{
instances
:=
make
([]
*
Instance
,
0
)
for
_
,
replicaKey
:=
range
instanceKeys
{
replica
,
err
:=
ReadTopologyInstance
(
&
replicaKey
)
if
err
!=
nil
{
return
nil
,
err
}
instances
=
append
(
instances
,
replica
)
}
return
instances
,
nil
}
func
RetryInstanceFunction
(
f
func
()
(
*
Instance
,
error
))
(
instance
*
Instance
,
err
error
)
{
for
i
:=
0
;
i
<
retryInstanceFunctionCount
;
i
++
{
if
instance
,
err
=
f
();
err
==
nil
{
...
...
go/inst/instance_topology_dao.go
浏览文件 @
37d3cf19
...
...
@@ -644,14 +644,17 @@ func maybeEnableSemiSyncReplicaLegacy(replicaInstance *Instance) (*Instance, err
// AnalyzeSemiSyncReplicaTopology analyzes the replica topology for the given master and determines actions for the semi-sync replica enabled
// variable. It does not take any action itself.
func
AnalyzeSemiSyncReplicaTopology
(
masterKey
*
InstanceKey
,
includeNonReplicatingInstance
*
InstanceKey
,
exactReplicaTopology
bool
)
(
masterInstance
*
Instance
,
replicas
[]
*
Instance
,
actions
map
[
*
Instance
]
bool
,
err
error
)
{
// Read entire topology of master and its replicas
// Read entire topology of master and its replicas
to ensure we have the most up-to-date information
masterInstance
,
err
=
ReadTopologyInstance
(
masterKey
)
if
err
!=
nil
{
return
nil
,
nil
,
nil
,
err
}
replicas
,
err
=
Read
ReplicaInstances
(
masterKey
)
replicas
,
err
=
Read
TopologyInstances
(
masterInstance
.
Replicas
.
GetInstanceKeys
()
)
if
err
!=
nil
{
return
nil
,
nil
,
nil
,
err
replicas
,
err
=
ReadReplicaInstances
(
masterKey
)
// Falling back to just reading from our backend
if
err
!=
nil
{
return
nil
,
nil
,
nil
,
err
}
}
// Classify and prioritize replicas & figure out which replicas need to be acted upon
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录