diff --git a/handlers/index.go b/handlers/index.go index 9757d502..631daba7 100644 --- a/handlers/index.go +++ b/handlers/index.go @@ -25,7 +25,6 @@ func Index(w http.ResponseWriter, r *http.Request) { "index/recentBlocks.html", "index/recentEpochs.html", "index/recentSlots.html", - "_svg/professor.html", "_svg/timeline.html", ) diff --git a/handlers/slot.go b/handlers/slot.go index 74771d8a..0fc59e27 100644 --- a/handlers/slot.go +++ b/handlers/slot.go @@ -146,7 +146,9 @@ func buildSlotPageData(blockSlot int64, blockRoot []byte) (*models.SlotPageData, var blockData *rpctypes.CombinedBlockResponse var err error if blockSlot > -1 { - blockData, err = services.GlobalBeaconService.GetSlotDetailsBySlot(uint64(blockSlot), false) + if uint64(blockSlot) <= currentSlot { + blockData, err = services.GlobalBeaconService.GetSlotDetailsBySlot(uint64(blockSlot), false) + } } else { blockData, err = services.GlobalBeaconService.GetSlotDetailsByBlockroot(blockRoot, false) } diff --git a/indexer/client.go b/indexer/client.go index 9c0a72ec..611675bd 100644 --- a/indexer/client.go +++ b/indexer/client.go @@ -86,7 +86,10 @@ func (client *IndexerClient) runIndexerClientLoop() { defer utils.HandleSubroutinePanic("runIndexerClientLoop") for { - err := client.runIndexerClient() + err := client.checkIndexerClient() + if err == nil { + err = client.runIndexerClient() + } if err != nil { client.retryCounter++ waitTime := 10 @@ -95,6 +98,19 @@ func (client *IndexerClient) runIndexerClientLoop() { } else if client.retryCounter > 5 { waitTime = 60 } + + genesisTime := time.Unix(int64(utils.Config.Chain.GenesisTimestamp), 0) + genesisSince := time.Since(genesisTime) + fmt.Printf("genesis %v\n", int(genesisSince.Seconds())) + if genesisSince < 0 { + if genesisSince > (time.Duration)(0-waitTime)*time.Second { + waitTime = int(genesisSince.Abs().Seconds()) + client.retryCounter = 0 + logger.WithField("client", client.clientName).Infof("waiting for genesis (%v secs)", waitTime) + } else { + waitTime = 600 + } + } logger.WithField("client", client.clientName).Warnf("indexer client error: %v, retrying in %v sec...", err, waitTime) time.Sleep(time.Duration(waitTime) * time.Second) } else { @@ -103,7 +119,7 @@ func (client *IndexerClient) runIndexerClientLoop() { } } -func (client *IndexerClient) runIndexerClient() error { +func (client *IndexerClient) checkIndexerClient() error { // get node version nodeVersion, err := client.rpcClient.GetNodeVersion() if err != nil { @@ -129,16 +145,6 @@ func (client *IndexerClient) runIndexerClient() error { return fmt.Errorf("genesis fork version from RPC does not match the genesis fork version explorer configuration") } - // get latest header - latestHeader, err := client.rpcClient.GetLatestBlockHead() - if err != nil { - return fmt.Errorf("could not get latest header: %v", err) - } - if latestHeader == nil { - return fmt.Errorf("could not find latest header") - } - client.setHeadBlock(latestHeader.Data.Root, uint64(latestHeader.Data.Header.Message.Slot)) - // check syncronization state syncStatus, err := client.rpcClient.GetNodeSyncing() if err != nil { @@ -149,7 +155,23 @@ func (client *IndexerClient) runIndexerClient() error { } client.isSynchronizing = syncStatus.Data.IsSyncing || syncStatus.Data.IsOptimistic client.syncDistance = uint64(syncStatus.Data.SyncDistance) - if syncStatus.Data.IsSyncing || syncStatus.Data.IsOptimistic { + + return nil +} + +func (client *IndexerClient) runIndexerClient() error { + // get latest header + latestHeader, err := client.rpcClient.GetLatestBlockHead() + if err != nil { + return fmt.Errorf("could not get latest header: %v", err) + } + if latestHeader == nil { + return fmt.Errorf("could not find latest header") + } + client.setHeadBlock(latestHeader.Data.Root, uint64(latestHeader.Data.Header.Message.Slot)) + + // check latest header / sync status + if client.isSynchronizing { return fmt.Errorf("beacon node is synchronizing") } if client.indexerCache.finalizedEpoch >= 0 && utils.EpochOfSlot(uint64(latestHeader.Data.Header.Message.Slot)) <= uint64(client.indexerCache.finalizedEpoch) { diff --git a/templates/index/recentBlocks.html b/templates/index/recentBlocks.html index 569eacdc..e442d9f0 100644 --- a/templates/index/recentBlocks.html +++ b/templates/index/recentBlocks.html @@ -50,14 +50,10 @@
- - -
- {{ template "timeline_svg" }} -
+ + + no blocks found - {{ end }} diff --git a/templates/index/recentEpochs.html b/templates/index/recentEpochs.html index cfa0e9f9..491344f9 100644 --- a/templates/index/recentEpochs.html +++ b/templates/index/recentEpochs.html @@ -45,14 +45,10 @@
- - -
- {{ template "professor_svg" }} -
+ + + no epochs found - {{ end }}