Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/candidate-9.8.x'
Browse files Browse the repository at this point in the history
Signed-off-by: Jake Smith <jake.smith@lexisnexisrisk.com>
  • Loading branch information
jakesmith committed Sep 13, 2024
2 parents bd13ae1 + 1a7e141 commit 1d19e67
Show file tree
Hide file tree
Showing 78 changed files with 4,397 additions and 12,065 deletions.
52 changes: 38 additions & 14 deletions common/workunit/workunit.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8758,14 +8758,26 @@ void CLocalWorkUnit::setDebugValue(const char *propname, const char *value, bool
lower.append(propname);
if (!strchr(lower, ':'))
lower.toLowerCase();
CriticalBlock block(crit);
StringBuffer prop("Debug/");
prop.append(lower);
if (overwrite || !p->hasProp(prop.str()))
try
{
// MORE - not sure this line should be needed....
p->setProp("Debug", "");
p->setProp(prop.str(), value);
CriticalBlock block(crit);
StringBuffer prop("Debug/");
prop.append(lower);
if (overwrite || !p->hasProp(prop.str()))
{
// MORE - not sure this line should be needed....
p->setProp("Debug", "");
p->setProp(prop.str(), value);
}
}
catch (IException * e)
{
if (!validateXMLTag(propname))
{
e->Release();
throw makeStringExceptionV(WUERR_InvalidDebugValueName, "Attempt to set debug value with invalid name: %s", propname);
}
throw;
}
}

Expand Down Expand Up @@ -8843,14 +8855,26 @@ void CLocalWorkUnit::setDebugValueInt(const char *propname, int value, bool over
lower.append(propname);
if (!strchr(lower, ':'))
lower.toLowerCase();
CriticalBlock block(crit);
StringBuffer prop("Debug/");
prop.append(lower);
if (overwrite || !p->hasProp(prop.str()))
try
{
// MORE - not sure this line should be needed....
p->setProp("Debug", "");
p->setPropInt(prop.str(), value);
CriticalBlock block(crit);
StringBuffer prop("Debug/");
prop.append(lower);
if (overwrite || !p->hasProp(prop.str()))
{
// MORE - not sure this line should be needed....
p->setProp("Debug", "");
p->setPropInt(prop.str(), value);
}
}
catch (IException * e)
{
if (!validateXMLTag(propname))
{
e->Release();
throw makeStringExceptionV(WUERR_InvalidDebugValueName, "Attempt to set debug value with invalid name: %s", propname);
}
throw;
}
}

Expand Down
1 change: 1 addition & 0 deletions common/workunit/workunit.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ enum : unsigned
{
WUERR_ModifyFilterAfterFinalize = WORKUNIT_ERROR_START,
WUERR_FinalizeAfterFinalize,
WUERR_InvalidDebugValueName,
};

