akalash commented on pull request #17440:
URL: https://github.com/apache/flink/pull/17440#issuecomment-943469088


   I don't really sure about this proposal because we already create the client 
via clientBuilder, and then, by some reason, we need to wait on a future before 
the call of the one particular method. It looks pretty fragile because if 
tomorrow we will add one more method like that we will need to duplicate this 
waiting.
   In my opinion, the problem is returning the unprepared client. I mean, in 
fact, when we create the PartitionRequestClient we can not use it as is but we 
should wait while it will be ready which seems wrong. At the same time, I agree 
with you that at least we can safely call requestPartition method without 
waiting for channel initialization. 
   So at least right now, I see two solutions:
   
   - Separating PartitionRequestClient into two classes one of them for 
requestPartiton while another for other things(this change looks pretty 
expensive and I don't think that it makes sense now)
   - Adding waiting for channel activation inside every methods that use the 
context:
   
   ```
   Context receiveContext() {
      If(ctx == null) {
        channelActivationFuture.get();
      }
     return ctx;
   }
   
   void announceBufferSize(int bufferSize) {
    Context ctx = receiveContext();
    ctx.....
   }
   ```
   Only one open question for this solution - how to handle the 
interruptedException which is not typical for this place right now.
   
   I will try to come up with other ideas.


-- 
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.

To unsubscribe, e-mail: issues-unsubscr...@flink.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to