Date   

let's move bridgeMamaSubscriptionMute call up in hierarchy out of throttle locked context

Igor Kovalenko
 

Classification: Public


Hi openmama team,

 

I'd like to propose moving bridgeMamaSubscriptionMute call from mamaSubscription_deactivate_internal up in the call hierarchy to mamaSubscription_deactivate so Mute() is called before any throttle lock is acquired (that is, just after checking if subscription is not NULL in mamaSubscription_deactivate).

 

Since in this case the client is removing subscription anyway, it should not matter that transport bridge Mute() method will be called a bit earlier in subscription lifecycle.

 

I'll try to explain why this change is needed for tick42rmds bridge to operate reliably. A required change to tick42rmds is outlined below as well.

Locally I tested a combination of this proposed change to openmama with tick42rmds bridge modified as outlined below, and also with other transport bridges (unmodified) that we use, and found no negative side effects.

 

A couple of years back there was a discussion regarding tick42rmds transport issue.

My understanding is that tick42rmds design choice to process subscriptions on bridge thread as opposed to Mama.start() thread violates a few openmama threading assumptions.

As a consequence we can reproduce a crash during moderately fast subscribe/unsubscribe sequence where tick42rmds bridge is still trying to deliver data to callback of already destroyed mama subscription.

This crash is caused by a race condition detailed below.

 

Tick42rmds bridge implements tick42rmdsBridgeMamaSubscription_mute method which does call Shutdown() on bridge thread subscription object.

Intention there appears to be to mark bridge thread subscription object as shut down so that bridge thread ignores it and is not trying to deliver a callbacks on mama subscription objects being destroyed.

Unfortunately there is no proper locking there so that seldom a Mute() call returns before Shutdown() takes effect.

If this happens, bridge thread proceeds to deliver next message to mama subscription callback while mama subscription object is being destroyed by the thread returned from Mute().

 

Without significant redesign of tick42rmds this race can be closed by adding proper locking between tick42rmdsBridgeMamaSubscription_mute and bridge thread, so that bridge thread is guaranteed to see result of Shutdown() before Mute() call returns. Simple implementation would be to add a mutex shared between Shutdown() call and bridge thread methods issuing callbacks to mama subscriptions.

 

So far so good. Yet unfortunately openmama locking scheme needs to be modified for this to work due to a problem with locking order of MAMA_THROTTLE_DEFAULT throttle.

There are many places where MAMA_THROTTLE_DEFAULT lock is acquired. According to my analysis with valgrind/helgrind/drd acquisition of corresponding mutex must always be a leaf call in locking hierarchy to prevent ABBA-style deadlock.

 

If Mute() and Shutdown() are synchronized with a mutex, then the following would happen:

 

client thread destroying mama subscription eventually calls mamaSubscription_destroy

       which calls mamaSubscription_deactivate()

    [A]  .. mamaSubscription_deactivate acquires lock [A] on throttle object

            then calls mamaSubscription_deactivate_internal()

              .. which calls impl->mBridgeImpl->bridgeMamaSubscriptionMute (impl->mSubscBridge)

                 which is tick42rmdsBridgeMamaSubscription_mute

    [B]          .. tick42rmdsBridgeMamaSubscription_mute acquires bridge thread subscription object lock [B]

XX client thread gets suspended here for some reason so it is not calling Shutdown() yet

 

tick42rmds bridge thread calls RMDSBridgeSubscription::OnMessage (or anything else which requires calling mamaSubscription_processMsg later)

    [B]  .. bridge thread acquires bridge thread subscription object lock [B]

                bridge thread checks if Shutdown() is called on this object

XX          .. since client thread is suspended, Shutdown() is not in effect

            bridge thread calls mamaSubscription_processMsg() to deliver message to mama subscription

            ..

    [A]     imageRequest_stopWaitForResponse() is called which tries to acquire throttle lock [A]

 

If my proposal to move bridgeMamaSubscriptionMute call out of locked scope is implemented, this deadlock would not occur.

 

I will not be able to share any code change due to our organizational restrictions but will try to answer other questions regarding this proposal.

 

--

 

Kind regards,
Igor Kovalenko

 



---
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.


OpenMAMA plugin enhancement to allow source/symbol-mapping plugin

Keith Rudd
 

I took an action from recent OpenMAMA Steering Committee meeting to look into MAMA plugin interface enhancement, specifically with a view to providing for a pre-subscription plugin hook that would allow for a custom symbol mapper and/or subscription logger plugin.

 

I've had a look at the OpenMAMA 6.3.0 code with this in mind and have concluded the following.

 

There is now a 'subscriptionPostCreate' hook defined:

typedef mama_status (*mamaPlugin_subscriptionPostCreateHook) (mamaPluginInfo pluginInfo, mamaSubscription subscription);

It gets called once and only from mamaSubscription_setupBasic() in subscription.c

This could be used for subscription logging, but would not be useful for symbol mapping for a couple of reasons.

One is that it occurs after some initializations for activating the subscription have taken place, namely calls to mamaPublisherImpl_createByIndex() and image_request(), both of which use the originally specified source and symbol.

The other is that there is currently no way of resetting the subscription source after mamaSubscription_create() anyway.

 

Two changes are needed for a plugin hook that does source/symbol mapping (changes source and/or symbol) to be practical I think.

 

1) A plugin hook at a slightly earlier point in mamaSubscription_setupBasic().

I suggest just after line 605 in subscription.c, where a call to setSubscInfo (self, transport, root, source, symbol) is made.

After this point, source and symbol are stored in the mamaSubscriptionImpl struct and only used from the stored values,  so if set (changed) then changes will be effective.

Could implement either by moving the 'subscriptionPostCreateHook' to this slightly earlier point, or by just creating a new additional plugin, say called 'subscriptionPostSetUpHook', inserted at this point.

I slightly prefer the second choice, but OK either way.

 

2) Add an additional accessor function for mamaSubscription,

mama_status mamaSubscription_setSourceName (mamaSubscription subscription, const char* sourceName)

This would be very similar to the mamaSubscription_setSymbol() function, just changing sourceName (mSubscSource in mamaSubscriptionImpl struct) instead.

 

These are the changes I propose.

 

Regards,

Keith



---
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.


Re: Adding Blank data representation to MAMA API data types

Frank Quinn
 

Yes that’s why I was suggesting this approach – it’s backwards compatible with existing bridges (we can make the bridge methods optional now where no implementation exists) and it doesn’t require adding a new MAMA field type (since it’s a special case here common to all existing field types which the payload bridge may optionally handle).

 

The interface could be modified to suit of course but just wanted to raise a proposed solution which won’t involve having to do all the fun we currently have with trying to parse a date / price several different ways (string, datetime etc) to try and make this fit.

 

But you’re right I’ll await further definition…

 

Cheers,

Frank

 

Frank Quinn, Cascadium | +44 (0) 28 8678 8015 | http://cascadium.io

 

From: Phelan, Nigel <nigel.phelan@...>
Sent: 11 December 2019 09:02
To: Frank Quinn <fquinn@...>; Keith Rudd <keith.rudd@...>; 'openmama-dev@...' <openmama-dev@...>
Subject: RE: [Openmama-dev] Adding Blank data representation to MAMA API data types

 

I’d be cautious about that one, Frank – you’d need to think about the implications for the payload bridges because you’d need valid representations for NULL for all field types (or possibly you’d need a new “null field” type and numerous tweaks to handle the possibility that any field could contain content of the type specified in the dictionary or a null field representation).  I’d probably wait until the problem was better defined before proposing an implementation.

 

Nigel

 


Nigel Phelan | Corporate & Investment Bank | Market Data Services | J.P. Morgan

 

From: Frank Quinn [mailto:fquinn@...]
Sent: 11 December 2019 07:48
To: Phelan, Nigel (CIB Tech, GBR) <nigel.phelan@...>; Keith Rudd <keith.rudd@...>; 'openmama-dev@...' <openmama-dev@...>
Subject: RE: [Openmama-dev] Adding Blank data representation to MAMA API data types

 

For the record, I’m not opposed to a “first class” null data type in principle. Json and msgpack for example have it fine. It does raise a bit of ambiguity though on how to handle a NULL value in terms of caching and data type safety. I think we would need to make it clear that a NULL value is indicative of a “this field no longer has a valid value” scenario rather than “this field has not been updated” when being applied to any caches.

 

I think the cleanest way to do this is something like

 

