summaryrefslogtreecommitdiff
path: root/ndb
diff options
context:
space:
mode:
authorunknown <tulin@build.mysql.com>2005-01-12 18:19:30 +0100
committerunknown <tulin@build.mysql.com>2005-01-12 18:19:30 +0100
commit55ad8626c46dfb6b05e6e476cf1dd2cf653e520c (patch)
tree7bb986ea3d9b51f6308aa0c70e1111c2735c50fa /ndb
parente8e48614012d968d59606d4994d9e3ab6aa61eee (diff)
downloadmariadb-git-55ad8626c46dfb6b05e6e476cf1dd2cf653e520c.tar.gz
fix shm key
Diffstat (limited to 'ndb')
-rw-r--r--ndb/src/mgmsrv/ConfigInfo.cpp29
1 files changed, 26 insertions, 3 deletions
diff --git a/ndb/src/mgmsrv/ConfigInfo.cpp b/ndb/src/mgmsrv/ConfigInfo.cpp
index 800ffe2e361..fa77bc14762 100644
--- a/ndb/src/mgmsrv/ConfigInfo.cpp
+++ b/ndb/src/mgmsrv/ConfigInfo.cpp
@@ -98,6 +98,7 @@ static bool fixDepricated(InitConfigFileParser::Context & ctx, const char *);
static bool saveInConfigValues(InitConfigFileParser::Context & ctx, const char *);
static bool fixFileSystemPath(InitConfigFileParser::Context & ctx, const char * data);
static bool fixBackupDataDir(InitConfigFileParser::Context & ctx, const char * data);
+static bool fixShmUniqueId(InitConfigFileParser::Context & ctx, const char * data);
const ConfigInfo::SectionRule
ConfigInfo::m_SectionRules[] = {
@@ -111,6 +112,8 @@ ConfigInfo::m_SectionRules[] = {
{ "REP", transformNode, 0 },
{ "EXTERNAL REP", transformExtNode, 0 },
+ { MGM_TOKEN, fixShmUniqueId, 0 },
+
{ "TCP", checkConnectionSupport, 0 },
{ "SHM", checkConnectionSupport, 0 },
{ "SCI", checkConnectionSupport, 0 },
@@ -3155,19 +3158,39 @@ fixPortNumber(InitConfigFileParser::Context & ctx, const char * data){
DBUG_RETURN(true);
}
+static bool
+fixShmUniqueId(InitConfigFileParser::Context & ctx, const char * data)
+{
+ DBUG_ENTER("fixShmUniqueId");
+ Uint32 nodes= 0;
+ ctx.m_userProperties.get(ctx.fname, &nodes);
+ if (nodes == 1) // first management server
+ {
+ Uint32 portno= atoi(NDB_PORT);
+ ctx.m_currentSection->get("PortNumber", &portno);
+ ctx.m_userProperties.put("ShmUniqueId", portno);
+ }
+ DBUG_RETURN(true);
+}
+
static
bool
fixShmKey(InitConfigFileParser::Context & ctx, const char *)
{
+ DBUG_ENTER("fixShmKey");
Uint32 id1= 0, id2= 0, key= 0;
require(ctx.m_currentSection->get("NodeId1", &id1));
require(ctx.m_currentSection->get("NodeId2", &id2));
if(ctx.m_currentSection->get("ShmKey", &key))
- return true;
+ {
+ DBUG_RETURN(true);
+ }
- key= (id1 > id2 ? id1 << 16 | id2 : id2 << 16 | id1);
+ require(ctx.m_userProperties.get("ShmUniqueId", &key));
+ key= key << 16 | (id1 > id2 ? id1 << 8 | id2 : id2 << 8 | id1);
ctx.m_currentSection->put("ShmKey", key);
- return true;
+ DBUG_PRINT("info",("Added ShmKey=0x%x", key));
+ DBUG_RETURN(true);
}
/**