Skip to content

Commit 1d19e67

Browse files
committed
Merge remote-tracking branch 'origin/candidate-9.8.x'
Signed-off-by: Jake Smith <[email protected]>
2 parents bd13ae1 + 1a7e141 commit 1d19e67

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

78 files changed

+4397
-12065
lines changed

common/workunit/workunit.cpp

Lines changed: 38 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8758,14 +8758,26 @@ void CLocalWorkUnit::setDebugValue(const char *propname, const char *value, bool
87588758
lower.append(propname);
87598759
if (!strchr(lower, ':'))
87608760
lower.toLowerCase();
8761-
CriticalBlock block(crit);
8762-
StringBuffer prop("Debug/");
8763-
prop.append(lower);
8764-
if (overwrite || !p->hasProp(prop.str()))
8761+
try
87658762
{
8766-
// MORE - not sure this line should be needed....
8767-
p->setProp("Debug", "");
8768-
p->setProp(prop.str(), value);
8763+
CriticalBlock block(crit);
8764+
StringBuffer prop("Debug/");
8765+
prop.append(lower);
8766+
if (overwrite || !p->hasProp(prop.str()))
8767+
{
8768+
// MORE - not sure this line should be needed....
8769+
p->setProp("Debug", "");
8770+
p->setProp(prop.str(), value);
8771+
}
8772+
}
8773+
catch (IException * e)
8774+
{
8775+
if (!validateXMLTag(propname))
8776+
{
8777+
e->Release();
8778+
throw makeStringExceptionV(WUERR_InvalidDebugValueName, "Attempt to set debug value with invalid name: %s", propname);
8779+
}
8780+
throw;
87698781
}
87708782
}
87718783

@@ -8843,14 +8855,26 @@ void CLocalWorkUnit::setDebugValueInt(const char *propname, int value, bool over
88438855
lower.append(propname);
88448856
if (!strchr(lower, ':'))
88458857
lower.toLowerCase();
8846-
CriticalBlock block(crit);
8847-
StringBuffer prop("Debug/");
8848-
prop.append(lower);
8849-
if (overwrite || !p->hasProp(prop.str()))
8858+
try
88508859
{
8851-
// MORE - not sure this line should be needed....
8852-
p->setProp("Debug", "");
8853-
p->setPropInt(prop.str(), value);
8860+
CriticalBlock block(crit);
8861+
StringBuffer prop("Debug/");
8862+
prop.append(lower);
8863+
if (overwrite || !p->hasProp(prop.str()))
8864+
{
8865+
// MORE - not sure this line should be needed....
8866+
p->setProp("Debug", "");
8867+
p->setPropInt(prop.str(), value);
8868+
}
8869+
}
8870+
catch (IException * e)
8871+
{
8872+
if (!validateXMLTag(propname))
8873+
{
8874+
e->Release();
8875+
throw makeStringExceptionV(WUERR_InvalidDebugValueName, "Attempt to set debug value with invalid name: %s", propname);
8876+
}
8877+
throw;
88548878
}
88558879
}
88568880

common/workunit/workunit.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ enum : unsigned
5959
{
6060
WUERR_ModifyFilterAfterFinalize = WORKUNIT_ERROR_START,
6161
WUERR_FinalizeAfterFinalize,
62+
WUERR_InvalidDebugValueName,
6263
};
6364

6465
// error codes

dali/base/dacoven.cpp