mamaMsgField result;

mamaMsg_getField(msg, name, fid, &result);

mama_bool_t isNull = mamaMsgField_isNull(field); // <-- New Method

 

That way we could apply across all fields without having to have separate implementations per data type. That would then expose a similar bridge method to handle that. This is opposed to actually mapping the null type to a proper mamaMsg_getNull() type approach which I think would be abrasive for most OpenMAMA developers who are using strongly typed languages.

 

Cheers,

Frank

 

Frank Quinn, Cascadium | +44 (0) 28 8678 8015 | http://cascadium.io

 

From: Openmama-dev@... <Openmama-dev@...> On Behalf Of Phelan, Nigel via Lists.Openmama.Org
Sent: 10 December 2019 17:34
To: Keith Rudd <keith.rudd@...>; 'openmama-dev@...' <openmama-dev@...>
Cc: Openmama-dev@...
Subject: Re: [Openmama-dev] Adding Blank data representation to MAMA API data types

 

For integers, yes, I agree.  For dateTimes, as I said, you can indicate if the date part is valid or the time part is valid (hasDate()/hasTime()/setHints()).  If neither flag is set, we interpret that as an invalid dateTime and tell people to render as a blank.

 

Nigel

 


Nigel Phelan | Corporate & Investment Bank | Market Data Services | J.P. Morgan

 

From: Openmama-dev@... [mailto:Openmama-dev@...] On Behalf Of Keith Rudd
Sent: 10 December 2019 16:35
To: Phelan, Nigel (CIB Tech, GBR) <nigel.phelan@...>; 'openmama-dev@...' <openmama-dev@...>
Subject: Re: [Openmama-dev] Adding Blank data representation to MAMA API data types

 

Thanks Nigel – I am with you now.

Was not aware of the ‘setIsValidPrice()’ method. Our version of the tick42rmds bridge does not use it when translating messages received, but it could be updated to do that.

This only covers the price field case as there do not appear to be any equivalents methods for other field types, like times or integers, but perhaps this will be enough to cover the most important case.

Will refer back to our users for more analysis to see if using this is enough.

 

From: Phelan, Nigel [mailto:nigel.phelan@...]
Sent: 10 December 2019 12:19
To: Keith Rudd <keith.rudd@...>; 'openmama-dev@...' <openmama-dev@...>
Subject: RE: Adding Blank data representation to MAMA API data types

 

Still not sure I see the problem, Keith.  If you receive the data as a string field and, when the transport bridge tries to map it to a mamaPrice field, the conversion fails, you should call setIsValidPrice() to mark the field as containing an “invalid” price and the consuming client should honour this and display it as a blank (in exactly the same way you would if someone decided to publish “NOT QUOTING” in a bid/ask price field because the underlying middleware allowed free text entries there).  That’s why I was looking for an example of when this breaks.

 

Nigel

 


Nigel Phelan | Corporate & Investment Bank | Market Data Services | J.P. Morgan

 

From: Keith Rudd [mailto:keith.rudd@...]
Sent: 10 December 2019 11:47
To: Phelan, Nigel (CIB Tech, GBR) <nigel.phelan@...>; 'openmama-dev@...' <openmama-dev@...>
Subject: RE: Adding Blank data representation to MAMA API data types

 

 

Hi Nigel,

 

I don’t have a RIC to quote here, but the problem exists for certain data delivered over the Elektron feed, with data from contributors where we have no control over what conventions they use.

For most data sets you only ever see blank values in initial data which is not really a problem. It’s when they are used to update a previously valid field value, distinguishing between a ‘blank’ and a zero (possibly valid) becomes important. The tick42rmds (or any other) adaptor can only really deliver a zero in the MAMA field it renders from the received ‘blank’ as there is no blank representation in MAMA and this is indistinguishable from a valid zero update, even though they are semantically different.

 

Regards,

Keith

 

 

From: Phelan, Nigel [mailto:nigel.phelan@...]
Sent: 09 December 2019 17:03
To: Keith Rudd <keith.rudd@...>; 'openmama-dev@...' <openmama-dev@...>
Subject: RE: Adding Blank data representation to MAMA API data types

 

Hi Keith – what we normally do here is use the relevant getters/setters on the Price and DateTime fields (getIsValidPrice, setIsValidPrice, HasDate, HasTime).  We tell people to render blanks for invalid prices and for DateTimes with no date or time part.  I believe the tick42rmds adaptor for TREP maps these correctly from the native TREP RWF encoding.  Do you have counter examples?

 

Nigel

 


Nigel Phelan | Corporate & Investment Bank | Market Data Services | J.P. Morgan

 

From: Openmama-dev@... [mailto:Openmama-dev@...] On Behalf Of Keith Rudd
Sent: 09 December 2019 16:49
To: 'openmama-dev@...' <openmama-dev@...>
Subject: [Openmama-dev] Adding Blank data representation to MAMA API data types

 

Certain other market data platforms / APIs (well, TREP) support the concept of ‘blank’ field values.

The price and time field types actually have special blank data representations defined.

This is used in the context where a publisher wants to include a field in a message but with no assigned value, possibly for example to indicate that a price that was previously offered and valid is now no longer available.

(Granted there are other ways to do this, with another price status field etc. but we do see this method used sometimes and with no other indicator of validity)

 

This introduces a conundrum when translating such values to the MAMA API as prices, times, etc. have no such equivalent blank representation in MAMA.

 

So, my proposal is that we might extend MAMA field data types to include such ‘blank’ values.

This would need to be done while preserving backwards-compatibility.

 

A discussion point for now

-  Is this a feature which others see value in?

-  Any feasible suggestions for how it might be achieved and what values would be used for ‘blank’ ?

 

Regards,

Keith

 



---
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.

This message is confidential and subject to terms at: https://www.jpmorgan.com/emaildisclaimer including on confidential, privileged or legal entity information, 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.



---
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.

This message is confidential and subject to terms at: https://www.jpmorgan.com/emaildisclaimer including on confidential, privileged or legal entity information, 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.



---
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.

This message is confidential and subject to terms at: https://www.jpmorgan.com/emaildisclaimer including on confidential, privileged or legal entity information, 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.

This message is confidential and subject to terms at: https://www.jpmorgan.com/emaildisclaimer including on confidential, privileged or legal entity information, 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.


Re: Adding Blank data representation to MAMA API data types

Phelan, Nigel
 

I’d be cautious about that one, Frank – you’d need to think about the implications for the payload bridges because you’d need valid representations for NULL for all field types (or possibly you’d need a new “null field” type and numerous tweaks to handle the possibility that any field could contain content of the type specified in the dictionary or a null field representation).  I’d probably wait until the problem was better defined before proposing an implementation.

 

Nigel

 


Nigel Phelan | Corporate & Investment Bank | Market Data Services | J.P. Morgan

 

From: Frank Quinn [mailto:fquinn@...]
Sent: 11 December 2019 07:48
To: Phelan, Nigel (CIB Tech, GBR) <nigel.phelan@...>; Keith Rudd <keith.rudd@...>; 'openmama-dev@...' <openmama-dev@...>
Subject: RE: [Openmama-dev] Adding Blank data representation to MAMA API data types

 

For the record, I’m not opposed to a “first class” null data type in principle. Json and msgpack for example have it fine. It does raise a bit of ambiguity though on how to handle a NULL value in terms of caching and data type safety. I think we would need to make it clear that a NULL value is indicative of a “this field no longer has a valid value” scenario rather than “this field has not been updated” when being applied to any caches.

 

I think the cleanest way to do this is something like

 

mamaMsgField result;

mamaMsg_getField(msg, name, fid, &result);

mama_bool_t isNull = mamaMsgField_isNull(field); // <-- New Method

 

That way we could apply across all fields without having to have separate implementations per data type. That would then expose a similar bridge method to handle that. This is opposed to actually mapping the null type to a proper mamaMsg_getNull() type approach which I think would be abrasive for most OpenMAMA developers who are using strongly typed languages.

 

Cheers,

Frank

 

Frank Quinn, Cascadium | +44 (0) 28 8678 8015 | http://cascadium.io

 

From: Openmama-dev@... <Openmama-dev@...> On Behalf Of Phelan, Nigel via Lists.Openmama.Org
Sent: 10 December 2019 17:34
To: Keith Rudd <keith.rudd@...>; 'openmama-dev@...' <openmama-dev@...>
Cc: Openmama-dev@...
Subject: Re: [Openmama-dev] Adding Blank data representation to MAMA API data types

 

