NatLabRockies / NatLabRockies/OpenStudio-server

Scalability: implement distributed locking to safely run multiple web replicas

Open
#838 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Ruby
Stars
58
Forks
27
PR merge metrics
No merged PRs in 30d

Description

Summary

Current deployment guidance keeps web replicas at 1 due to shared file-locking concerns on NFS-backed paths. This limits throughput and page-load stability under concurrency.

Proposed work

  • Identify critical sections currently relying on local/NFS locking semantics
  • Implement distributed locking (for example, Redis-based lock strategy) for cross-pod correctness
  • Isolate mutable temp paths where possible to reduce lock contention
  • Add race-condition/idempotency tests for concurrent web workers

Acceptance criteria

  • Multi-replica web operation is validated under concurrent user/API load
  • No data corruption, duplicate processing, or lock starvation in stress tests
  • Documented operational guidance for enabling web replicas > 1 in Helm

Context

openstudio-server-helm now has HPA v2 and scheduling/resilience controls ready to use once app-level lock safety is in place.

Contributor guide

Open the contributing guide

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.

Research direction

No application files or tests are named. Start by tracing the critical sections that rely on local or NFS locking, then review the openstudio-server-helm replica guidance and existing HPA settings. Done means concurrent web-worker tests and stress validation show no corruption, duplicate processing, or starvation, with Helm guidance for enabling more than one replica.

Written by the indexing model from the issue text.

Assessment

Tech stack
helm, redis, ruby
Domain
backend, devops, distributed-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
32/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.