Exemplo n.º 1
0
        private async Task <HealthIssue[]> GetDcrdataHealthIssues()
        {
            var dcrdataTopBlock = await _blockRepository.GetHighestBlock();

            if (dcrdataTopBlock == null)
            {
                return(new []
                {
                    HealthIssue.Create("NoDcrdataBestBlock",
                                       "No blocks found in dcrdata database"),
                });
            }

            // Get dcrd block height.  If dcrdata out of sync, raise failure.
            var dcrdTopBlock = await _dcrdClient.GetBestBlockAsync();

            if (dcrdTopBlock == null)
            {
                return(new []
                {
                    HealthIssue.Create("NoDcrdBestBlock",
                                       "No blocks found with dcrd getbestblock"),
                });
            }

            // If the difference in block height
            const int unsyncedThreshold = 3;
            var       isUnsynced        = Math.Abs(dcrdTopBlock.Height - dcrdataTopBlock.Height) > unsyncedThreshold;

            if (isUnsynced)
            {
                return(new []
                {
                    HealthIssue.Create("BlockHeightOutOfSync",
                                       $"dcrd at blockheight {dcrdTopBlock.Height} while dcrdata at blockheight {dcrdataTopBlock.Height}"),
                });
            }

            return(new HealthIssue[0]);
        }