Skip to content

Commit

Permalink
HPCC-31755 Soapcall LOG multi-line separator 2
Browse files Browse the repository at this point in the history
Signed-off-by: M Kelly <mark.kelly+copilot@lexisnexisrisk.com>
  • Loading branch information
mckellyln committed Oct 6, 2024
1 parent 608dee7 commit 66f249b
Show file tree
Hide file tree
Showing 6 changed files with 58 additions and 19 deletions.
56 changes: 43 additions & 13 deletions common/thorhelper/thorsoapcall.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,41 @@ using roxiemem::OwnedRoxieString;
#define CONNECTION "Connection"

unsigned soapTraceLevel = 1;
StringBuffer soapSepString("");
StringBuffer soapSepString;
static CriticalSection soapCrit;

void setSoapSepString(StringBuffer &_soapSepString)
{
CriticalBlock b(soapCrit);
soapSepString.clear().append(_soapSepString);
}

static void multiLineAppendReplace(StringBuffer &origStr, StringBuffer &newStr)
{
if (origStr.isEmpty())
return;
const char *cursor = origStr;
while (cursor)
{
switch (*cursor)
{
case '\0':
return;
case '\r':
newStr.append(soapSepString);
if ('\n' == *(cursor+1))
cursor++;
break;
case '\n':
newStr.append(soapSepString);
break;
default:
newStr.append(*cursor);
break;
}
++cursor;
}
}