For integers, yes, I agree.  For dateTimes, as I said, you can indicate if the date part is valid or the time part is valid (hasDate()/hasTime()/setHints()).  If neither flag is set, we interpret that as an invalid dateTime and tell people to render as a blank.

 

Nigel

 


Nigel Phelan | Corporate & Investment Bank | Market Data Services | J.P. Morgan

 

From: Openmama-dev@... [mailto:Openmama-dev@...] On Behalf Of Keith Rudd
Sent: 10 December 2019 16:35
To: Phelan, Nigel (CIB Tech, GBR) <nigel.phelan@...>; 'openmama-dev@...' <openmama-dev@...>
Subject: Re: [Openmama-dev] Adding Blank data representation to MAMA API data types

 

Thanks Nigel – I am with you now.

Was not aware of the ‘setIsValidPrice()’ method. Our version of the tick42rmds bridge does not use it when translating messages received, but it could be updated to do that.

This only covers the price field case as there do not appear to be any equivalents methods for other field types, like times or integers, but perhaps this will be enough to cover the most important case.

Will refer back to our users for more analysis to see if using this is enough.

 

From: Phelan, Nigel [mailto:nigel.phelan@...]
Sent: 10 December 2019 12:19
To: Keith Rudd <keith.rudd@...>; 'openmama-dev@...' <openmama-dev@...>
Subject: RE: Adding Blank data representation to MAMA API data types

 

Still not sure I see the problem, Keith.  If you receive the data as a string field and, when the transport bridge tries to map it to a mamaPrice field, the conversion fails, you should call setIsValidPrice() to mark the field as containing an “invalid” price and the consuming client should honour this and display it as a blank (in exactly the same way you would if someone decided to publish “NOT QUOTING” in a bid/ask price field because the underlying middleware allowed free text entries there).  That’s why I was looking for an example of when this breaks.

 

Nigel

 


Nigel Phelan | Corporate & Investment Bank | Market Data Services | J.P. Morgan

 

From: Keith Rudd [mailto:keith.rudd@...]
Sent: 10 December 2019 11:47
To: Phelan, Nigel (CIB Tech, GBR) <nigel.phelan@...>; 'openmama-dev@...' <openmama-dev@...>
Subject: RE: Adding Blank data representation to MAMA API data types

 

 

Hi Nigel,

 

I don’t have a RIC to quote here, but the problem exists for certain data delivered over the Elektron feed, with data from contributors where we have no control over what conventions they use.

For most data sets you only ever see blank values in initial data which is not really a problem. It’s when they are used to update a previously valid field value, distinguishing between a ‘blank’ and a zero (possibly valid) becomes important. The tick42rmds (or any other) adaptor can only really deliver a zero in the MAMA field it renders from the received ‘blank’ as there is no blank representation in MAMA and this is indistinguishable from a valid zero update, even though they are semantically different.

 

Regards,

Keith

 

 

From: Phelan, Nigel [mailto:nigel.phelan@...]
Sent: 09 December 2019 17:03
To: Keith Rudd <keith.rudd@...>; 'openmama-dev@...' <openmama-dev@...>
Subject: RE: Adding Blank data representation to MAMA API data types

 

Hi Keith – what we normally do here is use the relevant getters/setters on the Price and DateTime fields (getIsValidPrice, setIsValidPrice, HasDate, HasTime).  We tell people to render blanks for invalid prices and for DateTimes with no date or time part.  I believe the tick42rmds adaptor for TREP maps these correctly from the native TREP RWF encoding.  Do you have counter examples?

 

Nigel

 


Nigel Phelan | Corporate & Investment Bank | Market Data Services | J.P. Morgan

 

From: Openmama-dev@... [mailto:Openmama-dev@...] On Behalf Of Keith Rudd
Sent: 09 December 2019 16:49
To: 'openmama-dev@...' <openmama-dev@...>
Subject: [Openmama-dev] Adding Blank data representation to MAMA API data types

 

Certain other market data platforms / APIs (well, TREP) support the concept of ‘blank’ field values.

The price and time field types actually have special blank data representations defined.

This is used in the context where a publisher wants to include a field in a message but with no assigned value, possibly for example to indicate that a price that was previously offered and valid is now no longer available.

(Granted there are other ways to do this, with another price status field etc. but we do see this method used sometimes and with no other indicator of validity)

 

This introduces a conundrum when translating such values to the MAMA API as prices, times, etc. have no such equivalent blank representation in MAMA.

 

So, my proposal is that we might extend MAMA field data types to include such ‘blank’ values.

This would need to be done while preserving backwards-compatibility.

 

A discussion point for now

-  Is this a feature which others see value in?

-  Any feasible suggestions for how it might be achieved and what values would be used for ‘blank’ ?

 

Regards,

Keith

 



---
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.

This message is confidential and subject to terms at: https://www.jpmorgan.com/emaildisclaimer including on confidential, privileged or legal entity information, 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.



---
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.

This message is confidential and subject to terms at: https://www.jpmorgan.com/emaildisclaimer including on confidential, privileged or legal entity information, 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.



---
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.

This message is confidential and subject to terms at: https://www.jpmorgan.com/emaildisclaimer including on confidential, privileged or legal entity information, 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.

This message is confidential and subject to terms at: https://www.jpmorgan.com/emaildisclaimer including on confidential, privileged or legal entity information, 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.


Re: Adding Blank data representation to MAMA API data types

Frank Quinn
 

For the record, I’m not opposed to a “first class” null data type in principle. Json and msgpack for example have it fine. It does raise a bit of ambiguity though on how to handle a NULL value in terms of caching and data type safety. I think we would need to make it clear that a NULL value is indicative of a “this field no longer has a valid value” scenario rather than “this field has not been updated” when being applied to any caches.

 

I think the cleanest way to do this is something like

 

mamaMsgField result;

mamaMsg_getField(msg, name, fid, &result);

mama_bool_t isNull = mamaMsgField_isNull(field); // <-- New Method

 

That way we could apply across all fields without having to have separate implementations per data type. That would then expose a similar bridge method to handle that. This is opposed to actually mapping the null type to a proper mamaMsg_getNull() type approach which I think would be abrasive for most OpenMAMA developers who are using strongly typed languages.

 

Cheers,

Frank

 

Frank Quinn, Cascadium | +44 (0) 28 8678 8015 | http://cascadium.io

 

From: Openmama-dev@... <Openmama-dev@...> On Behalf Of Phelan, Nigel via Lists.Openmama.Org
Sent: 10 December 2019 17:34
To: Keith Rudd <keith.rudd@...>; 'openmama-dev@...' <openmama-dev@...>
Cc: Openmama-dev@...
Subject: Re: [Openmama-dev] Adding Blank data representation to MAMA API data types

 

For integers, yes, I agree.  For dateTimes, as I said, you can indicate if the date part is valid or the time part is valid (hasDate()/hasTime()/setHints()).  If neither flag is set, we interpret that as an invalid dateTime and tell people to render as a blank.

 

Nigel

 


Nigel Phelan | Corporate & Investment Bank | Market Data Services | J.P. Morgan

 

From: Openmama-dev@... [mailto:Openmama-dev@...] On Behalf Of Keith Rudd
Sent: 10 December 2019 16:35
To: Phelan, Nigel (CIB Tech, GBR) <nigel.phelan@...>; 'openmama-dev@...' <openmama-dev@...>
Subject: Re: [Openmama-dev] Adding Blank data representation to MAMA API data types

 

Thanks Nigel – I am with you now.

Was not aware of the ‘setIsValidPrice()’ method. Our version of the tick42rmds bridge does not use it when translating messages received, but it could be updated to do that.

This only covers the price field case as there do not appear to be any equivalents methods for other field types, like times or integers, but perhaps this will be enough to cover the most important case.

Will refer back to our users for more analysis to see if using this is enough.

 

From: Phelan, Nigel [mailto:nigel.phelan@...]
Sent: 10 December 2019 12:19
To: Keith Rudd <keith.rudd@...>; 'openmama-dev@...' <openmama-dev@...>
Subject: RE: Adding Blank data representation to MAMA API data types

 

Still not sure I see the problem, Keith.  If you receive the data as a string field and, when the transport bridge tries to map it to a mamaPrice field, the conversion fails, you should call setIsValidPrice() to mark the field as containing an “invalid” price and the consuming client should honour this and display it as a blank (in exactly the same way you would if someone decided to publish “NOT QUOTING” in a bid/ask price field because the underlying middleware allowed free text entries there).  That’s why I was looking for an example of when this breaks.

 

