[ 
https://issues.apache.org/jira/browse/DERBY-4428?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12771475#action_12771475
 ] 

Rick Hillegas commented on DERBY-4428:
--------------------------------------

Thanks for working on this, Kristian. Some comments follow:

> - the delete mechanism is generic (all storage factories that is writable). 
> Should the feature be in-memory specific, or also be allowed for the on-disk 
> back end?

I think the feature should be designed so that it can be extended to the 
on-disk back end. However, I would treat on-disk back ends as a separate 
JIRA--particularly because they have extra problems as evidenced by your 
comment about the log.

> - authorization (currently it checks if the user is the database owner if 
> authentication is on, doesn't require SQL authorization to be on).

I wonder if we need to check whether authentication is on? In an embedded 
application with no authentication, the default DBO will be APP. I think that 
in such a situation it would be attractive if APP could delete her in-memory 
databases. In such a situation, I think it's enough to require that there be no 
open connections to the database.

> - how to control/limit the creation of in-memory databases?
>    (could be used for DoS attack on a server?)

I agree that there is a DoS attack here. It's related to the DoS attack allowed 
by unlimited creation of on-disk databases, and compounded by the extra memory 
which an in-memory database chews up. The half-checked-in work on system 
privileges (DERBY-2109) defines a Java privilege for creating databases. That 
privilege includes the specification of where you are allowed to create 
databases. I believe that we should build on that work.

Thanks,
-Rick


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