Failed to set compression threshold on channel Channel_3

loggerMsg

TimeStamp: 21:57:01.966

ClientName: ChannelCallbackClient

Severity: Error

Text: Failed to set compression threshold on channel Channel_3

Consumer Name Consumer_3_1

RsslReactor 0x0xcd6210

RsslChannel 0x0xcd6210

Error Id -1

Internal sysError 0

Error Location /local/jenkins/workspace/ESDKCore_RCDEV/OS/OL7-64/rcdev/source/esdk/Cpp-C/Eta/Include/Reactor/rtr/rsslReactorChannel.h:156

Error text </local/jenkins/workspace/ESDKCore_RCDEV/OS/OL7-64/rcdev/source/esdk/Cpp-C/Eta/Impl/Transport/rsslSocketTransportImpl.c,10375> Error: 1004 rsslSocketIoctl() failed, could not set the compression threshold mark to <30>, must be equal or greater than 300 bytes

loggerMsgEnd


The code is built using Elektron-sdk-1.4.0.L1.linux. It was working fine until this error started showing whenever i try to run the code now. Is there any configuration setting that i need to change in EmaConfig.xml or in the source files to correct this behaviour.
Also i did not mody any files between working and non-working state of the code.

Best Answer

  • Jirapongse
    Answer ✓

    @saurav1

    I got the same error when using the channel_3.

    loggerMsg
        TimeStamp: 14:32:05.053
        ClientName: ChannelCallbackClient
        Severity: Error
        Text:    Failed to set compression threshold on channel Channel_3
            Consumer Name Consumer_3_1
            RsslReactor 0x0000026F2B3620E0
            RsslChannel 0x0000026F2B3620E0
            Error Id -1
            Internal sysError 0
            Error Location D:\Jenkins\workspace\ESDKCore_RCDEV\OS\VS150-64\rcdev\source\esdk\Cpp-C\Eta\Include\Reactor\rtr/rsslReactorChannel.h:139
            Error text <D:\Jenkins\workspace\ESDKCore_RCDEV\OS\VS150-64\rcdev\source\esdk\Cpp-C\Eta\Impl\Transport\rsslSocketTransportImpl.c,10410> Error: 1004 rsslSocketIoctl() failed, could not set the compression threshold mark to <30>, must be equal or greater than 300 bytes
    loggerMsgEnd

    However, if I added <CompressionThreshold value="300"/> in the Channel_3, the problem has been solved.

            <Channel>
                <Name value="Channel_3"/>
                <ChannelType value="ChannelType::RSSL_ENCRYPTED"/>
                <CompressionType value="CompressionType::None"/>
                <GuaranteedOutputBuffers value="5000"/>
                <CompressionThreshold value="300"/>
                <!-- EMA discovers a host and a port from EDP-RT 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"/>
                <EncryptedProtocolType value="EncryptedProtocolType::RSSL_SOCKET"/>
                <!-- ObjectName is optional: defaulted to ""                                                -->
                <ObjectName value=""/>
            </Channel>

    I am using ESDK1.5 on Windows.

Answers

  • @saurav1

    From the error, you may use the LZ4 compression type. The compression threshold of the LZ4 compression type must be equal to or greater than 300.

    image

    You can change the value of the compression threshold with the following configuration.

    <CompressionThreshold value="300"/>

    Please add this configuration to the Channel_3 channel in the EmaConfig.xml file. If it doesn't solve the problem, please share your configuration file (EmaConfig.xml).


  • EmaConfig.txtThis is the configuration i am using. The compression type is set to none in the config.

    <CompressionType value="CompressionType::None"/>

    If i use LZ4 compression with appropriate threshold as mentioned above i get different errors

    loggerMsg
    TimeStamp: 02:32:28.009
    ClientName: EmaConfig
    Severity: Error
    Text: convertEnum has an implementation for enumType [CompressionType] but no appropriate conversion for value [RSSL_COMP_LZ4]
    loggerMsgEnd

    loggerMsg
    TimeStamp: 02:32:29.626
    ClientName: ChannelCallbackClient
    Severity: Success
    Text: Received ChannelUp event on channel Channel_3
    Instance Name Consumer_3_1
    Connected component version: ads3.3.3.L1.linux.tis.rrg 64-bit
    loggerMsgEnd

    loggerMsg
    TimeStamp: 02:32:32.851
    ClientName: SingleItem
    Severity: Error
    Text: Internal error: rsslReactorSubmitMsg() failed in SingleItem::submit( RsslRequestMsg* )
    RsslChannel 0x(nil)
    Error Id -29
    Internal sysError 0
    Error Location /local/jenkins/workspace/ESDKCore_RCDEV/OS/OL7-64/rcdev/source/esdk/Cpp-C/Eta/Impl/Reactor/Watchlist/wlItem.c:697
    Error Text Domain type does not match existing request.
    loggerMsgEnd

    loggerMsg
    TimeStamp: 02:32:32.852
    ClientName: Consumer_3_1
    Severity: Error
    Text: Failed to open or modify item request. Reason: RSSL_RET_INVALID_DATA. Error text: Domain type does not match existing request.
    loggerMsgEnd

    onInvalidUsage callback function
    Error text: Failed to open or modify item request. Reason: RSSL_RET_INVALID_DATA. Error text: Domain type does not match existing request.
    RecordHandler::process_record


  • Thank you for the help. i modified CompressionType field to LZ4 along with setting threshold, that's why it didn't work earlier.