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

Jason Kania commented on FLINK-16468:
-------------------------------------

[~gjy], In looking at my particular situation as a reference, the network 
outage seemed to be just less than one minute and that was more than enough to 
bring Flink, the running jobs and the related queuing applications to the point 
where they were not recoverable on their own after the network recovered. What 
I hope from a recovery strategy, and have implemented in the telecoms industry 
in the past, is that this recovery can happen on its own. The 1 second delay 
only seems to moderate the CPU utilization but not help with the applications 
giving up and being left in an unknown state.

Without some form of increasing backoff, you either need to have a large number 
of retries or expect the application to give up. Since the applications will 
take at least 10 seconds to restart, the different components bouncing at the 
same time in an outage such as this means there is just too much instability 
for all the components to recover.

That said, I understand what you mean about not having control over the 
libraries such as Curator, for example. Just today, I managed to create an 
unhandled exception where the zookeeper client gave up, leaving Flink in a 
funny state by playing with the network interface.

I also think that the 1.10 documentation is an improvement. The test will be 
once we migrate to using it.

Maybe having a pluggable restart strategy for all components could better allow 
users to handle the particulars of each installation?

> BlobClient rapid retrieval retries on failure opens too many sockets
> --------------------------------------------------------------------
>
>                 Key: FLINK-16468
>                 URL: https://issues.apache.org/jira/browse/FLINK-16468
>             Project: Flink
>          Issue Type: Bug
>          Components: Runtime / Coordination
>    Affects Versions: 1.8.3, 1.9.2, 1.10.0
>         Environment: Linux ubuntu servers running, patch current latest 
> Ubuntu patch current release java 8 JRE
>            Reporter: Jason Kania
>            Priority: Major
>             Fix For: 1.11.0
>
>
> In situations where the BlobClient retrieval fails as in the following log, 
> rapid retries will exhaust the open sockets. All the retries happen within a 
> few milliseconds.
> {noformat}
> 2020-03-06 17:19:07,116 ERROR org.apache.flink.runtime.blob.BlobClient - 
> Failed to fetch BLOB 
> cddd17ef76291dd60eee9fd36085647a/p-bcd61652baba25d6863cf17843a2ef64f4c801d5-c1781532477cf65ff1c1e7d72dccabc7
>  from aaa-1/10.0.1.1:45145 and store it under 
> /tmp/blobStore-7328ed37-8bc7-4af7-a56c-474e264157c9/incoming/temp-00000004 
> Retrying...
> {noformat}
> The above is output repeatedly until the following error occurs:
> {noformat}
> java.io.IOException: Could not connect to BlobServer at address 
> aaa-1/10.0.1.1:45145
>  at org.apache.flink.runtime.blob.BlobClient.<init>(BlobClient.java:100)
>  at 
> org.apache.flink.runtime.blob.BlobClient.downloadFromBlobServer(BlobClient.java:143)
>  at 
> org.apache.flink.runtime.blob.AbstractBlobCache.getFileInternal(AbstractBlobCache.java:181)
>  at 
> org.apache.flink.runtime.blob.PermanentBlobCache.getFile(PermanentBlobCache.java:202)
>  at 
> org.apache.flink.runtime.execution.librarycache.BlobLibraryCacheManager.registerTask(BlobLibraryCacheManager.java:120)
>  at 
> org.apache.flink.runtime.taskmanager.Task.createUserCodeClassloader(Task.java:915)
>  at org.apache.flink.runtime.taskmanager.Task.doRun(Task.java:595)
>  at org.apache.flink.runtime.taskmanager.Task.run(Task.java:530)
>  at java.lang.Thread.run(Thread.java:748)
> Caused by: java.net.SocketException: Too many open files
>  at java.net.Socket.createImpl(Socket.java:478)
>  at java.net.Socket.connect(Socket.java:605)
>  at org.apache.flink.runtime.blob.BlobClient.<init>(BlobClient.java:95)
>  ... 8 more
> {noformat}
>  The retries should have some form of backoff in this situation to avoid 
> flooding the logs and exhausting other resources on the server.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to