<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {mso-style-priority:99;
        mso-style-link:"Texte brut Car";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Arial","sans-serif";
        mso-fareast-language:EN-US;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"Texte de bulles Car";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif";
        mso-fareast-language:EN-US;}
span.TextebrutCar
        {mso-style-name:"Texte brut Car";
        mso-style-priority:99;
        mso-style-link:"Texte brut";
        font-family:"Arial","sans-serif";}
span.TextedebullesCar
        {mso-style-name:"Texte de bulles Car";
        mso-style-priority:99;
        mso-style-link:"Texte de bulles";
        font-family:"Tahoma","sans-serif";}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=FR link=blue vlink=purple><div class=WordSection1><p class=MsoPlainText>Hello,<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText><span lang=EN-US>I still could not find why a private connection does not work in my context but I have found another way to solve my issue.<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-US>With the following option:<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-US>static Client_Strategy_Factory "-ORBTransportMuxStrategy EXCLUSIVE -ORBClientConnectionHandler RW"<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-US><o:p> </o:p></span></p><p class=MsoPlainText><span lang=EN-US>I have a scheduling without a multiplexer thread as you can see on the image below.<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-US><o:p> </o:p></span></p><p class=MsoPlainText><span style='mso-fareast-language:FR'><img width=591 height=214 id="Image_x0020_1" src="cid:image003.png@01D2E6B7.E365D0F0" alt="lttng_noMuxed_1i"></span><span lang=EN-US><o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-US><o:p> </o:p></span></p><p class=MsoPlainText><span lang=EN-US>Only the client thread and server thread are used in this two way operations (and so no risk of priority inversion). Nevertheless the communication chanel is still shared if I have more than one client as you can see below:<o:p></o:p></span></p><p class=MsoPlainText><span style='mso-fareast-language:FR'><img width=634 height=204 id="Image_x0020_3" src="cid:image006.png@01D2E6B7.29466A90"></span><span lang=EN-US><o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-US><o:p> </o:p></span></p><p class=MsoPlainText><span lang=EN-US>I assume that with a private connection I will obtain the same kind of scheduling but with more parallel execution.<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-US>The last problem of the RW configuration is that it applies for the whole client. I could want a multiplexed connection for 80% of the client calls and a private connection for a dedicated thread in the client processus.<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-US><o:p> </o:p></span></p><p class=MsoPlainText><span lang=EN-US>I still hope to have an answer on the private connection policy ;-)<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-US><o:p> </o:p></span></p><p class=MsoPlainText><span lang=EN-US>Best wishes<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-US>Julien Laurent<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-US>Real time software architect for Thales France<o:p></o:p></span></p><p class=MsoPlainText><span lang=EN-US><o:p> </o:p></span></p><p class=MsoPlainText><span lang=EN-US><o:p> </o:p></span></p><p class=MsoPlainText><span lang=EN-US><o:p> </o:p></span></p><p class=MsoPlainText><span style='mso-fareast-language:FR'>-----Message d'origine-----<br>De : tao-users [mailto:tao-users-bounces@list.isis.vanderbilt.edu] De la part de tao-users-request@list.isis.vanderbilt.edu<br>Envoyé : mercredi 7 juin 2017 15:10<br>À : tao-users@list.isis.vanderbilt.edu<br>Objet : tao-users Digest, Vol 130, Issue 1</span></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>Send tao-users mailing list submissions to<o:p></o:p></p><p class=MsoPlainText>            <a href="mailto:tao-users@list.isis.vanderbilt.edu"><span style='color:windowtext;text-decoration:none'>tao-users@list.isis.vanderbilt.edu</span></a><o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>To subscribe or unsubscribe via the World Wide Web, visit<o:p></o:p></p><p class=MsoPlainText>            <a href="http://list.isis.vanderbilt.edu/cgi-bin/mailman/listinfo/tao-users"><span style='color:windowtext;text-decoration:none'>http://list.isis.vanderbilt.edu/cgi-bin/mailman/listinfo/tao-users</span></a><o:p></o:p></p><p class=MsoPlainText>or, via email, send a message with subject or body 'help' to<o:p></o:p></p><p class=MsoPlainText>            <a href="mailto:tao-users-request@list.isis.vanderbilt.edu"><span style='color:windowtext;text-decoration:none'>tao-users-request@list.isis.vanderbilt.edu</span></a><o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>You can reach the person managing the list at<o:p></o:p></p><p class=MsoPlainText>            <a href="mailto:tao-users-owner@list.isis.vanderbilt.edu"><span style='color:windowtext;text-decoration:none'>tao-users-owner@list.isis.vanderbilt.edu</span></a><o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>When replying, please edit your Subject line so it is more specific than "Re: Contents of tao-users digest..."<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>Today's Topics:<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>   1. TAO : rtorb private connection policy (LAURENT Julien)<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>----------------------------------------------------------------------<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>Message: 1<o:p></o:p></p><p class=MsoPlainText>Date: Tue, 6 Jun 2017 16:46:09 +0200<o:p></o:p></p><p class=MsoPlainText>From: LAURENT Julien <<a href="mailto:julien.laurent@fr.thalesgroup.com"><span style='color:windowtext;text-decoration:none'>julien.laurent@fr.thalesgroup.com</span></a>><o:p></o:p></p><p class=MsoPlainText>To: "<a href="mailto:tao-users@list.isis.vanderbilt.edu"><span style='color:windowtext;text-decoration:none'>tao-users@list.isis.vanderbilt.edu</span></a>"<o:p></o:p></p><p class=MsoPlainText>            <<a href="mailto:tao-users@list.isis.vanderbilt.edu"><span style='color:windowtext;text-decoration:none'>tao-users@list.isis.vanderbilt.edu</span></a>><o:p></o:p></p><p class=MsoPlainText>Subject: [tao-users] TAO : rtorb private connection policy<o:p></o:p></p><p class=MsoPlainText>Message-ID:<o:p></o:p></p><p class=MsoPlainText>            <<a href="mailto:16A21B33F78A8D4791060BD5C878B59D1745460A61@THSONEA01CMS08P.one.grp"><span style='color:windowtext;text-decoration:none'>16A21B33F78A8D4791060BD5C878B59D1745460A61@THSONEA01CMS08P.one.grp</span></a>><o:p></o:p></p><p class=MsoPlainText>Content-Type: text/plain; charset="utf-8"<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>Hello,<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>I have trouble with using a private connection policy as described below.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>   TAO VERSION: 2.4.3<o:p></o:p></p><p class=MsoPlainText>    ACE VERSION: 6.4.3<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>    HOST MACHINE and OPERATING SYSTEM:<o:p></o:p></p><p class=MsoPlainText>        Linux, Redhat 5<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>    TARGET MACHINE and OPERATING SYSTEM, if different from HOST:<o:p></o:p></p><p class=MsoPlainText>        Linux, Elinos 5.2, gcc 4.4.5 (cross compilation)<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>    THE $ACE_ROOT/ace/config.h FILE [if you use a link to a platform-<o:p></o:p></p><p class=MsoPlainText>    specific file, simply state which one]: config-linux.h<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>    THE $ACE_ROOT/include/makeinclude/platform_macros.GNU FILE [if you<o:p></o:p></p><p class=MsoPlainText>    use a link to a platform-specific file, simply state which one<o:p></o:p></p><p class=MsoPlainText>    (unless this isn't used in this case, e.g., with Microsoft Visual<o:p></o:p></p><p class=MsoPlainText>    C++)]:<o:p></o:p></p><p class=MsoPlainText>optimize=1<o:p></o:p></p><p class=MsoPlainText>debug=0<o:p></o:p></p><p class=MsoPlainText>inline=1<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>platform_has_quixtream=1<o:p></o:p></p><p class=MsoPlainText>ssl=0<o:p></o:p></p><p class=MsoPlainText>cidl=0<o:p></o:p></p><p class=MsoPlainText>exceptions=1<o:p></o:p></p><p class=MsoPlainText>shared_libs_only=1<o:p></o:p></p><p class=MsoPlainText>rt_corba=1<o:p></o:p></p><p class=MsoPlainText>smart_proxies=1<o:p></o:p></p><p class=MsoPlainText>interface_repo=1<o:p></o:p></p><p class=MsoPlainText>interceptors=1<o:p></o:p></p><p class=MsoPlainText>threads=1<o:p></o:p></p><p class=MsoPlainText>prism=1<o:p></o:p></p><p class=MsoPlainText>stdcpplib=1<o:p></o:p></p><p class=MsoPlainText>no_hidden_visibility=1<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>TAO_ORBSVCS := NamingService<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>ifneq ($(ELINOS_BIN_PREFIX),)<o:p></o:p></p><p class=MsoPlainText>ifneq ($(HOST_TAO_ROOT),)<o:p></o:p></p><p class=MsoPlainText>  TAO_IDL := $(HOST_TAO_ROOT)/TAO_IDL/tao_idl<o:p></o:p></p><p class=MsoPlainText>  TAO_IDLFLAGS += -g $(HOST_TAO_ROOT)/bin/gperf<o:p></o:p></p><p class=MsoPlainText>  TAO_IDL_DEP := $(HOST_TAO_ROOT)/TAO_IDL/tao_idl$(EXEEXT)<o:p></o:p></p><p class=MsoPlainText>endif<o:p></o:p></p><p class=MsoPlainText>endif<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>    AREA/CLASS/EXAMPLE AFFECTED:<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>    DOES THE PROBLEM AFFECT:<o:p></o:p></p><p class=MsoPlainText>        COMPILATION? NO<o:p></o:p></p><p class=MsoPlainText>        LINKING? NO<o:p></o:p></p><p class=MsoPlainText>        EXECUTION? YSE<o:p></o:p></p><p class=MsoPlainText>        OTHER (please specify)?<o:p></o:p></p><p class=MsoPlainText>[Please indicate whether ACE/TAO, your application, or both are affected.]<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>    SYNOPSIS:<o:p></o:p></p><p class=MsoPlainText>The private connection policy does not seem to change the threading of a corba two-ways operation.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>    DESCRIPTION:<o:p></o:p></p><p class=MsoPlainText>Our server side application is configured to use the default rtorb policy (reactor per lane policy with a pool of thread).<o:p></o:p></p><p class=MsoPlainText>I tried to configure the client side with a private connection policy.<o:p></o:p></p><p class=MsoPlainText>When we analyse the threading of an operation with return (call to "bool isStarted" from the client side to the server side) I have the following scheduling:<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>1)  The operation call on the client side is done inside the client thread, we do not see any interaction with the orb thread => OK<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>2)  The server receives and executes the operation in the thread created during the configuration of the POA (thread pool with one thread) => OK<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>3)  The return operation involves two threads : the orb thread and the client thread => NOK => I expect the return operation to involve only the client thread with a private connection configuration<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>[<a href="cid:image001.png@01D2DEE4.666C9EB0"><span style='color:windowtext;text-decoration:none'>cid:image001.png@01D2DEE4.666C9EB0</span></a>]<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>    REPEAT BY:<o:p></o:p></p><p class=MsoPlainText>My program has a client side which calls periodicaly "bool isStarted" on the server side. The client and the server are runned on two different processus on the same core.<o:p></o:p></p><p class=MsoPlainText>I analyse the threading with LTTNG (profiler) by adding "open" instruction before and after the call on the client side, and during the execution of the operation on the server side. (the open allows me to easily filter the system events).<o:p></o:p></p><p class=MsoPlainText>I do not understand why the return operation involves the orb thread!<o:p></o:p></p><p class=MsoPlainText>With or without the private connection configuration does not change the execution.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>Here is my code for configuring the private connection:<o:p></o:p></p><p class=MsoPlainText>        CORBA::ORB_var the_orb = ORBHelperClient::instance().getORB();<o:p></o:p></p><p class=MsoPlainText>        CORBA::Object_var  rt_poa_obj = the_orb->resolve_initial_references("RTORB");<o:p></o:p></p><p class=MsoPlainText>        RTCORBA::RTORB_var w_rtorb = RTCORBA::RTORB::_narrow(rt_poa_obj.in());<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>        if (CORBA::is_nil(w_rtorb.in()))<o:p></o:p></p><p class=MsoPlainText>        {<o:p></o:p></p><p class=MsoPlainText>               printf("Lwccm_FragmentRuntime : Can't manage to find RTORB \n");<o:p></o:p></p><p class=MsoPlainText>               return -1;<o:p></o:p></p><p class=MsoPlainText>        }<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>        //Try to get a private connection<o:p></o:p></p><p class=MsoPlainText>        CORBA::PolicyList w_policies (1); w_policies.length(1);<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>        w_policies[0] = w_rtorb->create_private_connection_policy();<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>        CORBA::Object_ptr w_facetWithPrivateConnection = facet->_set_policy_overrides(w_policies, CORBA::SET_OVERRIDE);<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>        CORBA::PolicyList_var w_inconsistent_policies;<o:p></o:p></p><p class=MsoPlainText>        CORBA::Boolean w_success = w_facetWithPrivateConnection->_validate_connection(w_inconsistent_policies);<o:p></o:p></p><p class=MsoPlainText>        if(! w_success)<o:p></o:p></p><p class=MsoPlainText>        {<o:p></o:p></p><p class=MsoPlainText>               printf("Lwccm_FragmentRuntime : Can't validate private connection \n");<o:p></o:p></p><p class=MsoPlainText>        }<o:p></o:p></p><p class=MsoPlainText>        else<o:p></o:p></p><p class=MsoPlainText>        {<o:p></o:p></p><p class=MsoPlainText>               printf("Lwccm_FragmentRuntime : PRIVATE CONNECTION !!! \n");<o:p></o:p></p><p class=MsoPlainText>        }<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>        //END<o:p></o:p></p><p class=MsoPlainText>    IModing_ptr required_corba_facet = IModing::_narrow(w_facetWithPrivateConnection);<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>        //THEN USE of required_corba_facet to call isStarted. This configuration is done in the main thread while the call is done in an another thread configured in SCHED_FIFO.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>    SAMPLE FIX/WORKAROUND:<o:p></o:p></p><p class=MsoPlainText>No idea I try to understand what I should get.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>Best wishes<o:p></o:p></p><p class=MsoPlainText>Julien Laurent<o:p></o:p></p><p class=MsoPlainText>Real time software architecture for Thales France<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>-------------- next part --------------<o:p></o:p></p><p class=MsoPlainText>An HTML attachment was scrubbed...<o:p></o:p></p><p class=MsoPlainText>URL: <<a href="http://list.isis.vanderbilt.edu/pipermail/tao-users/attachments/20170606/b8c2d315/attachment.html"><span style='color:windowtext;text-decoration:none'>http://list.isis.vanderbilt.edu/pipermail/tao-users/attachments/20170606/b8c2d315/attachment.html</span></a>><o:p></o:p></p><p class=MsoPlainText>-------------- next part --------------<o:p></o:p></p><p class=MsoPlainText>A non-text attachment was scrubbed...<o:p></o:p></p><p class=MsoPlainText>Name: image001.png<o:p></o:p></p><p class=MsoPlainText>Type: image/png<o:p></o:p></p><p class=MsoPlainText>Size: 56646 bytes<o:p></o:p></p><p class=MsoPlainText>Desc: image001.png<o:p></o:p></p><p class=MsoPlainText>URL: <<a href="http://list.isis.vanderbilt.edu/pipermail/tao-users/attachments/20170606/b8c2d315/attachment.png"><span style='color:windowtext;text-decoration:none'>http://list.isis.vanderbilt.edu/pipermail/tao-users/attachments/20170606/b8c2d315/attachment.png</span></a>><o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>------------------------------<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>Subject: Digest Footer<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>_______________________________________________<o:p></o:p></p><p class=MsoPlainText>tao-users mailing list<o:p></o:p></p><p class=MsoPlainText><a href="mailto:tao-users@list.isis.vanderbilt.edu"><span style='color:windowtext;text-decoration:none'>tao-users@list.isis.vanderbilt.edu</span></a><o:p></o:p></p><p class=MsoPlainText><a href="http://list.isis.vanderbilt.edu/cgi-bin/mailman/listinfo/tao-users"><span style='color:windowtext;text-decoration:none'>http://list.isis.vanderbilt.edu/cgi-bin/mailman/listinfo/tao-users</span></a><o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>------------------------------<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>End of tao-users Digest, Vol 130, Issue 1<o:p></o:p></p><p class=MsoPlainText>*****************************************<o:p></o:p></p></div></body></html>