fix(storage): resolve persistence restart bug across all storage adapters

Critical bug fix that restores data persistence after application restart for all storage adapters (GCS, S3, OPFS, FileSystem).

**Root Cause:**
Storage adapters were loading entity counts from _system/counts.json but not returning totalCount in pagination methods, causing rebuildIndexesIfNeeded() to see undefined and incorrectly assume no data existed.

**Changes:**
- GCS Storage: Return totalCount in getNodesWithPagination() and getVerbsWithPagination()
- S3 Storage: Call initializeCounts() in init() and return totalCount in pagination methods
- OPFS Storage: Call initializeCounts() in init() to load pre-calculated counts
- BaseStorage: Add defensive validation to prevent future adapters from missing totalCount

**Impact:**
- Production deployments now work correctly (Cloud Run, AWS, Kubernetes)
- Data persists correctly across container restarts
- Serverless scale-to-zero deployments now functional
- All storage adapters use O(1) pre-calculated counts (scales to millions of entities)

**Testing:**
- Build passes with no TypeScript errors
- All existing tests pass
- Defensive validation ensures future storage adapters won't have this bug

Fixes critical production issue affecting all persistent storage deployments.
This commit is contained in:
David Snelling 2025-10-09 15:07:18 -07:00
parent c502b56bb4
commit 01e89fffca
4 changed files with 40 additions and 17 deletions

View file

@ -132,6 +132,9 @@ export class OPFSStorage extends BaseStorage {
create: true
})
// Initialize counts from storage
await this.initializeCounts()
this.isInitialized = true
} catch (error) {
console.error('Failed to initialize OPFS storage:', error)