orleans stale read survives the interleave

✓ Passing This code compiles and runs correctly.

Code

input.k

Actual

  await other-grain — REENTRANT; another turn bumped to 1
  count := 0
  turn resumed ends
the other turn's bump is gone; count is 0

Expected output

  await other-grain — REENTRANT; another turn bumped to 1
  count := 0
  turn resumed ends
the other turn's bump is gone; count is 0

Flows

flow ~new click a branch to expand · @labels scroll to their anchor
new (expr: grain, capacity: 1, source: count: 0[i64])
subflow ~turn.end click a branch to expand · @labels scroll to their anchor
print.ln (expr: " turn {{ turn:s }} ends")
subflow ~state.bump click a branch to expand · @labels scroll to their anchor
stored (source: grain.count: grain.count + 1)
subflow ~call.blocking click a branch to expand · @labels scroll to their anchor
print.ln (expr: " await {{ target:s }} — non-reentrant, turn held")
subflow ~call.interleaving click a branch to expand · @labels scroll to their anchor
stored (source: grain.count: grain.count + 1)
subflow ~state.write click a branch to expand · @labels scroll to their anchor
stored (source: grain.count: v)
flow ~turn.begin click a branch to expand · @labels scroll to their anchor
turn.begin (id: "t1")

Test Configuration

MUST_RUN