microsoft / microsoft/lage

[RFC]: Semaphore for lage cache

Open
#276 0 comments 0 reactions 1 assignee View on GitHub

@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
  1. dep 1
  2. dep 2
  3. dep 3
Downstream dependencies
  1. dep 1
  2. dep 2
  3. 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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.