fix: resolve critical v5.0.0 metadata race condition
CRITICAL BUG FIX: TypeAwareStorage metadata race condition Problem: - saveNoun() called before saveNounMetadata() - TypeAwareStorage couldn't determine entity type (not cached yet) - Defaulted to 'thing' and saved to wrong storage path - Later saveNounMetadata() saved to correct path - Noun and metadata in different locations = entity not found Impact: - Broke VFS file operations completely - Broke brain.get(), brain.relate(), brain.find() - All metadata-dependent features failed - Workshop team completely blocked Solution: - Reversed save order: saveNounMetadata() FIRST, then saveNoun() - Type now cached before saveNoun() needs it - Both saved to correct type-aware paths Additional Fixes: - Make baseStorage.initializeCOW() public (was protected) - Remove enableCOW config option (cleanup) - COW auto-init temporarily disabled (deadlock issue) Known Limitations (v5.0.1): - Fork API exists but COW requires manual init - Will be zero-config in v5.1.0 Fixes: Workshop Bug Report (VFS metadata missing)
This commit is contained in:
parent
f3e98a8bde
commit
12d8ea7efc
5 changed files with 64 additions and 16 deletions
|
|
@ -200,12 +200,14 @@ export abstract class BaseStorage extends BaseStorageAdapter {
|
|||
* Initialize COW (Copy-on-Write) support
|
||||
* Creates RefManager and BlobStorage for instant fork() capability
|
||||
*
|
||||
* v5.0.1: Now called automatically by storageFactory (zero-config)
|
||||
*
|
||||
* @param options - COW initialization options
|
||||
* @param options.branch - Initial branch name (default: 'main')
|
||||
* @param options.enableCompression - Enable zstd compression for blobs (default: true)
|
||||
* @returns Promise that resolves when COW is initialized
|
||||
*/
|
||||
protected async initializeCOW(options?: {
|
||||
public async initializeCOW(options?: {
|
||||
branch?: string
|
||||
enableCompression?: boolean
|
||||
}): Promise<void> {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue