db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kristian Waagan (JIRA)" <j...@apache.org>
Subject [jira] Updated: (DERBY-4432) Memory leak when attempting to boot non-existing database with the in-memory back end
Date Tue, 03 Nov 2009 10:11:59 GMT

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

Kristian Waagan updated DERBY-4432:
-----------------------------------

    Attachment: derby-4432-1a-mem_leak_fix.stat
                derby-4432-1a-mem_leak_fix.diff

Patch 1a fixes the memory leak and adds a test for it.

A "dummy" data store has been added. It will be used until Derby actually requests a database
to be created (when a unique name is provided).
Directories for created databases will be created in the dummy data store, which means it
will grow with the number of databases created. I don't think this will be a problem, because
the space occupied by the databases themselves will be much larger than the bytes required
to store a directory structure. Further, I intended to delete the directory structure in the
dummy store for a database when the database itself is deleted (this patch will probably appear
under DERBY-4428).

An alternative to the current patch is to use a bounded map where the oldest entry is deleted
when the bound has been exceeded. I discarded this approach because the code got slightly
more complex.

Patch ready for review.

> Memory leak when attempting to boot non-existing database with the in-memory back end
> -------------------------------------------------------------------------------------
>
>                 Key: DERBY-4432
>                 URL: https://issues.apache.org/jira/browse/DERBY-4432
>             Project: Derby
>          Issue Type: Bug
>          Components: Store
>    Affects Versions: 10.5.3.0, 10.6.0.0
>         Environment: In-memory back end and large amount of boot attempts of non-existing
databases.
>            Reporter: Kristian Waagan
>            Assignee: Kristian Waagan
>         Attachments: derby-4432-1a-mem_leak_fix.diff, derby-4432-1a-mem_leak_fix.stat
>
>
> When attempting to boot a non-existing database with the in-memory back end, a DataStore
is created and referenced by a map. Since the database doesn't exist, Derby won't use the
DataStore again and it will hang around indefinitely in VFMemoryStorageFactory (or until the
same database is actually created, in which case the data store will be used).
> FYI, storage factory instances are instantiated liberally, including for the same service
(i.e. six instances of VFMemoryStorageFactory may be created to boot "jdbc:derby:memory:myDB").

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


Mime
View raw message