Skip to content

Commit

Permalink
Add new node.ice.soversion reserved variable in IceGrid (#2948)
Browse files Browse the repository at this point in the history
  • Loading branch information
bernardnormier authored Oct 22, 2024
1 parent b533584 commit 12de22e
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 9 deletions.
1 change: 1 addition & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
"Browsable",
"istr",
"ostr",
"soversion",
"unregisters",
"Upcall"
],
Expand Down
4 changes: 2 additions & 2 deletions cpp/config/templates.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
<parameter name="publish-endpoints" default="default"/>
<parameter name="flush-timeout" default="1000"/>

<service name="${instance-name}" entry="IceStormService,38a0:createIceStorm">
<service name="${instance-name}" entry="IceStormService,${node.ice.soversion}:createIceStorm">

<adapter name="IceStorm.TopicManager"
id="${instance-name}.TopicManager"
Expand Down Expand Up @@ -74,7 +74,7 @@
<parameter name="publish-replica-group"/>
<parameter name="topic-manager-replica-group"/>

<service name="${instance-name}${node-id}" entry="IceStormService,38a0:createIceStorm">
<service name="${instance-name}${node-id}" entry="IceStormService,${node.ice.soversion}:createIceStorm">

<adapter name="IceStorm.TopicManager"
id="${instance-name}${node-id}.TopicManager"
Expand Down
18 changes: 13 additions & 5 deletions cpp/src/IceGrid/DescriptorHelper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -365,6 +365,7 @@ Resolver::Resolver(
_ignore.insert("node.machine");
_ignore.insert("node.datadir");
_ignore.insert("node.data");
_ignore.insert("node.ice.soversion");

//
// Deprecated variables
Expand Down Expand Up @@ -488,6 +489,15 @@ Resolver::Resolver(const shared_ptr<InternalNodeInfo>& info, const shared_ptr<Ic
setReserved("node.machine", info->machine);
setReserved("node.datadir", info->dataDir);
setReserved("node.data", info->dataDir);
if (info->iceSoVersion)
{
setReserved("node.ice.soversion", *info->iceSoVersion);
}
else
{
// Since the node didn't supply this info, we're guessing it's a 3.7 node, but we don't know for sure.
setReserved("node.ice.soversion", "37");
}
}

string
Expand Down Expand Up @@ -958,11 +968,8 @@ Resolver::getProperties(const Ice::StringSeq& references, set<string>& resolved)
map<string, string>
Resolver::getReserved()
{
//
// Allowed reserved variables (reserved variables can't be
// overrided, in this implementation an empty reserved variable is
// considered to be undefined (see getVariable))
//
// Allowed reserved variables (reserved variables can't be overridden, in this implementation an empty reserved
// variable is considered to be undefined (see getVariable))
map<string, string> reserved;
reserved["application"] = "";
reserved["node"] = "";
Expand All @@ -973,6 +980,7 @@ Resolver::getReserved()
reserved["node.machine"] = "";
reserved["node.datadir"] = "";
reserved["node.data"] = "";
reserved["node.ice.soversion"] = "";
reserved["session.id"] = "";
reserved["server"] = "";
reserved["server.data"] = "${node.data}/servers/${server}/data";
Expand Down
4 changes: 4 additions & 0 deletions cpp/src/IceGrid/Internal.ice
Original file line number Diff line number Diff line change
Expand Up @@ -373,6 +373,10 @@ class InternalNodeInfo

/// The path to the node data directory.
string dataDir;

/// The Ice SO version of this node, for example 38. It is typically used to load the same version of the IceStorm
/// service in IceBox.
optional(1) string iceSoVersion;
}

/// Information about an IceGrid registry replica.
Expand Down
12 changes: 10 additions & 2 deletions cpp/src/IceGrid/PlatformInfo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -383,8 +383,16 @@ PlatformInfo::getRegistryInfo() const
shared_ptr<InternalNodeInfo>
PlatformInfo::getInternalNodeInfo() const
{
return make_shared<
InternalNodeInfo>(_name, _os, _hostname, _release, _version, _machine, _nProcessorThreads, _dataDir);
return make_shared<InternalNodeInfo>(
_name,
_os,
_hostname,
_release,
_version,
_machine,
_nProcessorThreads,
_dataDir,
ICE_SO_VERSION);
}

shared_ptr<InternalReplicaInfo>
Expand Down

0 comments on commit 12de22e

Please sign in to comment.