On 2 December 2014 at 20:44, Thomas Neidhart <[email protected]> wrote:
> On 12/02/2014 06:35 PM, sebb wrote:
>> On 11 November 2014 at 20:09, <[email protected]> wrote:
>>> Author: tn
>>> Date: Tue Nov 11 20:09:32 2014
>>> New Revision: 1638340
>>>
>>> URL: http://svn.apache.org/r1638340
>>> Log:
>>> [FILEUPLOAD-242] Do not silently swallow all Throwables.
>>>
>>> Modified:
>>> commons/proper/fileupload/trunk/src/changes/changes.xml
>>>
>>> commons/proper/fileupload/trunk/src/main/java/org/apache/commons/fileupload/FileUploadBase.java
>>>
>>> Modified: commons/proper/fileupload/trunk/src/changes/changes.xml
>>> URL:
>>> http://svn.apache.org/viewvc/commons/proper/fileupload/trunk/src/changes/changes.xml?rev=1638340&r1=1638339&r2=1638340&view=diff
>>> ==============================================================================
>>> --- commons/proper/fileupload/trunk/src/changes/changes.xml (original)
>>> +++ commons/proper/fileupload/trunk/src/changes/changes.xml Tue Nov 11
>>> 20:09:32 2014
>>> @@ -44,6 +44,7 @@ The <action> type attribute can be add,u
>>>
>>> <body>
>>> <release version="1.4" date="TBA" description="TBA">
>>> + <action issue="FILEUPLOAD-242" dev="tn" type="fix">FileUploadBase -
>>> should not silently catch and ignore all Throwables</action>
>>> <action issue="FILEUPLOAD-257" dev="tn" type="fix">Fix Javadoc 1.8.0
>>> errors</action>
>>> <action issue="FILEUPLOAD-234" dev="tn" type="fix">Fix section
>>> "Resource cleanup" of the user guide</action>
>>> <action issue="FILEUPLOAD-237" dev="tn" type="fix">Fix streaming
>>> example: use FileItem.getInputStream() instead of openStream()</action>
>>>
>>> Modified:
>>> commons/proper/fileupload/trunk/src/main/java/org/apache/commons/fileupload/FileUploadBase.java
>>> URL:
>>> http://svn.apache.org/viewvc/commons/proper/fileupload/trunk/src/main/java/org/apache/commons/fileupload/FileUploadBase.java?rev=1638340&r1=1638339&r2=1638340&view=diff
>>> ==============================================================================
>>> ---
>>> commons/proper/fileupload/trunk/src/main/java/org/apache/commons/fileupload/FileUploadBase.java
>>> (original)
>>> +++
>>> commons/proper/fileupload/trunk/src/main/java/org/apache/commons/fileupload/FileUploadBase.java
>>> Tue Nov 11 20:09:32 2014
>>> @@ -366,8 +366,8 @@ public abstract class FileUploadBase {
>>> for (FileItem fileItem : items) {
>>> try {
>>> fileItem.delete();
>>> - } catch (Throwable e) {
>>> - // ignore it
>>> + } catch (Throwable t) {
>>> + handleThrowable(t);
>>
>> In this case, surely it would make more sense to just catch Exception?
>>
>> I agree that it is vital that TD and VME are not ignored, but other
>> Throwables should be not be ignored either here.
>
> I thought about that too but it was very unclear why it was catching
> Throwable in the first place.
It may just have been laziness.
> If you too think catching Exception would
> be sufficient than let's change it to that.
Yes, I think that would be enough.
Though I wonder why it does not report problems deleting the files.
AFAICT the FileCleaningTracker keeps track of files that it cannot delete.
> Thomas
>
>>
>>> }
>>> }
>>> }
>>> @@ -375,6 +375,25 @@ public abstract class FileUploadBase {
>>> }
>>>
>>> /**
>>> + * Checks whether the supplied Throwable is one that needs to be
>>> + * rethrown and swallows all others.
>>> + * @param t the Throwable to check
>>> + */
>>> + private void handleThrowable(Throwable t) {
>>> + if (t instanceof ThreadDeath) {
>>> + throw (ThreadDeath) t;
>>> + }
>>> + if (t instanceof StackOverflowError) {
>>> + // Swallow silently - it should be recoverable
>>> + return;
>>> + }
>>> + if (t instanceof VirtualMachineError) {
>>> + throw (VirtualMachineError) t;
>>> + }
>>> + // All other instances of Throwable will be silently swallowed
>>> + }
>>> +
>>> + /**
>>> * Processes an <a href="http://www.ietf.org/rfc/rfc1867.txt">RFC
>>> 1867</a>
>>> * compliant <code>multipart/form-data</code> stream.
>>> *
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]