You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Benedict (JIRA)" <ji...@apache.org> on 2019/08/01 09:37:00 UTC

[jira] [Comment Edited] (CASSANDRA-15225) FileUtils.close() does not handle non-IOException

    [ https://issues.apache.org/jira/browse/CASSANDRA-15225?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16897920#comment-16897920 ] 

Benedict edited comment on CASSANDRA-15225 at 8/1/19 9:36 AM:
--------------------------------------------------------------

{quote}2) Log statement has only one '{}'. I don't think it will print exception. I prefer caller to handle the logging part.
{quote}
This (the way [~Override] has it) is the correct way to print exceptions; otherwise only their {{toString()}} method is invoked.
{quote}1) Insteasd of modifying already thrown exception, better to create new exception and call _newException_.addSuppressed. When the caller calls _newException_.getSuppressed, accurate list exceptions are returned.
{quote}
I don't think it is correct to have add exceptions with {{addSuppressed}}.  

It _is_ the case that often a new exception is created in any place exceptions are caught, so that the re-throwing method is captured in the trace, however you would always want a {{cause}} in preference to adding a member of {{getSuppressed}}.  

However, I don't think this anyway always adds value.  If I were personally writing it, I would likely have done it the way [~Override] has done.  There's an alternative, which is to create a new exception whose {{cause}} is the first caught exception, and to {{addSuppressed}} any remaining exceptions to this new exception.  But I think it's preferable to rethrow the original exception here, to avoid polluting the printed stack trace, and minimise the risk that "helpful" tools truncate some of this trace

[~Override]: LGTM, I will merge it alongside your other patch and some others I will be reviewing hopefully today or tomorrow - unless you want to make any changes in light of [~n.v.harikrishna]'s feedback?


was (Author: benedict):
{quote}2) Log statement has only one '{}'. I don't think it will print exception. I prefer caller to handle the logging part.
{quote}
This (the way [~Override] has it) is the correct way to print exceptions; otherwise only their {{toString()}} method is invoked.
{quote}1) Insteasd of modifying already thrown exception, better to create new exception and call _newException_.addSuppressed. When the caller calls _newException_.getSuppressed, accurate list exceptions are returned.
{quote}
I don't think it is correct to have add exceptions with {{addSuppressed}}.  

It _is_ the case that often a new exception is created in any place exceptions are caught, so that the re-throwing method is captured in the trace, however you would always want a {{cause}} in preference to adding a member of {{getSuppressed}}.  

However, I don't think this anyway always adds value.  If I were personally writing it, I would likely have done it the way [~Override] has done.  There's an alternative, which is to create a new exception whose {{cause}} is the first caught exception, and to {{addSuppressed}} any remaining exceptions to this new exception.  But I think it's preferable to rethrow the original exception here, to avoid polluting the printed stack trace, and minimise the risk that "helpful" tools truncate some of this trace

[~Override]: LGTM, I will merge it alongside your other patch and some others I will be reviewing hopefully today or tomorrow.

> FileUtils.close() does not handle non-IOException
> -------------------------------------------------
>
>                 Key: CASSANDRA-15225
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-15225
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Local/SSTable
>            Reporter: Benedict
>            Assignee: Liudmila Kornilova
>            Priority: Normal
>              Labels: pull-request-available
>             Fix For: 3.0.x, 3.11.x, 4.0.x
>
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> This can lead to {{close}} not being invoked on remaining items



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org