Github user revans2 commented on a diff in the pull request:

    https://github.com/apache/storm/pull/2743#discussion_r198988037
  
    --- Diff: 
storm-server/src/main/java/org/apache/storm/metric/timed/TimedResource.java ---
    @@ -0,0 +1,29 @@
    +/**
    + * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.
    + * See the NOTICE file distributed with this work for additional 
information regarding copyright ownership.
    + * The ASF licenses this file to you under the Apache License, Version 2.0 
(the "License");
    + * you may not use this file except in compliance with the License.  You 
may obtain a copy of the License at
    + *
    + * http://www.apache.org/licenses/LICENSE-2.0
    + *
    + * Unless required by applicable law or agreed to in writing,
    + * software distributed under the License is distributed on an "AS IS" 
BASIS,
    + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    + * See the License for the specific language governing permissions and 
limitations under the License.
    + */
    +
    +package org.apache.storm.metric.timed;
    +
    +import com.codahale.metrics.Timer;
    +
    +public class TimedResource<T extends AutoCloseable> extends Timed<T> {
    +    public TimedResource(T measured, Timer timer) {
    +        super(measured, timer);
    +    }
    +
    +    @Override
    +    public void close() throws Exception {
    +        super.close();
    --- End diff --
    
    Could we please change this a bit?  Stopping the timer is not nearly as 
important as actually closing the resource, and if stopping the timer throws 
any kind of exception it will not stop the resource.  Could we do something 
more like.
    
    ```
    try {
        super.close();
    } finally {
        getMeasured().close();
    }
    ```
    
    This should guarantee that we close the resource always, and if an 
exception is thrown in both cases the resource exception takes precedent and in 
newer versions of java the other exception will show up as a Suppressed 
exception.


---

Reply via email to