Skip to content

Commit 3614707

Browse files
authored
Order staleness tracking (#491)
* Track dutchv2 order latency * New dashboard charts
1 parent a24e2b2 commit 3614707

File tree

3 files changed

+53
-0
lines changed

3 files changed

+53
-0
lines changed

bin/stacks/dashboard-stack.ts

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -431,6 +431,43 @@ export class DashboardStack extends cdk.NestedStack {
431431
stat: 'p90',
432432
},
433433
},
434+
{
435+
height: 6,
436+
width: 12,
437+
y: 56,
438+
x: 0,
439+
type: 'metric',
440+
properties: {
441+
metrics: _.flatMap(SUPPORTED_CHAINS, (chainId) => [
442+
['Uniswap', `OrderStaleness-chain-${chainId}`, 'Service', `UniswapXService`],
443+
['.', '.', '.', `.`, { stat: 'p99' }],
444+
['.', '.', '.', `.`, { stat: 'p50' }],
445+
['.', '.', '.', `.`, { stat: 'Average' }],
446+
]),
447+
view: 'timeSeries',
448+
region,
449+
title: 'DutchV2 Order Staleness',
450+
period: 300,
451+
stat: 'p90',
452+
},
453+
},
454+
{
455+
height: 6,
456+
width: 12,
457+
y: 56,
458+
x: 12,
459+
type: 'metric',
460+
properties: {
461+
metrics: _.flatMap(SUPPORTED_CHAINS, (chainId) => [
462+
['Uniswap', `StaleOrder-chain-${chainId}`, 'Service', `UniswapXService`],
463+
]),
464+
view: 'timeSeries',
465+
region,
466+
title: 'DutchV2 Stale Order Count',
467+
period: 300,
468+
stat: 'Sum',
469+
},
470+
},
434471
{
435472
height: 1,
436473
width: 24,

lib/handlers/constants.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,4 @@ export const DEFAULT_MAX_OPEN_LIMIT_ORDERS = 100
1313
export const HIGH_MAX_OPEN_ORDERS = 200
1414

1515
export const PRIORITY_ORDER_TARGET_BLOCK_BUFFER = 3
16+
export const DUTCHV2_ORDER_LATENCY_THRESHOLD_SEC = 3;

lib/handlers/post-order/PostOrderBodyParser.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ import { Order } from '../../models/Order'
1717
import { PriorityOrder } from '../../models/PriorityOrder'
1818
import { RelayOrder } from '../../models/RelayOrder'
1919
import { PostOrderRequestBody } from './schema'
20+
import { metrics } from '../../util/metrics'
21+
import { Unit } from 'aws-embedded-metrics'
22+
import { DUTCHV2_ORDER_LATENCY_THRESHOLD_SEC } from '../constants'
2023

2124
export class PostOrderBodyParser {
2225
private readonly uniswapXParser = new UniswapXOrderParser()
@@ -95,6 +98,18 @@ export class PostOrderBodyParser {
9598
): DutchV2Order {
9699
try {
97100
const order = CosignedV2DutchOrder.parse(encodedOrder, chainId)
101+
// Log the decay start time difference for debugging
102+
const decayStartTime = order.info.cosignerData.decayStartTime
103+
const currentTime = Math.floor(Date.now() / 1000) // Convert to seconds
104+
const timeDifference = currentTime - Number(decayStartTime)
105+
106+
if (timeDifference > DUTCHV2_ORDER_LATENCY_THRESHOLD_SEC) {
107+
const staleOrderMetricName = `StaleOrder-chain-${chainId.toString()}`
108+
metrics.putMetric(staleOrderMetricName, 1, Unit.Count)
109+
}
110+
const staleOrderMetricName = `OrderStaleness-chain-${chainId.toString()}`
111+
metrics.putMetric(staleOrderMetricName, timeDifference)
112+
98113
return new DutchV2Order(order as SDKV2DutchOrder, signature, chainId, undefined, undefined, quoteId, requestId)
99114
} catch (err) {
100115
this.logger.error('Unable to parse DutchV2 order', {

0 commit comments

Comments
 (0)