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

ASF GitHub Bot commented on FLINK-8067:
---------------------------------------

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

    https://github.com/apache/flink/pull/6081#discussion_r195125463
  
    --- Diff: 
flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/tasks/StreamTaskTest.java
 ---
    @@ -806,6 +811,44 @@ public void testOperatorClosingBeforeStopRunning() 
throws Throwable {
                }
        }
     
    +   /**
    +    * Test set user code ClassLoader before calling ProcessingTimeCallback.
    +    */
    +   @Test
    +   public void testSetsUserCodeClassLoaderForTimerThreadFactory() throws 
Throwable {
    +           syncLatch = new OneShotLatch();
    +
    +           try (MockEnvironment mockEnvironment =
    +                   new MockEnvironmentBuilder()
    +                           .setUserCodeClassLoader(new 
TestUserCodeClassLoader())
    +                           .build()) {
    +                   TimeServiceTask timerServiceTask = new 
TimeServiceTask(mockEnvironment);
    +
    +                   final AtomicReference<Throwable> atomicThrowable = new 
AtomicReference<>(null);
    +
    +                   CompletableFuture<Void> invokeFuture = 
CompletableFuture.runAsync(
    +                           () -> {
    +                                   try {
    +                                           timerServiceTask.invoke();
    +                                   } catch (Exception e) {
    +                                           atomicThrowable.set(e);
    --- End diff --
    
    you can fail this with a `CompletionException` instead, then we don't need 
the atomic reference and will fail at `invokeFuture.get`


> User code ClassLoader not set before calling ProcessingTimeCallback
> -------------------------------------------------------------------
>
>                 Key: FLINK-8067
>                 URL: https://issues.apache.org/jira/browse/FLINK-8067
>             Project: Flink
>          Issue Type: Bug
>          Components: Streaming
>    Affects Versions: 1.4.0
>            Reporter: Gary Yao
>            Assignee: vinoyang
>            Priority: Minor
>             Fix For: 1.6.0, 1.5.1
>
>
> The user code ClassLoader is not set as the context ClassLoader for the 
> thread invoking {{ProcessingTimeCallback#onProcessingTime(long timestamp)}}:
> https://github.com/apache/flink/blob/84a07a34ac22af14f2dd0319447ca5f45de6d0bb/flink-streaming-java/src/main/java/org/apache/flink/streaming/runtime/tasks/StreamTask.java#L222
> This is problematic, for example, if user code dynamically loads classes in 
> {{ProcessFunction#onTimer(long timestamp, OnTimerContext ctx, Collector<O> 
> out)}} using the current thread's context ClassLoader (also see FLINK-8005).



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to