Skip to content

Commit 1b25484

Browse files
authored
Merge branch 'main' into infoplat-14703-chip_client-label
2 parents 193c9f6 + 8219609 commit 1b25484

14 files changed

Lines changed: 448 additions & 64 deletions

File tree

observability-lib/grafana/dashboard.go

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -210,9 +210,21 @@ func (o *Observability) DeployToGrafana(options *DeployOptions) error {
210210
// update alert rule if it already exists
211211
alertToUpdate := getAlertRuleByTitle(alertsRule, alert.Title)
212212
if alertToUpdate != nil {
213-
_, _, errPutAlertRule := grafanaClient.UpdateAlertRule(*alertToUpdate.Uid, alert)
213+
_, updateResp, errPutAlertRule := grafanaClient.UpdateAlertRule(*alertToUpdate.Uid, alert)
214214
if errPutAlertRule != nil {
215-
return errPutAlertRule
215+
// A 409 means a provenance mismatch: the stored rule was created with a
216+
// different provenance (e.g. "api") than what we send (""). Migrate by
217+
// deleting the old rule and recreating it with the current provenance.
218+
if updateResp == nil || updateResp.StatusCode() != 409 {
219+
return errPutAlertRule
220+
}
221+
222+
if _, _, errDelete := grafanaClient.DeleteAlertRule(*alertToUpdate.Uid); errDelete != nil {
223+
return fmt.Errorf("provenance migration: delete alert rule %q: %w", alert.Title, errDelete)
224+
}
225+
if _, _, errPost := grafanaClient.PostAlertRule(alert); errPost != nil {
226+
return fmt.Errorf("provenance migration: recreate alert rule %q: %w", alert.Title, errPost)
227+
}
216228
}
217229
}
218230
} else {

pkg/chains/evm/evm.pb.go

Lines changed: 109 additions & 59 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/chains/evm/evm.proto

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ service EVM{
2525
rpc CalculateTransactionFee(CalculateTransactionFeeRequest) returns (CalculateTransactionFeeReply);
2626
rpc GetForwarderForEOA(GetForwarderForEOARequest) returns (GetForwarderForEOAReply);
2727
rpc GetLatestLPBlock(google.protobuf.Empty) returns (GetLatestLPBlockReply);
28+
rpc LPSkipToBlock(LPSkipToBlockRequest) returns (google.protobuf.Empty);
2829
}
2930

3031
// represents simplified evm-style CallMsg
@@ -373,3 +374,7 @@ message GetForwarderForEOAReply {
373374
message GetFiltersNamesReply {
374375
repeated string items = 1;
375376
}
377+
378+
message LPSkipToBlockRequest {
379+
int64 block_number = 1; // block number to skip to
380+
}

pkg/chains/evm/evm_grpc.pb.go

Lines changed: 38 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/loop/internal/relayer/evm.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,11 @@ func (e *EVMClient) GetLatestLPBlock(ctx context.Context) (*evmtypes.LPBlock, er
303303
}, nil
304304
}
305305

306+
func (e *EVMClient) LPSkipToBlock(ctx context.Context, blockNumber int64) error {
307+
_, err := e.grpcClient.LPSkipToBlock(ctx, &evmpb.LPSkipToBlockRequest{BlockNumber: blockNumber})
308+
return net.WrapRPCErr(err)
309+
}
310+
306311
type evmServer struct {
307312
evmpb.UnimplementedEVMServer
308313

@@ -570,6 +575,13 @@ func (e *evmServer) GetLatestLPBlock(ctx context.Context, _ *emptypb.Empty) (*ev
570575
}, nil
571576
}
572577

578+
func (e *evmServer) LPSkipToBlock(ctx context.Context, request *evmpb.LPSkipToBlockRequest) (*emptypb.Empty, error) {
579+
if err := e.impl.LPSkipToBlock(ctx, request.GetBlockNumber()); err != nil {
580+
return nil, err
581+
}
582+
return &emptypb.Empty{}, nil
583+
}
584+
573585
func (e *evmServer) CalculateTransactionFee(ctx context.Context, request *evmpb.CalculateTransactionFeeRequest) (*evmpb.CalculateTransactionFeeReply, error) {
574586
txFee, err := e.impl.CalculateTransactionFee(ctx, evmtypes.ReceiptGasInfo{
575587
GasUsed: request.GasInfo.GasUsed,

pkg/loop/internal/relayer/evm_test.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,17 @@ func Test_EVMDomainRoundTripThroughGRPC(t *testing.T) {
340340
require.Equal(t, expectedNames, actualNames)
341341
})
342342

343+
t.Run("LPSkipToBlock", func(t *testing.T) {
344+
skipBlock := blockNum.Int64()
345+
evmService.EXPECT().LPSkipToBlock(mock.Anything, mock.Anything).RunAndReturn(func(ctx context.Context, blockNumber int64) error {
346+
require.Equal(t, skipBlock, blockNumber)
347+
return nil
348+
})
349+
350+
err := client.LPSkipToBlock(ctx, skipBlock)
351+
require.NoError(t, err)
352+
})
353+
343354
t.Run("CalculateTransactionFee", func(t *testing.T) {
344355
gasInfo := evm.ReceiptGasInfo{
345356
GasUsed: gas,

pkg/loop/internal/relayerset/evm.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,10 @@ func (e evmClient) GetLatestLPBlock(ctx context.Context, in *emptypb.Empty, opts
9595
return e.client.GetLatestLPBlock(appendRelayID(ctx, e.relayID), in, opts...)
9696
}
9797

98+
func (e evmClient) LPSkipToBlock(ctx context.Context, in *evmpb.LPSkipToBlockRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
99+
return e.client.LPSkipToBlock(appendRelayID(ctx, e.relayID), in, opts...)
100+
}
101+
98102
type evmServer struct {
99103
evmpb.UnimplementedEVMServer
100104
parent *Server
@@ -489,6 +493,19 @@ func (es *evmServer) GetLatestLPBlock(ctx context.Context, in *emptypb.Empty) (*
489493
}, nil
490494
}
491495

496+
func (es *evmServer) LPSkipToBlock(ctx context.Context, request *evmpb.LPSkipToBlockRequest) (*emptypb.Empty, error) {
497+
evmService, err := es.parent.getEVMService(ctx)
498+
if err != nil {
499+
return nil, err
500+
}
501+
502+
if err = evmService.LPSkipToBlock(ctx, request.GetBlockNumber()); err != nil {
503+
return nil, err
504+
}
505+
506+
return &emptypb.Empty{}, nil
507+
}
508+
492509
func (es *evmServer) GetForwarderForEOA(ctx context.Context, request *evmpb.GetForwarderForEOARequest) (*evmpb.GetForwarderForEOAReply, error) {
493510
evmService, err := es.parent.getEVMService(ctx)
494511
if err != nil {

pkg/types/mocks/evm_service.go

Lines changed: 47 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/types/relayer.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,9 @@ type EVMService interface {
199199
// GetLatestLPBlock retrieves current LatestBlock from cache perspective
200200
GetLatestLPBlock(ctx context.Context) (*evm.LPBlock, error)
201201

202+
// LPSkipToBlock skips log poller to the given block number
203+
LPSkipToBlock(ctx context.Context, blockNumber int64) error
204+
202205
// GetFiltersNames returns all registered filters' names for later pruning
203206
// TODO PLEX-1465: once code is moved away, remove this GetFiltersNames method
204207
GetFiltersNames(ctx context.Context) ([]string, error)
@@ -539,6 +542,10 @@ func (ues *UnimplementedEVMService) GetLatestLPBlock(ctx context.Context) (*evm.
539542
return nil, status.Errorf(codes.Unimplemented, "method GetLatestLPBlock not implemented")
540543
}
541544

545+
func (ues *UnimplementedEVMService) LPSkipToBlock(ctx context.Context, blockNumber int64) error {
546+
return status.Errorf(codes.Unimplemented, "method LPSkipToBlock not implemented")
547+
}
548+
542549
func (ues *UnimplementedEVMService) GetFiltersNames(ctx context.Context) ([]string, error) {
543550
return nil, status.Errorf(codes.Unimplemented, "method GetFiltersNames not implemented")
544551
}

0 commit comments

Comments
 (0)