Uploaded image for project: 'QuickFIX/J'
  1. QuickFIX/J
  2. QFJ-637

QuickFixJ appears to modify headers of a message after delivery; iteration over the Header's fields on another thread produces a ConcurrentModificationException

    Details

      Description

      We have created a client to the QuickFixJ engine which implements the Application interface; in order to manage our threading we have put a thread barrier between our client Application and QuickFixJ, where its invocations of the Application API are converted into Runnable commands which are executed on the client thread. Other parts of the system interact with the client across the thread barrier in the same way and it enables the client to run in a single-threaded manner.

      We log the messages we get from QuickFixJ and fairly frequently see a ConcurrentModificationException being raised when we iterate over the fields in a message's header:

      Iterator<Field> iter = message.getHeader().iterator();
      while (iter.hasNext())

      { // log out the values - CME is raised here }

      I would have thought that a message and its header should be immutable after it has been delivered to the client Application, but it seems it is being changed on a different thread. Is this expected behaviour? Does QuickFixJ implement some sort of Message pooling?

      Thanks

      Michael

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              guyvermi Michael Guyver
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: