From 166b25f9eaa55ff85a454a9e2bbf8c0cfb944675 Mon Sep 17 00:00:00 2001 From: xrsv Date: Tue, 4 Mar 2025 15:07:21 -0800 Subject: [PATCH] chore: add computeRoutes/SplitRoutes latency metrics (#835) * chore: add computeRoutes/SplitRoutes latency metrics * per split metrics --- package-lock.json | 4 ++-- package.json | 2 +- .../alpha-router/functions/best-swap-route.ts | 20 +++++++++++++++++++ .../alpha-router/quoters/mixed-quoter.ts | 6 ++++++ src/routers/alpha-router/quoters/v2-quoter.ts | 6 ++++++ src/routers/alpha-router/quoters/v3-quoter.ts | 6 ++++++ src/routers/alpha-router/quoters/v4-quoter.ts | 6 ++++++ 7 files changed, 47 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index efc675e0b..c51955abd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@uniswap/smart-order-router", - "version": "4.19.2", + "version": "4.19.3", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@uniswap/smart-order-router", - "version": "4.19.2", + "version": "4.19.3", "license": "GPL", "dependencies": { "@eth-optimism/sdk": "^3.2.2", diff --git a/package.json b/package.json index 84ffaaa50..965100730 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@uniswap/smart-order-router", - "version": "4.19.2", + "version": "4.19.3", "description": "Uniswap Smart Order Router", "main": "build/main/index.js", "typings": "build/main/index.d.ts", diff --git a/src/routers/alpha-router/functions/best-swap-route.ts b/src/routers/alpha-router/functions/best-swap-route.ts index 9ef26f92f..28ef020ff 100644 --- a/src/routers/alpha-router/functions/best-swap-route.ts +++ b/src/routers/alpha-router/functions/best-swap-route.ts @@ -90,6 +90,7 @@ export async function getBestSwapRoute( ); // Given all the valid quotes for each percentage find the optimal route. + const getBestSwapRouteByStartTime = Date.now(); const swapRoute = await getBestSwapRouteBy( routeType, percentToQuotes, @@ -104,6 +105,19 @@ export async function getBestSwapRoute( swapConfig, providerConfig ); + const getBestSwapRouteByLatencyMs = Date.now() - getBestSwapRouteByStartTime; + + // Add latency metrics. + metric.putMetric( + 'GetBestSwapRouteByLatency', + getBestSwapRouteByLatencyMs, + MetricLoggerUnit.Milliseconds + ); + metric.putMetric( + `GetBestSwapRouteByLatency_Chain${chainId}`, + getBestSwapRouteByLatencyMs, + MetricLoggerUnit.Milliseconds + ); // It is possible we were unable to find any valid route given the quotes. if (!swapRoute) { @@ -287,6 +301,12 @@ export async function getBestSwapRouteBy( MetricLoggerUnit.Milliseconds ); + metric.putMetric( + `Split${splits}Done_Chain${chainId}`, + Date.now() - startedSplit, + MetricLoggerUnit.Milliseconds + ); + startedSplit = Date.now(); log.info( diff --git a/src/routers/alpha-router/quoters/mixed-quoter.ts b/src/routers/alpha-router/quoters/mixed-quoter.ts index b6876ca28..31972fbb1 100644 --- a/src/routers/alpha-router/quoters/mixed-quoter.ts +++ b/src/routers/alpha-router/quoters/mixed-quoter.ts @@ -193,6 +193,12 @@ export class MixedQuoter extends BaseQuoter< MetricLoggerUnit.Milliseconds ); + metric.putMetric( + `MixedGetRoutesLoad_Chain${this.chainId}`, + Date.now() - beforeGetRoutes, + MetricLoggerUnit.Milliseconds + ); + return { routes: routes, candidatePools, diff --git a/src/routers/alpha-router/quoters/v2-quoter.ts b/src/routers/alpha-router/quoters/v2-quoter.ts index bb94053fb..55636b538 100644 --- a/src/routers/alpha-router/quoters/v2-quoter.ts +++ b/src/routers/alpha-router/quoters/v2-quoter.ts @@ -126,6 +126,12 @@ export class V2Quoter extends BaseQuoter { MetricLoggerUnit.Milliseconds ); + metric.putMetric( + `V2GetRoutesLoad_Chain${this.chainId}`, + Date.now() - beforeGetRoutes, + MetricLoggerUnit.Milliseconds + ); + return { routes, candidatePools, diff --git a/src/routers/alpha-router/quoters/v3-quoter.ts b/src/routers/alpha-router/quoters/v3-quoter.ts index 691044be6..91f4adc90 100644 --- a/src/routers/alpha-router/quoters/v3-quoter.ts +++ b/src/routers/alpha-router/quoters/v3-quoter.ts @@ -118,6 +118,12 @@ export class V3Quoter extends BaseQuoter { MetricLoggerUnit.Milliseconds ); + metric.putMetric( + `V3GetRoutesLoad_Chain${this.chainId}`, + Date.now() - beforeGetRoutes, + MetricLoggerUnit.Milliseconds + ); + return { routes, candidatePools, diff --git a/src/routers/alpha-router/quoters/v4-quoter.ts b/src/routers/alpha-router/quoters/v4-quoter.ts index 71d1bea50..c88c603ac 100644 --- a/src/routers/alpha-router/quoters/v4-quoter.ts +++ b/src/routers/alpha-router/quoters/v4-quoter.ts @@ -117,6 +117,12 @@ export class V4Quoter extends BaseQuoter { MetricLoggerUnit.Milliseconds ); + metric.putMetric( + `V4GetRoutesLoad_Chain${this.chainId}`, + Date.now() - beforeGetRoutes, + MetricLoggerUnit.Milliseconds + ); + return { routes, candidatePools,