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
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
148fc3ca
Commit
148fc3ca
authored
Sep 30, 2004
by
tomas@poseidon.ndb.mysql.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added configuration warnings for arbitration and node groups
parent
9bd6a0b9
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
105 additions
and
3 deletions
+105
-3
ndb/src/mgmsrv/ConfigInfo.cpp
ndb/src/mgmsrv/ConfigInfo.cpp
+105
-3
No files found.
ndb/src/mgmsrv/ConfigInfo.cpp
View file @
148fc3ca
...
...
@@ -3479,8 +3479,9 @@ check_node_vs_replicas(Vector<ConfigInfo::ConfigRuleSection>§ions,
struct
InitConfigFileParser
::
Context
&
ctx
,
const
char
*
rule_data
)
{
Uint32
db_nodes
=
0
;
Uint32
replicas
=
0
;
Uint32
db_nodes
=
0
;
Uint32
replicas
=
0
;
Uint32
db_host_count
=
0
;
ctx
.
m_userProperties
.
get
(
DB_TOKEN
,
&
db_nodes
);
ctx
.
m_userProperties
.
get
(
"NoOfReplicas"
,
&
replicas
);
if
((
db_nodes
%
replicas
)
!=
0
){
...
...
@@ -3488,7 +3489,108 @@ check_node_vs_replicas(Vector<ConfigInfo::ConfigRuleSection>§ions,
"No of nodes must be dividable with no or replicas"
);
return
false
;
}
// check that node groups and arbitrators are ok
// just issue warning if not
if
(
replicas
>
1
){
Properties
*
props
=
ctx
.
m_config
;
Properties
p_db_hosts
(
true
);
// store hosts which db nodes run on
Properties
p_arbitrators
(
true
);
// store hosts which arbitrators run on
// arbitrator should not run together with db node on same host
Uint32
i
,
n
,
group
=
0
,
i_group
=
0
;
Uint32
n_nodes
;
BaseString
node_group_warning
,
arbitration_warning
;
const
char
*
arbit_warn_fmt
=
"
\n
arbitrator with id %d and db node with id %d on same host %s"
;
ctx
.
m_userProperties
.
get
(
"NoOfNodes"
,
&
n_nodes
);
for
(
i
=
0
,
n
=
0
;
n
<
n_nodes
;
i
++
){
const
Properties
*
tmp
;
if
(
!
props
->
get
(
"Node"
,
i
,
&
tmp
))
continue
;
n
++
;
const
char
*
type
;
if
(
!
tmp
->
get
(
"Type"
,
&
type
))
continue
;
const
char
*
host
=
0
;
tmp
->
get
(
"HostName"
,
&
host
);
if
(
strcmp
(
type
,
DB_TOKEN
)
==
0
)
{
{
Uint32
ii
;
if
(
!
p_db_hosts
.
get
(
host
,
&
ii
))
db_host_count
++
;
p_db_hosts
.
put
(
host
,
i
);
if
(
p_arbitrators
.
get
(
host
,
&
ii
))
{
arbitration_warning
.
appfmt
(
arbit_warn_fmt
,
ii
,
i
,
host
);
p_arbitrators
.
remove
(
host
);
// only one warning per db node
}
}
{
unsigned
j
;
BaseString
str
,
str2
;
str
.
assfmt
(
"#group%d_"
,
group
);
p_db_hosts
.
put
(
str
.
c_str
(),
i_group
,
host
);
str2
.
assfmt
(
"##group%d_"
,
group
);
p_db_hosts
.
put
(
str2
.
c_str
(),
i_group
,
i
);
for
(
j
=
0
;
j
<
i_group
;
j
++
)
{
const
char
*
other_host
;
p_db_hosts
.
get
(
str
.
c_str
(),
j
,
&
other_host
);
if
(
strcmp
(
host
,
other_host
)
==
0
)
{
unsigned
int
other_i
,
c
=
0
;
p_db_hosts
.
get
(
str2
.
c_str
(),
j
,
&
other_i
);
p_db_hosts
.
get
(
str
.
c_str
(),
&
c
);
if
(
c
==
0
)
// first warning in this node group
node_group_warning
.
appfmt
(
" Node group %d"
,
group
);
c
|=
1
<<
j
;
p_db_hosts
.
put
(
str
.
c_str
(),
c
);
node_group_warning
.
appfmt
(
",
\n
db node with id %d and id %d "
"on same host %s"
,
other_i
,
i
,
host
);
}
}
i_group
++
;
DBUG_ASSERT
(
i_group
<=
replicas
);
if
(
i_group
==
replicas
)
{
unsigned
c
=
0
;
p_db_hosts
.
get
(
str
.
c_str
(),
&
c
);
if
(
c
+
1
==
(
1
<<
(
replicas
-
1
)))
// all nodes on same machine
node_group_warning
.
append
(
".
\n
Host failure will "
"cause complete cluster shutdown."
);
else
if
(
c
>
0
)
node_group_warning
.
append
(
".
\n
Host failure may "
"cause complete cluster shutdown."
);
group
++
;
i_group
=
0
;
}
}
}
else
if
(
strcmp
(
type
,
API_TOKEN
)
==
0
||
strcmp
(
type
,
MGM_TOKEN
)
==
0
)
{
Uint32
rank
;
if
(
tmp
->
get
(
"ArbitrationRank"
,
&
rank
)
&&
rank
>
0
)
{
if
(
host
&&
host
[
0
]
!=
0
)
{
Uint32
ii
;
p_arbitrators
.
put
(
host
,
i
);
if
(
p_db_hosts
.
get
(
host
,
&
ii
))
{
arbitration_warning
.
appfmt
(
arbit_warn_fmt
,
i
,
ii
,
host
);
}
}
}
}
}
if
(
db_host_count
>
1
&&
node_group_warning
.
length
()
>
0
)
ndbout_c
(
"Cluster configuration warning:
\n
%s"
,
node_group_warning
.
c_str
());
if
(
db_host_count
>
1
&&
arbitration_warning
.
length
()
>
0
)
ndbout_c
(
"Cluster configuration warning:%s"
,
arbitration_warning
.
c_str
());
}
return
true
;
}
...
...
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