Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
9755609b
Commit
9755609b
authored
Jan 30, 2007
by
Justin.He/justin.he@dev3-240.dev.cn.tlan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Bug#23546, Cluster configured without any arbitration
parent
e9fcb1e3
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
78 additions
and
70 deletions
+78
-70
storage/ndb/src/mgmsrv/ConfigInfo.cpp
storage/ndb/src/mgmsrv/ConfigInfo.cpp
+78
-70
No files found.
storage/ndb/src/mgmsrv/ConfigInfo.cpp
View file @
9755609b
...
@@ -3604,6 +3604,7 @@ check_node_vs_replicas(Vector<ConfigInfo::ConfigRuleSection>§ions,
...
@@ -3604,6 +3604,7 @@ check_node_vs_replicas(Vector<ConfigInfo::ConfigRuleSection>§ions,
Uint32
db_nodes
=
0
;
Uint32
db_nodes
=
0
;
Uint32
replicas
=
0
;
Uint32
replicas
=
0
;
Uint32
db_host_count
=
0
;
Uint32
db_host_count
=
0
;
bool
with_arbitration_rank
=
false
;
ctx
.
m_userProperties
.
get
(
DB_TOKEN
,
&
db_nodes
);
ctx
.
m_userProperties
.
get
(
DB_TOKEN
,
&
db_nodes
);
ctx
.
m_userProperties
.
get
(
"NoOfReplicas"
,
&
replicas
);
ctx
.
m_userProperties
.
get
(
"NoOfReplicas"
,
&
replicas
);
if
((
db_nodes
%
replicas
)
!=
0
){
if
((
db_nodes
%
replicas
)
!=
0
){
...
@@ -3639,83 +3640,90 @@ check_node_vs_replicas(Vector<ConfigInfo::ConfigRuleSection>§ions,
...
@@ -3639,83 +3640,90 @@ check_node_vs_replicas(Vector<ConfigInfo::ConfigRuleSection>§ions,
tmp
->
get
(
"HostName"
,
&
host
);
tmp
->
get
(
"HostName"
,
&
host
);
if
(
strcmp
(
type
,
DB_TOKEN
)
==
0
)
if
(
strcmp
(
type
,
DB_TOKEN
)
==
0
)
{
{
{
{
Uint32
ii
;
Uint32
ii
;
if
(
!
p_db_hosts
.
get
(
host
,
&
ii
))
if
(
!
p_db_hosts
.
get
(
host
,
&
ii
))
db_host_count
++
;
db_host_count
++
;
p_db_hosts
.
put
(
host
,
i
);
p_db_hosts
.
put
(
host
,
i
);
if
(
p_arbitrators
.
get
(
host
,
&
ii
))
if
(
p_arbitrators
.
get
(
host
,
&
ii
))
{
{
arbitration_warning
.
appfmt
(
arbit_warn_fmt
,
ii
,
i
,
host
);
arbitration_warning
.
appfmt
(
arbit_warn_fmt
,
ii
,
i
,
host
);
p_arbitrators
.
remove
(
host
);
// only one warning per db node
p_arbitrators
.
remove
(
host
);
// only one warning per db node
}
}
}
}
{
{
unsigned
j
;
unsigned
j
;
BaseString
str
,
str2
;
BaseString
str
,
str2
;
str
.
assfmt
(
"#group%d_"
,
group
);
str
.
assfmt
(
"#group%d_"
,
group
);
p_db_hosts
.
put
(
str
.
c_str
(),
i_group
,
host
);
p_db_hosts
.
put
(
str
.
c_str
(),
i_group
,
host
);
str2
.
assfmt
(
"##group%d_"
,
group
);
str2
.
assfmt
(
"##group%d_"
,
group
);
p_db_hosts
.
put
(
str2
.
c_str
(),
i_group
,
i
);
p_db_hosts
.
put
(
str2
.
c_str
(),
i_group
,
i
);
for
(
j
=
0
;
j
<
i_group
;
j
++
)
for
(
j
=
0
;
j
<
i_group
;
j
++
)
{
{
const
char
*
other_host
;
const
char
*
other_host
;
p_db_hosts
.
get
(
str
.
c_str
(),
j
,
&
other_host
);
p_db_hosts
.
get
(
str
.
c_str
(),
j
,
&
other_host
);
if
(
strcmp
(
host
,
other_host
)
==
0
)
{
if
(
strcmp
(
host
,
other_host
)
==
0
)
{
unsigned
int
other_i
,
c
=
0
;
unsigned
int
other_i
,
c
=
0
;
p_db_hosts
.
get
(
str2
.
c_str
(),
j
,
&
other_i
);
p_db_hosts
.
get
(
str2
.
c_str
(),
j
,
&
other_i
);
p_db_hosts
.
get
(
str
.
c_str
(),
&
c
);
p_db_hosts
.
get
(
str
.
c_str
(),
&
c
);
if
(
c
==
0
)
// first warning in this node group
if
(
c
==
0
)
// first warning in this node group
node_group_warning
.
appfmt
(
" Node group %d"
,
group
);
node_group_warning
.
appfmt
(
" Node group %d"
,
group
);
c
|=
1
<<
j
;
c
|=
1
<<
j
;
p_db_hosts
.
put
(
str
.
c_str
(),
c
);
p_db_hosts
.
put
(
str
.
c_str
(),
c
);
node_group_warning
.
appfmt
(
",
\n
db node with id %d and id %d "
node_group_warning
.
appfmt
(
",
\n
db node with id %d and id %d "
"on same host %s"
,
other_i
,
i
,
host
);
"on same host %s"
,
other_i
,
i
,
host
);
}
}
}
}
i_group
++
;
i_group
++
;
DBUG_ASSERT
(
i_group
<=
replicas
);
DBUG_ASSERT
(
i_group
<=
replicas
);
if
(
i_group
==
replicas
)
if
(
i_group
==
replicas
)
{
{
unsigned
c
=
0
;
unsigned
c
=
0
;
p_db_hosts
.
get
(
str
.
c_str
(),
&
c
);
p_db_hosts
.
get
(
str
.
c_str
(),
&
c
);
if
(
c
+
1
==
(
1u
<<
(
replicas
-
1
)))
// all nodes on same machine
if
(
c
+
1
==
(
1u
<<
(
replicas
-
1
)))
// all nodes on same machine
node_group_warning
.
append
(
".
\n
Host failure will "
node_group_warning
.
append
(
".
\n
Host failure will "
"cause complete cluster shutdown."
);
"cause complete cluster shutdown."
);
else
if
(
c
>
0
)
else
if
(
c
>
0
)
node_group_warning
.
append
(
".
\n
Host failure may "
node_group_warning
.
append
(
".
\n
Host failure may "
"cause complete cluster shutdown."
);
"cause complete cluster shutdown."
);
group
++
;
group
++
;
i_group
=
0
;
i_group
=
0
;
}
}
}
}
}
}
else
if
(
strcmp
(
type
,
API_TOKEN
)
==
0
||
else
if
(
strcmp
(
type
,
API_TOKEN
)
==
0
||
strcmp
(
type
,
MGM_TOKEN
)
==
0
)
strcmp
(
type
,
MGM_TOKEN
)
==
0
)
{
{
Uint32
rank
;
Uint32
rank
;
if
(
tmp
->
get
(
"ArbitrationRank"
,
&
rank
)
&&
rank
>
0
)
if
(
tmp
->
get
(
"ArbitrationRank"
,
&
rank
)
&&
rank
>
0
)
{
{
if
(
host
&&
host
[
0
]
!=
0
)
with_arbitration_rank
=
true
;
//check whether MGM or API node configured with rank >0
{
if
(
host
&&
host
[
0
]
!=
0
)
Uint32
ii
;
{
p_arbitrators
.
put
(
host
,
i
);
Uint32
ii
;
if
(
p_db_hosts
.
get
(
host
,
&
ii
))
p_arbitrators
.
put
(
host
,
i
);
{
if
(
p_db_hosts
.
get
(
host
,
&
ii
))
arbitration_warning
.
appfmt
(
arbit_warn_fmt
,
i
,
ii
,
host
);
{
}
arbitration_warning
.
appfmt
(
arbit_warn_fmt
,
i
,
ii
,
host
);
}
}
else
}
{
else
arbitration_warning
.
appfmt
(
arbit_warn_fmt2
,
i
);
{
}
arbitration_warning
.
appfmt
(
arbit_warn_fmt2
,
i
);
}
}
}
}
}
}
}
if
(
db_host_count
>
1
&&
node_group_warning
.
length
()
>
0
)
if
(
db_host_count
>
1
&&
node_group_warning
.
length
()
>
0
)
ndbout_c
(
"Cluster configuration warning:
\n
%s"
,
node_group_warning
.
c_str
());
ndbout_c
(
"Cluster configuration warning:
\n
%s"
,
node_group_warning
.
c_str
());
if
(
!
with_arbitration_rank
)
{
ndbout_c
(
"Cluster configuration warning:"
"
\n
Neither %s nor %s nodes are configured with arbitrator,"
"
\n
may cause complete cluster shutdown in case of host failure."
,
MGM_TOKEN
,
API_TOKEN
);
}
if
(
db_host_count
>
1
&&
arbitration_warning
.
length
()
>
0
)
if
(
db_host_count
>
1
&&
arbitration_warning
.
length
()
>
0
)
ndbout_c
(
"Cluster configuration warning:%s%s"
,
arbitration_warning
.
c_str
(),
ndbout_c
(
"Cluster configuration warning:%s%s"
,
arbitration_warning
.
c_str
(),
"
\n
Running arbitrator on the same host as a database node may"
"
\n
Running arbitrator on the same host as a database node may"
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment