db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Knut Anders Hatlen (JIRA)" <j...@apache.org>
Subject [jira] Updated: (DERBY-3889) LOBStreamControl.truncate() doesn't delete temporary files
Date Fri, 10 Oct 2008 09:54:44 GMT

     [ https://issues.apache.org/jira/browse/DERBY-3889?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

Knut Anders Hatlen updated DERBY-3889:

    Attachment: derby-3889-1a.stat

derby-3889-1a.diff changes LOBStreamControl so that it deletes the temporary file when truncate()
switches from file to memory. Since we have three different places in the code that need to
do the same set of operations when a temporary file is discarded, I factored it out in a separate
method, releaseTempFile().

I also moved the field lobFile (of type StorageFile) from LOBStreamControl to LOBFile, since
it should always be in sync with the field tmpField (of type LOBFile) and the current handling
of those fields is a bit confusing (for instance, we only null out tmpFile in free() and truncate(),
which works since we always check for tmpFile==null instead of lobFile==null, but it leaves
LOBStreamControl in a confusing state). By making it a final field in LOBFile, we automatically
get consistency between the two, and the new method releaseTempFile() becomes a one-argument
method instead of a two-argument method.

Derbyall and suites.All ran cleanly with the patch, and I have manually verified that the
uploaded repro does not create thousands of temporary files.

> LOBStreamControl.truncate() doesn't delete temporary files
> ----------------------------------------------------------
>                 Key: DERBY-3889
>                 URL: https://issues.apache.org/jira/browse/DERBY-3889
>             Project: Derby
>          Issue Type: Bug
>          Components: JDBC
>    Affects Versions:,
>            Reporter: Knut Anders Hatlen
>            Assignee: Knut Anders Hatlen
>         Attachments: derby-3889-1a.diff, derby-3889-1a.stat, TruncateClob.java
> If LOBStreamControl.truncate() reduces the size of the lob so that it fits in the internal
buffer, it closes the temporary file, but it doesn't remove it. See the attached Java class
(TruncateClob.java) which fills the tmp directory with temporary lob files, even if each lob
is explicitly freed.

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message