Nigel

 


Nigel Phelan | Corporate & Investment Bank | Market Data Services | J.P. Morgan

 

From: Keith Rudd [mailto:keith.rudd@...]
Sent: 10 December 2019 11:47
To: Phelan, Nigel (CIB Tech, GBR) <nigel.phelan@...>; 'openmama-dev@...' <openmama-dev@...>
Subject: RE: Adding Blank data representation to MAMA API data types

 

 

Hi Nigel,

 

I don’t have a RIC to quote here, but the problem exists for certain data delivered over the Elektron feed, with data from contributors where we have no control over what conventions they use.

For most data sets you only ever see blank values in initial data which is not really a problem. It’s when they are used to update a previously valid field value, distinguishing between a ‘blank’ and a zero (possibly valid) becomes important. The tick42rmds (or any other) adaptor can only really deliver a zero in the MAMA field it renders from the received ‘blank’ as there is no blank representation in MAMA and this is indistinguishable from a valid zero update, even though they are semantically different.

 

Regards,

Keith

 

 

From: Phelan, Nigel [mailto:nigel.phelan@...]
Sent: 09 December 2019 17:03
To: Keith Rudd <keith.rudd@...>; 'openmama-dev@...' <openmama-dev@...>
Subject: RE: Adding Blank data representation to MAMA API data types

 

Hi Keith – what we normally do here is use the relevant getters/setters on the Price and DateTime fields (getIsValidPrice, setIsValidPrice, HasDate, HasTime).  We tell people to render blanks for invalid prices and for DateTimes with no date or time part.  I believe the tick42rmds adaptor for TREP maps these correctly from the native TREP RWF encoding.  Do you have counter examples?

 

Nigel

 


Nigel Phelan | Corporate & Investment Bank | Market Data Services | J.P. Morgan

 

From: Openmama-dev@... [mailto:Openmama-dev@...] On Behalf Of Keith Rudd
Sent: 09 December 2019 16:49
To: 'openmama-dev@...' <openmama-dev@...>
Subject: [Openmama-dev] Adding Blank data representation to MAMA API data types

 

Certain other market data platforms / APIs (well, TREP) support the concept of ‘blank’ field values.

The price and time field types actually have special blank data representations defined.

This is used in the context where a publisher wants to include a field in a message but with no assigned value, possibly for example to indicate that a price that was previously offered and valid is now no longer available.

(Granted there are other ways to do this, with another price status field etc. but we do see this method used sometimes and with no other indicator of validity)

 

This introduces a conundrum when translating such values to the MAMA API as prices, times, etc. have no such equivalent blank representation in MAMA.

 

So, my proposal is that we might extend MAMA field data types to include such ‘blank’ values.

This would need to be done while preserving backwards-compatibility.

 

A discussion point for now

-  Is this a feature which others see value in?

-  Any feasible suggestions for how it might be achieved and what values would be used for ‘blank’ ?

 

Regards,

Keith

 



---
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.

This message is confidential and subject to terms at: https://www.jpmorgan.com/emaildisclaimer including on confidential, privileged or legal entity information, 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.



---
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.

This message is confidential and subject to terms at: https://www.jpmorgan.com/emaildisclaimer including on confidential, privileged or legal entity information, 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.



---
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.

This message is confidential and subject to terms at: https://www.jpmorgan.com/emaildisclaimer including on confidential, privileged or legal entity information, 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.


Re: Adding Blank data representation to MAMA API data types

Phelan, Nigel
 

For integers, yes, I agree.  For dateTimes, as I said, you can indicate if the date part is valid or the time part is valid (hasDate()/hasTime()/setHints()).  If neither flag is set, we interpret that as an invalid dateTime and tell people to render as a blank.

 

Nigel

 


Nigel Phelan | Corporate & Investment Bank | Market Data Services | J.P. Morgan

 

From: Openmama-dev@... [mailto:Openmama-dev@...] On Behalf Of Keith Rudd
Sent: 10 December 2019 16:35
To: Phelan, Nigel (CIB Tech, GBR) <nigel.phelan@...>; 'openmama-dev@...' <openmama-dev@...>
Subject: Re: [Openmama-dev] Adding Blank data representation to MAMA API data types

 

Thanks Nigel – I am with you now.

Was not aware of the ‘setIsValidPrice()’ method. Our version of the tick42rmds bridge does not use it when translating messages received, but it could be updated to do that.

This only covers the price field case as there do not appear to be any equivalents methods for other field types, like times or integers, but perhaps this will be enough to cover the most important case.

Will refer back to our users for more analysis to see if using this is enough.

 

From: Phelan, Nigel [mailto:nigel.phelan@...]
Sent: 10 December 2019 12:19
To: Keith Rudd <keith.rudd@...>; 'openmama-dev@...' <openmama-dev@...>
Subject: RE: Adding Blank data representation to MAMA API data types

 

Still not sure I see the problem, Keith.  If you receive the data as a string field and, when the transport bridge tries to map it to a mamaPrice field, the conversion fails, you should call setIsValidPrice() to mark the field as containing an “invalid” price and the consuming client should honour this and display it as a blank (in exactly the same way you would if someone decided to publish “NOT QUOTING” in a bid/ask price field because the underlying middleware allowed free text entries there).  That’s why I was looking for an example of when this breaks.

 

Nigel

 


Nigel Phelan | Corporate & Investment Bank | Market Data Services | J.P. Morgan

 

From: Keith Rudd [mailto:keith.rudd@...]
Sent: 10 December 2019 11:47
To: Phelan, Nigel (CIB Tech, GBR) <nigel.phelan@...>; 'openmama-dev@...' <openmama-dev@...>
Subject: RE: Adding Blank data representation to MAMA API data types

 

 

Hi Nigel,

 

I don’t have a RIC to quote here, but the problem exists for certain data delivered over the Elektron feed, with data from contributors where we have no control over what conventions they use.

For most data sets you only ever see blank values in initial data which is not really a problem. It’s when they are used to update a previously valid field value, distinguishing between a ‘blank’ and a zero (possibly valid) becomes important. The tick42rmds (or any other) adaptor can only really deliver a zero in the MAMA field it renders from the received ‘blank’ as there is no blank representation in MAMA and this is indistinguishable from a valid zero update, even though they are semantically different.

 

Regards,

Keith

 

 

From: Phelan, Nigel [mailto:nigel.phelan@...]
Sent: 09 December 2019 17:03
To: Keith Rudd <keith.rudd@...>; 'openmama-dev@...' <openmama-dev@...>
Subject: RE: Adding Blank data representation to MAMA API data types

 

Hi Keith – what we normally do here is use the relevant getters/setters on the Price and DateTime fields (getIsValidPrice, setIsValidPrice, HasDate, HasTime).  We tell people to render blanks for invalid prices and for DateTimes with no date or time part.  I believe the tick42rmds adaptor for TREP maps these correctly from the native TREP RWF encoding.  Do you have counter examples?

 

Nigel

 


Nigel Phelan | Corporate & Investment Bank | Market Data Services | J.P. Morgan

 

From: Openmama-dev@... [mailto:Openmama-dev@...] On Behalf Of Keith Rudd
Sent: 09 December 2019 16:49
To: 'openmama-dev@...' <openmama-dev@...>
Subject: [Openmama-dev] Adding Blank data representation to MAMA API data types

 

Certain other market data platforms / APIs (well, TREP) support the concept of ‘blank’ field values.

The price and time field types actually have special blank data representations defined.

This is used in the context where a publisher wants to include a field in a message but with no assigned value, possibly for example to indicate that a price that was previously offered and valid is now no longer available.

(Granted there are other ways to do this, with another price status field etc. but we do see this method used sometimes and with no other indicator of validity)

 

This introduces a conundrum when translating such values to the MAMA API as prices, times, etc. have no such equivalent blank representation in MAMA.

 

So, my proposal is that we might extend MAMA field data types to include such ‘blank’ values.

This would need to be done while preserving backwards-compatibility.

 

A discussion point for now

-  Is this a feature which others see value in?

-  Any feasible suggestions for how it might be achieved and what values would be used for ‘blank’ ?

 

Regards,

Keith

 



---
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.

This message is confidential and subject to terms at: https://www.jpmorgan.com/emaildisclaimer including on confidential, privileged or legal entity information, 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.



