Details
-
Type: Bug
-
Status: Closed
-
Priority: Default
-
Resolution: Not a bug
-
Affects Version/s: 1.5.0, 1.5.1
-
Fix Version/s: None
-
Component/s: Engine, Message Generation
-
Environment:RHEL kernel 2.6.18; Sun/Oracle Java 1.6.20; QuickFixJ 1.5.1
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())
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