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

Kristian Waagan updated DERBY-4428:
-----------------------------------

    Attachment: derby-4428-1b-in_memory_specific_delete_code.diff

Attached patch 1b and committed it to trunk with revision 883297.

Patch 1b handles the removal of the data store in two places; on init or 
shutdown. I discovered a weakness when testing create, drop, shutdown and 
connect in a highly multithreaded test, where all connection attempts were made 
against the same database. Since the delete is a two step process from when you 
do File.deleteAll to StorageFactory.shutdown, there was a small window where 
another thread could slip in and get a handle on the data store that was just 
deleted.
In my test this didn't trigger anything else than my assert-style check in 
VFMemSF.shutdown, but I found it safer to deal with it. The required changes 
were also small.

All regression tests passed.

> Add proper delete mechanism for in-memory databases
> ---------------------------------------------------
>
>                 Key: DERBY-4428
>                 URL: https://issues.apache.org/jira/browse/DERBY-4428
>             Project: Derby
>          Issue Type: Improvement
>          Components: JDBC, Services, Store
>    Affects Versions: 10.6.0.0
>            Reporter: Kristian Waagan
>            Assignee: Kristian Waagan
>         Attachments: derby-4428-0a-preview_patch.diff, 
> derby-4428-1a-in_memory_specific_delete_code.diff, 
> derby-4428-1a-in_memory_specific_delete_code.stat, 
> derby-4428-1b-in_memory_specific_delete_code.diff, 
> derby-4428-2a-generic_db_drop.diff
>
>
> The current mechanism for deleting in-memory databases isn't good enough, and 
> a proper one must be added.
> It is also important to be able to delete in-memory databases, since they 
> occupy valuable main memory that should be discarded when the database is no 
> longer needed.
> I intend to implement the mechanism by using the JDBC connection URL:
> "jdbc:derby:memory:myDatabase;delete=true[;user=X;password=Y]
> The connection attempt will throw an exception in any case, either because 
> the request failed or because it succeeded.
> Reasons for a failure can be invalid user and/or password, lacking encryption 
> attributes, or conflicting attributes.
> For the time being, only the database owner will be allowed to delete 
> databases (*note*: do we have a way to control/limit in-memory database 
> creation?)

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