rmetzger commented on pull request #14499:
URL: https://github.com/apache/flink/pull/14499#issuecomment-761008849


   During my manual test, it seems that I can intercept a System.exit() in user 
code of a batch job:
   
   ```
   2021-01-15 16:16:01,950 WARN  
org.apache.flink.runtime.security.FlinkSecurityManager       [] - Exiting JVM 
with status 0 is monitored: The system will exit due to this call.
   org.apache.flink.runtime.UserSystemExitException: Flink user code attempted 
to exit JVM.
           at 
org.apache.flink.runtime.security.FlinkSecurityManager.checkExit(FlinkSecurityManager.java:180)
 [flink-dist_2.11-1.13-SNAPSHOT.jar:1.13-SNAPSHOT]
           at java.lang.Runtime.exit(Runtime.java:107) [?:1.8.0_252]
           at java.lang.System.exit(System.java:973) [?:1.8.0_252]
           at de.robertmetzger.BatchJob$1.map(BatchJob.java:51) 
[blob_p-f236836ff40f8dac63909ec8c69fb02a0823541c-6253f79b4f1453ea0b6abe7b75c2857e:?]
           at de.robertmetzger.BatchJob$1.map(BatchJob.java:46) 
[blob_p-f236836ff40f8dac63909ec8c69fb02a0823541c-6253f79b4f1453ea0b6abe7b75c2857e:?]
           at 
org.apache.flink.runtime.operators.chaining.ChainedMapDriver.collect(ChainedMapDriver.java:78)
 [flink-dist_2.11-1.13-SNAPSHOT.jar:1.13-SNAPSHOT]
           at 
org.apache.flink.runtime.operators.util.metrics.CountingCollector.collect(CountingCollector.java:35)
 [flink-dist_2.11-1.13-SNAPSHOT.jar:1.13-SNAPSHOT]
           at 
org.apache.flink.runtime.operators.DataSourceTask.invoke(DataSourceTask.java:204)
 [flink-dist_2.11-1.13-SNAPSHOT.jar:1.13-SNAPSHOT]
           at org.apache.flink.runtime.taskmanager.Task.doRun(Task.java:762) 
[flink-dist_2.11-1.13-SNAPSHOT.jar:1.13-SNAPSHOT]
           at org.apache.flink.runtime.taskmanager.Task.run(Task.java:571) 
[flink-dist_2.11-1.13-SNAPSHOT.jar:1.13-SNAPSHOT]
           at java.lang.Thread.run(Thread.java:748) [?:1.8.0_252]
   
   ```
   
   For streaming jobs, intercepting regular operators (such as map), works fine 
as well. 
   
   However for sources, it won't work.
   The StackTrace to a source is the following:
   ```
   2021-01-15 16:21:45,859 INFO  de.robertmetzger.StreamingJob                  
              [] - I'M here on the Taskmanager
   java.lang.RuntimeException: null
           at de.robertmetzger.StreamingJob$2.map(StreamingJob.java:70) 
[blob_p-eb6613e604b074ad283e611328dcbf036a1f86cb-4d496ef1ec5656acaa10612f41dc4839:?]
           at de.robertmetzger.StreamingJob$2.map(StreamingJob.java:67) 
[blob_p-eb6613e604b074ad283e611328dcbf036a1f86cb-4d496ef1ec5656acaa10612f41dc4839:?]
           at 
org.apache.flink.streaming.api.operators.StreamMap.processElement(StreamMap.java:38)
 [flink-dist_2.11-1.13-SNAPSHOT.jar:1.13-SNAPSHOT]
           at 
org.apache.flink.streaming.runtime.tasks.CopyingChainingOutput.pushToOperator(CopyingChainingOutput.java:71)
 [flink-dist_2.11-1.13-SNAPSHOT.jar:1.13-SNAPSHOT]
           at 
org.apache.flink.streaming.runtime.tasks.CopyingChainingOutput.collect(CopyingChainingOutput.java:46)
 [flink-dist_2.11-1.13-SNAPSHOT.jar:1.13-SNAPSHOT]
           at 
org.apache.flink.streaming.runtime.tasks.CopyingChainingOutput.collect(CopyingChainingOutput.java:26)
 [flink-dist_2.11-1.13-SNAPSHOT.jar:1.13-SNAPSHOT]
           at 
org.apache.flink.streaming.api.operators.CountingOutput.collect(CountingOutput.java:50)
 [flink-dist_2.11-1.13-SNAPSHOT.jar:1.13-SNAPSHOT]
           at 
org.apache.flink.streaming.api.operators.CountingOutput.collect(CountingOutput.java:28)
 [flink-dist_2.11-1.13-SNAPSHOT.jar:1.13-SNAPSHOT]
           at 
org.apache.flink.streaming.api.operators.StreamSourceContexts$ManualWatermarkContext.processAndCollect(StreamSourceContexts.java:317)
 [flink-dist_2.11-1.13-SNAPSHOT.jar:1.13-SNAPSHOT]
           at 
org.apache.flink.streaming.api.operators.StreamSourceContexts$WatermarkContext.collect(StreamSourceContexts.java:411)
 [flink-dist_2.11-1.13-SNAPSHOT.jar:1.13-SNAPSHOT]
           at de.robertmetzger.StreamingJob$1.run(StreamingJob.java:57) 
[blob_p-eb6613e604b074ad283e611328dcbf036a1f86cb-4d496ef1ec5656acaa10612f41dc4839:?]
           at 
org.apache.flink.streaming.api.operators.StreamSource.run(StreamSource.java:110)
 [flink-dist_2.11-1.13-SNAPSHOT.jar:1.13-SNAPSHOT]
           at 
org.apache.flink.streaming.api.operators.StreamSource.run(StreamSource.java:66) 
[flink-dist_2.11-1.13-SNAPSHOT.jar:1.13-SNAPSHOT]
           at 
org.apache.flink.streaming.runtime.tasks.SourceStreamTask$LegacySourceFunctionThread.run(SourceStreamTask.java:245)
 [flink-dist_2.11-1.13-SNAPSHOT.jar:1.13-SNAPSHOT]
   ```
   
   I believe sources are relatively important, in particular because some users 
have their own implementations there.
   @hwanju do you want to address this in this PR, or in a follow up?


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to 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


Reply via email to