Merge branch 'TRAFODION-2884' of github.com:zcorrea/trafodion into
TRAFODION-2884
Conflicts:
core/sqf/monitor/linux/nameserver.cxx
core/sqf/monitor/linux/nscommacceptmon.cxx
core/sqf/monitor/linux/nsreqnewproc.cxx
core/sqf/monitor/linux/process.cxx
core/sqf/monitor/linux/reqqueue.cxx
Project: http://git-wip-us.apache.org/repos/asf/trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafodion/commit/010e563d
Tree: http://git-wip-us.apache.org/repos/asf/trafodion/tree/010e563d
Diff: http://git-wip-us.apache.org/repos/asf/trafodion/diff/010e563d
Branch: refs/heads/master
Commit: 010e563d4320a802d992dc7f69683105c463c603
Parents: 8b025ea 6dc990f
Author: Dave George <[email protected]>
Authored: Tue Apr 3 23:28:50 2018 +0000
Committer: Dave George <[email protected]>
Committed: Tue Apr 3 23:28:50 2018 +0000
----------------------------------------------------------------------
core/sqf/conf/log4cxx.monitor.trafns.config | 2 +-
.../export/include/common/evl_sqlog_eventnum.h | 24 +
core/sqf/export/include/seabed/ms.h | 1 +
core/sqf/export/include/trafconf/trafconfig.h | 2 +-
core/sqf/monitor/linux/cluster.cxx | 183 +++--
core/sqf/monitor/linux/cluster.h | 8 +-
core/sqf/monitor/linux/internal.h | 22 +-
core/sqf/monitor/linux/makefile | 1 +
core/sqf/monitor/linux/mlio.cxx | 10 +-
core/sqf/monitor/linux/monitor.cxx | 45 +-
core/sqf/monitor/linux/montrace.cxx | 4 +-
core/sqf/monitor/linux/msgdef.h | 41 +-
core/sqf/monitor/linux/nameserver.cxx | 92 ++-
core/sqf/monitor/linux/nameserver.h | 1 +
core/sqf/monitor/linux/notice.cxx | 188 ++++-
core/sqf/monitor/linux/notice.h | 5 +
core/sqf/monitor/linux/nscommacceptmon.cxx | 87 ++-
core/sqf/monitor/linux/nscommacceptmon.h | 1 +
core/sqf/monitor/linux/nsprocess.cxx | 12 +-
core/sqf/monitor/linux/nsreqnewproc.cxx | 63 +-
core/sqf/monitor/linux/nsreqprocinfons.cxx | 206 +++++
core/sqf/monitor/linux/nsreqqueue.cxx | 10 +
core/sqf/monitor/linux/pnode.cxx | 151 ++++
core/sqf/monitor/linux/pnode.h | 15 +-
core/sqf/monitor/linux/process.cxx | 262 ++++++-
core/sqf/monitor/linux/process.h | 21 +-
core/sqf/monitor/linux/ptpclient.cxx | 747 +++++++++++++------
core/sqf/monitor/linux/ptpclient.h | 46 +-
core/sqf/monitor/linux/ptpcommaccept.cxx | 269 ++-----
core/sqf/monitor/linux/ptpcommaccept.h | 2 -
core/sqf/monitor/linux/replicate.cxx | 30 +-
core/sqf/monitor/linux/reqkill.cxx | 26 +-
core/sqf/monitor/linux/reqnewproc.cxx | 28 +-
core/sqf/monitor/linux/reqnotify.cxx | 155 +++-
core/sqf/monitor/linux/reqopen.cxx | 74 +-
core/sqf/monitor/linux/reqprocinfo.cxx | 28 +-
core/sqf/monitor/linux/reqqueue.cxx | 724 +++++++++++++++---
core/sqf/monitor/linux/reqqueue.h | 84 +++
core/sqf/monitor/linux/shell.cxx | 38 +-
core/sqf/monitor/test/childExitChild.cxx | 1 +
core/sqf/monitor/test/childExitParent.cxx | 1 +
core/sqf/monitor/test/monitor.env | 79 ++
core/sqf/monitor/test/montestutil.cxx | 4 +-
core/sqf/monitor/test/runtest | 258 +++++--
core/sqf/monitor/test/sqconfig.monitor.cluster | 39 -
core/sqf/monitor/test/sqconfig.monitor.virtual | 4 +
core/sqf/sqenvcom.sh | 20 +-
core/sqf/sql/scripts/monitor.env | 1 +
core/sqf/sql/scripts/pstat | 2 +-
core/sqf/sql/scripts/sqconfig | 4 +
core/sqf/src/seabed/src/labelmaps.cpp | 4 +
core/sqf/src/trafconf/trafconf.cpp | 152 +++-
core/sqf/src/trafconf/trafconfig.h | 0
53 files changed, 3363 insertions(+), 914 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/trafodion/blob/010e563d/core/sqf/monitor/linux/msgdef.h
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/trafodion/blob/010e563d/core/sqf/monitor/linux/nameserver.cxx
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/trafodion/blob/010e563d/core/sqf/monitor/linux/nscommacceptmon.cxx
----------------------------------------------------------------------
diff --cc core/sqf/monitor/linux/nscommacceptmon.cxx
index 9b60f90,633eb2d..3e02e62
--- a/core/sqf/monitor/linux/nscommacceptmon.cxx
+++ b/core/sqf/monitor/linux/nscommacceptmon.cxx
@@@ -258,28 -293,51 +298,62 @@@ void CCommAcceptMon::monReqNewProcess(
" msg.new_process_ns.nid=%d\n"
" msg.new_process_ns.pid=%d\n"
" msg.new_process_ns.verifier=%d\n"
+ " msg.new_process_ns.backup=%d\n"
+ " msg.new_process_ns.event_messages=%d\n"
+ " msg.new_process_ns.system_messages=%d\n"
" msg.new_process_ns.type=%d\n"
+ " msg.new_process_ns.parent_nid=%d\n"
+ " msg.new_process_ns.parent_pid=%d\n"
+ " msg.new_process_ns.parent_verifier=%d\n"
" msg.new_process_ns.priority=%d\n"
- " msg.new_process_ns.process_name=%s\n"
+ " msg.new_process_ns.backup=%d\n"
+ " msg.new_process_ns.unhooked=%d\n"
+ " msg.new_process_ns.event_messages=%d\n"
+ " msg.new_process_ns.system_messages=%d\n"
+ " msg.new_process_ns.pathStrId=%d:%d\n"
+ " msg.new_process_ns.ldpathStrId=%d:%d\n"
+ " msg.new_process_ns.programStrId=%d:%d\n"
+ " msg.new_process_ns.port=%s\n"
+ " msg.new_process_ns.argc=%d\n"
+ //" msg.new_process_ns.argv=%s\n"
+ " msg.new_process_ns.infile=%s\n"
+ " msg.new_process_ns.outfile=%s\n"
+ "
msg.new_process_ns.creation_time=%ld(secs):%ld(nsecs)\n"
, method_name, __LINE__
- , msg->u.request.u.new_process_ns.process_name
+ , msg->u.request.u.new_process_ns.parent_nid
+ , msg->u.request.u.new_process_ns.parent_pid
+ , msg->u.request.u.new_process_ns.parent_verifier
+ , msg->u.request.u.new_process_ns.pair_parent_nid
+ , msg->u.request.u.new_process_ns.pair_parent_pid
+ , msg->u.request.u.new_process_ns.pair_parent_verifier
, msg->u.request.u.new_process_ns.nid
, msg->u.request.u.new_process_ns.pid
, msg->u.request.u.new_process_ns.verifier
+ , msg->u.request.u.new_process_ns.backup
+ , msg->u.request.u.new_process_ns.event_messages
+ , msg->u.request.u.new_process_ns.system_messages
, msg->u.request.u.new_process_ns.type
+ , msg->u.request.u.new_process_ns.parent_nid
+ , msg->u.request.u.new_process_ns.parent_pid
+ , msg->u.request.u.new_process_ns.parent_verifier
, msg->u.request.u.new_process_ns.priority
- , msg->u.request.u.new_process_ns.process_name
+ , msg->u.request.u.new_process_ns.backup
+ , msg->u.request.u.new_process_ns.unhooked
+ , msg->u.request.u.new_process_ns.event_messages
+ , msg->u.request.u.new_process_ns.system_messages
+ , msg->u.request.u.new_process_ns.pathStrId.nid
+ , msg->u.request.u.new_process_ns.pathStrId.id
+ , msg->u.request.u.new_process_ns.ldpathStrId.nid
+ , msg->u.request.u.new_process_ns.ldpathStrId.id
+ , msg->u.request.u.new_process_ns.programStrId.nid
+ , msg->u.request.u.new_process_ns.programStrId.id
+ , msg->u.request.u.new_process_ns.port_name
+ , msg->u.request.u.new_process_ns.argc
+ //, msg->u.request.u.new_process_ns.argv
+ , msg->u.request.u.new_process_ns.infile
+ , msg->u.request.u.new_process_ns.outfile
+ , msg->u.request.u.new_process_ns.creation_time.tv_sec
+ , msg->u.request.u.new_process_ns.creation_time.tv_nsec
);
}
http://git-wip-us.apache.org/repos/asf/trafodion/blob/010e563d/core/sqf/monitor/linux/nsreqnewproc.cxx
----------------------------------------------------------------------
diff --cc core/sqf/monitor/linux/nsreqnewproc.cxx
index 76d289c,92a7634..682823b
--- a/core/sqf/monitor/linux/nsreqnewproc.cxx
+++ b/core/sqf/monitor/linux/nsreqnewproc.cxx
@@@ -81,34 -83,12 +84,31 @@@ void CExtNewProcNsReq::performRequest(
lnode = Nodes->GetLNode( nid_ );
node = lnode->GetNode();
parent_lnode = Nodes->GetLNode(
msg_->u.request.u.new_process_ns.parent_nid );
- parent_node = NULL;
if ( parent_lnode )
parent_node = parent_lnode->GetNode();
- CProcess *parent = NULL;
+ else
+ parent_node = NULL;
- strId_t pathStrId = node->GetStringId (
msg_->u.request.u.new_process_ns.path );
- strId_t ldpathStrId = node->GetStringId
(msg_->u.request.u.new_process_ns.ldpath );
- strId_t programStrId = node->GetStringId (
msg_->u.request.u.new_process_ns.program );
if ( parent_node )
parent = parent_node->GetProcess(
msg_->u.request.u.new_process_ns.parent_pid );
+ else
+ parent = NULL;
+ if ( parent )
+ {
+ int parentVerifier = msg_->u.request.u.new_process_ns.parent_verifier;
+
+ if ( (parentVerifier == -1) ||
+ (parentVerifier == parent->GetVerifier()) )
+ {
+ if ( msg_->u.request.u.new_process_ns.backup &&
+ (parent->GetPairParentNid() == -1 &&
+ parent->GetPairParentPid() == -1))
+ {
+ parent->SetPairParentNid(
msg_->u.request.u.new_process_ns.pair_parent_nid );
+ parent->SetPairParentPid(
msg_->u.request.u.new_process_ns.pair_parent_pid );
+ parent->SetPairParentVerifier(
msg_->u.request.u.new_process_ns.pair_parent_verifier );
+ }
+ }
+ }
CProcess *process = node->CreateProcess ( parent,
msg_->u.request.u.new_process_ns.nid,
msg_->u.request.u.new_process_ns.pid,
http://git-wip-us.apache.org/repos/asf/trafodion/blob/010e563d/core/sqf/monitor/linux/nsreqqueue.cxx
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/trafodion/blob/010e563d/core/sqf/monitor/linux/process.cxx
----------------------------------------------------------------------
diff --cc core/sqf/monitor/linux/process.cxx
index 29a115b,017ce76..b599840
--- a/core/sqf/monitor/linux/process.cxx
+++ b/core/sqf/monitor/linux/process.cxx
@@@ -542,14 -545,17 +543,17 @@@ bool CProcess::procExitReg(CProcess *ta
{ // This process is not the parent of the target process (parent
// processes automatically get process death notifications.)
- // Add entry to list of processes that are being monitored
- // by this process.
nidPid_t target = { targetProcess->Nid, targetProcess->Pid };
deathInterestLock_.lock();
- deathInterest_.push_back ( target );
+ // Add entry to list of processes that are being monitored
+ // by this process.
+ deathInterest_.push_back( target );
+ // Add entry to set of nids of processes that are being monitored
+ // by this process.
+ deathInterestNid_.insert( targetProcess->Nid );
deathInterestLock_.unlock();
- // Register interest with the target process
+ // Register interest with the target process
targetProcess->RegisterDeathNotification( Nid
, Pid
, Verifier
@@@ -4411,13 -4598,13 +4594,13 @@@ void CProcessContainer::Child_Exit ( CP
{
if (trace_settings & (TRACE_SYNC | TRACE_REQUEST |
TRACE_PROCESS))
- trace_printf("%s@%d - Child process %s (%d, %d:%d) exits
due "
- "to parent death (%d, %d:%d)\n",
+ trace_printf("%s@%d - Child process %s (%d, %d) exits due
"
+ "to parent death (%d, %d)\n",
method_name, __LINE__, process->GetName(),
- process->GetNid(), process->GetPid(),
process->GetVerifier(),
- parent->GetNid(), parent->GetPid(),
parent->GetVerifier());
-
+ process->GetNid(), process->GetPid(),
+ parent->GetNid(), parent->GetPid());
+
- childNode->SetProcessState( process, State_Down, true );
+ childLNode->SetProcessState( process, State_Down, true );
if ( !process->IsClone() )
{
if ( parent->GetType() == ProcessType_SPX )
@@@ -4426,9 -4613,22 +4609,22 @@@
}
else
{
- kill (process->GetPid(), Monitor->GetProcTermSig());
+ kill (process->GetPid(), Monitor->GetProcTermSig());
}
}
+ else
+ {
+ if (NameServerEnabled)
+ {
- CNode *childNode = childLNode->GetNode();
++ CNode *childNode = childNode->GetNode();
+ // Forward the process create to the target node
+ PtpClient->ProcessKill( process
+ , process->GetAbort()
+ , childLNode->GetNid()
+ , childNode->GetName());
+ }
+ }
+
if (trace_settings & (TRACE_SYNC | TRACE_REQUEST |
TRACE_PROCESS))
trace_printf("%s@%d - Completed kill for child process %s
(%d, %d)\n", method_name, __LINE__, process->GetName(), process->GetNid(),
process->GetPid());
}
@@@ -4964,13 -5165,11 +5161,11 @@@ CProcess * CProcessContainer::ParentNew
// If we have a parent process then it is expecting a reply
if (parent && !parent->IsClone() && !parent->IsPaired())
{
- #ifndef NAMESERVER_PROCESS
if (!process->IsNowait())
{ // The new process request was "waited" so send reply now
- #endif
struct message_def *reply_msg;
reply_msg = process->parentContext();
-
+
if ( reply_msg )
{
// send reply to the parent
@@@ -4985,8 -5183,7 +5179,7 @@@
{ // The new process request was "no-wait" so send notice now
process->SendProcessCreatedNotice(parent, result);
}
- #endif
- }
+ }
TRACE_EXIT;
@@@ -5096,14 -5293,9 +5289,9 @@@ void CProcessContainer::Exit_Process (C
{
if (!process->IsClone() && !MyNode->isInQuiesceState())
{
- if (!NameServerEnabled)
+ // Replicate the exit to other nodes
- //TRK-TODO
- // if (NameServerEnabled)
- {
- //message to monitor
- }
- // else
{
+ // Replicate the exit to other nodes
CReplExit *repl = new CReplExit(process->GetNid(),
process->GetPid(),
process->GetVerifier(),
http://git-wip-us.apache.org/repos/asf/trafodion/blob/010e563d/core/sqf/monitor/linux/reqprocinfo.cxx
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/trafodion/blob/010e563d/core/sqf/monitor/linux/reqqueue.cxx
----------------------------------------------------------------------
diff --cc core/sqf/monitor/linux/reqqueue.cxx
index a6b22a3,5c0c77f..184c694
--- a/core/sqf/monitor/linux/reqqueue.cxx
+++ b/core/sqf/monitor/linux/reqqueue.cxx
@@@ -1208,16 -1408,18 +1408,20 @@@ void CIntNewProcReq::performRequest(
MyNode->AddToNameMap( newProcess );
MyNode->AddToPidMap( newProcess->GetPid(), newProcess );
- // Successfully forked process
- if (NameServerEnabled)
+ // Successfully forked process. Replicate actual process
+ // id and process name.
+
+//TRK-TODO
+ /* if (NameServerEnabled)
{
- PtpClient->ProcessInit(newProcess, reqTag_, 0,
parentNid_, lnode->GetNode()->GetName());
+ // Send actual pid and process name back to parent
+ PtpClient->ProcessInit( newProcess
+ , reqTag_
+ , 0
+ , parentNid_ );
}
else
- {
- // Replicate actual pid and process name
+ */ {
CReplProcInit *repl
= new CReplProcInit(newProcess, reqTag_, 0,
parentNid_);
Replicator.addItem(repl);
@@@ -1230,14 -1432,23 +1434,23 @@@
}
}
- //TRK-TODO
if ( newProcess == NULL )
- {
+ {
// Process creation failure, relay error code to node
// that requested process creation.
- CReplProcInit *repl = new CReplProcInit(newProcess, reqTag_,
- result, parentNid_);
- Replicator.addItem(repl);
+ if (NameServerEnabled)
+ {
+ PtpClient->ProcessInit( newProcess
+ , reqTag_
+ , result
+ , parentNid_ );
+ }
+ else
+ {
+ CReplProcInit *repl = new CReplProcInit(newProcess,
reqTag_,
+ result,
parentNid_);
+ Replicator.addItem(repl);
+ }
}
#endif
}
@@@ -4380,89 -4863,91 +4900,91 @@@ const bool CReqQueue::reqConcurrent[]
// Request names used for trace output
const char * CReqQueue::svcReqType[] = {
- "",
- "Close",
- "DeleteNs",
- "Dump",
- "Event",
- "Exit",
- "Get",
- "Kill",
- "MonStats",
- "Mount",
- "NameServerAdd",
- "NameServerDelete",
- "NameServerStart",
- "NameServerStop",
- "NewProcess",
- "NewProcessNs",
- "NodeAdd",
- "NodeDelete",
- "NodeDown",
- "NodeInfo",
- "NodeName",
- "NodeUp",
- "Notice",
- "Notify",
- "Open",
- "OpenInfo",
- "PersistAdd",
- "PersistDelete",
- "PNodeInfo",
- "ProcessInfo",
- "ProcessInfoCont",
- "Set",
- "Shutdown",
- "ShutdownNs",
- "Startup",
- "Stfsd",
- "TmLeader",
- "TmReady",
- "TmSync",
- "TransInfo",
- "ZoneInfo"
+ "", // unused, request types start at 1
+ "Close", // ReqType_Close
+ "DelProcessNs", // ReqType_DelProcessNs
+ "Dump", // ReqType_Dump
+ "Event", // ReqType_Event
+ "Exit", // ReqType_Exit
+ "Get", // ReqType_Get
+ "Kill", // ReqType_Kill
+ "MonStats", // ReqType_MonStats
+ "Mount", // ReqType_Mount
+ "NameServerAdd", // ReqType_NameServerAdd
+ "NameServerDelete", // ReqType_NameServerDelete
+ "NameServerStart", // ReqType_NameServerStart
+ "NameServerStop", // ReqType_NameServerStop
+ "NewProcess", // ReqType_NewProcess
+ "NewProcessNs", // ReqType_NewProcessNs
+ "NodeAdd", // ReqType_NodeAdd
+ "NodeDelete", // ReqType_NodeDelete
+ "NodeDown", // ReqType_NodeDown
+ "NodeInfo", // ReqType_NodeInfo
+ "NodeName", // ReqType_NodeName
+ "NodeUp", // ReqType_NodeUp
+ "Notice", // ReqType_Notice -- not an actual request
+ "Notify", // ReqType_Notify
+ "Open", // ReqType_Open
+ "OpenInfo", // ReqType_OpenInfo
+ "PersistAdd", // ReqType_PersistAdd
+ "PersistDelete", // ReqType_PersistDelete
+ "PNodeInfo", // ReqType_PNodeInfo
+ "ProcessInfo", // ReqType_ProcessInfo
+ "ProcessInfoCont", // ReqType_ProcessInfoCont
+ "ProcessInfoNs", // ReqType_ProcessInfoNs
+ "Set", // ReqType_Set
+ "Shutdown", // ReqType_Shutdown
+ "ShutdownNs", // ReqType_ShutdownNs
+ "Startup", // ReqType_Startup
+ "Stfsd", // ReqType_Stfsd
+ "TmLeader", // ReqType_TmLeader
+ "TmReady", // ReqType_TmReady
+ "TmSync", // ReqType_TmSync
+ "TransInfo", // ReqType_TransInfo
+ "ZoneInfo" // ReqType_ZoneInfo
+ "Invalid" // ReqType_Invalid
};
-// Must match internal.h:InternalType
+// Must match internal.h:InternalType
const char * CReqQueue::intReqType[] = {
- ""
- , "ActivateSpare"
- , "Clone"
- , "Device"
- , "Down"
- , "Dump"
- , "DumpComplete"
- , "Event"
- , "Exit"
- , "IoData"
- , "Kill"
- , "NameServerAdd"
- , "NameServerDelete"
- , "NodeAdd"
- , "NodeAdded"
- , "NodeDelete"
- , "NodeDeleted"
- , "NodeName"
- , "Notify"
- , "PersistAdd"
- , "PersistDelete"
- , "Process"
- , "ProcessInit"
- , "Open"
- , "Set"
- , "StdinReq"
- , "Sync"
- , "Up"
- , "CreatePrimitives"
- , "Quiesce"
- , "PostQuiesce"
- , "Revive"
- , "Snapshot"
- , "UniqStr"
- , "TMReady"
- , "Shutdown"
- , "SchedData"
- , "SoftNodeDown"
- , "SoftNodeUp"
+ "" // InternalType_Null
+ , "ActivateSpare" // InternalType_ActivateSpare
+ , "Clone" // InternalType_Clone
+ , "Device" // InternalType_Device
+ , "Down" // InternalType_Down
+ , "Dump" // InternalType_Dump
+ , "DumpComplete" // InternalType_DumpComplete
+ , "Event" // InternalType_Event
+ , "Exit" // InternalType_Exit
+ , "IoData" // InternalType_IoData
+ , "Kill" // InternalType_Kill
+ , "NameServerAdd" // InternalType_NameServerAdd
+ , "NameServerDelete" // InternalType_NameServerDelete
+ , "NodeAdd" // InternalType_NodeAdd
+ , "NodeAdded" // InternalType_NodeAdded
+ , "NodeDelete" // InternalType_NodeDelete
+ , "NodeDeleted" // InternalType_NodeDeleted
+ , "NodeName" // InternalType_NodeName
+ , "Notify" // InternalType_Notify
+ , "PersistAdd" // InternalType_PersistAdd
+ , "PersistDelete" // InternalType_PersistDelete
+ , "Process" // InternalType_Process
+ , "ProcessInit" // InternalType_ProcessInit
+ , "Open" // InternalType_Open
+ , "Set" // InternalType_Set
+ , "StdinReq" // InternalType_StdinReq
+ , "Sync" // InternalType_Sync
+ , "Up" // InternalType_Up
+ , "CreatePrimitives" // InternalType_CreatePrimitives
+ , "Quiesce" // InternalType_Quiesce
+ , "PostQuiesce" // InternalType_PostQuiece
+ , "Revive" // InternalType_Revive
+ , "Snapshot" // InternalType_Snapshot
+ , "UniqStr" // InternalType_UniqStr
+ , "TMReady" // InternalType_TmReady
+ , "Shutdown" // InternalType_Shutdown
+ , "SchedData" // InternalType_SchedData
+ , "SoftNodeDown" // InternalType_SoftNodeDown
+ , "SoftNodeUp" // InternalType_SoftNodeUp
};