#define WSCBUFFERSIZE 0x10000
#define MAXWSCTHREADS 50 //Max Web Service Call Threads
Expand Down Expand Up @@ -1952,16 +1986,14 @@ class CWSCAsyncFor : implements IWSCAsyncFor, public CInterface, public CAsyncFo
{
if (soapTraceLevel > 6 || master->logXML)
{
StringBuffer contentStr("");
StringBuffer contentStr;
if (contentEncoded)
contentStr.append(", content encoded.");
if ( (master->logXML) && (soapSepString.length() > 0) )
{
StringBuffer request2(request);
request2.replaceString("\r\n", soapSepString.str());
request2.replaceString("\r", soapSepString.str());
request2.replaceString("\n", soapSepString.str());
master->logctx.mCTXLOG("%s: request(%s)%s", master->wscCallTypeText(), request2.str(), contentStr.str());
StringBuffer request2;
multiLineAppendReplace(request, request2);
master->logctx.CTXLOG("%s: request(%s)%s", master->wscCallTypeText(), request2.str(), contentStr.str());
}
else
master->logctx.mCTXLOG("%s: request(%s)%s", master->wscCallTypeText(), request.str(), contentStr.str());
Expand Down Expand Up @@ -2263,12 +2295,10 @@ class CWSCAsyncFor : implements IWSCAsyncFor, public CInterface, public CAsyncFo
{
if ( (master->logXML) && (soapSepString.length() > 0) )
{
StringBuffer response2(dbgheader);
response2.append(response);
response2.replaceString("\r\n", soapSepString.str());
response2.replaceString("\r", soapSepString.str());
response2.replaceString("\n", soapSepString.str());
master->logctx.mCTXLOG("%s: LEN=%d %sresponse(%s)", getWsCallTypeName(master->wscType),response.length(),chunked?"CHUNKED ":"", response2.str());
StringBuffer response2;
multiLineAppendReplace(dbgheader, response2);
multiLineAppendReplace(response, response2);
master->logctx.CTXLOG("%s: LEN=%d %sresponse(%s)", getWsCallTypeName(master->wscType),response.length(),chunked?"CHUNKED ":"", response2.str());
}
else
master->logctx.mCTXLOG("%s: LEN=%d %sresponse(%s%s)", getWsCallTypeName(master->wscType),response.length(),chunked?"CHUNKED ":"", dbgheader.str(), response.str());
Expand Down
2 changes: 1 addition & 1 deletion common/thorhelper/thorsoapcall.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,6 @@ interface IRoxieAbortMonitor
extern THORHELPER_API unsigned soapTraceLevel;
extern THORHELPER_API IWSCHelper * createSoapCallHelper(IWSCRowProvider *, IEngineRowAllocator * outputAllocator, const char *authToken, SoapCallMode scMode, ClientCertificate *clientCert, const IContextLogger &logctx, IRoxieAbortMonitor * roxieAbortMonitor);
extern THORHELPER_API IWSCHelper * createHttpCallHelper(IWSCRowProvider *, IEngineRowAllocator * outputAllocator, const char *authToken, SoapCallMode scMode, ClientCertificate *clientCert, const IContextLogger &logctx, IRoxieAbortMonitor * roxieAbortMonitor);
extern THORHELPER_API StringBuffer soapSepString;
extern THORHELPER_API void setSoapSepString(StringBuffer &_soapSepString);

#endif /* __THORSOAPCALL_HPP_ */
3 changes: 1 addition & 2 deletions ecl/hthor/hthor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7741,8 +7741,7 @@ void CHThorWSCBaseActivity::init()
StringBuffer soapSepStr;
StringBufferAdaptor soapSepAdaptor(soapSepStr);
agent.queryWorkUnit()->getDebugValue("soapLogSepString", soapSepAdaptor);
if (!soapSepStr.isEmpty())
soapSepString.clear().append(soapSepStr);
setSoapSepString(soapSepStr);
}

//---------------------------------------------------------------------------
Expand Down
6 changes: 5 additions & 1 deletion roxie/ccd/ccdmain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -889,7 +889,11 @@ int CCD_API roxie_main(int argc, const char *argv[], const char * defaultYaml)
roxiemem::setMemTraceLevel(topology->getPropInt("@memTraceLevel", runOnce ? 0 : 1));
soapTraceLevel = topology->getPropInt("@soapTraceLevel", runOnce ? 0 : 1);
if (topology->hasProp("@soapLogSepString"))
topology->getProp("@soapLogSepString", soapSepString);
{
StringBuffer tmpSepString;
topology->getProp("@soapLogSepString", tmpSepString);
setSoapSepString(tmpSepString);
}
miscDebugTraceLevel = topology->getPropInt("@miscDebugTraceLevel", 0);
traceRemoteFiles = topology->getPropBool("@traceRemoteFiles", false);
testAgentFailure = topology->getPropInt("expert/@testAgentFailure", testAgentFailure);
Expand Down
6 changes: 5 additions & 1 deletion roxie/ccd/ccdstate.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2928,7 +2928,11 @@ class CRoxiePackageSetManager : implements IRoxieQueryPackageManagerSet, impleme
else if (stricmp(queryName, "control:soapLogSepString")==0)
{
if (control->hasProp("@string"))
control->getProp("@string", soapSepString);
{
StringBuffer tmpSepString;
control->getProp("@string", tmpSepString);
setSoapSepString(tmpSepString);
}
}
else if (stricmp(queryName, "control:socketCheckInterval")==0)
{
Expand Down
4 changes: 3 additions & 1 deletion thorlcr/graph/thgraph.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2750,7 +2750,9 @@ void CJobBase::init()
failOnLeaks = getOptBool(THOROPT_FAIL_ON_LEAKS);
maxLfnBlockTimeMins = getOptInt(THOROPT_MAXLFN_BLOCKTIME_MINS, DEFAULT_MAXLFN_BLOCKTIME_MINS);
soapTraceLevel = getOptInt(THOROPT_SOAP_TRACE_LEVEL, 1);
getOpt(THOROPT_SOAP_LOG_SEP_STRING, soapSepString);
StringBuffer tmpSepString;
getOpt(THOROPT_SOAP_LOG_SEP_STRING, tmpSepString);
setSoapSepString(tmpSepString);

StringBuffer tracing("maxActivityCores = ");
if (maxActivityCores)
Expand Down

0 comments on commit 66f249b

Please sign in to comment.