From c9acddc635db79561491a348b55ccf87d8e61bb4 Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Tue, 17 Dec 2024 13:12:07 +0100 Subject: [PATCH 1/2] fix don't report unactionable w3name request errors to Sentry Signed-off-by: Julian Gruber --- lib/contracts.js | 9 ++++++++- lib/modules.js | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/lib/contracts.js b/lib/contracts.js index 180dacdf..d28fdaf3 100644 --- a/lib/contracts.js +++ b/lib/contracts.js @@ -61,6 +61,13 @@ async function getContractsWithRetry ({ provider }) { async function getContractAddresses () { const name = Name.parse(CONTRACT_ADDRESSES_IPNS_KEY) - const revision = await Name.resolve(name) + let revision + try { + revision = await Name.resolve(name) + } catch (err) { + // These errors aren't actionable + err.reportToSentry = false + throw err + } return revision.value.split('\n').filter(Boolean) } diff --git a/lib/modules.js b/lib/modules.js index 48020447..7889bd91 100644 --- a/lib/modules.js +++ b/lib/modules.js @@ -106,7 +106,14 @@ export const installBinaryModule = async ({ async function getLatestCID (ipnsKey) { const name = Name.parse(ipnsKey) - const revision = await Name.resolve(name) + let revision + try { + revision = await Name.resolve(name) + } catch (err) { + // These errors aren't actionable + err.reportToSentry = false + throw err + } // /ipfs/:cid return revision.value.split('/').pop() } From 71eb89ecb55e26387c43d76b9d778cdf012cfbd1 Mon Sep 17 00:00:00 2001 From: Julian Gruber Date: Wed, 18 Dec 2024 11:53:13 +0100 Subject: [PATCH 2/2] add report errors to influxdb Signed-off-by: Julian Gruber --- lib/contracts.js | 2 ++ lib/modules.js | 2 ++ lib/telemetry.js | 7 +++++++ 3 files changed, 11 insertions(+) diff --git a/lib/contracts.js b/lib/contracts.js index d28fdaf3..591ea828 100644 --- a/lib/contracts.js +++ b/lib/contracts.js @@ -3,6 +3,7 @@ import pRetry from 'p-retry' import * as Name from 'w3name' import { ethers } from 'ethers' import * as SparkImpactEvaluator from '@filecoin-station/spark-impact-evaluator' +import { reportW3NameError } from './telemetry.js' const { // https://github.com/filecoin-station/contract-addresses @@ -65,6 +66,7 @@ async function getContractAddresses () { try { revision = await Name.resolve(name) } catch (err) { + reportW3NameError() // These errors aren't actionable err.reportToSentry = false throw err diff --git a/lib/modules.js b/lib/modules.js index 7889bd91..753c5b18 100644 --- a/lib/modules.js +++ b/lib/modules.js @@ -12,6 +12,7 @@ import { CarReader } from '@ipld/car' import { validateBlock } from '@web3-storage/car-block-validator' import { recursive as exporter } from 'ipfs-unixfs-exporter' import * as tar from 'tar' +import { reportW3NameError } from './telemetry.js' /** @typedef {import('unzip-stream').UnzipStreamEntry} UnzipStreamEntry */ @@ -110,6 +111,7 @@ async function getLatestCID (ipnsKey) { try { revision = await Name.resolve(name) } catch (err) { + reportW3NameError() // These errors aren't actionable err.reportToSentry = false throw err diff --git a/lib/telemetry.js b/lib/telemetry.js index 100c48bb..db56bf01 100644 --- a/lib/telemetry.js +++ b/lib/telemetry.js @@ -102,3 +102,10 @@ export const runMachinesLoop = async ({ STATION_ID }) => { await timers.setTimeout(24 * 3600 * 1000) // 1 day } } + +export const reportW3NameError = () => { + const point = new Point('w3name-error') + point.stringField('version', pkg.version) + writeClient.writePoint(point) + writeClient.flush().catch(handleFlushError) +}