Startup scan: warn (don't silently skip) when the reserved `restore` metadata dir looks like a database

Open Beginner friendly
#2,033 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
74/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Quiet
Tech stack
typescript
Domain
databases

Research direction

Start in resources/databases.ts at the startup scan loops and review how the reserved restore entry is skipped. Check the entry for CURRENT and MANIFEST-* before it is ignored, then warn or fail clearly when it looks like a database. Done means a conflicting restore directory is no longer silently skipped and normal startup scanning still works.

Written by the indexing model from the issue text.

Description

Follow-up from #1831 review (flagged by @kriszyp on resources/databases.ts).

Context

#1831 stores restore lock/marker metadata in a reserved restore directory beside the database directories. The backtick makes it an illegal database name (schemaRegex rejects / and backtick), so the API can never create a database that collides with it, and the startup scan explicitly skips that entry.

Edge case

The startup scan opens any directory containing CURRENT + MANIFEST-* without re-applying schemaRegex. So if a directory literally named restore already exists on disk as a RocksDB database (only reachable via manual filesystem creation, since the API always rejected backticks), an upgrade to this code now silently stops loading that database, and a subsequent restore would write .lock/.restoring metadata into it.

Severity

Very low probability (no API path can produce such a directory), but the silent disappearance is a bad state to hit undiagnosed.

Suggested fix

When the scan skips the reserved restore entry, detect whether it looks like a real database (has CURRENT + MANIFEST-*) and log a warning (or refuse startup with a clear message) rather than silently ignoring it, so an operator can migrate/rename it.

Ref: #1831, resources/databases.ts scan loops.

Dominant language
JavaScript
Stars
89
Forks
10
Avg merge
1d 15h
Merged PRs (30d)
196

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.

More from HarperFast/harper

All issues in HarperFast/harper

Similar issues

More JavaScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.