[ 
https://issues.apache.org/jira/browse/CXF-9035?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17885874#comment-17885874
 ] 

Christian Mattar commented on CXF-9035:
---------------------------------------

The LoggingFeature is installing 
{{org.apache.cxf.ext.logging.LoggingInInterceptor}}
 

which does this:
{noformat}
message.put(LIVE_LOGGING_PROP, Boolean.FALSE);{noformat}
The LocalConduit, which is used here, uses some kind of Multi-Threading setup 
to run the Interceptors concurrently to normal message processing.

This leads to the exception you are seeing.

There's some explicit checking in LocalConduit to not run them using a 
synchronous executor. Doing so deadlocks the message processing.

> Fix java.util.ConcurrentModificationException at 
> org.apache.cxf.message.MessageImpl.calcContextCache
> ----------------------------------------------------------------------------------------------------
>
>                 Key: CXF-9035
>                 URL: https://issues.apache.org/jira/browse/CXF-9035
>             Project: CXF
>          Issue Type: Bug
>    Affects Versions: 3.5.8, 3.6.3, 4.0.4
>            Reporter: Andriy Redko
>            Assignee: Andriy Redko
>            Priority: Major
>             Fix For: 3.5.10, 3.6.5, 4.0.6
>
>
> {noformat}
> org.apache.cxf.jaxrs.client.logging.RESTLoggingTest.testBinary
> Failing for the past 1 build (Since
> #1182 )
> Took 22 ms.
> Error MessageProblem with reading the data, class java.io.InputStream, 
> ContentType: 
> application/octet-stream.Stacktracejakarta.ws.rs.client.ResponseProcessingException:
>  Problem with reading the data, class java.io.InputStream, ContentType: 
> application/octet-stream.
>     at 
> org.apache.cxf.jaxrs.impl.ResponseImpl.reportMessageHandlerProblem(ResponseImpl.java:553)
>     at 
> org.apache.cxf.jaxrs.impl.ResponseImpl.doReadEntity(ResponseImpl.java:495)
>     at 
> org.apache.cxf.jaxrs.client.AbstractClient.readBody(AbstractClient.java:566)
>     at 
> org.apache.cxf.jaxrs.client.WebClient.handleResponse(WebClient.java:1172)
>     at org.apache.cxf.jaxrs.client.WebClient.doResponse(WebClient.java:1160)
>     at 
> org.apache.cxf.jaxrs.client.WebClient.doChainedInvocation(WebClient.java:1086)
>     at org.apache.cxf.jaxrs.client.WebClient.doInvoke(WebClient.java:931)
>     at org.apache.cxf.jaxrs.client.WebClient.doInvoke(WebClient.java:900)
>     at org.apache.cxf.jaxrs.client.WebClient.invoke(WebClient.java:460)
>     at org.apache.cxf.jaxrs.client.WebClient.get(WebClient.java:640)
>     at 
> org.apache.cxf.jaxrs.client.logging.RESTLoggingTest.testBinary(RESTLoggingTest.java:70)
>     at 
> java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
>     at java.base/java.lang.reflect.Method.invoke(Method.java:580)
>     at 
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
>     at 
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>     at 
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
>     at 
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
>     at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
>     at 
> org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
>     at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
>     at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
>     at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
>     at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
>     at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
>     at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
>     at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
>     at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
>     at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
>     at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
>     at 
> org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:316)
>     at 
> org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:240)
>     at 
> org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:214)
>     at 
> org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:155)
>     at 
> org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385)
>     at 
> org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162)
>     at 
> org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507)
>     at 
> org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495)
> Caused by: java.util.ConcurrentModificationException
>     at java.base/java.util.HashMap$HashIterator.nextNode(HashMap.java:1605)
>     at java.base/java.util.HashMap$EntryIterator.next(HashMap.java:1638)
>     at java.base/java.util.HashMap$EntryIterator.next(HashMap.java:1636)
>     at java.base/java.util.HashMap.putMapEntries(HashMap.java:519)
>     at java.base/java.util.HashMap.putAll(HashMap.java:791)
>     at 
> org.apache.cxf.message.MessageImpl.calcContextCache(MessageImpl.java:216)
>     at 
> org.apache.cxf.message.MessageImpl.getContextualProperty(MessageImpl.java:179)
>     at 
> org.apache.cxf.message.MessageUtils.getContextualBoolean(MessageUtils.java:153)
>     at 
> org.apache.cxf.jaxrs.impl.HttpHeadersImpl.getRequestHeaders(HttpHeadersImpl.java:210)
>     at 
> org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBodyReader(JAXRSUtils.java:1610)
>     at 
> org.apache.cxf.jaxrs.impl.ResponseImpl.doReadEntity(ResponseImpl.java:474) 
> {noformat}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to