Github user mxm commented on the pull request:

    https://github.com/apache/flink/pull/992#issuecomment-130213092
  
    @HuangWHWHW `read()` method of the `BufferedReader` object returns `-1` in 
case the end of the stream has been reached.
    
    A couple of things I noticed apart from the `retryForever` issue. I wonder 
if we can fix these with this pull request as well:
    
    1. The control flow of the `streamFromSocket` function is hard to predict 
because there are many `while` loops with `break`, `continue`, or `throw` 
statements.
    2. We could use `StringBuilder` instead of `StringBuffer` in this class. 
`StringBuilder` is faster in the case of single-threaded access.
    3. The function reads a single character at a time from the socket. It is 
more efficient to use a buffer and read several characters at once.
    
    @HuangWHWHW You asked how you could count the number of retries in a unit 
test. Typically, you would insert a `Mock` or a `Spy` into your test method. 
Unfortunately, this does not work here because the socket variables is 
overwritten in case of a retry. So for this test, I would recommend creating a 
local `ServerSocket` and let the function connect to this socket. You can then 
control the failures from your test socket. 


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

Reply via email to