You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
The Releases Activity Panel was previously relying on release documents from the releases store. Initially, these documents were complete. However, we recently introduced a projection to the documents, which means they are now partial.
The activity panel retrieves changes using the transactions endpoint and applies Mendoza patches to the documents. However, Mendoza patches require complete documents to function correctly—they do not work with partial documents.
Fix
This PR refactors the getReleaseEditEvents observable to use the new observeDocument observable, which ensures that complete documents are returned. This resolves the issue where Mendoza patches failed due to incomplete data.
Other Changes
The global listener was filtering out system documents, and since releases are classified as system documents, they were also being excluded.
To allow observeDocument to function correctly, this PR removes that filter, ensuring system documents (including releases) are properly observed.
What to review
Any side effect to consider on the listener change?
Testing
The corresponding tests are updated.
Opening a release activity panel should not error in any case.
Notes for release
Fixes an error when getting the release edit events in the release activity panel
efps — editor "frames per second". The number of updates assumed to be possible within a second.
Derived from input latency. efps = 1000 / input_latency
Detailed information
🏠 Reference result
The performance result of sanity@latest
Benchmark
latency
p75
p90
p99
blocking time
test duration
article (title)
36ms
38ms
43ms
245ms
139ms
9.8s
article (body)
14ms
15ms
34ms
96ms
247ms
5.6s
article (string inside object)
35ms
38ms
43ms
90ms
372ms
6.8s
article (string inside array)
40ms
43ms
49ms
169ms
292ms
6.8s
recipe (name)
20ms
22ms
24ms
52ms
0ms
7.7s
recipe (description)
19ms
19ms
21ms
31ms
0ms
4.6s
recipe (instructions)
5ms
7ms
8ms
11ms
0ms
3.1s
synthetic (title)
47ms
51ms
74ms
349ms
768ms
12.4s
synthetic (string inside object)
47ms
50ms
57ms
582ms
1028ms
8.3s
🧪 Experiment result
The performance result of this branch
Benchmark
latency
p75
p90
p99
blocking time
test duration
article (title)
36ms
38ms
44ms
319ms
294ms
10.2s
article (body)
14ms
15ms
22ms
194ms
187ms
5.4s
article (string inside object)
36ms
40ms
47ms
208ms
325ms
6.7s
article (string inside array)
40ms
42ms
45ms
281ms
338ms
6.8s
recipe (name)
21ms
22ms
26ms
48ms
8ms
7.2s
recipe (description)
18ms
18ms
20ms
33ms
0ms
4.5s
recipe (instructions)
5ms
7ms
8ms
16ms
0ms
3.2s
synthetic (title)
49ms
52ms
56ms
425ms
837ms
12.8s
synthetic (string inside object)
50ms
53ms
60ms
112ms
616ms
7.7s
📚 Glossary
column definitions
benchmark — the name of the test, e.g. "article", followed by the label of the field being measured, e.g. "(title)".
latency — the time between when a key was pressed and when it was rendered. derived from a set of samples. the median (p50) is shown to show the most common latency.
p75 — the 75th percentile of the input latency in the test run. 75% of the sampled inputs in this benchmark were processed faster than this value. this provides insight into the upper range of typical performance.
p90 — the 90th percentile of the input latency in the test run. 90% of the sampled inputs were faster than this. this metric helps identify slower interactions that occurred less frequently during the benchmark.
p99 — the 99th percentile of the input latency in the test run. only 1% of sampled inputs were slower than this. this represents the worst-case scenarios encountered during the benchmark, useful for identifying potential performance outliers.
blocking time — the total time during which the main thread was blocked, preventing user input and UI updates. this metric helps identify performance bottlenecks that may cause the interface to feel unresponsive.
test duration — how long the test run took to complete.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Pre-read
The Releases Activity Panel was previously relying on release documents from the releases store. Initially, these documents were complete. However, we recently introduced a projection to the documents, which means they are now partial.
The activity panel retrieves changes using the transactions endpoint and applies Mendoza patches to the documents. However, Mendoza patches require complete documents to function correctly—they do not work with partial documents.
Fix
This PR refactors the
getReleaseEditEvents
observable to use the newobserveDocument
observable, which ensures that complete documents are returned. This resolves the issue where Mendoza patches failed due to incomplete data.Other Changes
observeDocument
to function correctly, this PR removes that filter, ensuring system documents (including releases) are properly observed.What to review
Any side effect to consider on the listener change?
Testing
The corresponding tests are updated.
Opening a release activity panel should not error in any case.
Notes for release
Fixes an error when getting the release edit events in the release activity panel