Hmm.  Hard to miss that gobs of cycles are being wasted passing both a thread 
and a request object around.  Since the request can only execute at any point 
on a single thread, the request object can point to the active thread.

Jim Starkey


> On Apr 6, 2015, at 2:06 PM, Dimitry Sibiryakov <s...@ibphoenix.com> wrote:
> 
> 06.04.2015 19:31, Alex Peshkoff wrote:
>> You provide me your conclusion instead of what I've asked...
> 
>   If you wish, here is call stack:
> 
>    fbrepl.dll!ReplTransaction::processInsert(Firebird::CheckStatusWrapper * 
> status, 
> Firebird::IAttachment * att, Firebird::ITransaction * tra, Firebird::IRecord 
> * new_data) 
> Line 302 + 0xa bytes    C++
>      engine12.dll!REPL_store(Jrd::thread_db * tdbb, Jrd::record_param * 
> newRecord, 
> Jrd::jrd_tra * transaction)  Line 111 + 0xa0 bytes    C++
>      engine12.dll!Jrd::StoreNode::store(Jrd::thread_db * tdbb, Jrd::jrd_req * 
> request, 
> Jrd::StmtNode::WhichTrigger whichTrig)  Line 6715 + 0x11 bytes    C++
>      engine12.dll!Jrd::StoreNode::execute(Jrd::thread_db * tdbb, Jrd::jrd_req 
> * request, 
> Jrd::StmtNode::ExeState * exeState)  Line 6651 + 0x12 bytes    C++
>      engine12.dll!EXE_looper(Jrd::thread_db * tdbb, Jrd::jrd_req * request, 
> const 
> Jrd::StmtNode * node)  Line 1318 + 0x1b bytes    C++
>      engine12.dll!looper_seh(Jrd::thread_db * tdbb, Jrd::jrd_req * request, 
> const 
> Jrd::StmtNode * node)  Line 1437 + 0x11 bytes    C++
>      engine12.dll!execute_looper(Jrd::thread_db * tdbb, Jrd::jrd_req * 
> request, Jrd::jrd_tra 
> * transaction, const Jrd::StmtNode * node, Jrd::jrd_req::req_s next_state)  
> Line 1046 + 
> 0x11 bytes    C++
>      engine12.dll!EXE_send(Jrd::thread_db * tdbb, Jrd::jrd_req * request, 
> unsigned short 
> msg, unsigned long length, const unsigned char * buffer)  Line 854 + 0x1d 
> bytes    C++
>      engine12.dll!Jrd::CreateRelationNode::execute(Jrd::thread_db * tdbb, 
> Jrd::DsqlCompilerScratch * dsqlScratch, Jrd::jrd_tra * transaction)  Line 
> 20371 + 0x23 
> bytes    C++
>      engine12.dll!Jrd::DdlNode::executeDdl(Jrd::thread_db * tdbb, 
> Jrd::DsqlCompilerScratch * 
> dsqlScratch, Jrd::jrd_tra * transaction)  Line 190 + 0x1b bytes    C++
>      engine12.dll!Jrd::DsqlDdlRequest::execute(Jrd::thread_db * tdbb, 
> Jrd::jrd_tra * * 
> traHandle, Firebird::IMessageMetadata * inMetadata, const unsigned char * 
> inMsg, 
> Firebird::IMessageMetadata * outMetadata, unsigned char * outMsg, bool 
> singleton)  Line 
> 842    C++
>      engine12.dll!DSQL_execute_immediate(Jrd::thread_db * tdbb, 
> Jrd::Attachment * 
> attachment, Jrd::jrd_tra * * tra_handle, unsigned long length, const char * 
> string, 
> unsigned short dialect, Firebird::IMessageMetadata * in_meta, const unsigned 
> char * 
> in_msg, Firebird::IMessageMetadata * out_meta, unsigned char * out_msg, bool 
> isInternalRequest)  Line 548 + 0x2c bytes    C++
>      engine12.dll!Jrd::JAttachment::execute(Firebird::CheckStatusWrapper * 
> user_status, 
> Firebird::ITransaction * apiTra, unsigned int length, const char * string, 
> unsigned int 
> dialect, Firebird::IMessageMetadata * inMetadata, void * inBuffer, 
> Firebird::IMessageMetadata * outMetadata, void * outBuffer)  Line 4598 + 0x49 
> bytes    C++
> 
> engine12.dll!Firebird::IAttachmentBaseImpl<Jrd::JAttachment,Firebird::CheckStatusWrapper,Firebird::IReferenceCountedImpl<Jrd::JAttachment,Firebird::CheckStatusWrapper,Firebird::Inherit<Firebird::IVersionedImpl<Jrd::JAttachment,Firebird::CheckStatusWrapper,Firebird::Inherit<Firebird::IAttachment>
>  
>>>>> ::cloopexecuteDispatcher(Firebird::IAttachment * self, Firebird::IStatus 
>>>>> * status,
> Firebird::ITransaction * transaction, unsigned int stmtLength, const char * 
> sqlStmt, 
> unsigned int dialect, Firebird::IMessageMetadata * inMetadata, void * 
> inBuffer, 
> Firebird::IMessageMetadata * outMetadata, void * outBuffer)  Line 8415 + 0x4d 
> bytes    C++
> 
> fbclient.dll!Firebird::IAttachment::execute<Firebird::CheckStatusWrapper>(Firebird::CheckStatusWrapper
>  
> * status, Firebird::ITransaction * transaction, unsigned int stmtLength, 
> const char * 
> sqlStmt, unsigned int dialect, Firebird::IMessageMetadata * inMetadata, void 
> * inBuffer, 
> Firebird::IMessageMetadata * outMetadata, void * outBuffer)  Line 1894 + 0x56 
> bytes    C++
>      fbclient.dll!Why::YAttachment::execute(Firebird::CheckStatusWrapper * 
> status, 
> Firebird::ITransaction * transaction, unsigned int length, const char * 
> string, unsigned 
> int dialect, Firebird::IMessageMetadata * inMetadata, void * inBuffer, 
> Firebird::IMessageMetadata * outMetadata, void * outBuffer)  Line 5222 + 0x4e 
> bytes    C++
> 
> fbclient.dll!Firebird::IAttachmentBaseImpl<Why::YAttachment,Firebird::CheckStatusWrapper,Firebird::IReferenceCountedImpl<Why::YAttachment,Firebird::CheckStatusWrapper,Firebird::Inherit<Firebird::IVersionedImpl<Why::YAttachment,Firebird::CheckStatusWrapper,Firebird::Inherit<Firebird::IAttachment>
>  
>>>>> ::cloopexecuteDispatcher(Firebird::IAttachment * self, Firebird::IStatus 
>>>>> * status,
> Firebird::ITransaction * transaction, unsigned int stmtLength, const char * 
> sqlStmt, 
> unsigned int dialect, Firebird::IMessageMetadata * inMetadata, void * 
> inBuffer, 
> Firebird::IMessageMetadata * outMetadata, void * outBuffer)  Line 8415 + 0x4d 
> bytes    C++
> 
> isql.exe!Firebird::IAttachment::execute<Firebird::CheckStatusWrapper>(Firebird::CheckStatusWrapper
>  
> * status, Firebird::ITransaction * transaction, unsigned int stmtLength, 
> const char * 
> sqlStmt, unsigned int dialect, Firebird::IMessageMetadata * inMetadata, void 
> * inBuffer, 
> Firebird::IMessageMetadata * outMetadata, void * outBuffer)  Line 1894 + 0x56 
> bytes    C++
>      isql.exe!process_statement(const char * str2)  Line 10090    C++
>      isql.exe!do_isql()  Line 5767 + 0xc bytes    C++
>      isql.exe!ISQL_main(int argc, char * * argv)  Line 1659    C++
>      isql.exe!main(int argc, char * * argv)  Line 1555 + 0xd bytes    C++
>      isql.exe!__tmainCRTStartup()  Line 555 + 0x19 bytes    C
>      isql.exe!mainCRTStartup()  Line 371    C
>      kernel32.dll!BaseThreadInitThunk()  + 0xe bytes    
> 
> -- 
>   WBR, SD.
> 
> ------------------------------------------------------------------------------
> BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT
> Develop your own process in accordance with the BPMN 2 standard
> Learn Process modeling best practices with Bonita BPM through live exercises
> http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- event?utm_
> source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF
> Firebird-Devel mailing list, web interface at 
> https://lists.sourceforge.net/lists/listinfo/firebird-devel

------------------------------------------------------------------------------
BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT
Develop your own process in accordance with the BPMN 2 standard
Learn Process modeling best practices with Bonita BPM through live exercises
http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- event?utm_
source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to