






















@@ -274,6 +274,36 @@ describe("loadPluginMetadataSnapshot process memo", () => {
274274expect(second.byPluginId.get("demo")).toBe(second.plugins[0]);
275275});
276276277+it("does not emit metadata scan spans for hot memo hits", () => {
278+const stateDir = tempStateDir();
279+const timelinePath = path.join(stateDir, "timeline", "metadata.jsonl");
280+const env = {
281+OPENCLAW_DIAGNOSTICS: "timeline",
282+OPENCLAW_DIAGNOSTICS_TIMELINE_PATH: timelinePath,
283+};
284+touchPersistedIndex(stateDir);
285+loadPluginRegistrySnapshotWithMetadata.mockReturnValue({
286+source: "persisted",
287+snapshot: makeIndex(),
288+diagnostics: [],
289+});
290+291+loadPluginMetadataSnapshot({ config: {}, env, stateDir });
292+loadPluginMetadataSnapshot({ config: {}, env, stateDir });
293+loadPluginMetadataSnapshot({ config: {}, env, stateDir });
294+295+const events = fs
296+.readFileSync(timelinePath, "utf8")
297+.trim()
298+.split("\n")
299+.map((line) => JSON.parse(line) as { name?: unknown; type?: unknown });
300+expect(events.map((event) => [event.type, event.name])).toEqual([
301+["span.start", "plugins.metadata.scan"],
302+["span.end", "plugins.metadata.scan"],
303+]);
304+expect(loadPluginRegistrySnapshotWithMetadata).toHaveBeenCalledOnce();
305+});
306+277307it("skips persisted registry filesystem fingerprints after a process memo hit", () => {
278308const stateDir = tempStateDir();
279309touchPersistedIndex(stateDir);
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。