From 644f81d6de969b56f97a836f5d5ec569e6a2aef8 Mon Sep 17 00:00:00 2001 From: Wasif Iqbal Date: Sat, 6 Jul 2024 14:24:34 -0500 Subject: [PATCH] chore: batch info and error logs for message bundles (#2127) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Motivation Describe why this issue should be fixed and link to any relevant design docs, issues or other relevant items. ## Change Summary ``` {"level":30,"time":1720293146285,"pid":90362,"hostname":"mbp.local","component":"Hub","0":"[event_id:453975843913728|farcaster_ts:110833945|fid:585630|hash:0xef173705c8f9c3843c4da43234e767582085e114|message_type:LINK_ADD|source:gossip]","1":"[event_id:453975843917824|farcaster_ts:110833945|fid:485354|hash:0xefba9d8b3f64469ffa5f3fd8c9907cf4f798d0cb|message_type:LINK_ADD|source:gossip]","2":"[event_id:453975843917825|farcaster_ts:110833945|fid:192373|hash:0x0ae9d1dce72f77f9228c0e39c70d4eac62a7442f|message_type:LINK_ADD|source:gossip]","3":"[event_id:453975843917826|farcaster_ts:110833945|fid:633096|hash:0xef823130e0b0e85821c942f518d5030f413cb1be|message_type:LINK_ADD|source:gossip]","4":"[event_id:453975843917827|farcaster_ts:110833945|fid:746504|hash:0xcc682a388d3ff1fa9f1c488afe34bc1eef5c0f7c|message_type:LINK_ADD|source:gossip]","5":"[event_id:453975843917829|farcaster_ts:110833945|fid:190012|hash:0x300a529843da3add0560c0c8be228b69d2628883|message_type:LINK_ADD|source:gossip]","6":"[event_id:453975843917828|farcaster_ts:110833945|fid:579583|hash:0xbf9ebf245dcf7173e7a3622f0a99f974688c3540|message_type:CAST_REMOVE|source:gossip]","7":"[event_id:453975843917830|farcaster_ts:110833945|fid:711341|hash:0x9ffd88aa81af70d6602f819f7a8b2ad76c17f165|message_type:CAST_ADD|source:gossip]","8":"[event_id:453975843921920|farcaster_ts:110833945|fid:270138|hash:0xd26ff734375c0a6a4804a14f042d06ae3fa0e241|message_type:CAST_ADD|source:gossip]","9":"[event_id:453975843921921|farcaster_ts:110833946|fid:305198|hash:0x50111086f8f27d4a7c080e48f20c287ba71a2dbb|message_type:CAST_ADD|source:gossip]","10":"[event_id:453975843921922|farcaster_ts:110833945|fid:3863|hash:0x60beb24804fe0df885fc251b88ac4f4d7e19e0d3|message_type:CAST_ADD|source:gossip]","11":"[event_id:453975843971072|farcaster_ts:110833945|fid:549607|hash:0xec82139fcad13947ef05c6d04d128897c5eefaf8|message_type:REACTION_ADD|source:gossip]","12":"[event_id:453975843971073|farcaster_ts:110833945|fid:265048|hash:0x2d872242ca0d99b8292e4ff7444440694f0afac9|message_type:REACTION_ADD|source:gossip]","13":"[event_id:453975843975168|farcaster_ts:110833945|fid:563445|hash:0xdedd26fb91e8cea03444386f204dadbf28fbbc20|message_type:REACTION_ADD|source:gossip]","14":"[event_id:453975843975169|farcaster_ts:110833945|fid:522942|hash:0x5ecea1832c45f0dea07a5e7db7ee9ababe065385|message_type:REACTION_ADD|source:gossip]","15":"[event_id:453975843975170|farcaster_ts:110833945|fid:520558|hash:0x987f67b9052d37bda525498d85ab2658e551a6b0|message_type:REACTION_ADD|source:gossip]","16":"[event_id:453975843975171|farcaster_ts:110833946|fid:651987|hash:0xe100174210580b70893107eadd1475e871b0ff27|message_type:REACTION_ADD|source:gossip]","17":"[event_id:453975843975172|farcaster_ts:110833945|fid:511684|hash:0x72561ecda54162bb31b7e234cdee3aafc065a067|message_type:REACTION_ADD|source:gossip]","18":"[event_id:453975843975173|farcaster_ts:110833945|fid:563445|hash:0x174b2b29e616c0dc351169a46d0d1a115ce0fe45|message_type:REACTION_ADD|source:gossip]","19":"[event_id:453975843975174|farcaster_ts:110833945|fid:370971|hash:0x7fbd427e27b8718c700466f437b994c04bd6bcc1|message_type:REACTION_ADD|source:gossip]","20":"[event_id:453975843979264|farcaster_ts:110833945|fid:306729|hash:0x9bca22a42956566cbdb7b2de7471ba91ee4a976d|message_type:REACTION_ADD|source:gossip]","21":"[event_id:453975843979265|farcaster_ts:110833945|fid:521421|hash:0x58855581f5a4a2f1a673af6c235fbb7a039616a3|message_type:REACTION_ADD|source:gossip]","22":"[event_id:453975843979266|farcaster_ts:110833945|fid:509854|hash:0x19f48b1c2113b400e37200be1383a92170b02909|message_type:REACTION_ADD|source:gossip]","23":"[event_id:453975843979267|farcaster_ts:110833945|fid:516301|hash:0xd4c626df0a29c2ea3e71872caa1c0f84dda5b62a|message_type:REACTION_ADD|source:gossip]","24":"[event_id:453975843979268|farcaster_ts:110833945|fid:337423|hash:0x9eb8d64713a79f6ed5983004fcdbb4667bf39a82|message_type:REACTION_ADD|source:gossip]","msg":"successful submit messages"} ``` ## Merge Checklist _Choose all relevant options below by adding an `x` now or at any time before submitting for review_ - [ ] PR title adheres to the [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/) standard - [ ] PR has a [changeset](https://github.com/farcasterxyz/hub-monorepo/blob/main/CONTRIBUTING.md#35-adding-changesets) - [ ] PR has been tagged with a change label(s) (i.e. documentation, feature, bugfix, or chore) - [ ] PR includes [documentation](https://github.com/farcasterxyz/hub-monorepo/blob/main/CONTRIBUTING.md#32-writing-docs) if necessary. - [ ] All [commits have been signed](https://github.com/farcasterxyz/hub-monorepo/blob/main/CONTRIBUTING.md#22-signing-commits) ## Additional Context If this is a relatively large or complex change, provide more details here that will help reviewers --- ## PR-Codex overview The focus of this PR is to enhance logging in the `Hub` class by capturing successful and failed message submissions. ### Detailed summary - Added `errorLogs` and `infoLogs` arrays for storing error and info logs respectively - Enhanced logging for successful and failed message submissions with detailed information - Added logging for successful and failed message submissions > ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}` --- apps/hubble/src/hubble.ts | 52 +++++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 24 deletions(-) diff --git a/apps/hubble/src/hubble.ts b/apps/hubble/src/hubble.ts index 7be20f7c0c..e6a6f65091 100644 --- a/apps/hubble/src/hubble.ts +++ b/apps/hubble/src/hubble.ts @@ -1792,6 +1792,8 @@ export class Hub implements HubInterface { // Merge the messages const mergeResults = await this.engine.mergeMessages(dedupedMessages.map((m) => m.message)); + const errorLogs: string[] = []; + const infoLogs: string[] = []; for (const [j, result] of mergeResults.entries()) { const message = dedupedMessages[j]?.message as Message; const type = messageTypeToName(message.data?.type); @@ -1800,32 +1802,28 @@ export class Hub implements HubInterface { result.match( (eventId) => { - if (this.options.logIndividualMessages) { - const logData = { - eventId, - fid: message.data?.fid, - type: type, - submittedMessage: messageToLog(message), - source, - }; - const msg = "submitMessage success"; - - if (source === "sync") { - log.debug(logData, msg); - } else { - log.info(logData, msg); - } - } else { - this.submitMessageLogger.log(source ?? "unknown-source"); - } + const parts = [ + `event_id:${eventId}`, + `farcaster_ts:${message.data?.timestamp ?? "no-timestamp"}`, + `fid:${message.data?.fid ?? "no-fid"}`, + `hash:${bytesToHexString(message.hash).unwrapOr("no-hash")}`, + `message_type:${type}`, + `source:${source}`, + ]; + infoLogs.push(`[${parts.join("|")}]`); }, (e) => { - // message is a reserved key in some logging systems, so we use submittedMessage instead - const logMessage = log.child({ - submittedMessage: messageToLog(message), - source, - }); - logMessage.warn({ errCode: e.errCode, source }, `submitMessage error: ${e.message}`); + const parts = [ + `farcaster_ts:${message.data?.timestamp ?? "no-timestamp"}`, + `fid:${message.data?.fid ?? "no-fid"}`, + `hash:${bytesToHexString(message.hash).unwrapOr("no-hash")}`, + `message_type:${type}`, + `source:${source ?? "unknown-source"}`, + `error:${e.message}`, + `error_code:${e.errCode}`, + ]; + errorLogs.push(`[${parts.join("|")}]`); + const tags: { [key: string]: string } = { error_code: e.errCode, message_type: type, @@ -1835,6 +1833,12 @@ export class Hub implements HubInterface { }, ); } + if (infoLogs.length > 0) { + log.info(infoLogs, "successful submit messages"); + } + if (errorLogs.length > 0) { + log.error(errorLogs, "failed submit messages"); + } // Convert the merge results to an Array of HubResults with the key const finalResults: HubResult[] = [];