Lines changed: 36 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1067,33 +1067,40 @@ DALI_UID getGlobalUniqueIds(unsigned num,SocketEndpoint *_foreignnode)
10671067
{
10681068
if (num==0)
10691069
return 0;
1070-
if (coven)
1071-
return coven->getUniqueIds(num,_foreignnode);
1072-
if (!_foreignnode||_foreignnode->isNull())
1073-
throw MakeStringException(99,"getUniqueIds: Not connected to dali");
1074-
SocketEndpoint foreignnode;
1075-
foreignnode.set(*_foreignnode);
1076-
if (foreignnode.port==0)
1077-
foreignnode.port=DALI_SERVER_PORT;
1078-
CDaliUidAllocator &uidAllocator = CDaliUidAllocator::find(CCovenBase::foreginUidallocators,foreignnode);
1079-
DALI_UID uid;
1080-
CriticalBlock block(uidAllocator.crit);
1081-
while (!uidAllocator.allocUIDs(uid,num)) {
1082-
unsigned n = uidAllocator.getBankSize();
1083-
if (n<num)
1084-
n = num*2;
1085-
DALI_UID next;
1086-
CMessageBuffer mb;
1087-
mb.append((int)MCR_ALLOC_UNIQUE_IDS);
1088-
mb.append(n);
1089-
Owned<ICommunicator> foreign;
1090-
Owned<IGroup> group = createIGroup(1,&foreignnode);
1091-
foreign.setown(createCommunicator(group));
1092-
foreign->sendRecv(mb,RANK_RANDOM,MPTAG_DALI_COVEN_REQUEST);
1093-
mb.read(next);
1094-
if ((next==0)&&mb.remaining()) // server exception
1095-
throw deserializeException(mb);
1096-
uidAllocator.addUIDs((__uint64)next,n);
1097-
}
1098-
return uid;
1070+
try
1071+
{
1072+
if (coven)
1073+
return coven->getUniqueIds(num,_foreignnode);
1074+
if (!_foreignnode||_foreignnode->isNull())
1075+
throw MakeStringException(99,"getUniqueIds: Not connected to dali");
1076+
SocketEndpoint foreignnode;
1077+
foreignnode.set(*_foreignnode);
1078+
if (foreignnode.port==0)
1079+
foreignnode.port=DALI_SERVER_PORT;
1080+
CDaliUidAllocator &uidAllocator = CDaliUidAllocator::find(CCovenBase::foreginUidallocators,foreignnode);
1081+
DALI_UID uid;
1082+
CriticalBlock block(uidAllocator.crit);
1083+
while (!uidAllocator.allocUIDs(uid,num)) {
1084+
unsigned n = uidAllocator.getBankSize();
1085+
if (n<num)
1086+
n = num*2;
1087+
DALI_UID next;
1088+
CMessageBuffer mb;
1089+
mb.append((int)MCR_ALLOC_UNIQUE_IDS);
1090+
mb.append(n);
1091+
Owned<ICommunicator> foreign;
1092+
Owned<IGroup> group = createIGroup(1,&foreignnode);
1093+
foreign.setown(createCommunicator(group));
1094+
foreign->sendRecv(mb,RANK_RANDOM,MPTAG_DALI_COVEN_REQUEST);
1095+
mb.read(next);
1096+
if ((next==0)&&mb.remaining()) // server exception
1097+
throw deserializeException(mb);
1098+
uidAllocator.addUIDs((__uint64)next,n);
1099+
}
1100+
return uid;
1101+
}
1102+
catch (IException *e)
1103+
{
1104+
throw makeWrappedException(e, e->errorCode(), "getGlobalUniqueIds");
1105+
}
10991106
}

dali/dfu/dfurun.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -670,7 +670,16 @@ class CDFUengine: public CInterface, implements IDFUengine
670670
authorized = HASREADPERMISSION(perm);
671671
}
672672
if (!authorized)
673-
throw makeStringExceptionV(DFSERR_LookupAccessDenied,"Lookup permission denied for foreign file: %s",logicalName.str());
673+
{
674+
StringBuffer context;
675+
StringBuffer username;
676+
if (user)
677+
user->getUserName(username);
678+
else
679+
username.append("Null user");
680+
context.appendf("user: '%s', assigned access %s (%d)", username.str(), getSecAccessFlagName(perm), perm);
681+
throw makeStringExceptionV(DFSERR_LookupAccessDenied, "Lookup permission denied for foreign file: %s, %s", logicalName.str(), context.str());
682+
}
674683
}
675684
}
676685

docs/EN_US/ConfiguringHPCC/ConfiguringHPCC.xml

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2703,9 +2703,22 @@ sudo -u hpcc cp /etc/HPCCSystems/source/NewEnvironment.xml /etc/HPCCSystems/envi
27032703
<para />
27042704
</sect3>
27052705

2706-
<xi:include href="ECLWatch/TheECLWatchMan.xml"
2707-
xpointer="xpointer(//*[@id='ECLWatchXREFMultiThor'])"
2708-
xmlns:xi="http://www.w3.org/2001/XInclude" />
2706+
<sect3 id="ECLWatchXREFMultiThor">
2707+
<title>XREF with multiple Thor clusters</title>
2708+
2709+
<para>XREF runs on the primary Thor cluster. For a configuration
2710+
with more than one Thor cluster on the same physical node group, ECL
2711+
Watch only displays the primary Thor and not any other Thor that
2712+
shares the same node group. This is the Thor cluster whose name
2713+
matches the <emphasis>nodeGroup</emphasis> in the
2714+
configuration.</para>
2715+
2716+
<para>To allow XREF to run in an environment with multiple Thor
2717+
clusters, set the nodeGroup to the same value for all Thor
2718+
clusters.</para>
2719+
</sect3>
2720+
2721+
27092722

27102723
<?hard-pagebreak ?>
27112724

docs/EN_US/ECLWatch/CMakeLists.txt

Lines changed: 0 additions & 17 deletions
This file was deleted.

0 commit comments

Comments
 (0)