Uploaded image for project: 'Infinispan'
  1. Infinispan
  2. ISPN-13148

XMLTranscoder can block during reflection

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • 13.0.0.Dev03
    • 13.0.0.Dev02
    • Server
    • None

      The XStream library used internally tries to do reflection to convert between some custom java objects and XML, and this can block when it tries to log "illegal access" to disk.

      To reproduce:

      cd server/rest
      taskset -c 0,1 mvn -DforkMode=never -DforkCount=0  test
      

      sometimes causes the test NonIndexedPojoQueryTest.testReadDocumentFromBrowser to fail

      java.lang.AssertionError: Blocking call! java.io.FileOutputStream#writeBytes on thread Thread[non-blocking-thread-NonIndexedPojoQueryTest-NodeA-p282-t1,5,ISPN-non-blocking-thread-group]
              at org.infinispan.util.CoreTestBlockHoundIntegration.lambda$applyTo$0(CoreTestBlockHoundIntegration.java:52) ~[infinispan-core-13.0.0-SNAPSHOT-tests.jar:13.0.0-SNAPSHOT]
              at reactor.blockhound.BlockHound$Builder.lambda$install$8(BlockHound.java:383) ~[blockhound-1.0.3.RELEASE.jar:?]
              at reactor.blockhound.BlockHoundRuntime.checkBlocking(BlockHoundRuntime.java:89) ~[?:?]
              at java.io.FileOutputStream.writeBytes(FileOutputStream.java) ~[?:?]
              at java.io.FileOutputStream.write(FileOutputStream.java:354) ~[?:?]
              at java.io.BufferedOutputStream.write(BufferedOutputStream.java:123) ~[?:?]
              at java.io.PrintStream.write(PrintStream.java:559) ~[?:?]
              at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:233) ~[?:?]
              at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:312) ~[?:?]
              at sun.nio.cs.StreamEncoder.flushBuffer(StreamEncoder.java:104) ~[?:?]
              at java.io.OutputStreamWriter.flushBuffer(OutputStreamWriter.java:181) ~[?:?]
              at java.io.PrintStream.write(PrintStream.java:606) ~[?:?]
              at java.io.PrintStream.print(PrintStream.java:745) ~[?:?]
              at java.io.PrintStream.println(PrintStream.java:882) ~[?:?]
              at jdk.internal.module.IllegalAccessLogger.log(IllegalAccessLogger.java:288) ~[?:?]
              at jdk.internal.module.IllegalAccessLogger.log(IllegalAccessLogger.java:261) ~[?:?]
              at jdk.internal.module.IllegalAccessLogger.logIfOpenedForIllegalAccess(IllegalAccessLogger.java:226) ~[?:?]
              at java.lang.reflect.AccessibleObject.logIfOpenedForIllegalAccess(AccessibleObject.java:366) ~[?:?]
              at java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:325) ~[?:?]
              at java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:280) ~[?:?]
              at java.lang.reflect.Method.checkCanSetAccessible(Method.java:198) ~[?:?]
              at java.lang.reflect.Method.setAccessible(Method.java:192) ~[?:?]
              at com.thoughtworks.xstream.core.util.SerializationMembers.getMethod(SerializationMembers.java:185) ~[xstream-1.4.17.jar:1.4.17]
              at com.thoughtworks.xstream.core.util.SerializationMembers.getMethod(SerializationMembers.java:188) ~[xstream-1.4.17.jar:1.4.17]
              at com.thoughtworks.xstream.core.util.SerializationMembers.getMethod(SerializationMembers.java:168) ~[xstream-1.4.17.jar:1.4.17]
              at com.thoughtworks.xstream.core.util.SerializationMembers.supportsReadObject(SerializationMembers.java:123) ~[xstream-1.4.17.jar:1.4.17]
              at com.thoughtworks.xstream.converters.reflection.SerializableConverter.isSerializable(SerializableConverter.java:109) ~[xstream-1.4.17.jar:1.4.17]
              at com.thoughtworks.xstream.converters.reflection.SerializableConverter.canConvert(SerializableConverter.java:102) ~[xstream-1.4.17.jar:1.4.17]
              at com.thoughtworks.xstream.core.DefaultConverterLookup.lookupConverterForType(DefaultConverterLookup.java:75) ~[xstream-1.4.17.jar:1.4.17]
              at com.thoughtworks.xstream.XStream$1.lookupConverterForType(XStream.java:485) ~[xstream-1.4.17.jar:1.4.17]
              at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:48) ~[xstream-1.4.17.jar:1.4.17]
              at com.thoughtworks.xstream.core.AbstractReferenceMarshaller$1.convertAnother(AbstractReferenceMarshaller.java:83) ~[xstream-1.4.17.jar:1.4.17]
              at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.marshallField(AbstractReflectionConverter.java:270) ~[xstream-1.4.17.jar:1.4.17]
              at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$2.writeField(AbstractReflectionConverter.java:174) ~[xstream-1.4.17.jar:1.4.17]
              at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doMarshal(AbstractReflectionConverter.java:262) ~[xstream-1.4.17.jar:1.4.17]
              at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.marshal(AbstractReflectionConverter.java:90) ~[xstream-1.4.17.jar:1.4.17]
              at com.thoughtworks.xstream.core.AbstractReferenceMarshaller.convert(AbstractReferenceMarshaller.java:68) ~[xstream-1.4.17.jar:1.4.17]
              at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:58) ~[xstream-1.4.17.jar:1.4.17]
              at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:43) ~[xstream-1.4.17.jar:1.4.17]
              at com.thoughtworks.xstream.core.TreeMarshaller.start(TreeMarshaller.java:82) ~[xstream-1.4.17.jar:1.4.17]
              at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.marshal(AbstractTreeMarshallingStrategy.java:37) ~[xstream-1.4.17.jar:1.4.17]
              at com.thoughtworks.xstream.XStream.marshal(XStream.java:1278) ~[xstream-1.4.17.jar:1.4.17]
              at com.thoughtworks.xstream.XStream.marshal(XStream.java:1267) ~[xstream-1.4.17.jar:1.4.17]
              at com.thoughtworks.xstream.XStream.toXML(XStream.java:1240) ~[xstream-1.4.17.jar:1.4.17]
              at com.thoughtworks.xstream.XStream.toXML(XStream.java:1227) ~[xstream-1.4.17.jar:1.4.17]
              at org.infinispan.server.core.dataconversion.XMLTranscoder.transcode(XMLTranscoder.java:132) ~[infinispan-server-core-13.0.0-SNAPSHOT.jar:13.0.0-SNAPSHOT]
              at org.infinispan.encoding.DataConversion.fromStorage(DataConversion.java:222) ~[infinispan-core-13.0.0-SNAPSHOT.jar:13.0.0-SNAPSHOT]
              at org.infinispan.cache.impl.EncoderCache.valueFromStorage(EncoderCache.java:113) ~[infinispan-core-13.0.0-SNAPSHOT.jar:13.0.0-SNAPSHOT]
              at org.infinispan.cache.impl.EncoderCache.unwrapCacheEntry(EncoderCache.java:386) ~[infinispan-core-13.0.0-SNAPSHOT.jar:13.0.0-SNAPSHOT]
              at org.infinispan.cache.impl.EncoderCache.getCacheEntryAsync(EncoderCache.java:378) ~[infinispan-core-13.0.0-SNAPSHOT.jar:13.0.0-SNAPSHOT]
              at org.infinispan.rest.cachemanager.RestCacheManager.getInternalEntry(RestCacheManager.java:131) ~[classes/:?]
      
      

            gfernand@redhat.com Gustavo Fernandes (Inactive)
            gfernand@redhat.com Gustavo Fernandes (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: