[ 
https://issues.apache.org/jira/browse/TIKA-853?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13210807#comment-13210807
 ] 

John Mastarone commented on TIKA-853:
-------------------------------------

I think I have a better fix for this that does not involve the previous steps 
taken.  Inside Tika's MP4Parser parse method, I call tstream.getFile(), and 
assign the result to a File that is used to construct a FileInputStream.  I 
read the stream's bytes into an array, and pass this byte array as an argument 
to a constructor for the IsoBufferWrapperImpl.  Then after calling the 
IsoFile's parse method, tstream.close() does not fail. 
I'm not sure that using the current IsoBufferWrapperImpl constructor, which 
takes a File argument, would ever allow for the TikaInputStream to be closed 
while still inside the MP4Parser's parse method without producing the 
IOException in Windows, because this constructor creates MappedByteBuffers and 
FileChannels, and the Java API for MappedByteBuffer says "A mapped byte buffer 
and the file mapping that it represents remain valid until the buffer itself is 
garbage-collected."  
Should I upload another patch?
                
> java.io.IOException with TikaGUI and testMP4.m4a
> ------------------------------------------------
>
>                 Key: TIKA-853
>                 URL: https://issues.apache.org/jira/browse/TIKA-853
>             Project: Tika
>          Issue Type: Bug
>          Components: gui, parser
>    Affects Versions: 1.1
>         Environment: Windows 7
>            Reporter: John Mastarone
>         Attachments: TIKA-853.patch
>
>
> Using a latest build: when attempting to drop the new testMP4.m4a file into 
> the Tika GUI, a TikaException / IOException occurs:  
> org.apache.tika.exception.TikaException: Failed to close temporary resources
>       at 
> org.apache.tika.io.TemporaryResources.dispose(TemporaryResources.java:152)
>       at 
> org.apache.tika.parser.AutoDetectParser.parse(AutoDetectParser.java:127)
>       at org.apache.tika.gui.TikaGUI.handleStream(TikaGUI.java:320)
>       at org.apache.tika.gui.TikaGUI.openFile(TikaGUI.java:279)
>       at 
> org.apache.tika.gui.ParsingTransferHandler.importFiles(ParsingTransferHandler.java:94)
>       at 
> org.apache.tika.gui.ParsingTransferHandler.importData(ParsingTransferHandler.java:77)
>       at javax.swing.TransferHandler.importData(Unknown Source)
>       at javax.swing.TransferHandler$DropHandler.drop(Unknown Source)
> ....
> Caused by: java.io.IOException: Could not delete temporary file 
> C:\Users\john\AppData\Local\Temp\apache-tika-693752014807275949.tmp
>       at 
> org.apache.tika.io.TemporaryResources$1.close(TemporaryResources.java:70)
>       at 
> org.apache.tika.io.TemporaryResources.close(TemporaryResources.java:121)
>       at 
> org.apache.tika.io.TemporaryResources.dispose(TemporaryResources.java:150)
>       ... 40 more
> I know that the parser for this file is new and its external source parser 
> has some potential bugs, but this exception does not occur when using Tika 
> CLI to detect / parse the test file.  

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to