Closed maxstue-exx closed 9 months ago
@maxstue-exx Thank you for raising this issue! We created an internal Jira to reproduce and investigate it. A quick question: could you try running the application with a valid xml config file specified (refer to CSharp/Ema/Docs/EMACSharp_ConfigGuide.pdf for details)? The first error that you get in the log suggests that there's an issue with parsing the xml config, so supplying a valid one if you're not using any might be a workaround for the time being.
@L-Karchevska The config file is the one from the tutorial code
The first error also appears on the windows computer where the rest of the code works just fine.
And if we/I remove the line <ObjectName value=""/>
nothing changes in the behaviour on the running system. So we thought we could just ignore it.
<?xml version="1.0" encoding="UTF-8"?>
<EmaConfig>
<!-- ConsumerGroup provides set of detailed configurations to be used by named consumers -->
<!-- Application specifies which configuration to use by setting OmmConsumerConfig::consumerName() -->
<ConsumerGroup>
<!-- DefaultConsumer parameter defines which consumer configuration is used by OmmConsumer -->
<!-- if application does not specify it through OmmConsumerConfig::consumerName() -->
<!-- first consumer on the ConsumerList is a DefaultConsumer if this parameter is not specified -->
<DefaultConsumer value="Consumer_1"/>
<ConsumerList>
<Consumer>
<Name value="Consumer_1"/>
<Channel value="Channel_1"/>
<Logger value="Logger_1"/>
<Dictionary value="Dictionary_1"/>
<XmlTraceToStdout value="0"/>
</Consumer>
</ConsumerList>
</ConsumerGroup>
<ChannelGroup>
<ChannelList>
<Channel>
<Name value="Channel_1"/>
<!-- ChannelType possible values are: -->
<!-- ChannelType::RSSL_SOCKET - TCP IP connection type -->
<!-- ChannelType::RSSL_ENCRYPTED - Encrypted connection type -->
<!-- For RTO the ChannelType must be ChannelType::RSSL_ENCRYPTED -->
<ChannelType value="ChannelType::RSSL_ENCRYPTED"/>
<!-- EMA discovers a host and a port from RDP service discovery for the specified location
when both of them are not set and the session management is enable. -->
<Location value="ap-northeast-1"/>
<EnableSessionManagement value="1"/>
<EncryptedProtocolType value="EncryptedProtocolType::RSSL_SOCKET"/>
<!-- ObjectName is optional: defaulted to "" -->
<ObjectName value=""/>
</Channel>
</ChannelList>
</ChannelGroup>
<LoggerGroup>
<LoggerList>
<Logger>
<Name value="Logger_1"/>
<!-- LoggerType is optional: defaulted to "File" -->
<!-- possible values: Stdout, File -->
<LoggerType value="LoggerType::Stdout"/>
<!-- LoggerSeverity is optional: defaulted to "Success" -->
<!-- possible values: Verbose, Success, Warning, Error, NoLogMsg -->
<LoggerSeverity value="LoggerSeverity::Success"/>
</Logger>
</LoggerList>
</LoggerGroup>
<DictionaryGroup>
<DictionaryList>
<Dictionary>
<Name value="Dictionary_1"/>
<!-- dictionaryType is optional: defaulted to ChannelDictionary" -->
<!-- possible values: ChannelDictionary, FileDictionary -->
<!-- if dictionaryType is set to ChannelDictionary, file names are ignored -->
<DictionaryType value="DictionaryType::ChannelDictionary"/>
</Dictionary>
</DictionaryList>
</DictionaryGroup>
</EmaConfig>
@maxstue-exx Thank you for the details!
@maxstue-exx Could you also specify the version of RTSDK you are using?
@L-Karchevska Sure, we are on the latest(no prerelease) nuget version
<PackageReference Include="LSEG.Eta.Core" Version="3.1.0"/>
<PackageReference Include="LSEG.Eta.ValueAdd" Version="3.1.0"/>
<PackageReference Include="LSEG.Eta.Ansi" Version="3.1.0"/>
<PackageReference Include="LSEG.Eta.AnsiPage" Version="3.1.0"/>
<PackageReference Include="LSEG.Ema.Core" Version="3.1.0"/>
<PackageReference Include="K4os.Compression.LZ4" Version="1.3.6"/>
@L-Karchevska Hi I just wanted to ask if this is something which is going to be fixed/changed in the neat future?
@maxstue-exx We are working on this issue, but we can't tell the exact timeframe. Could you turn on LoggerSeverity to Verbose in your configuration file, run your application and post the whole log with all error messages?
@L-Karchevska
ERROR|: loggerMsg
ClientName: EmaConfig
Severity: Error Text: Unknown Channel entry element: ObjectName in Channel_1
loggerMsgEnd
TRACE|: loggerMsg
ClientName: Consumer_1_2
Severity: Trace Text: Print out active configuration detail.
ConfiguredName: Consumer_1
InstanceName: Consumer_1_2
ItemCountHint: 100000
ServiceCountHint: 513
MaxDispatchCountApiThread: 100
MaxDispatchCountUserThread: 100
RequestTimeout: 15000
XmlTraceToStdout: False
ObeyOpenWindow: True
PostAckTimeout: 15000
MaxOutstandingPosts: 100000
DispatchMode: API_DISPATCH
ReconnectAttemptLimit: -1
ReconnectMinDelay: 5000
ReconnectMaxDelay: 5000
MsgKeyInUpdates: True
DirectoryRequestTimeOut: 45000
DictionaryRequestTimeOut: 45000
RestRequestTimeOut: 15000
LoginRequestTimeOut: 45000
loggerMsgEnd
TRACE|: loggerMsg
ClientName: Consumer_1_2
Severity: Trace Text: Successfully created Reactor.
loggerMsgEnd
TRACE|: loggerMsg
ClientName: LoginCallbackClient
Severity: Trace Text: RDMLogin request message was populated with this info: LoginRequest:
streamId: 1
userName: mast1
streaming: true
nameType: NAME
applicationId: 256
applicationName: ema
position: 1.1.1.1/net
loggerMsgEnd
TRACE|: loggerMsg
ClientName: DirectoryCallbackClient
Severity: Trace Text: RDMDirectoryRequest message was populated with Filter(s)
RDM_DIRECTORY_SERVICE_INFO_FILTER
RDM_DIRECTORY_SERVICE_STATE_FILTER
RDM_DIRECTORY_SERVICE_GROUP_FILTER
RDM_DIRECTORY_SERVICE_LOAD_FILTER
RDM_DIRECTORY_SERVICE_DATA_FILTER
RDM_DIRECTORY_SERVICE_LINK_FILTER
requesting all services
loggerMsgEnd
TRACE|: loggerMsg
ClientName: ChannelCallbackClient
Severity: Trace Text: Created ChannelCallbackClient
loggerMsgEnd
TRACE|: loggerMsg
ClientName: ChannelCallbackClient
Severity: Trace Text: Attempt to connect using
1] ENCRYPTED
Channel name Channel_1
Instance name Consumer_1_2
Reactor @53473871
InterfaceName
HostName
Port
CompressionType None
TcpNodelay False
EnableSessionMgnt True
Location ap-northeast-1
EncryptedProtocolType SOCKET
EncryptedProtocolFlags ENC_NONE
AuthenticationTimeout 10 sec
ReconnectAttemptLimit -1
ReconnectMinDelay 5000 msec
ReconnectMaxDelay 5000 msec
GuaranteedOutputBuffers 50
NumInputBuffers 100
SysRecvBufSize 0
SysSendBufSize 0
ConnectionPingTimeout 60 sec
InitializationTimeout 60 sec
loggerMsgEnd
TRACE|: loggerMsg
ClientName: ChannelCallbackClient
Severity: Trace Text: Received ChannelOpened event on channel Channel_1
Instance Name Consumer_1_2
loggerMsgEnd
TRACE|: loggerMsg
ClientName: ChannelCallbackClient
Severity: Trace Text: Successfully created a Reactor and Channel(s)
Channel name(s) Channel_1
Instance name Consumer_1_2
loggerMsgEnd
ERROR|: loggerMsg
ClientName: Consumer_1_2
Severity: Error Text: login failed (timed out after waiting 45000 milliseconds) for :)
loggerMsgEnd
ERROR|: loggerMsg
ClientName: ChannelCallbackClient
Severity: Error Text: Received ChannelDown event on channel Channel_1
Instance Name Consumer_1_2
Reactor 53473871
Channel 15318576
Error Id SUCCESS
Internal sysError 0
Error Location
Error text
loggerMsgEnd
@maxstue-exx I am able to reproduce the same issue with macOS and this is a known issue with the dotnet runtime at https://github.com/dotnet/runtime/issues/920 which will be fixed in further release.
Please note that macOS is not used in test for RTSDK C# according to https://github.com/Refinitiv/Real-Time-SDK/blob/master/CSharp/README.md
@soranat Thanks for the info. Is there a way to workaround this issue? Can you for example set another "connectiontype" so the code won't use sockets? maybe another abstractionlayer or a completely different type ?
@soranat I have another question. If the error from above is occurring no exception is thrown or any callback via an errorclient is called. Therefore the catch and finally block will never run and never free up ressources.
Is this intended? because in the errorclient readme is says that all errors will throw a respective exception ?
@maxstue-exx The known issue from the .NET runtime breaks internal notification within the Reactor component causing EMA to wait for the channel up event from the Reactor.
There is no workaround for this issue and MacOs is not tested and supported by RTSDK C#.
@soranat In the linked ticket someone mentioned some infos and a possible solution/workaround? Is this something you can integrate?
Hello,
Me and my team are trying to connect to the Realtime-optimzed instance via c# (asp.net core 8) code and we managed to do so but only on the windows11 machine from my colleague, on my macos 14.2 macbook pro m1 I'm always getting an error (see below).
Does this package use some specific feature which doesn't exist on macos ? We couldn't find anything about compatibility issues. Enabling more trace logs via the config file also doesn't give more logs.
Did anyone had similar issues or maybe has some suggestion ? Is this library not capable of running on (most used)every system/os even though it uses c# which is capable to run on them ?
Code
https://developers.lseg.com/en/api-catalog/refinitiv-real-time-opnsrc/refinitiv-real-time-csharp-sdk/tutorials#ema-consumer-connecting-to-real-time-optimized It is the same code as in this tutorial just wrapped in a function which is getting called via an endpoint in asp.net core.
Error message
This issue was already raised here and they send me here to raise an issue.
Best Regards Max