[ https://issues.apache.org/jira/browse/FLINK-11122?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16716700#comment-16716700 ]
ASF GitHub Bot commented on FLINK-11122: ---------------------------------------- StefanRRichter commented on a change in pull request #7273: [FLINK-11122][core] Change signature of WrappingProxyUtil#stripProxy(T) URL: https://github.com/apache/flink/pull/7273#discussion_r240538098 ########## File path: flink-core/src/main/java/org/apache/flink/util/WrappingProxyUtil.java ########## @@ -31,15 +33,19 @@ private WrappingProxyUtil() { } @SuppressWarnings("unchecked") - public static <T> T stripProxy(T object) { + public static <T> T stripProxy(@Nullable final WrappingProxy<T> wrappingProxy) { + if (wrappingProxy == null) { + return null; + } - T previous = null; + WrappingProxy<T> previous = null; + Object delegate = wrappingProxy.getWrappedDelegate(); - while (object instanceof WrappingProxy && previous != object) { - previous = object; - object = ((WrappingProxy<T>) object).getWrappedDelegate(); + while (delegate instanceof WrappingProxy && previous != delegate) { + previous = (WrappingProxy<T>) delegate; + delegate = ((WrappingProxy<T>) delegate).getWrappedDelegate(); Review comment: I think casting to `(WrappingProxy<T>)` here is problematic because the getter will already implicitly cast the returned object to `T` and you are in the cast exception that the rest of the code tries to avoid now. I suggest maybe rather this: ``` Object previous = null; Object delegate = wrappingProxy.getWrappedDelegate(); while (delegate instanceof WrappingProxy && previous != delegate) { previous = delegate; delegate = ((WrappingProxy<?>) delegate).getWrappedDelegate(); } return (T) delegate; ``` ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > SafetyNetCloseableRegistryTest fails with ClassCastException > ------------------------------------------------------------ > > Key: FLINK-11122 > URL: https://issues.apache.org/jira/browse/FLINK-11122 > Project: Flink > Issue Type: Sub-task > Components: Tests > Reporter: Gary Yao > Assignee: Gary Yao > Priority: Major > Labels: pull-request-available > Fix For: 1.8.0 > > > When compiling and running {{SafetyNetCloseableRegistryTest}} with Java 9, > some tests fail with a {{ClassCastException}} > {noformat} > java.lang.AssertionError: java.lang.ClassCastException: > org.apache.flink.core.fs.local.LocalDataOutputStream cannot be cast to > org.apache.flink.core.fs.WrappingProxyCloseable > at > org.apache.flink.core.fs.SafetyNetCloseableRegistry$PhantomDelegatingCloseableRef.<init>(SafetyNetCloseableRegistry.java:156) > at > org.apache.flink.core.fs.SafetyNetCloseableRegistry.doRegister(SafetyNetCloseableRegistry.java:99) > at > org.apache.flink.core.fs.SafetyNetCloseableRegistry.doRegister(SafetyNetCloseableRegistry.java:50) > at > org.apache.flink.util.AbstractCloseableRegistry.registerCloseable(AbstractCloseableRegistry.java:79) > at > org.apache.flink.core.fs.ClosingFSDataOutputStream.wrapSafe(ClosingFSDataOutputStream.java:101) > at > org.apache.flink.core.fs.SafetyNetWrapperFileSystem.create(SafetyNetWrapperFileSystem.java:127) > at > org.apache.flink.core.fs.SafetyNetCloseableRegistryTest$3.go(SafetyNetCloseableRegistryTest.java:120) > at > org.apache.flink.core.testutils.CheckedThread.run(CheckedThread.java:74) > {noformat} > This is due to the problematic signature in > {{WrappingProxyUtil#stripProxy(T)}}, which expects a generic type {{T}} and > also returns {{T}}. -- This message was sent by Atlassian JIRA (v7.6.3#76005)