Subject: Dependency based properties

From: Tatsuhiro Tsujikawa <[email-masked]>
Date: Thu, 27 Mar 2014 09:56:36 +0900

I have following questions about dependency based properties.

1. Suppose we have formed following drpendency:

A <- B (B depends on A)
A <- C
B <- D

If A and B cannot make a progress, do C and D have the same precedence?

2. Another dependency setup:

A <- B
A <- C
B <- D
C <- E

If we make B depend on X,  only B and C are moved to under X and drpendency
now looks like this:

A <- C
C <- E
X <- B
B <- D

Is this correct?

3. Same initial dependency setup with 2.

If we move B to Y with exclusive flag set and we have Y <- Z dependency,
the final result look like this:

Y <- B
B <- D
B <- Z

Is this correct?

Best regards,
Tatsuhiro Tsujikawa

---

From: Roberto Peon <[email-masked]>
Date: Wed, 26 Mar 2014 18:42:23 -0700

A <-- B <-- D
   \- C
I'd assume C would make progress before D given it is closer to the root.

> 2. Another dependency setup:
A <-- B <-- D
   \- C <-- E

> If we make B depend on X,  only B and C are moved to under X and
> drpendency now looks like this:
>
> A <- C
> C <- E
> X <- B
> B <- D
>
becomes:
A <-- C <-- E
X <-- B <-- D

> the final result look like this:
I'm honestly not sure what you're going for here. :)
-=R

---

From: Tatsuhiro Tsujikawa <[email-masked]>
Date: Thu, 27 Mar 2014 17:50:02 +0900

2014/03/27 10:42 "Roberto Peon" <[email-masked]>:
>
>
>
>
> On Wed, Mar 26, 2014 at 5:56 PM, Tatsuhiro Tsujikawa <
> I'd assume C would make progress before D given it is closer to the root.

Thank you. 'Closer to the root' is a good reason.

> X <-- B <-- D

Ok

> I'm honestly not sure what you're going for here. :)

I'd like to clarify the general case where moving stream had descendants.
The current draft only shows simple case where moving stream has no
descendant.

I forgot to ask following one:

4. Same initial setup with 1.

If B is closed, then do C and D have the same precedence?

A <-- D
     \- C

If B and C is css and D is js, and client really wants css before js, it
has to move D under C. But I don't know clients really care about this.

Best regards,

Tatsuhiro Tsujikawa

---

From: Martin Thomson <[email-masked]>
Date: Thu, 27 Mar 2014 11:56:45 -0700

> Thank you. 'Closer to the root' is a good reason.

I had assumed an implementation that wouldn't respect this "closer to
the root" property, but that isn't the only implementation I can
imagine.

Note that you haven't really said anything at all about the relative
priority of C and D.  It could be that a "longer" tail is actually
more interesting to the client, but either way, the client has the
means of expressing an actual preference using prioritization.  In all
other cases, the server is left to guess.

> If B is closed, then do C and D have the same precedence?

Same as above.  C and D are assigned no relative weighting or
dependency, so the order in which the server allocates resources is
indeterminate.

---

From: Roberto Peon <[email-masked]>
Date: Thu, 27 Mar 2014 12:04:18 -0700

> dependency, so the order in which the server allocates resources is

It depends also on how the server decides to do cleanup.
It could keep knowledge around that 'b' existed, and so act more closely to
what the client probably intended, but it could also immediately modify the
deps and execute on it, as you've assumed above.
-=R

---

From: Martin Thomson <[email-masked]>
Date: Thu, 27 Mar 2014 12:52:00 -0700

> deps and execute on it, as you've assumed above.

My point was really that it doesn't matter, because the client has
(effectively) said that it doesn't matter.

---

From: Tatsuhiro Tsujikawa <[email-masked]>
Date: Sun, 30 Mar 2014 01:10:53 +0900

My concerns are all cleared now. Thank you.

BTW, I just read https://github.com/http2/http2-spec/pull/435 and it covers
most of my questions.
I hope it will get merged.

Best regards,
Tatsuhiro Tsujikawa