---
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.

This message is confidential and subject to terms at: https://www.jpmorgan.com/emaildisclaimer including on confidential, privileged or legal entity information, 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.



---
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.

This message is confidential and subject to terms at: https://www.jpmorgan.com/emaildisclaimer including on confidential, privileged or legal entity information, 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.


Re: Adding Blank data representation to MAMA API data types

Keith Rudd
 

Thanks Nigel – I am with you now.

Was not aware of the ‘setIsValidPrice()’ method. Our version of the tick42rmds bridge does not use it when translating messages received, but it could be updated to do that.

This only covers the price field case as there do not appear to be any equivalents methods for other field types, like times or integers, but perhaps this will be enough to cover the most important case.

Will refer back to our users for more analysis to see if using this is enough.

 

From: Phelan, Nigel [mailto:nigel.phelan@...]
Sent: 10 December 2019 12:19
To: Keith Rudd <keith.rudd@...>; 'openmama-dev@...' <openmama-dev@...>
Subject: RE: Adding Blank data representation to MAMA API data types

 

Still not sure I see the problem, Keith.  If you receive the data as a string field and, when the transport bridge tries to map it to a mamaPrice field, the conversion fails, you should call setIsValidPrice() to mark the field as containing an “invalid” price and the consuming client should honour this and display it as a blank (in exactly the same way you would if someone decided to publish “NOT QUOTING” in a bid/ask price field because the underlying middleware allowed free text entries there).  That’s why I was looking for an example of when this breaks.

 

Nigel

 


Nigel Phelan | Corporate & Investment Bank | Market Data Services | J.P. Morgan

 

From: Keith Rudd [mailto:keith.rudd@...]
Sent: 10 December 2019 11:47
To: Phelan, Nigel (CIB Tech, GBR) <nigel.phelan@...>; 'openmama-dev@...' <openmama-dev@...>
Subject: RE: Adding Blank data representation to MAMA API data types

 

 

Hi Nigel,

 

I don’t have a RIC to quote here, but the problem exists for certain data delivered over the Elektron feed, with data from contributors where we have no control over what conventions they use.

For most data sets you only ever see blank values in initial data which is not really a problem. It’s when they are used to update a previously valid field value, distinguishing between a ‘blank’ and a zero (possibly valid) becomes important. The tick42rmds (or any other) adaptor can only really deliver a zero in the MAMA field it renders from the received ‘blank’ as there is no blank representation in MAMA and this is indistinguishable from a valid zero update, even though they are semantically different.

 

Regards,

Keith

 

 

From: Phelan, Nigel [mailto:nigel.phelan@...]
Sent: 09 December 2019 17:03
To: Keith Rudd <keith.rudd@...>; 'openmama-dev@...' <openmama-dev@...>
Subject: RE: Adding Blank data representation to MAMA API data types

 

Hi Keith – what we normally do here is use the relevant getters/setters on the Price and DateTime fields (getIsValidPrice, setIsValidPrice, HasDate, HasTime).  We tell people to render blanks for invalid prices and for DateTimes with no date or time part.  I believe the tick42rmds adaptor for TREP maps these correctly from the native TREP RWF encoding.  Do you have counter examples?

 

Nigel

 


Nigel Phelan | Corporate & Investment Bank | Market Data Services | J.P. Morgan

 

From: Openmama-dev@... [mailto:Openmama-dev@...] On Behalf Of Keith Rudd
Sent: 09 December 2019 16:49
To: 'openmama-dev@...' <openmama-dev@...>
Subject: [Openmama-dev] Adding Blank data representation to MAMA API data types

 

Certain other market data platforms / APIs (well, TREP) support the concept of ‘blank’ field values.

The price and time field types actually have special blank data representations defined.

This is used in the context where a publisher wants to include a field in a message but with no assigned value, possibly for example to indicate that a price that was previously offered and valid is now no longer available.

(Granted there are other ways to do this, with another price status field etc. but we do see this method used sometimes and with no other indicator of validity)

 

This introduces a conundrum when translating such values to the MAMA API as prices, times, etc. have no such equivalent blank representation in MAMA.

 

So, my proposal is that we might extend MAMA field data types to include such ‘blank’ values.

This would need to be done while preserving backwards-compatibility.

 

A discussion point for now

-  Is this a feature which others see value in?

-  Any feasible suggestions for how it might be achieved and what values would be used for ‘blank’ ?

 

Regards,

Keith

 



---
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.

This message is confidential and subject to terms at: https://www.jpmorgan.com/emaildisclaimer including on confidential, privileged or legal entity information, 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.



---
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.

This message is confidential and subject to terms at: https://www.jpmorgan.com/emaildisclaimer including on confidential, privileged or legal entity information, 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.



---
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.


Re: Adding Blank data representation to MAMA API data types

Phelan, Nigel
 

Still not sure I see the problem, Keith.  If you receive the data as a string field and, when the transport bridge tries to map it to a mamaPrice field, the conversion fails, you should call setIsValidPrice() to mark the field as containing an “invalid” price and the consuming client should honour this and display it as a blank (in exactly the same way you would if someone decided to publish “NOT QUOTING” in a bid/ask price field because the underlying middleware allowed free text entries there).  That’s why I was looking for an example of when this breaks.

 

Nigel

 


Nigel Phelan | Corporate & Investment Bank | Market Data Services | J.P. Morgan

 

From: Keith Rudd [mailto:keith.rudd@...]
Sent: 10 December 2019 11:47
To: Phelan, Nigel (CIB Tech, GBR) <nigel.phelan@...>; 'openmama-dev@...' <openmama-dev@...>
Subject: RE: Adding Blank data representation to MAMA API data types

 

 

Hi Nigel,

 

I don’t have a RIC to quote here, but the problem exists for certain data delivered over the Elektron feed, with data from contributors where we have no control over what conventions they use.

For most data sets you only ever see blank values in initial data which is not really a problem. It’s when they are used to update a previously valid field value, distinguishing between a ‘blank’ and a zero (possibly valid) becomes important. The tick42rmds (or any other) adaptor can only really deliver a zero in the MAMA field it renders from the received ‘blank’ as there is no blank representation in MAMA and this is indistinguishable from a valid zero update, even though they are semantically different.

 

Regards,

Keith

 

 

From: Phelan, Nigel [mailto:nigel.phelan@...]
Sent: 09 December 2019 17:03
To: Keith Rudd <keith.rudd@...>; 'openmama-dev@...' <openmama-dev@...>
Subject: RE: Adding Blank data representation to MAMA API data types

 

Hi Keith – what we normally do here is use the relevant getters/setters on the Price and DateTime fields (getIsValidPrice, setIsValidPrice, HasDate, HasTime).  We tell people to render blanks for invalid prices and for DateTimes with no date or time part.  I believe the tick42rmds adaptor for TREP maps these correctly from the native TREP RWF encoding.  Do you have counter examples?

 

Nigel

 


Nigel Phelan | Corporate & Investment Bank | Market Data Services | J.P. Morgan

 

From: Openmama-dev@... [mailto:Openmama-dev@...] On Behalf Of Keith Rudd
Sent: 09 December 2019 16:49
To: 'openmama-dev@...' <openmama-dev@...>
Subject: [Openmama-dev] Adding Blank data representation to MAMA API data types

 

Certain other market data platforms / APIs (well, TREP) support the concept of ‘blank’ field values.

The price and time field types actually have special blank data representations defined.

This is used in the context where a publisher wants to include a field in a message but with no assigned value, possibly for example to indicate that a price that was previously offered and valid is now no longer available.

(Granted there are other ways to do this, with another price status field etc. but we do see this method used sometimes and with no other indicator of validity)

 

This introduces a conundrum when translating such values to the MAMA API as prices, times, etc. have no such equivalent blank representation in MAMA.

 

So, my proposal is that we might extend MAMA field data types to include such ‘blank’ values.

This would need to be done while preserving backwards-compatibility.

 

A discussion point for now

-  Is this a feature which others see value in?

-  Any feasible suggestions for how it might be achieved and what values would be used for ‘blank’ ?

 

Regards,

Keith

 



---
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.

This message is confidential and subject to terms at: https://www.jpmorgan.com/emaildisclaimer including on confidential, privileged or legal entity information, 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.



---
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.

This message is confidential and subject to terms at: https://www.jpmorgan.com/emaildisclaimer including on confidential, privileged or legal entity information, 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.


