diff --git a/book/Untitled Diagram.drawio b/book/Untitled Diagram.drawio deleted file mode 100644 index be3dd073..00000000 --- a/book/Untitled Diagram.drawio +++ /dev/null @@ -1 +0,0 @@ -7VhZc9MwEP41Hp5gfBQnecRp0wKhU2ihw6NiK7aI7DWynINfzyqWYzsOOYD0yDQv0a43K2m/b4/YcPrx/FKQNPoEAeWGbQZzwzk3bNuybQe/lGZRaLq9bqEIBQu0UaW4Zb+oVppam7OAZg1DCcAlS5tKH5KE+rKhI0LArGk2Bt7cNSUhbSlufcLb2nsWyEjfwu5U+ivKwqjc2XJ7xZOYlMb6JllEApjVVM6F4fQFgCxW8bxPuQpeGZf794t7Ppy4lx8+Zz/JV+/j3fW314WzwSE/WV1B0ET+X9d24XpKeK7jpe8qF2UABeRJQJUT03C8SMYclxYuf1ApFxpwkktAFQgZQQgJ4UOAVNuNIZHazFIyTYJ3CliURxz8SaEaMM71Hihp+y5KmRQwWWGnHKyAUMacjCj3iD8JlwftAweBjxJIqHIVIBn0XarDXVRab8/YagwyyIVPt9jpbJFEhHSbP7ewU+er8VQjd0khplIs0EBQTiSbNslMdE6EK7sKd1xo6A+ggdOiwZDEqcp6oFnySuJqBmKyhRsKl1nEJL1NyTJAMywnTb7UeYBX9UJOskyjuAPkw0CaUiHpfGtYy6euzu2yuGlxVlUKq0z/qFYlzswjAXHWAuI7Fs+XlPyXlHT3TMmyY+3MSU2Wkhh7p6j2dAMskTUTGI8zPNg6dVYb/j2b3rbYdA0tMu3G41nT7ZHI1DmMS9aT55L7hxbhcgyDNxK4CtUq5XkYIlnQXWI4g3btiiAe5dnudtHAWDFoQGLGVbyuKJ9SyXyyoakQzkLc99xHuKnYTB7ckiUhSm4l3S3JivX3iM2m02w2K7nebcwN3aZ7rG7TaWF6g+gV0NkmX+J7Yh3fsddA6D12y+/uU6SfdQl+8I5fVtPdLd/as0xr9phvHPw0CPT0p4DeXjPlyxhwHIbZpzYIlCes8cnL+ag9CYxykSwHAcjlyySwbRKwNzWhB50EykJYA/ULTQlDMM3hKc4B6//8z5zHngPKStGEgKuY2maRYSeGwfos5ljHwwDF6k1tUQqr993OxW8= \ No newline at end of file diff --git a/book/derived-query-read.drawio.svg b/book/derived-query-read.drawio.svg new file mode 100644 index 00000000..2ac36b73 --- /dev/null +++ b/book/derived-query-read.drawio.svg @@ -0,0 +1,4 @@ + + + +
Acquire read lock
on query Q
Acquire read lock...
Acquire read-upgrade lock on query Q
Acquire read-upgrade...
With read lock
In progress
by thread T
In progress...
Read value
of Q
Read value...
Up to date
Up to date
Block on T
Block on T
Return value
Return value
Thread T
completed
Thread T...
Execute Cycle Recovery
Execute Cycle...
Recoverable
cycle
detected
Recoverable...
Other
value
Other...
Panic
Panic
Irrecoverable
cycle detected
Irrecoverable...
With read-upgrade lock
In progress
by thread T
In progress...
Read value
of Q
Read value...
Up to date
Up to date
Block on T
Block on T
Return value
Return value
Thread T
completed
Thread T...
Execute Cycle Recovery
Execute Cycle...
Recoverable
cycle
detected
Recoverable...
Upgrade to
write lock on Q
Upgrade to...
Other
value
Other...
With write lock
Take memo M and set Q to InProgress
Take memo M and set...
Query is marked as in-progress
Pop query from
query stack
Pop query from...
Set Q to Not Computed
Set Q to Not Computed
Push panic guard
Push panic guard
Push query
on query stack
Push query...
Query has
memoized value?
Query has...
Salsa Event:
WillExecute
Salsa Event:...
No
No
Execute Query Function
Execute Query Functi...
Execute Cycle Recovery
Execute Cycle Recove...
Pop query from
query stack
Pop query from...
Unwound with
`CycleParticipant`
Unwound with...
Create memo M1
with recorded inputs
Create memo M1...
Returned
normally
Returned...
Backdate M1 to "changed at" from M
if value is the same
Backdate M1 to "chan...
Store `M` and
return value
Store `M` and...
For each input `Qin`...
For each input `Qin`...
Yes!
Yes!
No
No
...has `Qin` changed
since `M` was last verified?
...has `Qin` changed...
Yes
Yes
Mark `M` as verified
in current revision
Mark `M` as verified...
Salsa Event:
DidValidateMemoizedValue
Salsa Event:...
Store `M` and return value
Store `M` and return value
No more
inputs
No more...
Yes
Yes
Any inputs with durability D changed since M was verified?
Any inputs with durability...
No
No
Viewer does not support full SVG 1.1
\ No newline at end of file