UpdateTelemetry() updates the prometheus metrics after 'committing' a block
(qc *lib.QuorumCertificate, block *lib.Block, blockProcessingTime time.Duration)
| 655 | |
| 656 | // UpdateTelemetry() updates the prometheus metrics after 'committing' a block |
| 657 | func (c *Controller) UpdateTelemetry(qc *lib.QuorumCertificate, block *lib.Block, blockProcessingTime time.Duration) { |
| 658 | // create convenience variables |
| 659 | address, vdfIterations := crypto.NewAddressFromBytes(c.Address), uint64(0) |
| 660 | // attempt to get VDF iterations |
| 661 | if block.BlockHeader.Vdf != nil { |
| 662 | vdfIterations = block.BlockHeader.Vdf.Iterations |
| 663 | } |
| 664 | // update node metrics |
| 665 | c.Metrics.UpdateNodeMetrics(c.isSyncing.Load()) |
| 666 | // update the block metrics |
| 667 | c.Metrics.UpdateBlockMetrics(block.BlockHeader.ProposerAddress, uint64(len(qc.Block)), block.BlockHeader.NumTxs, vdfIterations, blockProcessingTime) |
| 668 | // update validator metric |
| 669 | if v, _ := c.FSM.GetValidator(address); v != nil && v.StakedAmount != 0 { |
| 670 | isProducer, nonSigners, doubleSigners := c.getValidatorBehaviorMetrics(address, qc) |
| 671 | c.Metrics.UpdateValidator(address.String(), v.StakedAmount, v.UnstakingHeight != 0, v.MaxPausedHeight != 0, v.Delegate, v.Compound, isProducer, nonSigners, doubleSigners) |
| 672 | } |
| 673 | // update account metrics |
| 674 | if a, _ := c.FSM.GetAccount(address); a.Amount != 0 { |
| 675 | c.Metrics.UpdateAccount(address.String(), a.Amount) |
| 676 | } |
| 677 | } |
| 678 | |
| 679 | // getValidatorBehaviorMetrics() gets metrics for validator behavior in this block |
| 680 | func (c *Controller) getValidatorBehaviorMetrics(address crypto.AddressI, qc *lib.QuorumCertificate) (isProducer bool, nonSigners map[string]uint64, doubleSigners []crypto.AddressI) { |
no test coverage detected