Re: Adding Blank data representation to MAMA API data types

Keith Rudd
 

 

Hi Nigel,

 

I don’t have a RIC to quote here, but the problem exists for certain data delivered over the Elektron feed, with data from contributors where we have no control over what conventions they use.

For most data sets you only ever see blank values in initial data which is not really a problem. It’s when they are used to update a previously valid field value, distinguishing between a ‘blank’ and a zero (possibly valid) becomes important. The tick42rmds (or any other) adaptor can only really deliver a zero in the MAMA field it renders from the received ‘blank’ as there is no blank representation in MAMA and this is indistinguishable from a valid zero update, even though they are semantically different.

 

Regards,

Keith

 

 

From: Phelan, Nigel [mailto:nigel.phelan@...]
Sent: 09 December 2019 17:03
To: Keith Rudd <keith.rudd@...>; 'openmama-dev@...' <openmama-dev@...>
Subject: RE: Adding Blank data representation to MAMA API data types

 

Hi Keith – what we normally do here is use the relevant getters/setters on the Price and DateTime fields (getIsValidPrice, setIsValidPrice, HasDate, HasTime).  We tell people to render blanks for invalid prices and for DateTimes with no date or time part.  I believe the tick42rmds adaptor for TREP maps these correctly from the native TREP RWF encoding.  Do you have counter examples?

 

Nigel

 


Nigel Phelan | Corporate & Investment Bank | Market Data Services | J.P. Morgan

 

From: Openmama-dev@... [mailto:Openmama-dev@...] On Behalf Of Keith Rudd
Sent: 09 December 2019 16:49
To: 'openmama-dev@...' <openmama-dev@...>
Subject: [Openmama-dev] Adding Blank data representation to MAMA API data types

 

Certain other market data platforms / APIs (well, TREP) support the concept of ‘blank’ field values.

The price and time field types actually have special blank data representations defined.

This is used in the context where a publisher wants to include a field in a message but with no assigned value, possibly for example to indicate that a price that was previously offered and valid is now no longer available.

(Granted there are other ways to do this, with another price status field etc. but we do see this method used sometimes and with no other indicator of validity)

 

This introduces a conundrum when translating such values to the MAMA API as prices, times, etc. have no such equivalent blank representation in MAMA.

 

So, my proposal is that we might extend MAMA field data types to include such ‘blank’ values.

This would need to be done while preserving backwards-compatibility.

 

A discussion point for now

-  Is this a feature which others see value in?

-  Any feasible suggestions for how it might be achieved and what values would be used for ‘blank’ ?

 

Regards,

Keith

 



---
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.

This message is confidential and subject to terms at: https://www.jpmorgan.com/emaildisclaimer including on confidential, privileged or legal entity information, 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.



---
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.


Re: Adding Blank data representation to MAMA API data types

Phelan, Nigel
 

Hi Keith – what we normally do here is use the relevant getters/setters on the Price and DateTime fields (getIsValidPrice, setIsValidPrice, HasDate, HasTime).  We tell people to render blanks for invalid prices and for DateTimes with no date or time part.  I believe the tick42rmds adaptor for TREP maps these correctly from the native TREP RWF encoding.  Do you have counter examples?

 

Nigel

 


Nigel Phelan | Corporate & Investment Bank | Market Data Services | J.P. Morgan

 

From: Openmama-dev@... [mailto:Openmama-dev@...] On Behalf Of Keith Rudd
Sent: 09 December 2019 16:49
To: 'openmama-dev@...' <openmama-dev@...>
Subject: [Openmama-dev] Adding Blank data representation to MAMA API data types

 

Certain other market data platforms / APIs (well, TREP) support the concept of ‘blank’ field values.

The price and time field types actually have special blank data representations defined.

This is used in the context where a publisher wants to include a field in a message but with no assigned value, possibly for example to indicate that a price that was previously offered and valid is now no longer available.

(Granted there are other ways to do this, with another price status field etc. but we do see this method used sometimes and with no other indicator of validity)

 

This introduces a conundrum when translating such values to the MAMA API as prices, times, etc. have no such equivalent blank representation in MAMA.

 

So, my proposal is that we might extend MAMA field data types to include such ‘blank’ values.

This would need to be done while preserving backwards-compatibility.

 

A discussion point for now

-  Is this a feature which others see value in?

-  Any feasible suggestions for how it might be achieved and what values would be used for ‘blank’ ?

 

Regards,

Keith

 



---
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.

This message is confidential and subject to terms at: https://www.jpmorgan.com/emaildisclaimer including on confidential, privileged or legal entity information, 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.


Adding Blank data representation to MAMA API data types

Keith Rudd
 

Certain other market data platforms / APIs (well, TREP) support the concept of 'blank' field values.
The price and time field types actually have special blank data representations defined.
This is used in the context where a publisher wants to include a field in a message but with no assigned value, possibly for example to indicate that a price that was previously offered and valid is now no longer available.
(Granted there are other ways to do this, with another price status field etc. but we do see this method used sometimes and with no other indicator of validity)

This introduces a conundrum when translating such values to the MAMA API as prices, times, etc. have no such equivalent blank representation in MAMA.

So, my proposal is that we might extend MAMA field data types to include such 'blank' values.
This would need to be done while preserving backwards-compatibility.

A discussion point for now
- Is this a feature which others see value in?
- Any feasible suggestions for how it might be achieved and what values would be used for 'blank' ?

Regards,
Keith



---
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.


OpenMAMA 6.3.0 Released

Frank Quinn
 

Hi Folks,

We are pleased to announce OpenMAMA 6.3.0 is finally here! This is a bridge interface updating release which fixes several outstanding bugs and introduces some new functionality.

  • OpenMAMA middleware "base" bridge now included to reduce the overall development required to write a new middleware bridge.
  • Builds now performed using docker environment
  • New docker image on dockerhub: https://hub.docker.com/r/openmama/openmama (see: https://github.com/OpenMAMA/OpenMAMA/tree/OpenMAMA-6.3.0/docker for documentation)
  • Several other bugs and enhancements
  • Fixes added for missing common headers on windows distribution
  • Payload_addMsg - now expects a mamaMsg rather than a msgPayload. This is to align with other payloads and support potential transcoding in the bridge
  • Payload_updateSubMsg - now expects a mamaMsg rather than a msgPayload for the same reason

For a complete list of all 24 issues included in this release, please see here: https://github.com/OpenMAMA/OpenMAMA/milestone/10?closed=1

Cheers,

Frank

 

 

Frank Quinn

Cascadium

T: +44 (0) 28 8678 8015

E: fquinn@...

W: http://cascadium.io

 


Re: OpenMAMA-6.3.0-rc2 Now Available

Frank Quinn
 

Hi Folks,

 

Looks like we will be wrapping this up in the middle of next week – so far no major issues reported.

 

Cut off date is Wednesday next week.

 

Cheers,

Frank

 

Frank Quinn, Cascadium | +44 (0) 28 8678 8015 | http://cascadium.io

 

From: Frank Quinn
Sent: 23 September 2019 19:30
To: openmama-dev@...; openmama-users@...
Subject: OpenMAMA-6.3.0-rc2 Now Available

 

Hi Folks, RC2 now available with artefacts: https://github.com/OpenMAMA/OpenMAMA/releases/tag/OpenMAMA-6.3.0-rc2

 

Let’s aim for a 2 week test window so please get testing!

 

Cheers,

Frank

 

Frank Quinn, Cascadium | +44 (0) 28 8678 8015 | http://cascadium.io

 

From: Frank Quinn
Sent: 16 September 2019 13:14
To: 'openmama-dev@...' <openmama-dev@...>; 'openmama-users@...' <openmama-users@...>
Subject: RE: OpenMAMA-6.3.0-rc1 Now Available

 

NB: Further Bridge Interface change in OpenMAMA 6.3.0

 

Hi Folks,

 

As suggested by Chris over at Solace (and with my agreement), I think this is a good time to correct one of the interface consistencies that bridge developers have needed to deal with since we're currently bumping the versions to an incompatible bridge version anyway. The changes themselves should be easy to implement, but are nevertheless important for users of sub-messages:

 

Payload_addMsg() - now expects a mamaMsg rather than a msgPayload. This is to align with other payloads and support potential transcoding in the bridge

 

Payload_updateSubMsg - now expects a mamaMsg rather than a msgPayload.

 

