github.com/ava-labs/avalanchego@v1.11.11/vms/metervm/state_syncable_vm.go (about) 1 // Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved. 2 // See the file LICENSE for licensing terms. 3 4 package metervm 5 6 import ( 7 "context" 8 9 "github.com/ava-labs/avalanchego/snow/engine/snowman/block" 10 ) 11 12 func (vm *blockVM) StateSyncEnabled(ctx context.Context) (bool, error) { 13 if vm.ssVM == nil { 14 return false, nil 15 } 16 17 start := vm.clock.Time() 18 enabled, err := vm.ssVM.StateSyncEnabled(ctx) 19 end := vm.clock.Time() 20 vm.blockMetrics.stateSyncEnabled.Observe(float64(end.Sub(start))) 21 return enabled, err 22 } 23 24 func (vm *blockVM) GetOngoingSyncStateSummary(ctx context.Context) (block.StateSummary, error) { 25 if vm.ssVM == nil { 26 return nil, block.ErrStateSyncableVMNotImplemented 27 } 28 29 start := vm.clock.Time() 30 summary, err := vm.ssVM.GetOngoingSyncStateSummary(ctx) 31 end := vm.clock.Time() 32 vm.blockMetrics.getOngoingSyncStateSummary.Observe(float64(end.Sub(start))) 33 return summary, err 34 } 35 36 func (vm *blockVM) GetLastStateSummary(ctx context.Context) (block.StateSummary, error) { 37 if vm.ssVM == nil { 38 return nil, block.ErrStateSyncableVMNotImplemented 39 } 40 41 start := vm.clock.Time() 42 summary, err := vm.ssVM.GetLastStateSummary(ctx) 43 end := vm.clock.Time() 44 vm.blockMetrics.getLastStateSummary.Observe(float64(end.Sub(start))) 45 return summary, err 46 } 47 48 func (vm *blockVM) ParseStateSummary(ctx context.Context, summaryBytes []byte) (block.StateSummary, error) { 49 if vm.ssVM == nil { 50 return nil, block.ErrStateSyncableVMNotImplemented 51 } 52 53 start := vm.clock.Time() 54 summary, err := vm.ssVM.ParseStateSummary(ctx, summaryBytes) 55 end := vm.clock.Time() 56 duration := float64(end.Sub(start)) 57 if err != nil { 58 vm.blockMetrics.parseStateSummaryErr.Observe(duration) 59 return nil, err 60 } 61 vm.blockMetrics.parseStateSummary.Observe(duration) 62 return summary, nil 63 } 64 65 func (vm *blockVM) GetStateSummary(ctx context.Context, height uint64) (block.StateSummary, error) { 66 if vm.ssVM == nil { 67 return nil, block.ErrStateSyncableVMNotImplemented 68 } 69 70 start := vm.clock.Time() 71 summary, err := vm.ssVM.GetStateSummary(ctx, height) 72 end := vm.clock.Time() 73 duration := float64(end.Sub(start)) 74 if err != nil { 75 vm.blockMetrics.getStateSummaryErr.Observe(duration) 76 return nil, err 77 } 78 vm.blockMetrics.getStateSummary.Observe(duration) 79 return summary, nil 80 }