> Overall, it seems that `AutoClosable` might be the better interface to > use though because it's more generic.
This sounds good to me. I don't know whether or not it's worth actually transitioning any existing classes from Closeable to AutoCloseable. I don't think it would affect any invocations, but there's the off-chance that someone has assigned an instance to a Closeable variable, which would break. Overalll, it seems like maybe we should leave any Closeable implementations alone and just add AutoCloseable where there's no existing closeable interface. -John On Wed, Oct 3, 2018 at 12:06 PM Matthias J. Sax <matth...@confluent.io> wrote: > Thanks for clarifying. I thought that if we inherit `close() throws > Exception` we need to declare the same exception -- this would have been > an issue. Thus, my backward compatibility concerns are resolved. > > About try-with-resources: I think, allowing to use try-with-resources is > the core motivation of this KIP to begin with. Also note, that `Closable > extends AutoClosable`. Thus, both interfaces work with try-with-resource. > > Overall, it seems that `AutoClosable` might be the better interface to > use though because it's more generic. > > -Matthias > > > On 10/3/18 9:48 AM, Colin McCabe wrote: > > On Sun, Sep 30, 2018, at 13:19, Matthias J. Sax wrote: > >> Closeable is part of `java.io` while AutoClosable is part of > >> `java.lang`. Thus, the second one is more generic. Also, JavaDoc points > >> out that `Closable#close()` must be idempotent while > >> `AutoClosable#close()` can have side effects. > > > > That's an interesting note. Looks like the exact JavaDoc text is: > > > > > Note that unlike the close method of Closeable, this close method is > not > > > required to be idempotent. In other words, calling this close method > more > > > than once may have some visible side effect, unlike Closeable.close > which > > > is required to have no effect if called more than once. However, > > > implementers of this interface are strongly encouraged to make their > close > > > methods idempotent. > > > > So you can make it non-idempotent, but it's still recommended to make it > idempotent. > > > >> > >> Thus, I am not sure atm which one suits better. > >> > >> However, it's a good hint, that `AutoClosable#close()` declares `throws > >> Exception` and thus, it seems to be a backward incompatible change. > >> Hence, I am not sure if we can actually move forward easily with this > KIP. > > > > I was worried about that too, but actually you can implement the > AutoCloseable interface without declaring "throws Exception". In general, > you can implement an interface while throwing a subset of the possible > checked exceptions. > > > > There is one big benefit of AutoCloseable that I haven't seen mentioned > here yet: the ability to use constructrs like try-with-resources > transparently. So you can do things like > > > >> try (MyClass m = new MyClass()) { > >> m.doSomething(...); > >> } > > > > best, > > Colin > > > >> > >> Nit: `RecordCollectorImpl` is an internal class that implements > >> `RecordCollector` -- should `RecordCollector extends AutoCloseable`? > >> > >> > >> -Matthias > >> > >> > >> On 9/27/18 7:46 PM, Chia-Ping Tsai wrote: > >>>> (Although I am not quite sure > >>>> when one is more desirable than the other) > >>> > >>> Most kafka's classes implementing Closeable/AutoCloseable doesn't > throw checked exception in close() method. Perhaps we should have a > "KafkaCloseable" interface which has a close() method without throwing any > checked exception... > >>> > >>> On 2018/09/27 19:11:20, Yishun Guan <gyis...@gmail.com> wrote: > >>>> Hi All, > >>>> > >>>> Chia-Ping, I agree, similar to VarifiableConsumer, VarifiableProducer > >>>> should be implementing Closeable as well (Although I am not quite sure > >>>> when one is more desirable than the other), also I just looked through > >>>> your list - these are some great additions, I will add them to the > >>>> list. > >>>> > >>>> Thanks, > >>>> Yishun > >>>> On Thu, Sep 27, 2018 at 3:26 AM Dongjin Lee <dong...@apache.org> > wrote: > >>>>> > >>>>> Hi Yishun, > >>>>> > >>>>> Thank you for your great KIP. In fact, I have also encountered the > cases > >>>>> where Autoclosable is so desired several times! Let me inspect more > >>>>> candidate classes as well. > >>>>> > >>>>> +1. I also refined your KIP a little bit. > >>>>> > >>>>> Best, > >>>>> Dongjin > >>>>> > >>>>> On Thu, Sep 27, 2018 at 12:21 PM Chia-Ping Tsai <chia7...@apache.org> > wrote: > >>>>> > >>>>>> hi Yishun > >>>>>> > >>>>>> Thanks for nice KIP! > >>>>>> > >>>>>> Q1) > >>>>>> Why VerifiableProducer extend Closeable rather than AutoCloseable? > >>>>>> > >>>>>> Q2) > >>>>>> I grep project and then noticed there are other close methods but > do not > >>>>>> implement AutoCloseable. > >>>>>> For example: > >>>>>> 1) WorkerConnector > >>>>>> 2) MemoryRecordsBuilder > >>>>>> 3) MetricsReporter > >>>>>> 4) ExpiringCredentialRefreshingLogin > >>>>>> 5) KafkaChannel > >>>>>> 6) ConsumerInterceptor > >>>>>> 7) SelectorMetrics > >>>>>> 8) HeartbeatThread > >>>>>> > >>>>>> Cheers, > >>>>>> Chia-Ping > >>>>>> > >>>>>> > >>>>>> On 2018/09/26 23:44:31, Yishun Guan <gyis...@gmail.com> wrote: > >>>>>>> Hi All, > >>>>>>> > >>>>>>> Here is a trivial KIP: > >>>>>>> > >>>>>> > https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=93325308 > >>>>>>> > >>>>>>> Suggestions are welcome. > >>>>>>> > >>>>>>> Thanks, > >>>>>>> Yishun > >>>>>>> > >>>>>> > >>>>> > >>>>> > >>>>> -- > >>>>> *Dongjin Lee* > >>>>> > >>>>> *A hitchhiker in the mathematical world.* > >>>>> > >>>>> *github: <http://goog_969573159/>github.com/dongjinleekr > >>>>> <http://github.com/dongjinleekr>linkedin: > kr.linkedin.com/in/dongjinleekr > >>>>> <http://kr.linkedin.com/in/dongjinleekr>slideshare: > >>>>> www.slideshare.net/dongjinleekr > >>>>> <http://www.slideshare.net/dongjinleekr>* > >>>> > >> > >> Email had 1 attachment: > >> + signature.asc > >> 1k (application/pgp-signature) > >