Skip to content

Commit

Permalink
HPCC-30525 Fix issues of cased dropzone names mismatching group name
Browse files Browse the repository at this point in the history
Group names have always been treated as case-insensitive.
Since 9.2 (HPCC-29553) groups have been created to match dropzones.
This PR ensures that groups names created by dropzones are
lowercased.

This bug was causing environments with non-lowercased dropzone
names to cause failures during sprays of the form:
"DFUServer Error Failed: DFUWU: Logical group <lowercased-group-name> not found"

Signed-off-by: Jake Smith <[email protected]>
  • Loading branch information
jakesmith committed Nov 2, 2023
1 parent 4c39442 commit c4de7ff
Showing 1 changed file with 16 additions and 10 deletions.
26 changes: 16 additions & 10 deletions dali/base/dadfs.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10188,25 +10188,27 @@ class CInitGroups
switch (groupType)
{
case grp_thor:
getClusterGroupName(cluster, gname);
if (!streq(cluster.queryProp("@name"), gname.str()))
getClusterGroupName(cluster, gname); // NB: ensures lowercases
if (!strieq(cluster.queryProp("@name"), gname.str()))
realCluster = false;
if (oldEnvCluster)
{
getClusterGroupName(*oldEnvCluster, oldGname);
if (!streq(oldEnvCluster->queryProp("@name"), oldGname.str()))
getClusterGroupName(*oldEnvCluster, oldGname); // NB: ensures lowercases
if (!strieq(oldEnvCluster->queryProp("@name"), oldGname.str()))
oldRealCluster = false;
}
break;
case grp_thorspares:
getClusterSpareGroupName(cluster, gname);
getClusterSpareGroupName(cluster, gname); // ensures lowercase
oldRealCluster = realCluster = false;
break;
case grp_roxie:
gname.append(cluster.queryProp("@name"));
gname.toLowerCase();
break;
case grp_dropzone:
gname.append(cluster.queryProp("@name"));
gname.toLowerCase();
oldRealCluster = realCluster = false;
defDir = cluster.queryProp("@directory");
break;
Expand Down Expand Up @@ -10578,8 +10580,12 @@ class CInitGroups

void ensureStorageGroup(bool force, const char * name, unsigned numDevices, const char * path, StringBuffer & messages)
{
Owned<IPropertyTree> newClusterGroup = createStorageGroup(name, numDevices, path);
ensureConsistentStorageGroup(force, name, newClusterGroup, messages);
//Lower case the group name - see CNamedGroupStore::dolookup which lower cases before resolving.
StringBuffer gname;
gname.append(name).toLowerCase();

Owned<IPropertyTree> newClusterGroup = createStorageGroup(gname, numDevices, path);
ensureConsistentStorageGroup(force, gname, newClusterGroup, messages);
}

void constructStorageGroups(bool force, StringBuffer &messages)
Expand Down Expand Up @@ -10618,7 +10624,7 @@ class CInitGroups
}
else if (plane.hasProp("hostGroup"))
{
throw makeStringExceptionV(-1, "Use 'hosts' rather than 'hostGroup' for inline list of hosts for plane %s", name);
throw makeStringExceptionV(-1, "Use 'hosts' rather than 'hostGroup' for inline list of hosts for plane %s", gname.str());
}
else if (plane.hasProp("hosts"))
{
Expand All @@ -10633,9 +10639,9 @@ class CInitGroups
{
//Locally mounted, or url accessed storage plane - no associated hosts, localhost used as a placeholder
unsigned numDevices = plane.getPropInt("@numDevices", 1);
newClusterGroup.setown(createStorageGroup(name, numDevices, prefix));
newClusterGroup.setown(createStorageGroup(gname, numDevices, prefix));
}
ensureConsistentStorageGroup(force, name, newClusterGroup, messages);
ensureConsistentStorageGroup(force, gname, newClusterGroup, messages);
}
}
}
Expand Down

0 comments on commit c4de7ff

Please sign in to comment.