Hi Jukka,

On Thu, Oct 8, 2009 at 6:52 PM, Ken Krugler <kkrug...@transpac.com> wrote:
I just ran into a problem where a truncated zip file is causing the
ZipParser to hang.

Does it hang (i.e. never return), or throw a TikaException? The former
would be a clear bug, the latter expected behaviour given that the
file cannot be parsed.

It hung.

The file was truncated because I'd configured Bixo to only fetch the first
65K of a file, to avoid problems caused by huge files.

This is common practice for web crawlers, but it means that I need to know
which parsers can handle truncated content.

There's a somewhat related feature request TIKA-261, that approaches
this issue from a slightly different angle.

E.g. text is fine, HTML seems to be OK (based on my prior Nutch experience
with NekoHTML).

XML is not fine, from what I've seen - the parser will fail if it runs into
the end of document before finishing the parse.

If the truncated stream ends with a -1 return from read(), then I
would expect the XML parser to throw a TikaException to signify a
parse failure. If the streams throws an IOException to signify
truncation, then the parser should propagate that exception up to the
caller.

The latter behavior suggests a way to cleanly implement the feature
you're asking for. The given input stream could be wrapped into a
decorator that throws a tagged IOException when the given size limit
has been reached. A parser can capture such exceptions and cleanly
close the emitted XHTML stream, potentially adding a metadata entry
that signifies that the extracted text has been truncated.

Interesting idea. I'll need to capture a bunch of truncated zip files to test.

I filed https://issues.apache.org/jira/browse/TIKA-307 to capture this.

-- Ken


Reply via email to