Skip to content

Commit 038cca5

Browse files
committed
feat: don't crash on failing curve's latestRoundData
1 parent bee05c7 commit 038cca5

File tree

1 file changed

+21
-1
lines changed

1 file changed

+21
-1
lines changed

models/aggregated_block_feed/query.go

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,8 @@ func (mdl *AQFWrapper) getRoundDataCalls(blockNum int64) (calls []multicall.Mult
122122
return
123123
}
124124

125+
var curvePFLatestRoundDataTimer = map[string]log.TimerFn{}
126+
125127
func (mdl *AQFWrapper) processRoundData(blockNum int64, adapter *QueryPriceFeed, entry multicall.Multicall2Result) []*schemas.PriceFeed {
126128
var priceData *schemas.PriceFeed
127129

@@ -156,9 +158,27 @@ func (mdl *AQFWrapper) processRoundData(blockNum int64, adapter *QueryPriceFeed,
156158
return new(big.Int).SetBytes(lowerLimit).Cmp(virtualPrice) < 0 &&
157159
new(big.Int).SetBytes(upperLimit).Cmp(virtualPrice) > 0
158160
}()
161+
if curvePFLatestRoundDataTimer[adapter.GetAddress()] == nil {
162+
curvePFLatestRoundDataTimer[adapter.GetAddress()] = log.GetRiskMsgTimer()
163+
}
164+
var msg string
159165
if !withinLimits {
160-
return nil
166+
msg = "virtual price is not within limits for " + adapter.GetAddress()
167+
} else {
168+
msg = "failing due to unknown reason maybe underlying pricefeed of curve pool token is failing for curve adapter" + adapter.GetAddress()
161169
}
170+
log.SendRiskAlertPerTimer(
171+
log.RiskAlert{
172+
Msg: msg,
173+
RiskHeader: log.RiskHeader{
174+
BlockNumber: blockNum,
175+
EventCode: "CURVE_LATEST_ROUNDDATA_FAIL",
176+
},
177+
},
178+
curvePFLatestRoundDataTimer[adapter.GetAddress()],
179+
86400*time.Second,
180+
)
181+
return nil
162182
default:
163183
log.Fatalf("Can't get latestRounData in AQFWrapper for %s(%s)", adapter.GetDetailsByKey("pfType"), adapter.GetAddress())
164184
}

0 commit comments

Comments
 (0)