[ 
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.

Reply via email to