This will allow us to put to bed a longstanding issue as well in https://github.com/OpenMAMA/OpenMAMA/issues/297

 

I’ll get some more builds together within the next week or two, and extend the aspirational release date to 18th October 2019.

 

Cheers,

Frank

 

Frank Quinn, Cascadium | +44 (0) 28 8678 8015 | http://cascadium.io

 

From: Frank Quinn
Sent: 11 July 2019 14:31
To: openmama-dev@...; openmama-users@...
Subject: RE: OpenMAMA-6.3.0-rc1 Now Available

 

Sorry just as a quick correction, the list of issues is in this link, not the one in the previous email:

 

https://github.com/OpenMAMA/OpenMAMA/milestone/10?closed=1

 

(thanks Chris)

 

Cheers,

Frank

 

Frank Quinn, Cascadium | +44 (0) 28 8678 8015 | http://cascadium.io

 

From: Openmama-dev@... <Openmama-dev@...> On Behalf Of Frank Quinn via Lists.Openmama.Org
Sent: 09 July 2019 19:36
To: openmama-dev@...; openmama-users@...
Cc: Openmama-dev@...
Subject: [Openmama-dev] OpenMAMA-6.3.0-rc1 Now Available

 

Hi Folks,

Sorry for the delay I hit a few snags trying to get the release together, but it’s finally ready!

https://github.com/OpenMAMA/OpenMAMA/releases/tag/OpenMAMA-6.3.0-rc1

Note that this changes the minor revision number which reflects a bridge change. This is because although this release doesn’t in itself do anything to break the bridge compatibility, new bridges being built using the new “base bridge” functionality would not be backwards compatible, so the version is being bumped to reflect this.

This is a maintenance release which fixes several outstanding bugs and introduces some new functionality.

For a complete list of all 20 issues included in this release, please see here: https://github.com/OpenMAMA/OpenMAMA/milestone/9?closed=1

Please test rigorously particularly for bridge based functionality and feel free to try out the new docker images and ping the mailing list if you have any queries! I’ll leave testing open for 6 weeks, making the aspirational release date be 20th August.

For help on how to raise a ticket, please see:

https://openmama.github.io/openmama_raising_issues.html

Good hunting.

Cheers,
Frank

 

Frank Quinn

Cascadium

T: +44 (0) 28 8678 8015

E: fquinn@...

W: http://cascadium.io

 


OpenMAMA-6.3.0-rc2 Now Available

Frank Quinn
 

Hi Folks, RC2 now available with artefacts: https://github.com/OpenMAMA/OpenMAMA/releases/tag/OpenMAMA-6.3.0-rc2

 

Let’s aim for a 2 week test window so please get testing!

 

Cheers,

Frank

 

Frank Quinn, Cascadium | +44 (0) 28 8678 8015 | http://cascadium.io

 

From: Frank Quinn
Sent: 16 September 2019 13:14
To: 'openmama-dev@...' <openmama-dev@...>; 'openmama-users@...' <openmama-users@...>
Subject: RE: OpenMAMA-6.3.0-rc1 Now Available

 

NB: Further Bridge Interface change in OpenMAMA 6.3.0

 

Hi Folks,

 

As suggested by Chris over at Solace (and with my agreement), I think this is a good time to correct one of the interface consistencies that bridge developers have needed to deal with since we're currently bumping the versions to an incompatible bridge version anyway. The changes themselves should be easy to implement, but are nevertheless important for users of sub-messages:

 

Payload_addMsg() - now expects a mamaMsg rather than a msgPayload. This is to align with other payloads and support potential transcoding in the bridge

 

Payload_updateSubMsg - now expects a mamaMsg rather than a msgPayload.

 

This will allow us to put to bed a longstanding issue as well in https://github.com/OpenMAMA/OpenMAMA/issues/297

 

I’ll get some more builds together within the next week or two, and extend the aspirational release date to 18th October 2019.

 

Cheers,

Frank

 

Frank Quinn, Cascadium | +44 (0) 28 8678 8015 | http://cascadium.io

 

From: Frank Quinn
Sent: 11 July 2019 14:31
To: openmama-dev@...; openmama-users@...
Subject: RE: OpenMAMA-6.3.0-rc1 Now Available

 

Sorry just as a quick correction, the list of issues is in this link, not the one in the previous email:

 

https://github.com/OpenMAMA/OpenMAMA/milestone/10?closed=1

 

(thanks Chris)

 

Cheers,

Frank

 

Frank Quinn, Cascadium | +44 (0) 28 8678 8015 | http://cascadium.io

 

From: Openmama-dev@... <Openmama-dev@...> On Behalf Of Frank Quinn via Lists.Openmama.Org
Sent: 09 July 2019 19:36
To: openmama-dev@...; openmama-users@...
Cc: Openmama-dev@...
Subject: [Openmama-dev] OpenMAMA-6.3.0-rc1 Now Available

 

Hi Folks,

Sorry for the delay I hit a few snags trying to get the release together, but it’s finally ready!

https://github.com/OpenMAMA/OpenMAMA/releases/tag/OpenMAMA-6.3.0-rc1

Note that this changes the minor revision number which reflects a bridge change. This is because although this release doesn’t in itself do anything to break the bridge compatibility, new bridges being built using the new “base bridge” functionality would not be backwards compatible, so the version is being bumped to reflect this.

This is a maintenance release which fixes several outstanding bugs and introduces some new functionality.

For a complete list of all 20 issues included in this release, please see here: https://github.com/OpenMAMA/OpenMAMA/milestone/9?closed=1

Please test rigorously particularly for bridge based functionality and feel free to try out the new docker images and ping the mailing list if you have any queries! I’ll leave testing open for 6 weeks, making the aspirational release date be 20th August.

For help on how to raise a ticket, please see:

https://openmama.github.io/openmama_raising_issues.html

Good hunting.

Cheers,
Frank

 

Frank Quinn

Cascadium

T: +44 (0) 28 8678 8015

E: fquinn@...

W: http://cascadium.io

 


Re: OpenMAMA-6.3.0-rc1 Now Available

Frank Quinn
 

NB: Further Bridge Interface change in OpenMAMA 6.3.0

 

Hi Folks,

 

As suggested by Chris over at Solace (and with my agreement), I think this is a good time to correct one of the interface consistencies that bridge developers have needed to deal with since we're currently bumping the versions to an incompatible bridge version anyway. The changes themselves should be easy to implement, but are nevertheless important for users of sub-messages:

 

Payload_addMsg() - now expects a mamaMsg rather than a msgPayload. This is to align with other payloads and support potential transcoding in the bridge

 

Payload_updateSubMsg - now expects a mamaMsg rather than a msgPayload.

 

This will allow us to put to bed a longstanding issue as well in https://github.com/OpenMAMA/OpenMAMA/issues/297

 

I’ll get some more builds together within the next week or two, and extend the aspirational release date to 18th October 2019.

 

Cheers,

Frank

 

Frank Quinn, Cascadium | +44 (0) 28 8678 8015 | http://cascadium.io

 

From: Frank Quinn
Sent: 11 July 2019 14:31
To: openmama-dev@...; openmama-users@...
Subject: RE: OpenMAMA-6.3.0-rc1 Now Available

 

Sorry just as a quick correction, the list of issues is in this link, not the one in the previous email:

 

https://github.com/OpenMAMA/OpenMAMA/milestone/10?closed=1

 

(thanks Chris)

 

Cheers,

Frank

 

Frank Quinn, Cascadium | +44 (0) 28 8678 8015 | http://cascadium.io

 

From: Openmama-dev@... <Openmama-dev@...> On Behalf Of Frank Quinn via Lists.Openmama.Org
Sent: 09 July 2019 19:36
To: openmama-dev@...; openmama-users@...
Cc: Openmama-dev@...
Subject: [Openmama-dev] OpenMAMA-6.3.0-rc1 Now Available

 

Hi Folks,

Sorry for the delay I hit a few snags trying to get the release together, but it’s finally ready!

https://github.com/OpenMAMA/OpenMAMA/releases/tag/OpenMAMA-6.3.0-rc1

Note that this changes the minor revision number which reflects a bridge change. This is because although this release doesn’t in itself do anything to break the bridge compatibility, new bridges being built using the new “base bridge” functionality would not be backwards compatible, so the version is being bumped to reflect this.

This is a maintenance release which fixes several outstanding bugs and introduces some new functionality.

