[
https://issues.apache.org/jira/browse/TIKA-2896?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Sergey Beryozkin resolved TIKA-2896.
------------------------------------
Resolution: Fixed
Fix Version/s: 1.22
Thanks for the patch
> NullPointerException in MimeTypesReader.releaseParser()
> -------------------------------------------------------
>
> Key: TIKA-2896
> URL: https://issues.apache.org/jira/browse/TIKA-2896
> Project: Tika
> Issue Type: Bug
> Components: mime
> Affects Versions: 1.21
> Reporter: Eamonn Saunders
> Priority: Major
> Fix For: 1.22
>
>
> We have encountered a situation where the call to parser.reset() in the
> following code snippet results in a NullPointerException.
> {code:java}
> private static void releaseParser(SAXParser parser) {
> try {
> parser.reset();
> } catch (UnsupportedOperationException e) {
> //ignore
> }
> {code}
> releaseParser() is called in the finally block of MimeTypesReader.read()
> {code:java}
> public void read(InputStream stream) throws IOException,
> MimeTypeException {
> SAXParser parser = null;
> try {
> parser = acquireSAXParser();
> parser.parse(stream, this);
> } catch (TikaException e) {
> throw new MimeTypeException("Unable to create an XML parser", e);
> } catch (SAXException e) {
> throw new MimeTypeException("Invalid type configuration", e);
> } finally {
> releaseParser(parser);
> }
> }{code}
> The parser variable will be null coming out of acquireSAXParser() if
> acquireSAXParser() is called on a thread that is interrupted (i.e. the
> InterruptedException is handled in the following code):
> {code:java}
> private static SAXParser acquireSAXParser()
> throws TikaException {
> while (true) {
> SAXParser parser = null;
> try {
> READ_WRITE_LOCK.readLock().lock();
> parser = SAX_PARSERS.poll(10, TimeUnit.MILLISECONDS);
> } catch (InterruptedException e) {
> throw new TikaException("interrupted while waiting for
> SAXParser", e);
> } finally {
> READ_WRITE_LOCK.readLock().unlock();
> }
> if (parser != null) {
> return parser;
> }
> }
> }{code}
> A simple fix would be to check for null before calling releaseParser() in the
> finally block.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)