// error codes
Expand Down
65 changes: 36 additions & 29 deletions dali/base/dacoven.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1067,33 +1067,40 @@ DALI_UID getGlobalUniqueIds(unsigned num,SocketEndpoint *_foreignnode)
{
if (num==0)
return 0;
if (coven)
return coven->getUniqueIds(num,_foreignnode);
if (!_foreignnode||_foreignnode->isNull())
throw MakeStringException(99,"getUniqueIds: Not connected to dali");
SocketEndpoint foreignnode;
foreignnode.set(*_foreignnode);
if (foreignnode.port==0)
foreignnode.port=DALI_SERVER_PORT;
CDaliUidAllocator &uidAllocator = CDaliUidAllocator::find(CCovenBase::foreginUidallocators,foreignnode);
DALI_UID uid;
CriticalBlock block(uidAllocator.crit);
while (!uidAllocator.allocUIDs(uid,num)) {
unsigned n = uidAllocator.getBankSize();
if (n<num)
n = num*2;
DALI_UID next;
CMessageBuffer mb;
mb.append((int)MCR_ALLOC_UNIQUE_IDS);
mb.append(n);
Owned<ICommunicator> foreign;
Owned<IGroup> group = createIGroup(1,&foreignnode);
foreign.setown(createCommunicator(group));
foreign->sendRecv(mb,RANK_RANDOM,MPTAG_DALI_COVEN_REQUEST);
mb.read(next);
if ((next==0)&&mb.remaining()) // server exception
throw deserializeException(mb);
uidAllocator.addUIDs((__uint64)next,n);
}
return uid;
try
{
if (coven)
return coven->getUniqueIds(num,_foreignnode);
if (!_foreignnode||_foreignnode->isNull())
throw MakeStringException(99,"getUniqueIds: Not connected to dali");
SocketEndpoint foreignnode;
foreignnode.set(*_foreignnode);
if (foreignnode.port==0)
foreignnode.port=DALI_SERVER_PORT;
CDaliUidAllocator &uidAllocator = CDaliUidAllocator::find(CCovenBase::foreginUidallocators,foreignnode);
DALI_UID uid;
CriticalBlock block(uidAllocator.crit);
while (!uidAllocator.allocUIDs(uid,num)) {
unsigned n = uidAllocator.getBankSize();
if (n<num)
n = num*2;
DALI_UID next;
CMessageBuffer mb;
mb.append((int)MCR_ALLOC_UNIQUE_IDS);
mb.append(n);
Owned<ICommunicator> foreign;
Owned<IGroup> group = createIGroup(1,&foreignnode);
foreign.setown(createCommunicator(group));
foreign->sendRecv(mb,RANK_RANDOM,MPTAG_DALI_COVEN_REQUEST);
mb.read(next);
if ((next==0)&&mb.remaining()) // server exception
throw deserializeException(mb);
uidAllocator.addUIDs((__uint64)next,n);
}
return uid;
}
catch (IException *e)
{
throw makeWrappedException(e, e->errorCode(), "getGlobalUniqueIds");
}
}
11 changes: 10 additions & 1 deletion dali/dfu/dfurun.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -670,7 +670,16 @@ class CDFUengine: public CInterface, implements IDFUengine
authorized = HASREADPERMISSION(perm);
}
if (!authorized)
throw makeStringExceptionV(DFSERR_LookupAccessDenied,"Lookup permission denied for foreign file: %s",logicalName.str());
{
StringBuffer context;
StringBuffer username;
if (user)
user->getUserName(username);
else
username.append("Null user");
context.appendf("user: '%s', assigned access %s (%d)", username.str(), getSecAccessFlagName(perm), perm);
throw makeStringExceptionV(DFSERR_LookupAccessDenied, "Lookup permission denied for foreign file: %s, %s", logicalName.str(), context.str());
}
}
}

Expand Down
19 changes: 16 additions & 3 deletions docs/EN_US/ConfiguringHPCC/ConfiguringHPCC.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2703,9 +2703,22 @@ sudo -u hpcc cp /etc/HPCCSystems/source/NewEnvironment.xml /etc/HPCCSystems/envi
<para />
</sect3>

<xi:include href="ECLWatch/TheECLWatchMan.xml"
xpointer="xpointer(//*[@id='ECLWatchXREFMultiThor'])"
xmlns:xi="http://www.w3.org/2001/XInclude" />
<sect3 id="ECLWatchXREFMultiThor">
<title>XREF with multiple Thor clusters</title>

<para>XREF runs on the primary Thor cluster. For a configuration
with more than one Thor cluster on the same physical node group, ECL
Watch only displays the primary Thor and not any other Thor that
shares the same node group. This is the Thor cluster whose name
matches the <emphasis>nodeGroup</emphasis> in the
configuration.</para>

<para>To allow XREF to run in an environment with multiple Thor
clusters, set the nodeGroup to the same value for all Thor
clusters.</para>
</sect3>



<?hard-pagebreak ?>

Expand Down
17 changes: 0 additions & 17 deletions docs/EN_US/ECLWatch/CMakeLists.txt

This file was deleted.

Loading

0 comments on commit 1d19e67

Please sign in to comment.