question

Upvotes
Accepted
7 1 1 4

EMA ChannelSet failover

Hi

I'm testing NiProvider failover using the <ChannelSet value="Channel_1,Channel_2"/> option.

I've intentionally set Channel_1 to an invalid host to force it to failover immediately when I start my application. This appears to work fine and I get a "Login accepted by host message" from Channel_2. However when I attempt to start publishing data it throws the following exception.

Jan 10, 2018 1:08:41 PM com.thomsonreuters.ema.access.OmmNiProviderImpl submit SEVERE: loggerMsg ClientName: NiProvider_1_1 Severity: Error Text: Internal error: rsslChannel.submit() failed in OmmNiProviderImpl.submit(RefreshMsg)RsslChannel 0 Error Id -1 Internal sysError 0 Error Location Reactor.submitChannel Error Text ReactorChannel is closed, aborting. loggerMsgEnd

Channel_2 works fine if I connect directly to it ie if I use <ChannelSet value="Channel_2"/> so I assume there is an issue with the failover mechanism.

anyone having this issue as well ?

thanks

I can see it may be linked to when I request the dictionary from Channel_2 after I receive the login message.

java.lang.NullPointerException at com.thomsonreuters.ema.access.NiProviderDictionaryItem.rsslSubmit(DictionaryCallbackClient.java:1920) at com.thomsonreuters.ema.access.NiProviderDictionaryItem.open(DictionaryCallbackClient.java:1777) at com.thomsonreuters.ema.access.ItemCallbackClient.registerClient(ItemCallbackClient.java:1990) at com.thomsonreuters.ema.access.OmmBaseImpl.registerClient(OmmBaseImpl.java:385) at com.thomsonreuters.ema.access.OmmNiProviderImpl.registerClient(OmmNiProviderImpl.java:280) at com.thomsonreuters.ema.access.OmmNiProviderImpl.registerClient(OmmNiProviderImpl.java:263)

elektronrefinitiv-realtimeelektron-sdkrrtema-apielektron-message-apiexceptionnon-interactive-providerchannel
icon clock
10 |1500

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

Upvotes
Accepted
11.5k 16 7 10

Hi @david.gardiner

I can replicate the same issue with EMA Java 1.1.1's NIProvider example 350 application. If the application does failover to the second ADH, the application encounters the same exception when the API sends Dictionary Request message to the second ADH.

You can submit this issue in GitHub issue page to the Development team directly.

Please see my exception messages below:

Jan 11, 2018 6:13:06 PM com.thomsonreuters.ema.access.ChannelCallbackClient reactorChannelEventCallback
WARNING: loggerMsg
    ClientName: ChannelCallbackClient
    Severity: Warning
    Text:    Received ChannelDownReconnecting event on channel Channel_1
    RsslReactor Channel is null
    Error Id 0
    Internal sysError 0
    Error Location Reactor.processWorkerEvent
    Error text Error initializing channel: errorId=-1 text=Connection refused: no further information
loggerMsgEnd


Jan 11, 2018 6:13:07 PM com.thomsonreuters.ema.access.ChannelCallbackClient reactorChannelEventCallback
INFO: loggerMsg
    ClientName: ChannelCallbackClient
    Severity: Info
    Text:    Received ChannelUp event on channel Channel_3
    Instance Name Provider_1_1
    Component Version adh3.2.0.L1.linux.tis.rrg 64-bit
loggerMsgEnd


Exception in thread "main" java.lang.NullPointerException
    at com.thomsonreuters.ema.access.NiProviderDictionaryItem.rsslSubmit(DictionaryCallbackClient.java:1920)
    at com.thomsonreuters.ema.access.NiProviderDictionaryItem.open(DictionaryCallbackClient.java:1777)
    at com.thomsonreuters.ema.access.ItemCallbackClient.registerClient(ItemCallbackClient.java:1990)
    at com.thomsonreuters.ema.access.OmmBaseImpl.registerClient(OmmBaseImpl.java:380)
    at com.thomsonreuters.ema.access.OmmNiProviderImpl.registerClient(OmmNiProviderImpl.java:280)
    at com.thomsonreuters.ema.access.OmmNiProviderImpl.registerClient(OmmNiProviderImpl.java:263)
    at com.thomsonreuters.ema.examples.training.niprovider.series300.example350__Dictionary__Streaming.NiProvider.main(NiProvider.java:135)
icon clock
10 |1500

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

thanks for the confirmation. I will raise this on the github issue list.

As a workaround, if it there is a failover I've loaded the dictionary from file which allows me to continue to publish.

Upvotes
11.5k 16 7 10

Hello @david.gardiner

Please be informed that the issue has been fixed in Elektron SDK Java 1.2.0

(EMA Java 3.2.0).

I have tested the issue with Elektron SDK Java 1.2.0, the NIProvider example 350 application can download Dictionary information from the second ADH without any problems when it fail-over to the second ADH.

You can download Elektron SDK Java 1.2.0 from the following links:

Please see my replication log that works fine with Elektron SDK Java 1.2.0 at log-emaj-120.zip.


log-emaj-120.zip (419.1 KiB)
icon clock
10 |1500

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

Click below to post an Idea Post Idea