> Tracking these metrics consistently will introduce the same problem as
    > precisely tracking throttling numbers across multiple controllers, I 
think,
    > where either there is delay introduced to use remote data, or eventual
    > consistency will introduce inaccurate data.
    >
    
    If you're talking about limit enforcement, you're right! Regarding the
    concurrency on each container though, we are able to accurately track that
    and we need to be able to make sure that actual concurrency is always <= C.
    
    
    >
    > I’m interested to know if this accuracy is important as long as actual
    > concurrency <= C?
    >
    
    I don't think it is as much, no. But how do you keep <= C if you don't
    accurately track?
    
Maybe I should say that while we cannot accurately track, we can still 
guarantee <= C, we just cannot guarantee maximizing concurrency up to C.

Since the HTTP requests are done via futures in proxy, the messaging between 
pool and proxy doesn't have an accurate way to get exactly C requests in 
flight, but can prevent ever sending > C messages that cause the HTTP requests. 
The options for this are:
- track in flight requests in the pool; passing C will cause more containers to 
be used, but probably the container will always only have < C in flight.
- track in flight requests in the proxy; passing C will cause the message in 
proxy to be stashed/delayed until some HTTP requests are completed, and if the 
>C state remains, the pool will eventually learn this state and cause more 
containers to be used.

(current impl in the PR does the latter) 

Thanks
Tyson
 

Reply via email to