Discover Refinitiv
MyRefinitiv Refinitiv Perspectives Careers
Created with Sketch.
All APIs Questions & Answers  Register |  Login
Ask a question
  • Questions
  • Tags
  • Badges
  • Unanswered
Search:
  • Home /
  • TREP APIs /
  • RFA /
avatar image
REFINITIV
Question by Steven McCoy · Jun 22, 2016 at 02:02 PM · RFAJ

IndexOutOfBoundsException publishing a large RFA SymbolList

The following exception appears in RFA/Java when publishing a symbol list with ~3,000 instruments as the constituents of NYSE:

2016-06-22 13:04:19,034 ERROR [main] Shinboru(Shinboru.java:466): catching
java.lang.IndexOutOfBoundsException
        at com.reuters.io.ArrayWriter.checkRemaining(Unknown Source)
        at com.reuters.io.DataArrayWriterWireFormatV1.writeByte(Unknown Source)
        at com.reuters.io.DataArrayWriter.writeByte(Unknown Source)
        at com.reuters.rfa.internal.rwf.RwfEncoder.encodeFieldListInit(Unknown Source)
        at Shinboru.OnRequest(Shinboru.java:510)
        at Provider.republish(Provider.java:749)
        at Provider.OnDictionaryResponse(Provider.java:735)
        at Provider.OnRespMsg(Provider.java:588)
        at Provider.OnOMMItemEvent(Provider.java:565)
        at Provider.processEvent(Provider.java:534)
        at com.reuters.rfa.internal.common.ResponseMessage.dispatchToClient(Unknown Source)
        at com.reuters.rfa.internal.common.ResponseMessage.dispatch(Unknown Source)
        at com.reuters.rfa.internal.common.EventQueueImpl.localDispatch(Unknown Source)
        at com.reuters.rfa.internal.common.EventQueueImpl.dispatch(Unknown Source)
        at Shinboru.mainloop(Shinboru.java:460)
        at Shinboru.run(Shinboru.java:432)
        at Shinboru.main(Shinboru.java:570)

Re-implementing the provider in UPA/Java did not encounter similar issues.

RFA/Java provider source code, UPA/Java provider source code (please note the line numbers differ from the above trace).

edit: With additional trace the symbol list fails at item #2957.

edit #2: Tried with increased buffer 65,535 bytes to no avail.

The actual source code used above, basically adds DSS/REST request: shinborujava.txt

shinborujava.txt (20.2 KiB)

People who like this

0 Show 0
Comment
10 |1500 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

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

1 Reply

  • Sort: 
avatar image
Best Answer
Answer by Lars-at-Addicticks · Jun 23, 2016 at 01:58 AM

What happens if your increase the size of your encoder ?

Currently you have it at 5000 bytes. (OMM_PAYLOAD_SIZE)

Comment
Steven McCoy

People who like this

1 Show 3 · Share
10 |1500 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

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

avatar image
REFINITIV
Steven McCoy ♦♦ · Jun 23, 2016 at 07:22 AM 0
Share

RFA/Java is unlike C++ technically supposed to take the payload size as a hint and automatically increase the buffer as needed. I have however tried with a buffer size of 65535 bytes with no change in result.

avatar image
REFINITIV
Steven McCoy ♦♦ Steven McCoy ♦♦ · Jun 24, 2016 at 08:34 AM 0
Share

I guess the RFA encoder is simply a lot more inefficient than the UPA one, increasing to 100,000 bytes worked.

avatar image
Lars-at-Addicticks Steven McCoy ♦♦ · Jun 26, 2016 at 07:03 AM 0
Share

Yeah, well, I'm not sure what the downside is of allocating say 100K to the encoder always. I guess what happens in the background is that some byte array of the size of 100K is allocated. Most applications will tend to say: so what? Personally this is what I would do to avoid getting obscure errors - even if my real requirement is a lot smaller.

Watch this question

Add to watch list
Add to your watch list to receive emailed updates for this question. Too many emails? Change your settings >
8 People are following this question.

Related Questions

What is this state meant by "(409) String Too Big"

How to check the status of service from which I am subscribing the update programmatically?

We are building Level2 MarketByPrice data feed using RFA API and got Invalid InterestSpec type received

Duplicate subscription in RFA

RFAJ gives "Released MSG into wrong OMMPool" error message on the encoder.initialize call

  • Feedback
  • Copyright
  • Cookie Policy
  • Privacy Statement
  • Terms of Use
  • Careers
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Alpha
  • App Studio
  • Block Chain
  • Bot Platform
  • Calais
  • Connected Risk APIs
  • DSS
  • Data Fusion
  • Data Model Discovery
  • Datastream
  • Eikon COM
  • Eikon Data APIs
  • Electronic Trading
    • Generic FIX
    • Local Bank Node API
    • Trading API
  • Elektron
    • EMA
    • ETA
    • WebSocket API
  • Legal One
  • Messenger Bot
  • Messenger Side by Side
  • ONESOURCE
    • Indirect Tax
  • Open PermID
    • Entity Search
  • Org ID
  • PAM
    • PAM - Logging
  • ProView
  • ProView Internal
  • Product Insight
  • Project Tracking
  • Refinitiv Data Platform
    • Refinitiv Data Platform Libraries
  • Rose's Space
  • Screening
    • Qual-ID API
    • Screening Deployed
    • Screening Online
    • World-Check One
    • World-Check One Zero Footprint
  • Side by Side Integration API
  • TR Knowledge Graph
  • TREP APIs
    • CAT
    • DACS Station
    • Open DACS
    • RFA
    • UPA
  • TREP Infrastructure
  • TRIT
  • TRKD
  • TRTH
  • Thomson One Smart
  • Transactions
    • REDI API
  • Velocity Analytics
  • Wealth Management Web Services
  • World-Check Data File
  • Explore
  • Tags
  • Questions
  • Badges