Hi, we intermittently see coercion errors for JSONObject - which we use frequently for ajax context information.
The relevant bit of stack trace is - Caused by: java.util.ConcurrentModificationException - at java.base/java.util.LinkedHashMap$LinkedHashIterator.nextNode(LinkedHashMap.java:719) - at java.base/java.util.LinkedHashMap$LinkedKeyIterator.next(LinkedHashMap.java:741) - at org.apache.tapestry5.json.JSONObject.print(JSONObject.java:805) - at org.apache.tapestry5.json.JSONCollection.toString(JSONCollection.java:46) - at org.apache.tapestry5.commons.internal.BasicTypeCoercions$1.coerce(BasicTypeCoercions.java:69) - at org.apache.tapestry5.commons.internal.BasicTypeCoercions$1.coerce(BasicTypeCoercions.java:65) - at org.apache.tapestry5.commons.services.CoercionTuple$CoercionWrapper.coerce(CoercionTuple.java:57) Overlapping calls mean the json object is modified in one place while it is written elsewhere - as the objects themselves are not thread safe, it is quite messy to protect all possible writes. Copying the keys before the print loop, with a check that the value still exists when printing, would narrow the window for this to happen considerably. We could not think of any better solutions to solve this problem, but any suggestions are welcome. Cheers, Adriaan