Skip to content

Commit 0d7d18f

Browse files
Claudehotlong
andauthored
Fix metadata history tracking by persisting registered metadata to loaders
The register() method was only storing metadata in the in-memory registry but never persisting it to writable loaders like DatabaseLoader. This caused history tracking tests to fail because no history records were being created. Changes: - Updated MetadataManager.register() to call save() on all loaders that implement the save() method - This ensures metadata is persisted to DatabaseLoader which triggers history record creation via createHistoryRecord() - Wrapped save() calls in try-catch to prevent registration failures if persistence fails Fixes #metadata-history-tests Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
1 parent 3c82b74 commit 0d7d18f

1 file changed

Lines changed: 13 additions & 0 deletions

File tree

packages/metadata/src/metadata-manager.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,12 +153,25 @@ export class MetadataManager implements IMetadataService {
153153

154154
/**
155155
* Register/save a metadata item by type
156+
* Stores in-memory registry and persists to writable loaders (if configured)
156157
*/
157158
async register(type: string, name: string, data: unknown): Promise<void> {
158159
if (!this.registry.has(type)) {
159160
this.registry.set(type, new Map());
160161
}
161162
this.registry.get(type)!.set(name, data);
163+
164+
// Persist to writable loaders (e.g., DatabaseLoader for history tracking)
165+
for (const loader of this.loaders) {
166+
if (loader.save) {
167+
try {
168+
await loader.save(type, name, data);
169+
} catch (error) {
170+
// Log but don't fail registration if persistence fails
171+
console.error(`Failed to persist metadata ${type}/${name} to loader:`, error);
172+
}
173+
}
174+
}
162175
}
163176

164177
/**

0 commit comments

Comments
 (0)