[ 
http://issues.apache.org/jira/browse/DERBY-336?page=comments#action_12314532 ] 

Dyre Tjeldvoll commented on DERBY-336:
--------------------------------------

Thanks for your comments, David!

I see what you are saying about FILE_CANNOT_REMOVE_FILE, but look at how it is 
used other places in the code:

./java/engine/org/apache/derby/impl/store/raw/data/RFResource.java:261:
           SQLState.FILE_CANNOT_REMOVE_FILE, fileToGo);
./java/engine/org/apache/derby/impl/store/raw/data/RAFContainer.java:1077:
               newException(SQLState.FILE_CANNOT_REMOVE_FILE, se, file,
./java/engine/org/apache/derby/impl/store/raw/data/RAFContainer.java:1102:
                   SQLState.FILE_CANNOT_REMOVE_FILE, ioe2, file, ioe);
./java/engine/org/apache/derby/impl/store/raw/data/RAFContainer.java:1107:
                   SQLState.FILE_CANNOT_REMOVE_FILE, se, file, stub);
./java/engine/org/apache/derby/iapi/reference/SQLState.java:489:        String 
FILE_CANNOT_REMOVE_FILE                              = "XSDF4.S";

As you can see, this error message is used both with one and TWO nested 
exceptions (in much the same way as FILE_CREATE_NO_CLEANUP), 
so you cannot remove the additional parameter from the message string. I agree 
that you can choose to supply the same exception both as the nested exception, 
and as a parameter, but I doubt that this is why the error message is written 
the way it is... Also, notice the first use of this message, where NO nested 
exception is supplied! 
---
I think you are correct about using a string argument. However, I was cautioned 
about converting arguments to string before it is necessary, as this could lead 
to performance problems,  (if the exception is caught, the conversion to string 
is unnecessary). But in this particular case I doubt that performance is 
relevant, so I'll consider changing it... 
---
I understand your concerns about the dummy overloads, - it is a non-standard 
and non-intuitive construct. I was not sure if I should include them in the 
patch or just use them locally to find the StandardException usages that needed 
to be fixed. In the end, I decided to include them since it is easy to make 
another such mistake later, (and you will not be warned about it).

> The wrong overload of StandardException::newException() is used in some cases
> -----------------------------------------------------------------------------
>
>          Key: DERBY-336
>          URL: http://issues.apache.org/jira/browse/DERBY-336
>      Project: Derby
>         Type: Bug
>  Environment: Any
>     Reporter: Dyre Tjeldvoll
>     Assignee: Dyre Tjeldvoll
>     Priority: Trivial
>  Attachments: derby-336.diff, derby-336.stat, derbyall_report.txt
>
> When looking at DERBY-128 it became clear that the wrong overload of 
> StandardException::newException() was used when reporting
> SQLState.SERVICE_DIRECTORY_CREATE_ERROR. The message string only takes one 
> parameter so only one additional parameter (other than Throwable) should be 
> used:
> PersistentServiceImpl.java:676
>                             throw 
> StandardException.newException(SQLState.SERVICE_DIRECTORY_CREATE_ERROR,
>                                                                  
> serviceDirectory, null);
> // Calls StandardException.newException(String, Object, Object)
> // Should call StandardException.newException(String, Object)? Or 
> StandardException.newException(String, Throwable, Object)? With the 
> IOException as  
> // Throwable?
> PersistentServiceImpl.java:692
>         throw 
> StandardException.newException(SQLState.SERVICE_DIRECTORY_CREATE_ERROR, name, 
> t);
> // Calls StandardException.newException(String, Object, Object)
> // Should call StandardException.newException(String, Throwable, Object)?
> BaseDataFileFactory.java:279
>                 throw StandardException.newException( 
> SQLState.SERVICE_DIRECTORY_CREATE_ERROR, dataDirectory, ioe);
> // Calls StandardException.newException(String, Object, Object)
> // Should call StandardException.newException(String, Throwable, Object)?

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to