Hi John,
The defined action is that you need to delete this object after you have
called the request object's Finished() method. No one but the object
creator can delete that object.
Andy
On Thu, 7 May 2015, John Gates wrote:
> I took a very close look at what's going on with the leaks. The smoking gun
> appears to be qdisp::QueryResource.cc:line 83 bool requestSent =
> _session->ProcessRequest(_request);
>
> The _request object is never delete during normal operation. It holds 2
> shared pointers to MergingRequester. One directly as _requester and one its
> _retryFunc (aka DispatchAction).
>
> Some action needs to be taken to delete _request, which has been given to
> xrootd. When ProcessRequest() is done, it calls Executive::markCompleted()
> via the NotifyExecutive class.
> Is there something we need to do with xrootd or are we supposed to delete
> this object in the call to markCompleted()?
>
> -John
>
>
>
> DispatchAction - destructor not called - holds a ResponseRequestor shared
> pointer in _spec
> -Passed to xrootd as _retryFunc
>
> MergingRequester - destructor not called - because DispatchAction still holds
> shared pointer and ?????? holds shared pointer
>
> QueryResource - destructor not called -
>
> Mgr - destructor not called because ?????
>
> InfileMerger - destructor not called because ????
>
>
> 0507 11:36:44.479 [0x7f28cb63f700] INFO root (build/css/Facade.cc:463) - ***
> qservTest_case01_qserv.Filter is NOT subChunked.
> 0507 11:36:44.479 [0x7f28cb63f700] INFO root (build/css/Facade.cc:244) -
> getChunkLevel returns 0
> 0507 11:36:44.479 [0x7f28cb63f700] INFO root (build/qana/PostPlugin.cc:158)
> - Query is non-chunked
> 0507 11:36:44.479 [0x7f28cb63f700] DEBUG qproc.QuerySession
> (build/qproc/QuerySession.cc:118) - Query Plugins applied:
> QuerySession::_showFinal() : parallel: SELECT * FROM
> qservTest_case01_qserv.Filter AS QST_1_
> QuerySession::_showFinal() : merge: SELECT *
>
> ****************
> 0507 11:36:44.479 [0x7f28cb63f700] INFO root
> (build/ccontrol/UserQuery.cc:269) - UserQuery uqCount=1
> 0507 11:36:44.479 [0x7f28cb63f700] INFO root (build/qdisp/Executive.cc:158)
> - Executive exCount=1
> ***************
>
>
> 0507 11:36:44.479 [0x7f28cb63f700] INFO root
> (build/css/KvInterfaceImplMem.cc:128) - ***
> KvInterfaceImplMem::exists(/DBS/qservTest_case01_qserv): YES
> 0507 11:36:44.479 [0x7f28cb63f700] INFO root (build/css/Facade.cc:105) - ***
> containsDb(qservTest_case01_qserv): 1
> 0507 11:36:44.489 [0x7f28bde8a700] DEBUG root (app.py:343) - reporting -1 100
> Dispatch Query.
> 0507 11:36:44.489 [0x7f28bde8a700] DEBUG root
> (build/qdisp/MessageStore.cc:49) - Msg: -1 100 Dispatch Query.
> 0507 11:36:44.489 [0x7f28bde8a700] DEBUG root
> (build/ccontrol/userQueryProxy.cc:105) - EXECUTING UserQuery_submit(1)
> 0507 11:36:44.489 [0x7f28bde8a700] INFO root
> (build/qana/ScanTablePlugin.cc:130) - Squash scan tables: <2 chunks.
> 0507 11:36:44.489 [0x7f28bde8a700] INFO root
> (build/ccontrol/UserQuery.cc:277) - UserQuery::_setupMerger()
>
> 0507 11:36:44.489 [0x7f28bde8a700] INFO root
> (build/rproc/InfileMerger.cc:218) - Mgr mgrCount=1
> *******************************************
>
> 0507 11:36:44.489 [0x7f28bde8a700] INFO root
> (build/mysql/MySqlConnection.cc:181) - MySqlConnection::_connectHelper
> 0507 11:36:44.489 [0x7f28bde8a700] INFO root
> (build/ccontrol/UserQuery.cc:179) - UserQuery beginning submission
> 0507 11:36:44.489 [0x7f28bde8a700] INFO root
> (build/qproc/QuerySession.cc:399) - Non-subchunked
> 0507 11:36:44.489 [0x7f28bde8a700] DEBUG root
> (build/qproc/QuerySession.cc:419) - returning queries:
> 0507 11:36:44.489 [0x7f28bde8a700] DEBUG root
> (build/qproc/QuerySession.cc:421) - SELECT * FROM
> qservTest_case01_qserv.Filter AS QST_1_
> 0507 11:36:44.489 [0x7f28bde8a700] DEBUG root
> (build/qproc/TaskMsgFactory2.cc:152) - no nextFragment
> 0507 11:36:44.489 [0x7f28bde8a700] DEBUG root
> (build/qproc/TaskMsgFactory2.cc:154) - SELECT * FROM
> qservTest_case01_qserv.Filter AS QST_1_
>
> 0507 11:36:44.490 [0x7f28bde8a700] INFO root
> (build/ccontrol/MergingRequester.cc:68) - MergingRequester mrCount=1
> ********************************
> ******MergingRequesterPTR ++1 local on stack mr
> ****** ++1 local on stack s.requester
> 0507 11:36:44.490 [0x7f28bde8a700] INFO root
> (build/ccontrol/MergingRequester.cc:236) - setError
> 0507 11:36:44.490 [0x7f28bde8a700] INFO root
> (build/ccontrol/MergingRequester.cc:237) - setError 0
>
> 0507 11:36:44.490 [0x7f28bde8a700] INFO root (build/qdisp/Executive.cc:203)
> - add TRACK s.requester.use_count()=2 *********************************
> 0507 11:36:44.490 [0x7f28bde8a700] DEBUG root (build/qdisp/Executive.cc:493)
> - Executive (0x1a8ef30) TRACKING id=1 r.use_count=2 ******************
> ******MergingRequesterPTR ++1 _requesters[1]
> 0507 11:36:44.490 [0x7f28bde8a700] DEBUG root (build/qdisp/Executive.cc:501)
> - Executive TRACKING id=1 r.use_count=3 *****************************
> 0507 11:36:44.490 [0x7f28bde8a700] DEBUG root (build/qdisp/Executive.cc:211)
> - Flag set to false 0
> 0507 11:36:44.490 [0x7f28bde8a700] INFO root (build/qdisp/Executive.cc:215)
> - Exec add pth=/chk/qservTest_case01_qserv/1234567890
> 0507 11:36:44.490 [0x7f28bde8a700] DEBUG root
> (build/qdisp/MessageStore.cc:49) - Msg: 1234567890 1200 Exec add
> pth=/chk/qservTest_case01_qserv/1234567890
> 0507 11:36:44.490 [0x7f28bde8a700] INFO root (build/qdisp/Executive.cc:392)
> - _dispatchQuery TRACK start use_count=3 ******************************
> 0507 11:36:44.490 [0x7f28bde8a700] INFO root (build/qdisp/Executive.cc:176)
> - DispatchAction daCount=1 *********************************************
> ******MergingRequesterPTR ++1 retryFunc->DispatchAction._spec.requester
> 0507 11:36:44.490 [0x7f28bde8a700] INFO root (build/qdisp/Executive.cc:399)
> - _dispatchQuery TRACK a use_count=4 *********************************
> ******MergingRequesterPTR ++1 r-> QueryResource._requester
> ****** QueryResource has sharedptr to
> retryFunc->DispatchAction
> ****** r->QueryResource passed to xrootd _service->Provision(r)
> 0507 11:36:44.490 [0x7f28bde8a700] INFO root (build/qdisp/Executive.cc:407)
> - _dispatchQuery TRACK b use_count=5 **********************************
> Opening xroot://127.0.0.1:1094//chk/qservTest_case01_qserv/1234567890
> 0507 11:36:44.491 [0x7f28bde8a700] INFO root (build/qdisp/Executive.cc:410)
> - _dispatchQuery TRACK c use_count=5 **********************************
> 0507 11:36:44.491 [0x7f28bde8a700] DEBUG root (build/qdisp/Executive.cc:422)
> - Provision was ok
> 0507 11:36:44.491 [0x7f28bde8a700] INFO root (build/qdisp/Executive.cc:426)
> - _dispatchQuery TRACK end use_count=5 *********************************
> 0507 11:36:44.491 [0x7f28bde8a700] INFO root (build/qdisp/Executive.cc:221)
> - Executive::add end TRACK use_count=5 *********************************
> 0507 11:36:44.491 [0x7f28bde8a700] INFO root
> (build/ccontrol/UserQuery.cc:210) - UserQuery::submit end TRACK
> requester.use_count=5 ****************
> ******MergingRequesterPTR --1 local on stack mr
> ****** --1 local on stack s.requester
> 0507 11:36:44.491 [0x7f28a6bfd700] INFO root
> (build/qdisp/QueryResource.cc:56) - Provision done
> 0507 11:36:44.491 [0x7f28a6bfd700] INFO root
> (build/qdisp/QueryResource.cc:75) - QueryResource::ProvisionDone a TRACK
> use_count()=3 ****************
> 0507 11:36:44.491 [0x7f28a6bfd700] INFO root
> (build/qdisp/QueryRequest.cc:92) - New QueryRequest with payload(143)
> **************************************************************
> ******MergingRequesterPTR ++1 QueryResource._requester
> ****** QueryResource._requester also has shared_ptr to
> retryFunc->DispatchAction
> ****** is then passed to xrootd _session->ProcessRequest(_request);
> 0507 11:36:44.492 [0x7f28a6bfd700] INFO root
> (build/qdisp/QueryResource.cc:79) - QueryResource::ProvisionDone b TRACK
> use_count()=4 ****************
> 0507 11:36:44.492 [0x7f28a6bfd700] DEBUG root
> (build/qdisp/QueryRequest.cc:103) - Requesting, payload size: [143]
> Task=0x7f2898000f00 processing id=0
> ******MergingRequesterPTR ++1 local pointer p created for logging
> 0507 11:36:44.492 [0x7f28a6bfd700] INFO root
> (build/qdisp/QueryResource.cc:101) - QueryResource::ProvisionDone c TRACK
> use_count()=5 *************
> ******MergingRequesterPTR --1 QueryResource self deletes taking its
> _requester with it
> 0507 11:36:44.492 [0x7f28a6bfd700] INFO root
> (build/qdisp/QueryResource.cc:103) - QueryResource::ProvisionDone end TRACK
> use_count()=4 ***********
> ******MergingRequesterPTR --1 local pointer p drops out
> ****** leaving use_count=3
> 0507 11:36:44.492 [0x7f28bde8a700] INFO root (app.py:404) - Query dispatch
> (1) took 0.006904 seconds
> 0507 11:36:44.492 [0x7f28bde8a700] INFO root
> (build/ccontrol/UserQuery.cc:217) - UserQuery::join TRACK
> 0507 11:36:44.492 [0x7f28bde8a700] INFO root (build/qdisp/Executive.cc:586)
> - Still 1 in flight.
> Task 0x7f2898000f00 sess=ok Status = 1 isWrite
> Task Handler calling RelBuff.
> 0507 11:36:44.531 [0x7f28a61fc700] DEBUG root
> (build/qdisp/QueryRequest.cc:109) - Early release of request buffer
> Task Handler calling trunc.
> Task 0x7f2898000f00 sess=ok Status = 1 isSync
> Task Handler responding with stream.
> 0507 11:36:44.533 [0x7f28a6bfd700] INFO root
> (build/qdisp/QueryRequest.cc:156) - GetResponseData with buffer of 1701016181
> Task 0x7f2898000f00 SetBuff Async Status=isReady
> 0507 11:36:44.533 [0x7f28a6bfd700] INFO root
> (build/qdisp/QueryRequest.cc:158) - Initiated request ok
> Task 0x7f2898000f00 sess=ok Status = 1 isReady
> Task Handler calling ProcessResponseData.
> 0507 11:36:44.533 [0x7f28a61fc700] INFO root
> (build/qdisp/QueryRequest.cc:184) - ProcessResponse[data] with buflen=256
> (more)
> 0507 11:36:44.533 [0x7f28a61fc700] INFO root
> (build/ccontrol/MergingRequester.cc:92) - flush state=HEADER_SIZE_WAIT
> blen=256 last=0
> 0507 11:36:44.533 [0x7f28a61fc700] INFO root
> (build/proto/ProtoHeaderWrap.cc:64) - buffer size=256 -> [[0]=28, [1]=13,
> [2]=2, [3]=0, [4]=0, ..., [251]=48, [252]=48, [253]=48, [254]=48, [255]=48]
> 0507 11:36:44.533 [0x7f28a61fc700] DEBUG root
> (build/ccontrol/MergingRequester.cc:107) - HEADER_SIZE_WAIT: Resizing buffer
> to 307
> 0507 11:36:44.533 [0x7f28a61fc700] INFO root
> (build/qdisp/QueryRequest.cc:208) - ProcessResponse waiting for more data
> Task 0x7f2898000f00 SetBuff Async Status=isReady
> Task 0x7f2898000f00 sess=ok Status = 1 isReady
> Task Handler calling ProcessResponseData.
> 0507 11:36:44.533 [0x7f28a57fb700] INFO root
> (build/qdisp/QueryRequest.cc:184) - ProcessResponse[data] with buflen=307
> (more)
> 0507 11:36:44.533 [0x7f28a57fb700] INFO root
> (build/ccontrol/MergingRequester.cc:92) - flush state=RESULT_WAIT blen=307
> last=0
> 0507 11:36:44.533 [0x7f28a57fb700] INFO root
> (build/ccontrol/MergingRequester.cc:115) - _buffer [[0]=8, [1]=0, [2]=16,
> [3]=1, [4]=26, ..., [302]=0, [303]=16, [304]=0, [305]=16, [306]=0]
> 0507 11:36:44.533 [0x7f28a57fb700] INFO root
> (build/ccontrol/MergingRequester.cc:126) - Flushed msgContinues=0 last=0 for
> tableName=r_1ebceab7f925bae5a000996b370390668_1234567890_0
> 0507 11:36:44.534 [0x7f28a57fb700] DEBUG root
> (build/rproc/InfileMerger.cc:287) - EXECUTING InfileMerger::merge(sizes=28,
> 307, rowcount=9)
> 0507 11:36:44.534 [0x7f28a57fb700] DEBUG root
> (build/rproc/InfileMerger.cc:446) - InfileMerger query prepared: CREATE TABLE
> qservResult.result_11903762039 (`filterId` TINYINT(4),
> `filterName` CHAR(3),
> `photClam` FLOAT,
> `photBW` FLOAT)
> 0507 11:36:44.534 [0x7f28a57fb700] INFO root
> (build/mysql/MySqlConnection.cc:181) - MySqlConnection::_connectHelper
> 0507 11:36:44.534 [0x7f28a57fb700] INFO root
> (build/rproc/InfileMerger.cc:358) - InfileMerger 0x7f28a8003040 connected to
> db.
> 0507 11:36:44.617 [0x7f28a57fb700] DEBUG root
> (build/rproc/InfileMerger.cc:369) - InfileMerger query success: CREATE TABLE
> qservResult.result_11903762039 (`filterId` TINYINT(4),
> `filterName` CHAR(3),
> `photClam` FLOAT,
> `photBW` FLOAT)
> 0507 11:36:44.617 [0x7f28a57fb700] DEBUG root
> (build/rproc/InfileMerger.cc:459) - InfileMerger table
> qservResult.result_11903762039 ready
> 0507 11:36:44.617 [0x7f28a57fb700] INFO root
> (build/qdisp/QueryRequest.cc:208) - ProcessResponse waiting for more data
> Task 0x7f2898000f00 SetBuff Async Status=isReady
> Task 0x7f2898000f00 sess=ok Status = 1 isReady
> Task Handler calling ProcessResponseData.
> 0507 11:36:44.618 [0x7f28a6bfd700] INFO root
> (build/qdisp/QueryRequest.cc:184) - ProcessResponse[data] with buflen=0
> (more)
> 0507 11:36:44.618 [0x7f28a6bfd700] INFO root
> (build/ccontrol/MergingRequester.cc:92) - flush state=RESULT_RECV blen=0
> last=0
> 0507 11:36:44.618 [0x7f28a6bfd700] DEBUG root
> (build/ccontrol/MergingRequester.cc:146) - RESULT_RECV last = 0
> 0507 11:36:44.618 [0x7f28a6bfd700] INFO root
> (build/qdisp/QueryRequest.cc:208) - ProcessResponse waiting for more data
> Task 0x7f2898000f00 SetBuff Async Status=isReady
> Task 0x7f2898000f00 sess=ok Status = 1 isReady
> Task Handler calling ProcessResponseData.
> 0507 11:36:44.618 [0x7f28a61fc700] INFO root
> (build/qdisp/QueryRequest.cc:184) - ProcessResponse[data] with buflen=0
> (last)
> 0507 11:36:44.618 [0x7f28a61fc700] INFO root
> (build/ccontrol/MergingRequester.cc:92) - flush state=BUFFER_DRAIN blen=0
> last=1
> 0507 11:36:44.618 [0x7f28a61fc700] INFO root
> (build/ccontrol/MergingRequester.cc:156) - BUFFER_DRAIN last=1 bLen=0
> buffer=[0]
> 0507 11:36:44.618 [0x7f28a61fc700] WARN root
> (build/qdisp/QueryRequest.cc:203) - Connection closed when more information
> expected sz=1
> Session Complete: cancel=0 task=ok
> Task 0x7f2898000f00 Kill status = isDone mhpend=0
> RelTask dodel=0 id=0
> 0507 11:36:44.618 [0x7f28a61fc700] INFO root
> (build/qdisp/QueryRequest.cc:288) - Finished() ok.
> 0507 11:36:44.618 [0x7f28a61fc700] INFO root (build/qdisp/Executive.cc:256)
> - Executive::markCompleted(1,1)
> ******MergingRequesterPTR ++1 local pointer i created for logging
> 0507 11:36:44.618 [0x7f28a61fc700] INFO root (build/qdisp/Executive.cc:283)
> - markCompleted TRACK ref=1 use_count=4 *******************************
> ******MergingRequesterPTR ++1 local pointer p created for logging
> 0507 11:36:44.618 [0x7f28a61fc700] INFO root (build/qdisp/Executive.cc:512)
> - &&& UNTRACK p.use_count()=5 ***************************
> ******MergingRequesterPTR --1 Executive._requesters erased it
> 0507 11:36:44.618 [0x7f28a61fc700] INFO root (build/qdisp/Executive.cc:514)
> - &&& UNTRACK erased p.use_count()=4 *************************
> ******MergingRequesterPTR ++1 local pointer p removed
> 0507 11:36:44.618 [0x7f28a61fc700] INFO root (build/qdisp/Executive.cc:520)
> - Executive (0x1a8ef30) UNTRACKING id=1 ***************************
> 0507 11:36:44.618 [0x7f28bde8a700] INFO root (build/qdisp/Executive.cc:592)
> - Executive::_waitAllUntilEmpty() TRACK ************************
> 0507 11:36:44.618 [0x7f28a61fc700] INFO root (build/qdisp/Executive.cc:286)
> - markCompleted end TRACK ref=1 use_count=3 ***********************
> ******MergingRequesterPTR --1 local pointer i removed, use_count=2
> 0507 11:36:44.618 [0x7f28bde8a700] INFO root (build/qdisp/Executive.cc:232)
> - entry state:0x7f28a800d480
> Resource(/chk/qservTest_case01_qserv/1234567890): 20150507-11:36:44, Complete
> (success), 0, )
> 0507 11:36:44.618 [0x7f28bde8a700] INFO root (build/qdisp/Executive.cc:243)
> - Query exec finish. 1 dispatched.
> 0507 11:36:44.618 [0x7f28bde8a700] DEBUG root
> (build/qdisp/MessageStore.cc:49) - Msg: 1234567890 2000 Complete (success) 0
> 1431023804
> 0507 11:36:44.618 [0x7f28bde8a700] DEBUG root (build/qdisp/Executive.cc:250)
> - Flag set to _empty=1 sCount=1 requestCount=1
> 0507 11:36:44.618 [0x7f28bde8a700] INFO root
> (build/rproc/InfileMerger.cc:332) - Merged qservResult.result_11903762039
> into qservResult.result_11903762039
> 0507 11:36:44.618 [0x7f28bde8a700] INFO root
> (build/ccontrol/UserQuery.cc:222) - Joined everything (success)
> 0507 11:36:44.619 [0x7f28bde8a700] INFO root (app.py:408) - Query exec (1)
> took 0.126505 seconds
> 0507 11:36:44.620 [0x7f28bde8a700] INFO root (app.py:413) - Final state of
> all queries success
> 0507 11:36:44.621 [0x7f28bd489700] INFO root
> (build/ccontrol/UserQuery.cc:134) - ~UserQuery uqCount=0
> *************************
> 0507 11:36:44.621 [0x7f28bd489700] INFO root (build/qdisp/Executive.cc:163)
> - ~Executive exCount=0 *************************
>
> ########################################################################
> Use REPLY-ALL to reply to list
>
> To unsubscribe from the QSERV-L list, click the following link:
> https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=QSERV-L&A=1
>
########################################################################
Use REPLY-ALL to reply to list
To unsubscribe from the QSERV-L list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=QSERV-L&A=1
|