For a complete list of all 20 issues included in this release, please see here: https://github.com/OpenMAMA/OpenMAMA/milestone/9?closed=1

Please test rigorously particularly for bridge based functionality and feel free to try out the new docker images and ping the mailing list if you have any queries! I’ll leave testing open for 6 weeks, making the aspirational release date be 20th August.

For help on how to raise a ticket, please see:

https://openmama.github.io/openmama_raising_issues.html

Good hunting.

Cheers,
Frank

 

Frank Quinn

Cascadium

T: +44 (0) 28 8678 8015

E: fquinn@...

W: http://cascadium.io

 


Re: OpenMAMA-6.3.0-rc1 Now Available

Frank Quinn
 

Sorry just as a quick correction, the list of issues is in this link, not the one in the previous email:

 

https://github.com/OpenMAMA/OpenMAMA/milestone/10?closed=1

 

(thanks Chris)

 

Cheers,

Frank

 

Frank Quinn, Cascadium | +44 (0) 28 8678 8015 | http://cascadium.io

 

From: Openmama-dev@... <Openmama-dev@...> On Behalf Of Frank Quinn via Lists.Openmama.Org
Sent: 09 July 2019 19:36
To: openmama-dev@...; openmama-users@...
Cc: Openmama-dev@...
Subject: [Openmama-dev] OpenMAMA-6.3.0-rc1 Now Available

 

Hi Folks,

Sorry for the delay I hit a few snags trying to get the release together, but it’s finally ready!

https://github.com/OpenMAMA/OpenMAMA/releases/tag/OpenMAMA-6.3.0-rc1

Note that this changes the minor revision number which reflects a bridge change. This is because although this release doesn’t in itself do anything to break the bridge compatibility, new bridges being built using the new “base bridge” functionality would not be backwards compatible, so the version is being bumped to reflect this.

This is a maintenance release which fixes several outstanding bugs and introduces some new functionality.

For a complete list of all 20 issues included in this release, please see here: https://github.com/OpenMAMA/OpenMAMA/milestone/9?closed=1

Please test rigorously particularly for bridge based functionality and feel free to try out the new docker images and ping the mailing list if you have any queries! I’ll leave testing open for 6 weeks, making the aspirational release date be 20th August.

For help on how to raise a ticket, please see:

https://openmama.github.io/openmama_raising_issues.html

Good hunting.

Cheers,
Frank

 

Frank Quinn

Cascadium

T: +44 (0) 28 8678 8015

E: fquinn@...

W: http://cascadium.io

 


OpenMAMA-6.3.0-rc1 Now Available

Frank Quinn
 

Hi Folks,

Sorry for the delay I hit a few snags trying to get the release together, but it’s finally ready!

https://github.com/OpenMAMA/OpenMAMA/releases/tag/OpenMAMA-6.3.0-rc1

Note that this changes the minor revision number which reflects a bridge change. This is because although this release doesn’t in itself do anything to break the bridge compatibility, new bridges being built using the new “base bridge” functionality would not be backwards compatible, so the version is being bumped to reflect this.

This is a maintenance release which fixes several outstanding bugs and introduces some new functionality.

For a complete list of all 20 issues included in this release, please see here: https://github.com/OpenMAMA/OpenMAMA/milestone/9?closed=1

Please test rigorously particularly for bridge based functionality and feel free to try out the new docker images and ping the mailing list if you have any queries! I’ll leave testing open for 6 weeks, making the aspirational release date be 20th August.

For help on how to raise a ticket, please see:

https://openmama.github.io/openmama_raising_issues.html

Good hunting.

Cheers,
Frank

 

Frank Quinn

Cascadium

T: +44 (0) 28 8678 8015

E: fquinn@...

W: http://cascadium.io

 


Re: Proposal to make the cut for OpenMAMA 6.3.0 RC1

Damian Maguire
 

My two cents here, the Docker PR looks solid and I think is good to merge. I suspect the MAMDA QuoteCache fix (392) should be landed before any cut, even if it means a delay, but apart from that I think this is probably a solid time to begin the release process.

All for the removal of scons though, cmake all the way makes sense.

Cheers,

D


On Thu, 23 May 2019 at 23:11, Frank Quinn <fquinn@...> wrote:

Hi Folks,

 

It’s that time again where I think we need to consider making a new OpenMAMA release.

 

I’ve just raised a pull request for Docker which was the last main piece of new functionality that I wanted to get into this release. There is also the https://github.com/OpenMAMA/OpenMAMA/issues/392 issue which I hope to resolve next week.

 

So if anyone else is mid-flight with any changes or has any major showstoppers that they want to include in this release please let me know, otherwise I’ll take a cut towards the end of next week with a mind to release before the summer holidays kick in.

 

Note that this release bumps to version 6.3.0 because APIs which integrate with the new modular bridge functionality will not be backwards compatible with 6.2.x.

 

Also note that this release will finally remove scons in favour of cmake so please test these new builds in RC stage for any missing headers etc.

 

Cheers,

Frank

 

Frank Quinn

Cascadium

T: +44 (0) 28 8678 8015

E: fquinn@...

W: http://cascadium.io

 


Proposal to make the cut for OpenMAMA 6.3.0 RC1

Frank Quinn
 

Hi Folks,

 

It’s that time again where I think we need to consider making a new OpenMAMA release.

 

I’ve just raised a pull request for Docker which was the last main piece of new functionality that I wanted to get into this release. There is also the https://github.com/OpenMAMA/OpenMAMA/issues/392 issue which I hope to resolve next week.

 

So if anyone else is mid-flight with any changes or has any major showstoppers that they want to include in this release please let me know, otherwise I’ll take a cut towards the end of next week with a mind to release before the summer holidays kick in.

 

Note that this release bumps to version 6.3.0 because APIs which integrate with the new modular bridge functionality will not be backwards compatible with 6.2.x.

 

Also note that this release will finally remove scons in favour of cmake so please test these new builds in RC stage for any missing headers etc.

 

Cheers,

Frank

 

Frank Quinn

Cascadium

T: +44 (0) 28 8678 8015

E: fquinn@...

W: http://cascadium.io

 


Re: Two Mamda libraries exporting the same symbol

Slade, Michael J
 

Hi Frank,

 

Thanks for your message, and for raising the associated issue in Github.

 

We have discovered that the MamdaQuoteToBookListener.cpp file is not present in the SConscript.win build configuration file – it is only included in the Linux build. For now we are working around this issue by excluding the file from the non-windows SConscript file too.

 

If you could have a look at this issue, that would be great.

 

Many thanks,

 


Mike Slade | Corporate & Investment Bank | Market Data Services | J.P. Morgan

 

From: Frank Quinn [mailto:fquinn@...]
Sent: 30 April 2019 14:04
To: Slade, Michael J <michael.j.slade@...>; openmama-dev@...
Subject: RE: Two Mamda libraries exporting the same symbol

 

Hi Mike,

 

This isn’t something that I have seen before but it does look like a bug to me… and one which I imagine you had all sorts of fun tracking down.

 

On the upside, it looks like the struct in question isn’t referenced in the public headers so at least it can be renamed in relative isolation. Is this something that you are in the progress of doing or you want me to have a look?

 

I have raised https://github.com/OpenMAMA/OpenMAMA/issues/392 for tracking.

 

Cheers,

Frank

 

From: Openmama-dev@... <Openmama-dev@...> On Behalf Of Slade, Michael J via Lists.Openmama.Org
Sent: 26 April 2019 09:23
To: Openmama-dev@...
Cc: Openmama-dev@...
Subject: [Openmama-dev] Two Mamda libraries exporting the same symbol

 

Hi all,

 

We have noticed that both mamda/c_cpp/src/cpp/MamdaQuoteListener.cpp and mamda/c_cpp/src/orderbooks/MamdaQuoteToBookListener have implementations of a QuoteCache struct in the Wombat namespace. Therefore, both libmamda and libmamdabook are exporting the same symbol.

 

This is an issue when linking against the two libraries since the order they are dynamically linked determines which one is used. If the wrong QuoteCache struct is used this causes a segfault during construction of the object as the two implementations are different.

 

To me this seems like a bug and one of the two QuoteCache structs should be renamed.

 

Has anyone had an issue with this before / can anyone shed some light on this?

 

Thanks,

 


Mike Slade | Corporate & Investment Bank | Market Data Services | J.P. Morgan

 

This message is confidential and subject to terms at: https://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.

This message is confidential and subject to terms at: https://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.