question

Upvotes
Accepted
3 4 9 12

Ema c++ library crashe on failover from ezd to cross_connect.

The failover works fine when failing over from one ezd to another ezd; It also works fine when failing over from one cross-connect to another cross-connect. However, it crashes when it failover from ezd to crossconnect (or vice versa).

FYI, EmaConfig uses ChannelSet with 2 channles; ezd and cross_connect; the Channel configuration for both are identical except the Host.

Attached are config and log files.

emalog-25983log.txt

emaconfigxml.txt

following is the stack trace

#0 0x000000000055e59a in thomsonreuters::ema::access::ItemCallbackClient::processStatusMsg(RsslMsg*, RsslReactorChannel*, RsslMsgEvent*) ()

#1 0x000000000055fb3e in thomsonreuters::ema::access::ItemCallbackClient::processCallback(RsslReactor*, RsslReactorChannel*, RsslMsgEvent*) ()

#2 0x00000000005ecadd in _reactorProcessMsg ()

#3 0x00000000005edd60 in _reactorWatchlistMsgCallback ()

#4 0x000000000060dee2 in wlItemRequestSendMsgEvent ()

#5 0x000000000060efa1 in wlItemRequestFindStream ()

#6 0x00000000005fa962 in wlServiceUpdateCallback ()

#7 0x00000000006135c6 in wlscSendUpdatedServiceList.part.10 ()

#8 0x0000000000615831 in wlServiceCacheProcessDirectoryMsg ()

#9 0x000000000060a896 in wlDirectoryProcessProviderMsgEvent ()

#10 0x00000000005fb67c in rsslWatchlistReadMsg ()

#11 0x00000000005edf5c in _reactorDispatchFromChannel ()

#12 0x00000000005efe20 in rsslReactorDispatch ()

#13 0x0000000000573549 in thomsonreuters::ema::access::OmmBaseImpl::rsslReactorDispatchLoop(long long, unsigned int, bool&) ()

#14 0x0000000000573a77 in thomsonreuters::ema::access::OmmBaseImpl::run() ()

#15 0x0000000000498b4a in thomsonreuters::ema::access::Thread::runThread(void*) ()

#16 0x0000003aa5807aa1 in start_thread () from /lib64/libpthread.so.0

#17 0x0000003aa54e8aad in clone () from /lib64/libc.so.6

elektronrefinitiv-realtimeelektron-sdkema-apirrtelektron-message-api
emalog-25983log.txt (23.9 KiB)
emaconfigxml.txt (1.6 KiB)
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

@ujjwal

Can you confirm if you are using the latest EMA C++ libraries? If not, do you see the same results?

This case has been raised as a case "05191095 Ema c++ library crashe on failover from ezd to cross_connect." and assigned to @veerapath.rungruengrayubkul

Hi, @ujjwal

Thank you for your participation in the forum.

Is the reply below satisfactory in resolving your query? If yes please click the 'Accept' text next to the reply. This will guide all community members who have a similar question. Otherwise please post again offering further insight into your question. Thanks,

AHS

Hello @ujjwal

Please be informed that a reply has been verified as correct in answering the question, and has been marked as such.

Thanks,

-AHS

Upvotes
Accepted
11.3k 25 9 14

[Summary]

This issue can be replicated in the scenario that EMA failover between servers providing same subscribed service name but different QoS attribute. In this question, it seems that the Traffic Management feature has been enabled on first EZD, so its QoS has been changed to just-in-time conflated instead of realtime.

The Elektron SDK 1.1.0 version provides the fix of this issue.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
3 4 9 12

I am using the latest version Elektron SDK 1.0.8

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Is it possible that you can replicate the scenario with one of the example EMA C++ applications or one of the tutorials within the Developer portal? Ideally, the engineering teams will want to replicate the issue.

Upvotes
3 4 9 12

I took 100__MarketPrice__Streaming and did very minor change to take username, serviceman and ric from the command line. Also, I removed hardcoded host and used the above mentioned config file.

For some reason I am not able to Attach the modified Consumer.cpp;

All the changes are in main function. Which I am rewiring as below.

int main( int argc, char* argv[] )

{ 

        try { 

                AppClient client;

                OmmConsumer consumer( OmmConsumerConfig().username( argv[1] ) );

                consumer.registerClient( ReqMsg().serviceName( argv[2] ).name( argv[3] ), client );

                sleep( 60000 );                         // API calls onRefreshMsg(), onUpdateMsg(), or onStatusMsg()

        } catch ( const OmmException& excp ) {

                cout << excp << endl;

        }

        return 0;

}
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

I tried replicating this and did not get any failover from EZD to ADS!

Upvotes
11.3k 25 9 14

I'm able to replicate the issue in my environment. My setup TREP has different versions: ads2.4.1 and ads3.0.4. I suspect that it is related to version difference.

I have been trying to create reproduction steps and will escalate the issue to the development.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.