You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@qpid.apache.org by "Rahul.Singh5@morganstanley.com" <Ra...@morganstanley.com> on 2021/06/21 10:24:29 UTC

RDMA shared object reliance for QPID AMQP C++Messaging APIv1.39

Hello,
I am trying on run my C++ application on linux based on QPID AMQP messaging API and connect to TCP endpoint with SSL authentication. At the moment, I am just trying to test the correct usage and do nothing more than establishing the connection. However, I get a runtime error which indicates the exe is looking for some shared object at the QPID AMQP installed directory (PATH_TO_INSTALL_DIRECTORY/lib64/qpid/client). However, I do not see any client sub-folder within the lib64/qpid path. There is only a daemon folder out there. The error I receive is "Caught std::exception Invalid value for module-dir: Input/output error: Can't check directory: PATH_TO_INSTALL_DIRECTORY/lib64/qpid/client"

I have build both QPID Proton C v 0.34 and QPID AMQP Messaging C++ v1.39 packages and point the shared objects build to the install directory.
Please note I do not have libibverbs and librdmacm packages which are optional and required for RDMA transport protocol.  ( https://raw.githubusercontent.com/apache/qpid-cpp/main/INSTALL.txt )
Sounds like for some reasons, my qpid amqp packages do not build shared objects which are supposed to go under (installfolder)/lib64/qpid/client directory. I only need C++ and hence exclude BINDINGS for PERL,RUBY and PYTHON in my cmake options.

In my main application, I use the following connection code so far -

#include <qpid/messaging/Connection.h>

const char *url = "amqp:tcp:IP:PORT";
qpid::messaging::Connection conn(url);

Looking forward to hearing from you.

Best Regards,
Rahul

________________________________
NOTICE: Morgan Stanley is not acting as a municipal advisor and the opinions or views contained herein are not intended to be, and do not constitute, advice within the meaning of Section 975 of the Dodd-Frank Wall Street Reform and Consumer Protection Act. If you have received this communication in error, please destroy all electronic and paper copies and notify the sender immediately. Mistransmission is not intended to waive confidentiality or privilege. Morgan Stanley reserves the right, to the extent required and/or permitted under applicable law, to monitor electronic communications, including telephone calls with Morgan Stanley personnel. This message is subject to the Morgan Stanley General Disclaimers available at the following link: http://www.morganstanley.com/disclaimers.  If you cannot access the links, please notify us by reply message and we will send the contents to you. By communicating with Morgan Stanley you acknowledge that you have read, understand and consent, (where applicable), to the foregoing and the Morgan Stanley General Disclaimers.

You may have certain rights regarding the information that Morgan Stanley collects about you. Please see our Privacy Pledge https://www.morganstanley.com/privacy-pledge for more information about your rights.

Re: RDMA shared object reliance for QPID AMQP C++Messaging APIv1.39

Posted by Gordon Sim <gs...@redhat.com>.
On Thu, Jun 24, 2021 at 12:08 PM Rahul.Singh5@morganstanley.com
<Ra...@morganstanley.com> wrote:
> ldd for libqpidmessaging.so gives me libqpid-proton-core.so.10 alongwith other qpid libs- libqpidtypes.so.1, libqpidclient.so.2 and libqpidcommon.so.2.
> However, until I uncomment " protocol-defaults=amqp1.0,amqp0-10" from the qpidc.conf available in installedpath/etc/qpid/qpidc.conf, the ampq1.0 is not selected. This is the file whereI actually have to add additional ssl config details as well, including the ssl-cert-db.
>
> This is inline with current implementation of ConnectionOptions::set method  in src/qpid/messaging/ConnectionOptions.cpp. There is no option for "protocol" field there (which is supposed to specify the amqp1.0 option).

Yes, the protocol actually gets used to create the right type of
connection, so you need to specify it in the options passed to the
constructor, rather than trying to set it after the connection has
already been created.

> After going through the ssl.txt descriptions,
> My major issue/trouble is with the creation of certificate database (through certutil tool). This should be pointed out by --ssl-cert-db in the qpidc.conf and all relevant certificate and keys should be available there.
> Now, I already have created a cert (and made it available for the server at other end of the connection) and have a key for it. I also have a trusted cert from the server. Now, it seems that I will need to somehow inject these cert and key to the cert database. However, looking at ways to do that, certutil --help, I see an option to add an existing trusted certificate to the database (-A option), but do not see any option to add the key to created certification needed by the server at other end.

You can use pk12util to add in a pkcs12 key. (If it is pem format you
can convert it using openssl).


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
For additional commands, e-mail: users-help@qpid.apache.org


RE: RDMA shared object reliance for QPID AMQP C++Messaging APIv1.39

Posted by "Rahul.Singh5@morganstanley.com" <Ra...@morganstanley.com>.
Hello,
ldd for libqpidmessaging.so gives me libqpid-proton-core.so.10 alongwith other qpid libs- libqpidtypes.so.1, libqpidclient.so.2 and libqpidcommon.so.2.
However, until I uncomment " protocol-defaults=amqp1.0,amqp0-10" from the qpidc.conf available in installedpath/etc/qpid/qpidc.conf, the ampq1.0 is not selected. This is the file whereI actually have to add additional ssl config details as well, including the ssl-cert-db.

This is inline with current implementation of ConnectionOptions::set method  in src/qpid/messaging/ConnectionOptions.cpp. There is no option for "protocol" field there (which is supposed to specify the amqp1.0 option).

After going through the ssl.txt descriptions, 
My major issue/trouble is with the creation of certificate database (through certutil tool). This should be pointed out by --ssl-cert-db in the qpidc.conf and all relevant certificate and keys should be available there. 
Now, I already have created a cert (and made it available for the server at other end of the connection) and have a key for it. I also have a trusted cert from the server. Now, it seems that I will need to somehow inject these cert and key to the cert database. However, looking at ways to do that, certutil --help, I see an option to add an existing trusted certificate to the database (-A option), but do not see any option to add the key to created certification needed by the server at other end.

Is this something you can help me with?

Best Regards,
Rahul

-----Original Message-----
From: Gordon Sim <gs...@redhat.com> 
Sent: 22 June 2021 17:17
To: users@qpid.apache.org
Subject: Re: RDMA shared object reliance for QPID AMQP C++Messaging APIv1.39

Have you seen this for SSL config:
https://github.com/apache/qpid-cpp/blob/main/docs/ssl.txt ?

Regarding protocol=amqp1.0 not being recognised, that sounds as if proton was not found when compiling. If you run ldd against libqpidmessaging.so do you see proton being listed?

On Tue, Jun 22, 2021 at 4:48 PM Rahul.Singh5@morganstanley.com <Ra...@morganstanley.com> wrote:
>
> Hello,
> I actually set the QPID Messaging and QPID Proton install path to a machine relative path eg /var/tmp/qpid. And eventually copied the resulting folder to equivalent location on the test machine. This helped me to resolve the problem.
> Subsequently, I have been able to run my app but unable to connect to a tcp endpoint with SSL authentication. I am wondering if my connection parameters are correct.
>
> const char *url = "amqp:tcp:x.x.x.x:yyyyy"; // amqp:tcp:IP:PORT 
> qpid::messaging Connection conn(url); conn.setOption("transport", 
> qpid::types::Variant("ssl")); conn.setOption("ssl_cert_name", 
> qpid::types::Variant("AAAAAAAAAA"));
> conn.setOption("container_id", qpid::types::Variant("BBBBBBB")); 
> conn.open();
>
> But this does not connect successfully. I am using AMQP1.0 and wondering if the connection parameters are correct.
> The "transport" field is currently set to "ssl", however, I tried with "tcp" before, but it did not work either.
> The Qpid messaging connection API suggested to use "protocol" field as "amqp1.0", however, it throws an exception that this "parameter" field is not recognized.
>
> I actually uncommented a line within the 
> INSTALLED_DIR/etc/qpid/qpidc.conf to select amqp 1.0
> protocol-defaults=amqp1.0,amqp0-10
>
> Any suggestions about the correctness of the API usage would be really appreciated.
> Further, are there any ways to get logs out of QPID libraries so that I can know how far it is going.
>
> Best Regards,
> Rahul
> -----Original Message-----
> From: Gordon Sim <gs...@redhat.com>
> Sent: 21 June 2021 20:52
> To: users@qpid.apache.org
> Subject: Re: RDMA shared object reliance for QPID AMQP C++Messaging 
> APIv1.39
>
> My suggestion is to edit the src/config.h before building to specify the QPIDC_MODULE_DIR path on the target system. (I thought there would be a way of setting it automatically via a cmake variable but I can't seem to do that).
>
> On Mon, Jun 21, 2021 at 5:38 PM Rahul.Singh5@morganstanley.com <Ra...@morganstanley.com> wrote:
> >
> > Hello,
> > Many thanks for your response. I build apache qpid libraries and my application on a different compile machine and run my application on a different test machine. Test machine does not have access to location used on compile machine.
> >
> > While building my application, I point it to the local install folder where the output of QPID builds are stored.
> > -L points to the local qpid  install path so that shared objects could be found by the linker.
> >
> > On the compile machine, I set the LD_LIBRARY_PATH with a local path where I copy the QPID install folder. Once the binary is ready, I copy it on the test machine.
> >
> > However, when I run my app or run strace on the test machine, I see this error and the reference to the path is not from the test machine but to the path on compile machine where I actually got the QPID builds installed.
> >
> >  Details from strace
> > open("PATH_ON_COMPILE_MACHINE/install/etc/qpid/qpidc.conf", 
> > O_RDONLY) = -1 EIO (Input/output error) 
> > open("PATH_ON_COMPILE_MACHINE/install/etc/qpid/qpidc.conf", 
> > O_RDONLY) = -1 EIO (Input/output error) Caught std::exception 
> > Invalid value for
> > module-dir: Input/output error: Can't check directory 
> > PATH_ON_COMPILE_MACHINE/install/lib64/qpid/client
> >
> > Best Regards,
> > Rahul
> > -----Original Message-----
> > From: Gordon Sim <gs...@redhat.com>
> > Sent: 21 June 2021 13:32
> > To: users@qpid.apache.org
> > Subject: Re: RDMA shared object reliance for QPID AMQP C++Messaging
> > APIv1.39
> >
> > You should not need to have any client module directory. My first guess is that it is perhaps a permissions issue. Is your application running as a user able to list files under the <install-dir>/lib64/qpid directory?
> >
> > (The exception seems to come from stat() returning an error other than ENOENT).
> >
> > On Mon, Jun 21, 2021 at 11:34 AM Rahul.Singh5@morganstanley.com <Ra...@morganstanley.com> wrote:
> > >
> > > Hello,
> > > I am trying on run my C++ application on linux based on QPID AMQP messaging API and connect to TCP endpoint with SSL authentication. At the moment, I am just trying to test the correct usage and do nothing more than establishing the connection. However, I get a runtime error which indicates the exe is looking for some shared object at the QPID AMQP installed directory (PATH_TO_INSTALL_DIRECTORY/lib64/qpid/client). However, I do not see any client sub-folder within the lib64/qpid path. There is only a daemon folder out there. The error I receive is "Caught std::exception Invalid value for module-dir: Input/output error: Can't check directory: PATH_TO_INSTALL_DIRECTORY/lib64/qpid/client"
> > >
> > > I have build both QPID Proton C v 0.34 and QPID AMQP Messaging C++ v1.39 packages and point the shared objects build to the install directory.
> > > Please note I do not have libibverbs and librdmacm packages which 
> > > are optional and required for RDMA transport protocol.  ( https://raw.githubusercontent.com/apache/qpid-cpp/main/INSTALL.txt ) Sounds like for some reasons, my qpid amqp packages do not build shared objects which are supposed to go under (installfolder)/lib64/qpid/client directory. I only need C++ and hence exclude BINDINGS for PERL,RUBY and PYTHON in my cmake options.
> > >
> > > In my main application, I use the following connection code so far 
> > > -
> > >
> > > #include <qpid/messaging/Connection.h>
> > >
> > > const char *url = "amqp:tcp:IP:PORT"; qpid::messaging::Connection 
> > > conn(url);
> > >
> > > Looking forward to hearing from you.
> > >
> > > Best Regards,
> > > Rahul
> > >
> > > ________________________________
> > > NOTICE: Morgan Stanley is not acting as a municipal advisor and the opinions or views contained herein are not intended to be, and do not constitute, advice within the meaning of Section 975 of the Dodd-Frank Wall Street Reform and Consumer Protection Act. If you have received this communication in error, please destroy all electronic and paper copies and notify the sender immediately. Mistransmission is not intended to waive confidentiality or privilege. Morgan Stanley reserves the right, to the extent required and/or permitted under applicable law, to monitor electronic communications, including telephone calls with Morgan Stanley personnel. This message is subject to the Morgan Stanley General Disclaimers available at the following link: http://www.morganstanley.com/disclaimers.  If you cannot access the links, please notify us by reply message and we will send the contents to you. By communicating with Morgan Stanley you acknowledge that you have read, understand and consent, (where applicable), to the foregoing and the Morgan Stanley General Disclaimers.
> > >
> > > You may have certain rights regarding the information that Morgan Stanley collects about you. Please see our Privacy Pledge https://www.morganstanley.com/privacy-pledge for more information about your rights.
> >
> >
> > --------------------------------------------------------------------
> > - To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org For 
> > additional commands, e-mail: users-help@qpid.apache.org
> >
> >
> > --------------------------------------------------------------------
> > --
> > ----------
> > NOTICE: Morgan Stanley is not acting as a municipal advisor and the opinions or views contained herein are not intended to be, and do not constitute, advice within the meaning of Section 975 of the Dodd-Frank Wall Street Reform and Consumer Protection Act. If you have received this communication in error, please destroy all electronic and paper copies and notify the sender immediately. Mistransmission is not intended to waive confidentiality or privilege. Morgan Stanley reserves the right, to the extent permitted under applicable law, to monitor electronic communications. This message is subject to terms available at the following link: http://www.morganstanley.com/disclaimers  If you cannot access these links, please notify us by reply message and we will send the contents to you. By communicating with Morgan Stanley you consent to the foregoing and to the voice recording of conversations with personnel of Morgan Stanley.
> >
> > You may have certain rights regarding the information that Morgan Stanley collects about you.  Please see our Privacy Pledge https://www.morganstanley.com/privacy-pledge for more information about your rights.
> > --------------------------------------------------------------------
> > - To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org For 
> > additional commands, e-mail: users-help@qpid.apache.org
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org For 
> additional commands, e-mail: users-help@qpid.apache.org
>
>
> ----------------------------------------------------------------------
> ----------
> NOTICE: Morgan Stanley is not acting as a municipal advisor and the opinions or views contained herein are not intended to be, and do not constitute, advice within the meaning of Section 975 of the Dodd-Frank Wall Street Reform and Consumer Protection Act. If you have received this communication in error, please destroy all electronic and paper copies and notify the sender immediately. Mistransmission is not intended to waive confidentiality or privilege. Morgan Stanley reserves the right, to the extent permitted under applicable law, to monitor electronic communications. This message is subject to terms available at the following link: http://www.morganstanley.com/disclaimers  If you cannot access these links, please notify us by reply message and we will send the contents to you. By communicating with Morgan Stanley you consent to the foregoing and to the voice recording of conversations with personnel of Morgan Stanley.
>
> You may have certain rights regarding the information that Morgan Stanley collects about you.  Please see our Privacy Pledge https://www.morganstanley.com/privacy-pledge for more information about your rights.
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org For 
> additional commands, e-mail: users-help@qpid.apache.org
>


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org For additional commands, e-mail: users-help@qpid.apache.org


--------------------------------------------------------------------------------
NOTICE: Morgan Stanley is not acting as a municipal advisor and the opinions or views contained herein are not intended to be, and do not constitute, advice within the meaning of Section 975 of the Dodd-Frank Wall Street Reform and Consumer Protection Act. If you have received this communication in error, please destroy all electronic and paper copies and notify the sender immediately. Mistransmission is not intended to waive confidentiality or privilege. Morgan Stanley reserves the right, to the extent permitted under applicable law, to monitor electronic communications. This message is subject to terms available at the following link: http://www.morganstanley.com/disclaimers  If you cannot access these links, please notify us by reply message and we will send the contents to you. By communicating with Morgan Stanley you consent to the foregoing and to the voice recording of conversations with personnel of Morgan Stanley.

You may have certain rights regarding the information that Morgan Stanley collects about you.  Please see our Privacy Pledge https://www.morganstanley.com/privacy-pledge for more information about your rights.

Re: RDMA shared object reliance for QPID AMQP C++Messaging APIv1.39

Posted by Gordon Sim <gs...@redhat.com>.
Have you seen this for SSL config:
https://github.com/apache/qpid-cpp/blob/main/docs/ssl.txt ?

Regarding protocol=amqp1.0 not being recognised, that sounds as if
proton was not found when compiling. If you run ldd against
libqpidmessaging.so do you see proton being listed?

On Tue, Jun 22, 2021 at 4:48 PM Rahul.Singh5@morganstanley.com
<Ra...@morganstanley.com> wrote:
>
> Hello,
> I actually set the QPID Messaging and QPID Proton install path to a machine relative path eg /var/tmp/qpid. And eventually copied the resulting folder to equivalent location on the test machine. This helped me to resolve the problem.
> Subsequently, I have been able to run my app but unable to connect to a tcp endpoint with SSL authentication. I am wondering if my connection parameters are correct.
>
> const char *url = "amqp:tcp:x.x.x.x:yyyyy"; // amqp:tcp:IP:PORT
> qpid::messaging Connection conn(url);
> conn.setOption("transport", qpid::types::Variant("ssl"));
> conn.setOption("ssl_cert_name", qpid::types::Variant("AAAAAAAAAA"));
> conn.setOption("container_id", qpid::types::Variant("BBBBBBB"));
> conn.open();
>
> But this does not connect successfully. I am using AMQP1.0 and wondering if the connection parameters are correct.
> The "transport" field is currently set to "ssl", however, I tried with "tcp" before, but it did not work either.
> The Qpid messaging connection API suggested to use "protocol" field as "amqp1.0", however, it throws an exception that this "parameter" field is not recognized.
>
> I actually uncommented a line within the INSTALLED_DIR/etc/qpid/qpidc.conf to select amqp 1.0
> protocol-defaults=amqp1.0,amqp0-10
>
> Any suggestions about the correctness of the API usage would be really appreciated.
> Further, are there any ways to get logs out of QPID libraries so that I can know how far it is going.
>
> Best Regards,
> Rahul
> -----Original Message-----
> From: Gordon Sim <gs...@redhat.com>
> Sent: 21 June 2021 20:52
> To: users@qpid.apache.org
> Subject: Re: RDMA shared object reliance for QPID AMQP C++Messaging APIv1.39
>
> My suggestion is to edit the src/config.h before building to specify the QPIDC_MODULE_DIR path on the target system. (I thought there would be a way of setting it automatically via a cmake variable but I can't seem to do that).
>
> On Mon, Jun 21, 2021 at 5:38 PM Rahul.Singh5@morganstanley.com <Ra...@morganstanley.com> wrote:
> >
> > Hello,
> > Many thanks for your response. I build apache qpid libraries and my application on a different compile machine and run my application on a different test machine. Test machine does not have access to location used on compile machine.
> >
> > While building my application, I point it to the local install folder where the output of QPID builds are stored.
> > -L points to the local qpid  install path so that shared objects could be found by the linker.
> >
> > On the compile machine, I set the LD_LIBRARY_PATH with a local path where I copy the QPID install folder. Once the binary is ready, I copy it on the test machine.
> >
> > However, when I run my app or run strace on the test machine, I see this error and the reference to the path is not from the test machine but to the path on compile machine where I actually got the QPID builds installed.
> >
> >  Details from strace
> > open("PATH_ON_COMPILE_MACHINE/install/etc/qpid/qpidc.conf", O_RDONLY)
> > = -1 EIO (Input/output error)
> > open("PATH_ON_COMPILE_MACHINE/install/etc/qpid/qpidc.conf", O_RDONLY)
> > = -1 EIO (Input/output error) Caught std::exception Invalid value for
> > module-dir: Input/output error: Can't check directory
> > PATH_ON_COMPILE_MACHINE/install/lib64/qpid/client
> >
> > Best Regards,
> > Rahul
> > -----Original Message-----
> > From: Gordon Sim <gs...@redhat.com>
> > Sent: 21 June 2021 13:32
> > To: users@qpid.apache.org
> > Subject: Re: RDMA shared object reliance for QPID AMQP C++Messaging
> > APIv1.39
> >
> > You should not need to have any client module directory. My first guess is that it is perhaps a permissions issue. Is your application running as a user able to list files under the <install-dir>/lib64/qpid directory?
> >
> > (The exception seems to come from stat() returning an error other than ENOENT).
> >
> > On Mon, Jun 21, 2021 at 11:34 AM Rahul.Singh5@morganstanley.com <Ra...@morganstanley.com> wrote:
> > >
> > > Hello,
> > > I am trying on run my C++ application on linux based on QPID AMQP messaging API and connect to TCP endpoint with SSL authentication. At the moment, I am just trying to test the correct usage and do nothing more than establishing the connection. However, I get a runtime error which indicates the exe is looking for some shared object at the QPID AMQP installed directory (PATH_TO_INSTALL_DIRECTORY/lib64/qpid/client). However, I do not see any client sub-folder within the lib64/qpid path. There is only a daemon folder out there. The error I receive is "Caught std::exception Invalid value for module-dir: Input/output error: Can't check directory: PATH_TO_INSTALL_DIRECTORY/lib64/qpid/client"
> > >
> > > I have build both QPID Proton C v 0.34 and QPID AMQP Messaging C++ v1.39 packages and point the shared objects build to the install directory.
> > > Please note I do not have libibverbs and librdmacm packages which
> > > are optional and required for RDMA transport protocol.  ( https://raw.githubusercontent.com/apache/qpid-cpp/main/INSTALL.txt ) Sounds like for some reasons, my qpid amqp packages do not build shared objects which are supposed to go under (installfolder)/lib64/qpid/client directory. I only need C++ and hence exclude BINDINGS for PERL,RUBY and PYTHON in my cmake options.
> > >
> > > In my main application, I use the following connection code so far -
> > >
> > > #include <qpid/messaging/Connection.h>
> > >
> > > const char *url = "amqp:tcp:IP:PORT"; qpid::messaging::Connection
> > > conn(url);
> > >
> > > Looking forward to hearing from you.
> > >
> > > Best Regards,
> > > Rahul
> > >
> > > ________________________________
> > > NOTICE: Morgan Stanley is not acting as a municipal advisor and the opinions or views contained herein are not intended to be, and do not constitute, advice within the meaning of Section 975 of the Dodd-Frank Wall Street Reform and Consumer Protection Act. If you have received this communication in error, please destroy all electronic and paper copies and notify the sender immediately. Mistransmission is not intended to waive confidentiality or privilege. Morgan Stanley reserves the right, to the extent required and/or permitted under applicable law, to monitor electronic communications, including telephone calls with Morgan Stanley personnel. This message is subject to the Morgan Stanley General Disclaimers available at the following link: http://www.morganstanley.com/disclaimers.  If you cannot access the links, please notify us by reply message and we will send the contents to you. By communicating with Morgan Stanley you acknowledge that you have read, understand and consent, (where applicable), to the foregoing and the Morgan Stanley General Disclaimers.
> > >
> > > You may have certain rights regarding the information that Morgan Stanley collects about you. Please see our Privacy Pledge https://www.morganstanley.com/privacy-pledge for more information about your rights.
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org For
> > additional commands, e-mail: users-help@qpid.apache.org
> >
> >
> > ----------------------------------------------------------------------
> > ----------
> > NOTICE: Morgan Stanley is not acting as a municipal advisor and the opinions or views contained herein are not intended to be, and do not constitute, advice within the meaning of Section 975 of the Dodd-Frank Wall Street Reform and Consumer Protection Act. If you have received this communication in error, please destroy all electronic and paper copies and notify the sender immediately. Mistransmission is not intended to waive confidentiality or privilege. Morgan Stanley reserves the right, to the extent permitted under applicable law, to monitor electronic communications. This message is subject to terms available at the following link: http://www.morganstanley.com/disclaimers  If you cannot access these links, please notify us by reply message and we will send the contents to you. By communicating with Morgan Stanley you consent to the foregoing and to the voice recording of conversations with personnel of Morgan Stanley.
> >
> > You may have certain rights regarding the information that Morgan Stanley collects about you.  Please see our Privacy Pledge https://www.morganstanley.com/privacy-pledge for more information about your rights.
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org For
> > additional commands, e-mail: users-help@qpid.apache.org
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org For additional commands, e-mail: users-help@qpid.apache.org
>
>
> --------------------------------------------------------------------------------
> NOTICE: Morgan Stanley is not acting as a municipal advisor and the opinions or views contained herein are not intended to be, and do not constitute, advice within the meaning of Section 975 of the Dodd-Frank Wall Street Reform and Consumer Protection Act. If you have received this communication in error, please destroy all electronic and paper copies and notify the sender immediately. Mistransmission is not intended to waive confidentiality or privilege. Morgan Stanley reserves the right, to the extent permitted under applicable law, to monitor electronic communications. This message is subject to terms available at the following link: http://www.morganstanley.com/disclaimers  If you cannot access these links, please notify us by reply message and we will send the contents to you. By communicating with Morgan Stanley you consent to the foregoing and to the voice recording of conversations with personnel of Morgan Stanley.
>
> You may have certain rights regarding the information that Morgan Stanley collects about you.  Please see our Privacy Pledge https://www.morganstanley.com/privacy-pledge for more information about your rights.
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
> For additional commands, e-mail: users-help@qpid.apache.org
>


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
For additional commands, e-mail: users-help@qpid.apache.org


RE: RDMA shared object reliance for QPID AMQP C++Messaging APIv1.39

Posted by "Rahul.Singh5@morganstanley.com" <Ra...@morganstanley.com>.
Hello,
I actually set the QPID Messaging and QPID Proton install path to a machine relative path eg /var/tmp/qpid. And eventually copied the resulting folder to equivalent location on the test machine. This helped me to resolve the problem.  
Subsequently, I have been able to run my app but unable to connect to a tcp endpoint with SSL authentication. I am wondering if my connection parameters are correct.   

const char *url = "amqp:tcp:x.x.x.x:yyyyy"; // amqp:tcp:IP:PORT
qpid::messaging Connection conn(url);
conn.setOption("transport", qpid::types::Variant("ssl")); 
conn.setOption("ssl_cert_name", qpid::types::Variant("AAAAAAAAAA"));
conn.setOption("container_id", qpid::types::Variant("BBBBBBB"));
conn.open();

But this does not connect successfully. I am using AMQP1.0 and wondering if the connection parameters are correct.
The "transport" field is currently set to "ssl", however, I tried with "tcp" before, but it did not work either.
The Qpid messaging connection API suggested to use "protocol" field as "amqp1.0", however, it throws an exception that this "parameter" field is not recognized. 

I actually uncommented a line within the INSTALLED_DIR/etc/qpid/qpidc.conf to select amqp 1.0
protocol-defaults=amqp1.0,amqp0-10

Any suggestions about the correctness of the API usage would be really appreciated.
Further, are there any ways to get logs out of QPID libraries so that I can know how far it is going.

Best Regards,
Rahul
-----Original Message-----
From: Gordon Sim <gs...@redhat.com> 
Sent: 21 June 2021 20:52
To: users@qpid.apache.org
Subject: Re: RDMA shared object reliance for QPID AMQP C++Messaging APIv1.39

My suggestion is to edit the src/config.h before building to specify the QPIDC_MODULE_DIR path on the target system. (I thought there would be a way of setting it automatically via a cmake variable but I can't seem to do that).

On Mon, Jun 21, 2021 at 5:38 PM Rahul.Singh5@morganstanley.com <Ra...@morganstanley.com> wrote:
>
> Hello,
> Many thanks for your response. I build apache qpid libraries and my application on a different compile machine and run my application on a different test machine. Test machine does not have access to location used on compile machine.
>
> While building my application, I point it to the local install folder where the output of QPID builds are stored.
> -L points to the local qpid  install path so that shared objects could be found by the linker.
>
> On the compile machine, I set the LD_LIBRARY_PATH with a local path where I copy the QPID install folder. Once the binary is ready, I copy it on the test machine.
>
> However, when I run my app or run strace on the test machine, I see this error and the reference to the path is not from the test machine but to the path on compile machine where I actually got the QPID builds installed.
>
>  Details from strace
> open("PATH_ON_COMPILE_MACHINE/install/etc/qpid/qpidc.conf", O_RDONLY) 
> = -1 EIO (Input/output error) 
> open("PATH_ON_COMPILE_MACHINE/install/etc/qpid/qpidc.conf", O_RDONLY) 
> = -1 EIO (Input/output error) Caught std::exception Invalid value for 
> module-dir: Input/output error: Can't check directory  
> PATH_ON_COMPILE_MACHINE/install/lib64/qpid/client
>
> Best Regards,
> Rahul
> -----Original Message-----
> From: Gordon Sim <gs...@redhat.com>
> Sent: 21 June 2021 13:32
> To: users@qpid.apache.org
> Subject: Re: RDMA shared object reliance for QPID AMQP C++Messaging 
> APIv1.39
>
> You should not need to have any client module directory. My first guess is that it is perhaps a permissions issue. Is your application running as a user able to list files under the <install-dir>/lib64/qpid directory?
>
> (The exception seems to come from stat() returning an error other than ENOENT).
>
> On Mon, Jun 21, 2021 at 11:34 AM Rahul.Singh5@morganstanley.com <Ra...@morganstanley.com> wrote:
> >
> > Hello,
> > I am trying on run my C++ application on linux based on QPID AMQP messaging API and connect to TCP endpoint with SSL authentication. At the moment, I am just trying to test the correct usage and do nothing more than establishing the connection. However, I get a runtime error which indicates the exe is looking for some shared object at the QPID AMQP installed directory (PATH_TO_INSTALL_DIRECTORY/lib64/qpid/client). However, I do not see any client sub-folder within the lib64/qpid path. There is only a daemon folder out there. The error I receive is "Caught std::exception Invalid value for module-dir: Input/output error: Can't check directory: PATH_TO_INSTALL_DIRECTORY/lib64/qpid/client"
> >
> > I have build both QPID Proton C v 0.34 and QPID AMQP Messaging C++ v1.39 packages and point the shared objects build to the install directory.
> > Please note I do not have libibverbs and librdmacm packages which 
> > are optional and required for RDMA transport protocol.  ( https://raw.githubusercontent.com/apache/qpid-cpp/main/INSTALL.txt ) Sounds like for some reasons, my qpid amqp packages do not build shared objects which are supposed to go under (installfolder)/lib64/qpid/client directory. I only need C++ and hence exclude BINDINGS for PERL,RUBY and PYTHON in my cmake options.
> >
> > In my main application, I use the following connection code so far -
> >
> > #include <qpid/messaging/Connection.h>
> >
> > const char *url = "amqp:tcp:IP:PORT"; qpid::messaging::Connection 
> > conn(url);
> >
> > Looking forward to hearing from you.
> >
> > Best Regards,
> > Rahul
> >
> > ________________________________
> > NOTICE: Morgan Stanley is not acting as a municipal advisor and the opinions or views contained herein are not intended to be, and do not constitute, advice within the meaning of Section 975 of the Dodd-Frank Wall Street Reform and Consumer Protection Act. If you have received this communication in error, please destroy all electronic and paper copies and notify the sender immediately. Mistransmission is not intended to waive confidentiality or privilege. Morgan Stanley reserves the right, to the extent required and/or permitted under applicable law, to monitor electronic communications, including telephone calls with Morgan Stanley personnel. This message is subject to the Morgan Stanley General Disclaimers available at the following link: http://www.morganstanley.com/disclaimers.  If you cannot access the links, please notify us by reply message and we will send the contents to you. By communicating with Morgan Stanley you acknowledge that you have read, understand and consent, (where applicable), to the foregoing and the Morgan Stanley General Disclaimers.
> >
> > You may have certain rights regarding the information that Morgan Stanley collects about you. Please see our Privacy Pledge https://www.morganstanley.com/privacy-pledge for more information about your rights.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org For 
> additional commands, e-mail: users-help@qpid.apache.org
>
>
> ----------------------------------------------------------------------
> ----------
> NOTICE: Morgan Stanley is not acting as a municipal advisor and the opinions or views contained herein are not intended to be, and do not constitute, advice within the meaning of Section 975 of the Dodd-Frank Wall Street Reform and Consumer Protection Act. If you have received this communication in error, please destroy all electronic and paper copies and notify the sender immediately. Mistransmission is not intended to waive confidentiality or privilege. Morgan Stanley reserves the right, to the extent permitted under applicable law, to monitor electronic communications. This message is subject to terms available at the following link: http://www.morganstanley.com/disclaimers  If you cannot access these links, please notify us by reply message and we will send the contents to you. By communicating with Morgan Stanley you consent to the foregoing and to the voice recording of conversations with personnel of Morgan Stanley.
>
> You may have certain rights regarding the information that Morgan Stanley collects about you.  Please see our Privacy Pledge https://www.morganstanley.com/privacy-pledge for more information about your rights.
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org For 
> additional commands, e-mail: users-help@qpid.apache.org
>


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org For additional commands, e-mail: users-help@qpid.apache.org


--------------------------------------------------------------------------------
NOTICE: Morgan Stanley is not acting as a municipal advisor and the opinions or views contained herein are not intended to be, and do not constitute, advice within the meaning of Section 975 of the Dodd-Frank Wall Street Reform and Consumer Protection Act. If you have received this communication in error, please destroy all electronic and paper copies and notify the sender immediately. Mistransmission is not intended to waive confidentiality or privilege. Morgan Stanley reserves the right, to the extent permitted under applicable law, to monitor electronic communications. This message is subject to terms available at the following link: http://www.morganstanley.com/disclaimers  If you cannot access these links, please notify us by reply message and we will send the contents to you. By communicating with Morgan Stanley you consent to the foregoing and to the voice recording of conversations with personnel of Morgan Stanley.

You may have certain rights regarding the information that Morgan Stanley collects about you.  Please see our Privacy Pledge https://www.morganstanley.com/privacy-pledge for more information about your rights.
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
For additional commands, e-mail: users-help@qpid.apache.org


Re: RDMA shared object reliance for QPID AMQP C++Messaging APIv1.39

Posted by Gordon Sim <gs...@redhat.com>.
My suggestion is to edit the src/config.h before building to specify
the QPIDC_MODULE_DIR path on the target system. (I thought there would
be a way of setting it automatically via a cmake variable but I can't
seem to do that).

On Mon, Jun 21, 2021 at 5:38 PM Rahul.Singh5@morganstanley.com
<Ra...@morganstanley.com> wrote:
>
> Hello,
> Many thanks for your response. I build apache qpid libraries and my application on a different compile machine and run my application on a different test machine. Test machine does not have access to location used on compile machine.
>
> While building my application, I point it to the local install folder where the output of QPID builds are stored.
> -L points to the local qpid  install path so that shared objects could be found by the linker.
>
> On the compile machine, I set the LD_LIBRARY_PATH with a local path where I copy the QPID install folder. Once the binary is ready, I copy it on the test machine.
>
> However, when I run my app or run strace on the test machine, I see this error and the reference to the path is not from the test machine but to the path on compile machine where I actually got the QPID builds installed.
>
>  Details from strace
> open("PATH_ON_COMPILE_MACHINE/install/etc/qpid/qpidc.conf", O_RDONLY) = -1 EIO (Input/output error)
> open("PATH_ON_COMPILE_MACHINE/install/etc/qpid/qpidc.conf", O_RDONLY) = -1 EIO (Input/output error)
> Caught std::exception Invalid value for module-dir: Input/output error: Can't check directory  PATH_ON_COMPILE_MACHINE/install/lib64/qpid/client
>
> Best Regards,
> Rahul
> -----Original Message-----
> From: Gordon Sim <gs...@redhat.com>
> Sent: 21 June 2021 13:32
> To: users@qpid.apache.org
> Subject: Re: RDMA shared object reliance for QPID AMQP C++Messaging APIv1.39
>
> You should not need to have any client module directory. My first guess is that it is perhaps a permissions issue. Is your application running as a user able to list files under the <install-dir>/lib64/qpid directory?
>
> (The exception seems to come from stat() returning an error other than ENOENT).
>
> On Mon, Jun 21, 2021 at 11:34 AM Rahul.Singh5@morganstanley.com <Ra...@morganstanley.com> wrote:
> >
> > Hello,
> > I am trying on run my C++ application on linux based on QPID AMQP messaging API and connect to TCP endpoint with SSL authentication. At the moment, I am just trying to test the correct usage and do nothing more than establishing the connection. However, I get a runtime error which indicates the exe is looking for some shared object at the QPID AMQP installed directory (PATH_TO_INSTALL_DIRECTORY/lib64/qpid/client). However, I do not see any client sub-folder within the lib64/qpid path. There is only a daemon folder out there. The error I receive is "Caught std::exception Invalid value for module-dir: Input/output error: Can't check directory: PATH_TO_INSTALL_DIRECTORY/lib64/qpid/client"
> >
> > I have build both QPID Proton C v 0.34 and QPID AMQP Messaging C++ v1.39 packages and point the shared objects build to the install directory.
> > Please note I do not have libibverbs and librdmacm packages which are
> > optional and required for RDMA transport protocol.  ( https://raw.githubusercontent.com/apache/qpid-cpp/main/INSTALL.txt ) Sounds like for some reasons, my qpid amqp packages do not build shared objects which are supposed to go under (installfolder)/lib64/qpid/client directory. I only need C++ and hence exclude BINDINGS for PERL,RUBY and PYTHON in my cmake options.
> >
> > In my main application, I use the following connection code so far -
> >
> > #include <qpid/messaging/Connection.h>
> >
> > const char *url = "amqp:tcp:IP:PORT";
> > qpid::messaging::Connection conn(url);
> >
> > Looking forward to hearing from you.
> >
> > Best Regards,
> > Rahul
> >
> > ________________________________
> > NOTICE: Morgan Stanley is not acting as a municipal advisor and the opinions or views contained herein are not intended to be, and do not constitute, advice within the meaning of Section 975 of the Dodd-Frank Wall Street Reform and Consumer Protection Act. If you have received this communication in error, please destroy all electronic and paper copies and notify the sender immediately. Mistransmission is not intended to waive confidentiality or privilege. Morgan Stanley reserves the right, to the extent required and/or permitted under applicable law, to monitor electronic communications, including telephone calls with Morgan Stanley personnel. This message is subject to the Morgan Stanley General Disclaimers available at the following link: http://www.morganstanley.com/disclaimers.  If you cannot access the links, please notify us by reply message and we will send the contents to you. By communicating with Morgan Stanley you acknowledge that you have read, understand and consent, (where applicable), to the foregoing and the Morgan Stanley General Disclaimers.
> >
> > You may have certain rights regarding the information that Morgan Stanley collects about you. Please see our Privacy Pledge https://www.morganstanley.com/privacy-pledge for more information about your rights.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org For additional commands, e-mail: users-help@qpid.apache.org
>
>
> --------------------------------------------------------------------------------
> NOTICE: Morgan Stanley is not acting as a municipal advisor and the opinions or views contained herein are not intended to be, and do not constitute, advice within the meaning of Section 975 of the Dodd-Frank Wall Street Reform and Consumer Protection Act. If you have received this communication in error, please destroy all electronic and paper copies and notify the sender immediately. Mistransmission is not intended to waive confidentiality or privilege. Morgan Stanley reserves the right, to the extent permitted under applicable law, to monitor electronic communications. This message is subject to terms available at the following link: http://www.morganstanley.com/disclaimers  If you cannot access these links, please notify us by reply message and we will send the contents to you. By communicating with Morgan Stanley you consent to the foregoing and to the voice recording of conversations with personnel of Morgan Stanley.
>
> You may have certain rights regarding the information that Morgan Stanley collects about you.  Please see our Privacy Pledge https://www.morganstanley.com/privacy-pledge for more information about your rights.
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
> For additional commands, e-mail: users-help@qpid.apache.org
>


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
For additional commands, e-mail: users-help@qpid.apache.org


RE: RDMA shared object reliance for QPID AMQP C++Messaging APIv1.39

Posted by "Rahul.Singh5@morganstanley.com" <Ra...@morganstanley.com>.
Hello,
Many thanks for your response. I build apache qpid libraries and my application on a different compile machine and run my application on a different test machine. Test machine does not have access to location used on compile machine.

While building my application, I point it to the local install folder where the output of QPID builds are stored. 
-L points to the local qpid  install path so that shared objects could be found by the linker. 

On the compile machine, I set the LD_LIBRARY_PATH with a local path where I copy the QPID install folder. Once the binary is ready, I copy it on the test machine.

However, when I run my app or run strace on the test machine, I see this error and the reference to the path is not from the test machine but to the path on compile machine where I actually got the QPID builds installed.

 Details from strace
open("PATH_ON_COMPILE_MACHINE/install/etc/qpid/qpidc.conf", O_RDONLY) = -1 EIO (Input/output error)
open("PATH_ON_COMPILE_MACHINE/install/etc/qpid/qpidc.conf", O_RDONLY) = -1 EIO (Input/output error)
Caught std::exception Invalid value for module-dir: Input/output error: Can't check directory  PATH_ON_COMPILE_MACHINE/install/lib64/qpid/client

Best Regards,
Rahul
-----Original Message-----
From: Gordon Sim <gs...@redhat.com> 
Sent: 21 June 2021 13:32
To: users@qpid.apache.org
Subject: Re: RDMA shared object reliance for QPID AMQP C++Messaging APIv1.39

You should not need to have any client module directory. My first guess is that it is perhaps a permissions issue. Is your application running as a user able to list files under the <install-dir>/lib64/qpid directory?

(The exception seems to come from stat() returning an error other than ENOENT).

On Mon, Jun 21, 2021 at 11:34 AM Rahul.Singh5@morganstanley.com <Ra...@morganstanley.com> wrote:
>
> Hello,
> I am trying on run my C++ application on linux based on QPID AMQP messaging API and connect to TCP endpoint with SSL authentication. At the moment, I am just trying to test the correct usage and do nothing more than establishing the connection. However, I get a runtime error which indicates the exe is looking for some shared object at the QPID AMQP installed directory (PATH_TO_INSTALL_DIRECTORY/lib64/qpid/client). However, I do not see any client sub-folder within the lib64/qpid path. There is only a daemon folder out there. The error I receive is "Caught std::exception Invalid value for module-dir: Input/output error: Can't check directory: PATH_TO_INSTALL_DIRECTORY/lib64/qpid/client"
>
> I have build both QPID Proton C v 0.34 and QPID AMQP Messaging C++ v1.39 packages and point the shared objects build to the install directory.
> Please note I do not have libibverbs and librdmacm packages which are 
> optional and required for RDMA transport protocol.  ( https://raw.githubusercontent.com/apache/qpid-cpp/main/INSTALL.txt ) Sounds like for some reasons, my qpid amqp packages do not build shared objects which are supposed to go under (installfolder)/lib64/qpid/client directory. I only need C++ and hence exclude BINDINGS for PERL,RUBY and PYTHON in my cmake options.
>
> In my main application, I use the following connection code so far -
>
> #include <qpid/messaging/Connection.h>
>
> const char *url = "amqp:tcp:IP:PORT";
> qpid::messaging::Connection conn(url);
>
> Looking forward to hearing from you.
>
> Best Regards,
> Rahul
>
> ________________________________
> NOTICE: Morgan Stanley is not acting as a municipal advisor and the opinions or views contained herein are not intended to be, and do not constitute, advice within the meaning of Section 975 of the Dodd-Frank Wall Street Reform and Consumer Protection Act. If you have received this communication in error, please destroy all electronic and paper copies and notify the sender immediately. Mistransmission is not intended to waive confidentiality or privilege. Morgan Stanley reserves the right, to the extent required and/or permitted under applicable law, to monitor electronic communications, including telephone calls with Morgan Stanley personnel. This message is subject to the Morgan Stanley General Disclaimers available at the following link: http://www.morganstanley.com/disclaimers.  If you cannot access the links, please notify us by reply message and we will send the contents to you. By communicating with Morgan Stanley you acknowledge that you have read, understand and consent, (where applicable), to the foregoing and the Morgan Stanley General Disclaimers.
>
> You may have certain rights regarding the information that Morgan Stanley collects about you. Please see our Privacy Pledge https://www.morganstanley.com/privacy-pledge for more information about your rights.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org For additional commands, e-mail: users-help@qpid.apache.org


--------------------------------------------------------------------------------
NOTICE: Morgan Stanley is not acting as a municipal advisor and the opinions or views contained herein are not intended to be, and do not constitute, advice within the meaning of Section 975 of the Dodd-Frank Wall Street Reform and Consumer Protection Act. If you have received this communication in error, please destroy all electronic and paper copies and notify the sender immediately. Mistransmission is not intended to waive confidentiality or privilege. Morgan Stanley reserves the right, to the extent permitted under applicable law, to monitor electronic communications. This message is subject to terms available at the following link: http://www.morganstanley.com/disclaimers  If you cannot access these links, please notify us by reply message and we will send the contents to you. By communicating with Morgan Stanley you consent to the foregoing and to the voice recording of conversations with personnel of Morgan Stanley.

You may have certain rights regarding the information that Morgan Stanley collects about you.  Please see our Privacy Pledge https://www.morganstanley.com/privacy-pledge for more information about your rights.

Re: RDMA shared object reliance for QPID AMQP C++Messaging APIv1.39

Posted by Gordon Sim <gs...@redhat.com>.
You should not need to have any client module directory. My first
guess is that it is perhaps a permissions issue. Is your application
running as a user able to list files under the
<install-dir>/lib64/qpid directory?

(The exception seems to come from stat() returning an error other than ENOENT).

On Mon, Jun 21, 2021 at 11:34 AM Rahul.Singh5@morganstanley.com
<Ra...@morganstanley.com> wrote:
>
> Hello,
> I am trying on run my C++ application on linux based on QPID AMQP messaging API and connect to TCP endpoint with SSL authentication. At the moment, I am just trying to test the correct usage and do nothing more than establishing the connection. However, I get a runtime error which indicates the exe is looking for some shared object at the QPID AMQP installed directory (PATH_TO_INSTALL_DIRECTORY/lib64/qpid/client). However, I do not see any client sub-folder within the lib64/qpid path. There is only a daemon folder out there. The error I receive is "Caught std::exception Invalid value for module-dir: Input/output error: Can't check directory: PATH_TO_INSTALL_DIRECTORY/lib64/qpid/client"
>
> I have build both QPID Proton C v 0.34 and QPID AMQP Messaging C++ v1.39 packages and point the shared objects build to the install directory.
> Please note I do not have libibverbs and librdmacm packages which are optional and required for RDMA transport protocol.  ( https://raw.githubusercontent.com/apache/qpid-cpp/main/INSTALL.txt )
> Sounds like for some reasons, my qpid amqp packages do not build shared objects which are supposed to go under (installfolder)/lib64/qpid/client directory. I only need C++ and hence exclude BINDINGS for PERL,RUBY and PYTHON in my cmake options.
>
> In my main application, I use the following connection code so far -
>
> #include <qpid/messaging/Connection.h>
>
> const char *url = "amqp:tcp:IP:PORT";
> qpid::messaging::Connection conn(url);
>
> Looking forward to hearing from you.
>
> Best Regards,
> Rahul
>
> ________________________________
> NOTICE: Morgan Stanley is not acting as a municipal advisor and the opinions or views contained herein are not intended to be, and do not constitute, advice within the meaning of Section 975 of the Dodd-Frank Wall Street Reform and Consumer Protection Act. If you have received this communication in error, please destroy all electronic and paper copies and notify the sender immediately. Mistransmission is not intended to waive confidentiality or privilege. Morgan Stanley reserves the right, to the extent required and/or permitted under applicable law, to monitor electronic communications, including telephone calls with Morgan Stanley personnel. This message is subject to the Morgan Stanley General Disclaimers available at the following link: http://www.morganstanley.com/disclaimers.  If you cannot access the links, please notify us by reply message and we will send the contents to you. By communicating with Morgan Stanley you acknowledge that you have read, understand and consent, (where applicable), to the foregoing and the Morgan Stanley General Disclaimers.
>
> You may have certain rights regarding the information that Morgan Stanley collects about you. Please see our Privacy Pledge https://www.morganstanley.com/privacy-pledge for more information about your rights.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
For additional commands, e-mail: users-help@qpid.apache.org