Re: Documentation question on middleware bridge development
Frank Quinn <fquinn.ni@...>
Hi Keith, Yeah there are some docs though I'm sure they could use a refresh: Cheers, Frank
On Wed, Sep 13, 2017 at 8:53 AM, Keith Rudd <keith.rudd@...> wrote:
|
|
Documentation question on middleware bridge development
Keith Rudd
Classification: Public Does anyone know if there exists, where I could find, a general guide to OpenMAMA middleware bridge development?
I know there are the examples provided to copy (which is how we’ve got started on this before), but some high-level general notes would be a useful introduction.
Regards,
--- This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and delete this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. Please refer to https://www.db.com/disclosures for additional EU corporate and regulatory disclosures and to http://www.db.com/unitedkingdom/content/privacy.htm for information about privacy.
|
|
Code change(s) just landed on origin/next (Successful)
jenkins@...
Some changes have just been added to the origin/next branch!
[noreply] Fixed crash with entitlement subscription (#327) mama/c_cpp/src/c/subscription.c
Results for OpenMAMA_Snapshot_Linux CI run with latest changes:
You may also check CI console output to view the full results.
|
|
Code change(s) just landed on origin/next (Successful)
jenkins@...
Some changes have just been added to the origin/next branch!
[noreply] Modified MAMA default log level to NORMAL (#329) mama/c_cpp/src/c/log.c
Results for OpenMAMA_Snapshot_Linux CI run with latest changes:
You may also check CI console output to view the full results.
|
|
Code change(s) just landed on origin/next (Successful)
jenkins@...
Some changes have just been added to the origin/next branch!
[noreply] MAMA: Moved background thread destroy to stop (#326) mama/c_cpp/src/c/mama.c
Results for OpenMAMA_Snapshot_Linux CI run with latest changes:
You may also check CI console output to view the full results.
|
|
Code change(s) just landed on origin/next (Successful)
jenkins@...
Some changes have just been added to the origin/next branch!
[noreply] Reset plugins to null to avoid double free (#328) mama/c_cpp/src/c/plugin.c
Results for OpenMAMA_Snapshot_Linux CI run with latest changes:
You may also check CI console output to view the full results.
|
|
Code change(s) just landed on origin/next (Still Failing)
jenkins@...
Some changes have just been added to the origin/next branch!
[fquinn.ni] Fix leak in mamaMsg_detach (#309) mama/c_cpp/src/c/queue.c
Results for OpenMAMA_Snapshot_Windows CI run with latest changes:
You may also check CI console output to view the full results.
|
|
Code change(s) just landed on origin/next (Successful)
jenkins@...
Some changes have just been added to the origin/next branch!
[fquinn.ni] Fix leak in mamaMsg_detach (#309) mama/c_cpp/src/c/queue.c
Results for OpenMAMA_Snapshot_Linux CI run with latest changes:
You may also check CI console output to view the full results.
|
|
Code change(s) just landed on origin/next (Failure)
jenkins@...
Some changes have just been added to the origin/next branch!
[fquinn.ni] PLAT-1153: loadPlugins can realloc to provid for more plugins (#316) mama/c_cpp/src/c/plugin.c
Results for OpenMAMA_Snapshot_Windows CI run with latest changes:
You may also check CI console output to view the full results.
|
|
Code change(s) just landed on origin/next (Successful)
jenkins@...
Some changes have just been added to the origin/next branch!
[fquinn.ni] PLAT-1153: loadPlugins can realloc to provid for more plugins (#316) mama/c_cpp/src/c/plugin.c
Results for OpenMAMA_Snapshot_Linux CI run with latest changes:
You may also check CI console output to view the full results.
|
|
Open MAMA - streamlining the experience for potential adopters
Phelan, Nigel
Hi all As some of you will be aware there have been discussions in the steering committee recently regarding how to simplify the process of getting up and running with Open MAMA. Initial feedback suggests that a part of the problem is that the quick start guide is very much aimed at someone who wants to take the open source distribution and get it up and running as a stand-alone messaging platform. That is clearly an important aspect, but personal experience from some committee members suggests that a lot of people are actually starting by trying to download Open MAMA and then prove that it really works with their incumbent market data platform. We would like to try to make that experience more straightforward than it currently is. To do that I am setting up a working group to try to improve things in this area. This email is intended as a call for volunteers. If you would like to participate, please drop me a line to indicate your interest. There are two areas where people can contribute: 1) Offering suggestions about how the instructions, or the software distribution, could be improved to allow prospective users to get up and running more quickly 2) Offering to work on some of the items put forward above and contribute improvements to documentation, code or packaging (this may not be an option for some advisory group members, but suggestions for improvements from that community would still be valued) Thanks in advance to anyone who feels able to offer help.
Nigel Phelan – Open MAMA project coordinator
Nigel Phelan | Corporate & Investment Bank | Market Data Services | J.P. Morgan
This message is confidential and subject to terms at: http://www.jpmorgan.com/emaildisclaimer including on confidentiality, legal privilege, viruses and monitoring of electronic messages. If you are not the intended recipient, please delete this message and notify the sender immediately. Any unauthorized use is strictly prohibited.
|
|
Code change(s) just landed on origin/next (Successful)
jenkins@...
Some changes have just been added to the origin/next branch!
[fquinn.ni] PLAT 1146 Add MAMA Version to Log: removed prev change, changed log mama/c_cpp/src/c/mama.c
Results for OpenMAMA_Snapshot_Linux CI run with latest changes:
You may also check CI console output to view the full results.
|
|
Code change(s) just landed on origin/next (Successful)
jenkins@...
Some changes have just been added to the origin/next branch!
[fquinn.ni] [MAMA] thread-safe version of endpoint pool (#312) mama/c_cpp/src/c/bridge/qpid/endpointpool.c
Results for OpenMAMA_Snapshot_Linux CI run with latest changes:
You may also check CI console output to view the full results.
|
|
Code change(s) just landed on origin/next (Successful)
jenkins@...
Some changes have just been added to the origin/next branch!
[fquinn.ni] Reset gPluginNo to 0 on shutdown, added unittest to test this. (#313) mama/c_cpp/src/c/plugin.c mama/c_cpp/src/gunittest/c/openclosetest.cpp
Results for OpenMAMA_Snapshot_Linux CI run with latest changes:
You may also check CI console output to view the full results.
|
|
Re: Questions about MamaStartCallback
Frank Quinn <fquinn@...>
Thanks Yury,
toggle quoted messageShow quoted text
Yes that analysis and suggestion both sound correct. I just raised https://github.com/OpenMAMA/OpenMAMA/issues/319 for tracking so it will make it into the next release. Cheers, Frank FRANK QUINN Principal Engineer Vela Trading Technologies O. +44 289 568 0209 ext. 3592 fquinn@velatt.com Adelaide Exchange Building, 2nd Floor, 24-26 Adelaide Street, Belfast, BT2 8GD velatradingtech.com | @vela_tt
-----Original Message-----
From: Yury Batrakov [mailto:yury.batrakov@db.com] Sent: 14 August 2017 13:21 To: openmama-users <openmama-users@lists.openmama.org>; openmama-dev <openmama-dev@lists.openmama.org> Cc: Frank Quinn <fquinn@velatt.com>; Marc Alzina <marc.alzina@db.com> Subject: Questions about MamaStartCallback Classification: Public Hi guys, As everybody knows there is possibility to start MAMA bridge in background thread in C++ API: function Mama::startBackground (mamaBridge bridgeImpl, MamaStartCallback* cb) There are a couple of problems with this function though: 1. We can't ignore "MAMA startup finished" event setting the value for the second argument to nullptr - this can be fixed as a simple nullptr check in void MAMACALLTYPE stopCb (mama_status status, mamaBridge, void* closure) in mamacpp.cpp 2. There is race condition between thread calling Mama::stop and internal MAMA thread spawned by startBackground function. This race may lead to program crash. Let me describe #2 - consider the following scenario: We have a simple class MyMamaConnection class MyMamaStartCallback : public MamaStartCallback { void onStartComplete (Wombat::MamaStatus status) override { // .... Some bridge specific callback code } }; class MyMamaConnection { mamaBridge m_bridge; MyMamaStartCallback m_callback; MyMamaConnection() { Mama::startBackground (m_bridge, &m_callback) } ~MyMamaConnection() { Mama::stop(m_bridge); } }; The crash occur in destructor because Mama::stop doesn't guarantee that no threads are still using m_callback pointer after this function exited. In our case MyMamaConnection's destructor destroys m_callback object while it is still in use by the thread created by Mama::startBackground. Here are more details, file mama.c: static void* mamaStartThread (void* closure) { ... rval = mama_start (cb->mBridgeImpl); // Imagine user thread Thread_1 calling ~MyMamaConnection() from our example. // Current thread may be suspended by OS at this point while Thread_1 continues its work and deletes the object pointed by closure ... if (cb->mStopCallbackEx) // cb->mClosure points to destroyed object. cb->mStopCallbackEx (rval, cb->mBridgeImpl, cb->mClosure); ... } One of the possible solutions is to move this code from mama_close() to mama_stop(): // Get name of start background thread and destroy it const char* threadName = wombatThread_getThreadName(middlewareLib->bridge->mStartBackgroundThread); wombatThread_destroy (threadName); Let me know if it's possible to have this fixed in the next release. --- This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and delete this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. Please refer to https://www.db.com/disclosures for additional EU corporate and regulatory disclosures and to http://www.db.com/unitedkingdom/content/privacy.htm for information about privacy. The information contained in this message may be privileged and confidential and protected from disclosure. If the reader of this message is not the intended recipient, you are hereby notified that any dissemination, distribution or copying of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately by replying to this message and deleting it from your computer. Thank you. Vela Trading Technologies LLC
|
|
Code change(s) just landed on origin/next (Successful)
jenkins@...
Some changes have just been added to the origin/next branch!
[noreply] Fixed windows build issue for unit test (#317) common/c_cpp/src/gunittest/c/strutilstest.cpp common/c_cpp/src/gunittest/c/UnitTestCommonC.vcxproj
Results for OpenMAMA_Snapshot_Linux CI run with latest changes:
You may also check CI console output to view the full results.
|
|
Questions about MamaStartCallback
Yury Batrakov
Classification: Public
Hi guys, As everybody knows there is possibility to start MAMA bridge in background thread in C++ API: function Mama::startBackground (mamaBridge bridgeImpl, MamaStartCallback* cb) There are a couple of problems with this function though: 1. We can't ignore "MAMA startup finished" event setting the value for the second argument to nullptr - this can be fixed as a simple nullptr check in void MAMACALLTYPE stopCb (mama_status status, mamaBridge, void* closure) in mamacpp.cpp 2. There is race condition between thread calling Mama::stop and internal MAMA thread spawned by startBackground function. This race may lead to program crash. Let me describe #2 - consider the following scenario: We have a simple class MyMamaConnection class MyMamaStartCallback : public MamaStartCallback { void onStartComplete (Wombat::MamaStatus status) override { // .... Some bridge specific callback code } }; class MyMamaConnection { mamaBridge m_bridge; MyMamaStartCallback m_callback; MyMamaConnection() { Mama::startBackground (m_bridge, &m_callback) } ~MyMamaConnection() { Mama::stop(m_bridge); } }; The crash occur in destructor because Mama::stop doesn't guarantee that no threads are still using m_callback pointer after this function exited. In our case MyMamaConnection's destructor destroys m_callback object while it is still in use by the thread created by Mama::startBackground. Here are more details, file mama.c: static void* mamaStartThread (void* closure) { ... rval = mama_start (cb->mBridgeImpl); // Imagine user thread Thread_1 calling ~MyMamaConnection() from our example. // Current thread may be suspended by OS at this point while Thread_1 continues its work and deletes the object pointed by closure ... if (cb->mStopCallbackEx) // cb->mClosure points to destroyed object. cb->mStopCallbackEx (rval, cb->mBridgeImpl, cb->mClosure); ... } One of the possible solutions is to move this code from mama_close() to mama_stop(): // Get name of start background thread and destroy it const char* threadName = wombatThread_getThreadName(middlewareLib->bridge->mStartBackgroundThread); wombatThread_destroy (threadName); Let me know if it's possible to have this fixed in the next release. --- This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and delete this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. Please refer to https://www.db.com/disclosures for additional EU corporate and regulatory disclosures and to http://www.db.com/unitedkingdom/content/privacy.htm for information about privacy.
|
|
Code change(s) just landed on origin/next (Successful)
jenkins@...
Some changes have just been added to the origin/next branch!
[fquinn.ni] PLAT-1078: Extend support of environment variables (#302) common/c_cpp/src/c/properties.l common/c_cpp/src/gunittest/c/Makefile.sample common/c_cpp/src/c/propertyinternal.h common/c_cpp/src/gunittest/c/SConscript common/c_cpp/src/c/property.c common/c_cpp/src/gunittest/c/strutilstest.cpp common/c_cpp/src/c/wombat/strutils.h common/c_cpp/src/c/strutils.c
Results for OpenMAMA_Snapshot_Linux CI run with latest changes:
You may also check CI console output to view the full results.
|
|
Code change(s) just landed on origin/next (Failure)
jenkins@...
Some changes have just been added to the origin/next branch!
[fquinn.ni] PLAT-1078: Extend support of environment variables (#302) common/c_cpp/src/c/property.c common/c_cpp/src/c/strutils.c common/c_cpp/src/gunittest/c/Makefile.sample common/c_cpp/src/c/properties.l common/c_cpp/src/gunittest/c/strutilstest.cpp common/c_cpp/src/c/propertyinternal.h common/c_cpp/src/gunittest/c/SConscript common/c_cpp/src/c/wombat/strutils.h
Results for OpenMAMA_Snapshot_Windows CI run with latest changes:
You may also check CI console output to view the full results.
|
|
Code change(s) just landed on origin/next (Successful)
jenkins@...
Some changes have just been added to the origin/next branch!
[fquinn.ni] [MAMA] Add support for autoloading payload bridges from config. (#304) mama/c_cpp/src/c/mama.c
Results for OpenMAMA_Snapshot_Linux CI run with latest changes:
You may also check CI console output to view the full results.
|
|