question

Upvotes
Accepted
1 1 0 0

RFAJ 8.2.0.L1 RbcsCharset implementation broken?

Hi all,

we are experiencing IllegalStateException from the RBCS decoding when switched to the latest RFAJ 8.2.0.L1. We have been able to identify it as a problem coming from the new RbcsCharset implementation which returns shared charset decoder instead of creating a new instance. At first the charset decoder is not thread safe and cannot be shared. At second the way the shared charset decoder is created and shared breaks the memory model of Java (no volatile, no synchronization, just a free style).

We find the new RbcsCharset implementation broken, or?

Regards,
Michal

2020-12-03 11:35:12,968 [SessionANY.2 event handler] ERROR reuters.MMReutersRSSLConsumerProcess - Internal Reuters event queue error
java.lang.IllegalStateException: Current state = RESET, new state = FLUSHED
	at java.nio.charset.CharsetDecoder.throwIllegalStateException(CharsetDecoder.java:996) ~[?:?]
	at java.nio.charset.CharsetDecoder.flush(CharsetDecoder.java:679) ~[?:?]
	at java.lang.StringCoding$StringDecoder.decode(StringCoding.java:213) ~[?:?]
	at java.lang.StringCoding.decode(StringCoding.java:252) ~[?:?]
	at java.lang.String.(String.java:484) ~[?:?]
	at com.reuters.rfa.internal.rwf.RwfUtil.createRBCS(Unknown Source) ~[rfa-8.2.0.L1.jar:8.2.0.L1.all]
	at com.reuters.rfa.internal.rwf.RwfDataBuffer.toString(Unknown Source) ~[rfa-8.2.0.L1.jar:8.2.0.L1.all]
	at com.reuters.rfa.internal.rwf.RwfStateReadOnly.getText(Unknown Source) ~[rfa-8.2.0.L1.jar:8.2.0.L1.all]
	at com.reuters.rfa.internal.rwf.RwfStateReadOnly.toString(Unknown Source) ~[rfa-8.2.0.L1.jar:8.2.0.L1.all]
	at com.cbksec.reuters.kit.omm.consumer.RKLoginItem.processEvent(RKLoginItem.java:239) ~[reuters-kit-4.6-20201203.085530-5.jar:4.6-SNAPSHOT / 2020-12-03 09:55:25 CET]
class RbcsCharset extends Charset {
  private CharsetDecoder _rbcsDecoder;

  public RbcsCharset() {
    super("RBCS", (String[])null);
  }

  public CharsetDecoder newDecoder() {
    if (this._rbcsDecoder == null) {
      this._rbcsDecoder = new RbcsCharsetDecoder(this);
      return this._rbcsDecoder;
    } else {
      this._rbcsDecoder.reset();
      return this._rbcsDecoder;
    }
  }
treprfarfa-api
icon clock
10 |1500

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

@michal.frajt-ext

Can you please open the API support case via Contact Premium Support form? So API support team can investigate the issue further. Apologize for this inconvenience.

submitquery.png (131.9 KiB)

1 Answer

Upvotes
Accepted
38.1k 71 35 53

This issue has been fixed in RFA Java 8.2.0.L2.

---------------------------------------
rfaj8.2.0.L2.all
---------------------------------------
RFA-580: Code fix for RbcsCharset
(CaseId: 09454887)
icon clock
10 |1500

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

Click below to post an Idea Post Idea