largetext icon indicating copy to clipboard operation
largetext copied to clipboard

The text decoder thread hangs when reading from a zip filesystem

Open fge opened this issue 11 years ago • 0 comments

Code:

public final class TraceReadTest
{
    private static final Path ZIP_PATH = Paths.get("/home/fge/t.zip");
    private static final Map<String, ?> ZIPFS_ENV
        = Collections.singletonMap("readonly", "true");

    private static final String TRACE_PATH = "/trace.csv";

    public static void main(final String... args)
        throws IOException
    {
        final URI uri = URI.create("jar:" + ZIP_PATH.toUri());
        final LargeTextFactory factory = LargeTextFactory.defaultFactory();

        final TraceEventParser parser
            = Parboiled.createParser(TraceEventParser.class, 20);
        final TraceEventListListener listener = new TraceEventListListener();
        parser.register(listener);
        final EventBasedParseRunner<Void> runner
            = new EventBasedParseRunner<>(parser.traceEvents());

        try (
            final FileSystem fs = FileSystems.newFileSystem(uri, ZIPFS_ENV);
            final LargeText input = factory.load(fs.getPath(TRACE_PATH));
        ) {
            runner.run(new CharSequenceInputBuffer(input));
        }
    }
}

Thread dump:

"main@1" prio=5 tid=0x1 nid=NA waiting
  java.lang.Thread.State: WAITING
      at sun.misc.Unsafe.park(Unsafe.java:-1)
      at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
      at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:834)
      at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:994)
      at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1303)
      at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:236)
      at com.github.fge.largetext.load.DecodingStatus.getTotalSize(DecodingStatus.java:207)
      at com.github.fge.largetext.load.TextDecoder.getTotalChars(TextDecoder.java:176)
      at com.github.fge.largetext.LargeText.length(LargeText.java:134)
      at com.github.fge.largetext.LargeText.toString(LargeText.java:185)
      at com.github.fge.grappa.tracingtest.TraceReadTest.main(TraceReadTest.java:41)

fge avatar Jan 28 '15 03:01 fge