[RFC]: Semaphore for lage cache
Open
@kenotron is already working on this.
Since Jun 19, 2022.
dev design
- Dominant language
- TypeScript
- Stars
- 816
- Forks
- 88
- PR merge metrics
- No merged PRs in 30d
Description
Overview
WIP
Since multiple package tasks can run at the same time, lage needs to remove any race condition issues that it causes when run in parallel. At scale, this can cause all kinds of problems with flakey builds - this will cause false positives where builds would randomly fail, but the cause is very difficult to diagnose.
Definitions of terms
- race condition
- a random occurrence of a problem where two asynchronous writes are happening against the same resource
- semaphore
- a signaling mechanism that tells each thread the usage of a resource
- mutex
Goals & non-goals
Upstream dependencies
- dep 1
- dep 2
- dep 3
Downstream dependencies
- dep 1
- dep 2
- dep 3
Detailed Design
- Use diagrams
You can use mermaid:
graph TD;
A-->B;
A-->C;
B-->D;
C-->D;
Use images by drag & drop
- Describe different feature areas and how they are architected (designed)
- Make sure another set of developer can roughly understand how your code will be organized after reading this section!
Test Plan
- How will you make sure these features are to be tested
- Specify if leveraging any NEW test framework or techniques
Performance, Resilience, Monitoring
- Discuss any impact on performance (both as a developer and as a consumer)
- Any expected change in the ability to deal with spotty networks (resilience?)
- How will you monitor or collect telemetry on the features?
Security & Privacy
- Will the feature have any security or privacy issues?
- What are some ways to mitigate these issues?
Accessibility
- How will your feature conform to accessibility guidelines
- Check on how you will handle:
- Keyboard navigation
- Screen Readers
- Multiple monitor resolutions
- High DPI support
- High Contrast support
World Readiness
- Globalization: how does yoru feature invoke display or manipulate display of currency, dates, timezones, names?
- Localization: how does your feature address localization?
Execution Plan
List out the work items and/or PRs here:
- Work item 1: PR 1
- Work item 2: work item 2
- Work item 3:
- PR 3
- PR 4
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.