Plz Help! : Internal Error. Failed to allocated TransportBuffer in TunnelItem.submitSubItemMsg​

ClientName: TunnelItem   
Severity: Error    
Text:    Internal Error. Failed to allocated TransportBuffer in TunnelItem.submitSubItemMsg

Best Answer

  • ohm.cm
    Answer ✓

    Hello Khun @jirapongse.phuriphanvichai,

    I'm Ohm from the same team with @lenny.cm.

    How can we call the value of GuaranteedOutputBuffers in EmaConfig.xml to be used in tsr in our code?

    This is our code when creating a tunnel connection

        val consumer = EmaFactory
          .createOmmConsumer(
            EmaFactory
              .createOmmConsumerConfig("/path/to/EmaConfig.xml")
              .tunnelingKeyStoreFile(emaConfig.privateKey)
              .tunnelingKeyStorePasswd(emaConfig.privateKeyPassword)
          )

        val tsr: TunnelStreamRequest = EmaFactory
          .createTunnelStreamRequest()
          .classOfService(
            EmaFactory.createClassOfService
              .authentication(EmaFactory.createCosAuthentication.`type`(CosAuthentication.CosAuthenticationType.NOT_REQUIRED))
              .dataIntegrity(EmaFactory.createCosDataIntegrity.`type`(CosDataIntegrity.CosDataIntegrityType.RELIABLE))
              .flowControl(EmaFactory.createCosFlowControl.`type`(CosFlowControl.CosFlowControlType.BIDIRECTIONAL).recvWindowSize(1200))
              .guarantee(EmaFactory.createCosGuarantee.`type`(CosGuarantee.CosGuaranteeType.NONE))
          )
          .domainType(EmaRdm.MMT_SYSTEM)
          .name("tunnel")
          .serviceName("DDS_TRCE")

        //tunnel stream handle (a.k.a. parentHandle)
        val tunnelStreamHandle = consumer.registerClient(tsr, this)


    And this is our EmaConfig.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <EmaConfig>
    <!-- see EMAJ_ConfigGuide.pdf for details -->
    <ConsumerGroup>
        <DefaultConsumer value="Consumer_TRCC"/>
        <ConsumerList>
            <Consumer>
                <Name value="TRCC_CONSUMER"/>
                <Channel value="Channel_TRCC"/>
                <Dictionary value="Dictionary_TRCC"/>
                <XmlTraceToStdout value="0" />
            </Consumer>
        </ConsumerList>
    </ConsumerGroup>
    <ChannelGroup>
        <ChannelList>
            <Channel>
                <Name value="Channel_TRCC"/>
                <ChannelType value="ChannelType::RSSL_ENCRYPTED"/>
                <TcpNodelay value="1"/>
                <GuaranteedOutputBuffers value="5000"/>
                <ConnectionPingTimeout value="30000"/>
                <Host value="contrib01-apac1.platform.refinitiv.biz"/>
                <Port value="443"/>
            </Channel>
        </ChannelList>
    </ChannelGroup>
    <DictionaryGroup>
        <DictionaryList>
            <Dictionary>
                <Name value="Dictionary_TRCC"/>
                <DictionaryType value="DictionaryType::FileDictionary"/>
                <RdmFieldDictionaryFileName value="/path/to/RDMFieldDictionary"/>
                <EnumTypeDefFileName value="/path/to/enumtype.def"/>
            </Dictionary>
        </DictionaryList>
    </DictionaryGroup>
    </EmaConfig>


Answers

  • Hello Refinitiv Team, please kindly help with these errors we got the errors to message multiple times, our application using EMA java

    Is this something about the limitation with the message size and rate? would be great if you could shed the light on this issue for us, many thanks.


  • @lenny.cm

    It looks similar to this question.

    I think the answer can also apply to EMA Java.

    image

  • FYI : not sure this would related or not, in my EMA config file the current setup

                  <TcpNodelay value="1"/>
                            <GuaranteedOutputBuffers value="5000"/>
                            <ConnectionPingTimeout value="30000"/>


  • Thank you khun Jiraponse for the quick reply, I will share this with our Dev team

  • If you are using TunnelStreamRequest, you need to set it in the TunnelStreamRequest.

  • @ohm.cm

    As I know, OmmConsumerConfig is designed for a client to set config info, not for reading. You can't use OmmConsumerConfig to access the value.

    You need to develop a function to parse that EmaConfig.xml file and read the GuaranteedOutputBuffers and then set it to tsr.guaranteedOutputBuffers(int outBuffers);

  • Hello @ohm.cm @lenny.cm

    I noticed that your <DefaultConsumer value="Consumer_TRCC"/> and the consumer name configurations are not matching.

    image

    I have tried your EmaConfig.xml file with the Contribution example (from this article) and the following code and it works fine.

    OmmConsumer consumer = EmaFactory.createOmmConsumer(
    EmaFactory.createOmmConsumerConfig("C:\drive_d\Project\APIs\EMA_Code\EMA_Java_200_Maven\src\main\java\com\refinitiv\ema\examples\training\consumer\series300\ex342_MP_RCC\\EmaConfigAHS.xml")
    .consumerName("TRCC_CONSUMER").tunnelingKeyStoreFile(keyStoreFileName)
    .tunnelingKeyStorePasswd(keyStorePassword)
    );
  • Kob khun krub,


    This is very helpful. We'll let our dev team know this info.