From 79bb27b33764d7620ec56795cfe5dc698129c3d7 Mon Sep 17 00:00:00 2001 From: Sanjay Raveendran Date: Wed, 10 Jan 2024 16:53:46 -0800 Subject: [PATCH] fix: Don't add deleted fnames to sync trie --- .changeset/dry-spies-march.md | 5 +++++ apps/hubble/src/network/sync/syncEngine.test.ts | 7 +++++-- apps/hubble/src/network/sync/syncEngine.ts | 3 ++- 3 files changed, 12 insertions(+), 3 deletions(-) create mode 100644 .changeset/dry-spies-march.md diff --git a/.changeset/dry-spies-march.md b/.changeset/dry-spies-march.md new file mode 100644 index 0000000000..2a9680b52a --- /dev/null +++ b/.changeset/dry-spies-march.md @@ -0,0 +1,5 @@ +--- +"@farcaster/hubble": patch +--- + +fix: Don't add deleted fnames to sync trie diff --git a/apps/hubble/src/network/sync/syncEngine.test.ts b/apps/hubble/src/network/sync/syncEngine.test.ts index 9c09223cb4..15df38d64f 100644 --- a/apps/hubble/src/network/sync/syncEngine.test.ts +++ b/apps/hubble/src/network/sync/syncEngine.test.ts @@ -562,12 +562,15 @@ describe("SyncEngine", () => { expect((await syncEngine.getDbStats()).numFnames).toEqual(1); }); test("does not add a deleted fname to the trie", async () => { - userNameProof = Factories.UserNameProof.build({ + await engine.mergeUserNameProof(userNameProof); + const deletionProof = Factories.UserNameProof.build({ type: UserNameType.USERNAME_TYPE_FNAME, + name: userNameProof.name, + timestamp: userNameProof.timestamp + 10, fid: 0, }); - expect(await syncEngine.trie.exists(SyncId.fromFName(userNameProof))).toBeFalsy(); await engine.mergeUserNameProof(userNameProof); + await engine.mergeUserNameProof(deletionProof); expect(await syncEngine.trie.exists(SyncId.fromFName(userNameProof))).toBeFalsy(); expect((await syncEngine.getDbStats()).numFnames).toEqual(0); }); diff --git a/apps/hubble/src/network/sync/syncEngine.ts b/apps/hubble/src/network/sync/syncEngine.ts index 1c62f3d0f2..28f3e2218d 100644 --- a/apps/hubble/src/network/sync/syncEngine.ts +++ b/apps/hubble/src/network/sync/syncEngine.ts @@ -268,7 +268,8 @@ class SyncEngine extends TypedEmitter { } if ( event.mergeUsernameProofBody.usernameProof && - event.mergeUsernameProofBody.usernameProof.type === UserNameType.USERNAME_TYPE_FNAME + event.mergeUsernameProofBody.usernameProof.type === UserNameType.USERNAME_TYPE_FNAME && + event.mergeUsernameProofBody.usernameProof.fid !== 0 // Deletes should not be added to the trie ) { this._syncTrieQ += 1; statsd().gauge("merkle_trie.merge_q", this._syncTrieQ);