Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

First-creation writes disable OCC in hot.md/index.md (concurrent lost update)

Closed
#327 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

A pull request for this has already been merged.

  • #423 by @Kuldeep2822k — merged

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
35/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Tech stack
typescript
Domain
backend

Research direction

Start with the two writers in src/storage/memory.ts (around lines 401-412 and 521-532), where expectedFingerprint is null for a file that does not exist yet, and the rename step in atomic-write.ts near line 174. Read how the lock and the OCC comparison interact before changing anything. Done means that a first-creation write fails with ECONFLICT when the file appears before the rename, and a concurrent-write test shows no silent overwrite. The expectation model is a design decision, so confirm the approach with the maintainer first.

Written by the indexing model from the issue text.

Description

bug core priority: medium

Location: src/storage/memory.ts:401-412,521-532; atomic-write.ts:174

When hot.md/index.md does not exist yet, both writers capture expectedFingerprint=null, which skips the OCC comparison. The lock serializes writes, but process B overwrites A's just-created file with no ECONFLICT. On concurrent session start/end, one invocation's hot-memory/index content is silently lost (recoverable on next clean rebuild).

Fix: Model non-existence as a distinct expectExists:false expectation and fail if the file appears before rename.

From the 2026-10-10 codebase audit sweep (CODEBASE_AUDIT.md).

Dominant language
TypeScript
Stars
1
Forks
0
Avg merge
21h 20m
Merged PRs (30d)
176

Getting set up

  • No Dockerfile or Docker Compose file
  • Has a pull request template
  • No 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.

More from Kuldeep2822k/cli

All issues in Kuldeep2822k/cli

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.