You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Dominik Stadler (Jira)" <ji...@apache.org> on 2020/01/22 19:29:00 UTC

[jira] [Commented] (COMPRESS-502) Allow to disable closing files in the finalizer of ZipFile

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

Dominik Stadler commented on COMPRESS-502:
------------------------------------------

Issue COMPRESS-473 handles the fact that overriding finalize() is discouraged in general anyway.

> Allow to disable closing files in the finalizer of ZipFile
> ----------------------------------------------------------
>
>                 Key: COMPRESS-502
>                 URL: https://issues.apache.org/jira/browse/COMPRESS-502
>             Project: Commons Compress
>          Issue Type: Improvement
>          Components: Compressors
>    Affects Versions: 1.19
>            Reporter: Dominik Stadler
>            Priority: Major
>
> Apache POI uses commons-compress for handling ZipFiles. We found that it sometimes does some auto-close magic in the finalizer of the ZipFile class with printing out to stderr, see https://gitbox.apache.org/repos/asf?p=commons-compress.git;a=blob;f=src/main/java/org/apache/commons/compress/archivers/zip/ZipFile.java;h=23194560dace91d8052626f3bdc8f765f9c46d7e;hb=HEAD#l652.
>  
> This has some shortcomings:
>  * It prints to stderr which many large-scale applications try to avoid by using some logging framework, thus this output might "vanish" unseen in some installations or might cause unexpected side-effects
>  * It prevents us from using tools for checking file leaks, e.g. we use [https://github.com/kohsuke/file-leak-detector/] heavily for analyzing test-runs for leaked file-handles, but commons-compress prevents this because it "hides" the unclosed file from this functionality
>  * The behavior of automatic closing and reporting the problem is non-reproducible because it depends on finalizer/garbage-collection and thus any re-runs or unit-tests usually do not show the same behavior
>  
> There are some fairly simple options to improve this:
>  * Allow to disable this functionality via configuration/system-property/...
>  * Make this "pluggable" so a logging-framework can be plugged-in or closing can be prevented for certain runs
>  
> I can provide a simple patch if you state which approach you think would make most sense here.
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)