The reason of 'channel out of buffers' and recipe

Frederic
Frederic LSEG
edited March 28 in EMA

EMA (a later version)

Already have this in use <GuaranteedOutputBuffers value="5000"/>, but still encounter this occasionally. May I get advice on how to fix this?

2025-03-28 15:37:27 [] ERROR c.r.ema.access.OmmConsumerImpl - loggerMsg
ClientName: Consumer_1_1
Severity: Error
Text: Call to rsslReactorDispatch() failed. Internal sysError='0' Error text='channel out of buffers errorId=-4 errorText=channel out of buffers'.
loggerMsgEnd

Best Answer

  • Jirapongse
    Jirapongse ✭✭✭✭✭
    Answer ✓

    @Frederic

    Normally Developer Community Forum is for how-to/general questions but your question seems to be more complex and requires investigation e.g. review source code, configuration, try to reproduce the problem etc.

    I recommend the client raise a query through the premium support service. If the client is a named user, the client will see a link "Contact Premium Support" when the client is logged into the developer portal. For any difficulties submitting the query to us, please contact the client's LSEG account team or Sales team.

Answers

  • Jirapongse
    Jirapongse ✭✭✭✭✭

    @Frederic

    Thank you for reaching out to us.

    Please provide more information regarding this issue.

    1. The version of EMA used by the application, such as Real-Time-SDK-2.2.3.L1.java or EMA Java 3.8.3.L1
    2. The behavior of the application. For example: Did the application send post messages to ADS or RCC?
    3. How often did the application send post messages?
    4. The full configuration file

    Typically, this issue happens with the consumer application that sends post messages to a server.

    The client may try to increase the value of the GuaranteedOutputBuffers configuration.

    1. The EMA version is 3.8.0 (Java)
    2. No
    3. N/A
    4. The full config file
      <EmaConfig>
      <ConsumerGroup>
      <DefaultConsumer value="Consumer_1"/>
      <ConsumerList>
      <Consumer>
      <Name value="Consumer_1"/>
      <Channel value="Channel_1"/>
      <!-- <ChannelSet value="Channel_1, Channel_2"/> -->
      <Dictionary value="Dictionary_2"/>
      </Consumer>
      </ConsumerList>
      </ConsumerGroup>
      <ChannelGroup>
      <ChannelList>
      <Channel>
      <Name value="Channel_1"/>
      <!-- ChannelType possible values are: -->
      <!-- ChannelType::RSSL_SOCKET - TCP IP connection type -->
      <!-- ChannelType::RSSL_HTTP - Http tunnel connection type -->
      <!-- ChannelType::RSSL_ENCRYPTED - Https tunnel connection type -->
      <ChannelType value="ChannelType::RSSL_ENCRYPTED"/>
      <CompressionType value="CompressionType::None"/>
      <GuaranteedOutputBuffers value="5000"/>
      <InitializationTimeout value="15"/>
      <!-- Logger is optional: defaulted to "File + Success" -->
      <!-- 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-southeast"/>
      <EnableSessionManagement value="1"/>
      <ObjectName value=""/>
      </Channel>
      <Channel>
      <Name value="Channel_2"/>
      <!-- ChannelType possible values are: -->
      <!-- ChannelType::RSSL_SOCKET - TCP IP connection type -->
      <!-- ChannelType::RSSL_HTTP - Http tunnel connection type -->
      <!-- ChannelType::RSSL_ENCRYPTED - Https tunnel connection type -->
      <ChannelType value="ChannelType::RSSL_ENCRYPTED"/>
      <CompressionType value="CompressionType::None"/>
      <GuaranteedOutputBuffers value="5000"/>
      <!-- Logger is optional: defaulted to "File + Success" -->
      <!-- 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="us-east"/>
      <EnableSessionManagement value="1"/>
      <ObjectName value=""/>
      </Channel>
      </ChannelList>
      </ChannelGroup>
      <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>
      <Dictionary>
      <Name value="Dictionary_2"/>
      <DictionaryType value="DictionaryType::FileDictionary"/>
      <!-- dictionary names are optional: defaulted to RDMFieldDictionary and enumtype.def -->
      <RdmFieldDictionaryFileName value="./RDMFieldDictionary"/>
      <EnumTypeDefFileName value="./enumtype.def"/>
      </Dictionary>
      </DictionaryList>
      </DictionaryGroup>
      </EmaConfig>