-
Notifications
You must be signed in to change notification settings - Fork 565
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Simplify stream priority. #453
Conversation
Just read through it, I think it looks good. I'd like to understand how weight of the stream is calculated and changed. Here is my understanding:
X<--(w)--Y means that Y depends on X with weight w (and w is initial weight).
If parent stream is closed, then its initial weight is distributed to among the child streams and this updates initial weight of child stream.
|
@jpinner thanks for this. I'll have to read through this more carefully before I comment. @tatsuhiro-t that seems right. Note that this means that a server might want to maintain more precision on it's weight values than the 8 bits we mandate in the protocol. That said, if there are deep dependency trees and you are killing off nodes that are high up, at some point you will need to round off, so I think that how much precision is allocated is largely a discretionary thing. |
Looks good. On Sat, Apr 12, 2014 at 11:33 AM, Martin Thomson
|
It seems that we can make a stream to depend on stream 0x0 exclusively, which makes all existing connections its descendant. This is not possible in the current draft version. I wonder this can be directly proxy-able since stream 0x0 is imaginable stream. |
Yea, the idea is that '0' is a reserved stream ID, and so it is safe to use On Mon, Apr 14, 2014 at 7:57 PM, Tatsuhiro Tsujikawa <
|
Well, then we should explicitly say that receiver must treat exclusive bit as 0 if stream ID field is 0. |
@martinthomson I would add an explicit hint to implementers that having more than 8 bits of internal precision is a good thing. @tatsuhiro-t I think we should leave open the possibility to insert a new stream between the connexion and all its children, even if it's probably a large re-prioritization. |
I think large re-prioritization is not a problem. If proxy gets such requests and it aggregates several frontend connections to single backend connection, inserting under stream 0x0 with exclusive flag set seems to be impossible in backend. |
If it aggregates to a different backend connection it is not impossible to proxy. Consider streams A and B depend on stream 0x0 and are proxied to some backend connection as streams X and Y. If we get a new streams, C, that exclusively depends on 0x0, we can proxy it as stream Z by dropping the exclusive dependency and then re-prioritizing streams X and Y to depend on stream Z. |
Yes, it works like that. But if we just don't allow 0x0 with exclusive dependency, we can do all priority stuff via proxy without doing any extra handling except for stream ID mappings. |
Yep, true -- I don't have much of a preference -- if clients feel like it is not an important use case than I am perfectly happy to disallow it. |
Is it possible to move this discussion to the mailing list? If you need On Tue Apr 15 2014 at 9:39:56 AM, Jeff Pinner notifications@github.com
|
The priority groups are abandoned in favor of a single weighted dependency tree.
The root node of the tree is the connection, assigned the stream identifier 0x0.
By default, streams are assigned a stream dependency of 0x0 with a weight of 16.