From 33964476d995606c56dd62b97997026a8525948b Mon Sep 17 00:00:00 2001 From: Rachit Sonthalia <54906134+rachit77@users.noreply.github.com> Date: Tue, 12 Nov 2024 17:42:57 +0530 Subject: [PATCH] refact: GetSequence method (#169) --- .../datacommittee/datacommittee.go | 33 ++++++------------- 1 file changed, 10 insertions(+), 23 deletions(-) diff --git a/dataavailability/datacommittee/datacommittee.go b/dataavailability/datacommittee/datacommittee.go index 474c5934..369fc0fe 100644 --- a/dataavailability/datacommittee/datacommittee.go +++ b/dataavailability/datacommittee/datacommittee.go @@ -105,53 +105,40 @@ func (d *Backend) Init() error { return nil } -// GetSequence gets backend data one hash at a time. This should be optimized on the DAC side to get them all at once. +// GetSequence retrieves backend data by querying committee members for each hash concurrently. func (d *Backend) GetSequence(_ context.Context, hashes []common.Hash, _ []byte) ([][]byte, error) { - intialMember := d.selectedCommitteeMember + initialMember := d.selectedCommitteeMember - var found bool - for !found && intialMember != -1 { + var batchData [][]byte + for retries := 0; retries < len(d.committeeMembers); retries++ { member := d.committeeMembers[d.selectedCommitteeMember] d.logger.Infof("trying to get data from %s at %s", member.Addr.Hex(), member.URL) c := d.dataCommitteeClientFactory.New(member.URL) - dataMap, err := c.ListOffChainData(d.ctx, hashes) if err != nil { - d.logger.Warnf( - "error getting data from DAC node %s at %s: %s", - member.Addr.Hex(), member.URL, err, - ) + d.logger.Warnf("error getting data from DAC node %s at %s: %s", member.Addr.Hex(), member.URL, err) d.selectedCommitteeMember = (d.selectedCommitteeMember + 1) % len(d.committeeMembers) - if d.selectedCommitteeMember == intialMember { + if d.selectedCommitteeMember == initialMember { break } - continue } - batchData := make([][]byte, 0, len(hashes)) + batchData = make([][]byte, 0, len(hashes)) for _, hash := range hashes { actualTransactionsHash := crypto.Keccak256Hash(dataMap[hash]) if actualTransactionsHash != hash { - unexpectedHash := fmt.Errorf( - unexpectedHashTemplate, hash, actualTransactionsHash, - ) - d.logger.Warnf( - "error getting data from DAC node %s at %s: %s", - member.Addr.Hex(), member.URL, unexpectedHash, - ) + unexpectedHash := fmt.Errorf(unexpectedHashTemplate, hash, actualTransactionsHash) + d.logger.Warnf("error getting data from DAC node %s at %s: %s", member.Addr.Hex(), member.URL, unexpectedHash) d.selectedCommitteeMember = (d.selectedCommitteeMember + 1) % len(d.committeeMembers) - if d.selectedCommitteeMember == intialMember { + if d.selectedCommitteeMember == initialMember { break } - continue } - batchData = append(batchData, dataMap[hash]) } - return batchData, nil }