Using the RFAJ 8.0 API - is there anything specific that needs to be done to kill a connection to RS

I have a memory leak in my application due to the RSSLConnection connection retaining references to by objects even after I have destroyed the eventqueue and the consumer and released the session via the API. Due to the connection retaining references to my Client class (which implements com.reuters.rfa.common.Client). How can I kill the connection so the referenced objects can be cleaned up?

Best Answer

  • RFA Java 8.0.1.E1 (latest) fixes objects-retention issue found when using batch snapshot requests.

    ---------------------------------------
    rfaj8.0.1.E1.all
    ---------------------------------------
    RFA-304; RFA Java holds references to objects in consumer batch application space.
    This has been fixed.
    (CaseId: 04554581)

Answers

  • RFA/Java 8.0.0.L2 (latest 8.0.1) fixes a memory leak bug whereby connections will retain references to closures when returned to the pool.

    ---------------------------------------
    rfaj8.0.0.L2.all
    ---------------------------------------
    rfaj3799; RFA Java holds on to references to Closure objects and thus
    prevents them from being garbage collected.
    This has been fixed.
    (CaseId: 03836653) (RFAJAVA-435)

    Also a common missed step is that after deactivating an event queue one must drain the queue of events, this is not required in RFA/C++. Example:

    private void drainqueue() {
    LOG.trace ("Draining event queue.");
    int count = 0;
    try {
    while (this.event_queue.dispatch (Dispatchable.NO_WAIT) > 0) { ++count; }
    LOG.trace ("Queue contained {} events.", count);
    } catch (DeactivatedException e) {
    /* ignore on empty queue */
    if (count > 0) LOG.catching (e);
    } catch (Exception e) {
    LOG.catching (e);
    }
    }