largetext
largetext copied to clipboard
The text decoder thread hangs when reading from a zip filesystem
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)