diff --git a/retrievalprovider/requestvalidation.go b/retrievalprovider/requestvalidation.go index f7a3bd13..927d9ad8 100644 --- a/retrievalprovider/requestvalidation.go +++ b/retrievalprovider/requestvalidation.go @@ -198,7 +198,7 @@ func (rv *ProviderRequestValidator) acceptDeal(ctx context.Context, deal *types. for _, minerDeal := range minerDeals { minerCfg, err := rv.cfg.MinerProviderConfig(minerDeal.Proposal.Provider, true) if err != nil { - return retrievalmarket.DealStatusErrored, err + continue } if minerCfg.RetrievalPaymentAddress.Unwrap().Empty() { continue diff --git a/retrievalprovider/stream_handler.go b/retrievalprovider/stream_handler.go index c3013987..488d7f7b 100644 --- a/retrievalprovider/stream_handler.go +++ b/retrievalprovider/stream_handler.go @@ -102,9 +102,9 @@ func (p *RetrievalStreamHandler) HandleQueryStream(stream rmnet.RetrievalQuerySt minerCfg, err := p.cfg.MinerProviderConfig(deal.Proposal.Provider, true) if err != nil { - answer.Status = retrievalmarket.QueryResponseError - answer.Message = err.Error() - sendResp(answer) + answers[i].Status = retrievalmarket.QueryResponseError + answers[i].Message = err.Error() + continue } paymentAddr := minerCfg.RetrievalPaymentAddress.Unwrap() if paymentAddr == address.Undef { @@ -120,6 +120,7 @@ func (p *RetrievalStreamHandler) HandleQueryStream(stream rmnet.RetrievalQuerySt return } + var firstErrorIdx = -1 validAnswers := make([]*retrievalmarket.QueryResponse, 0, validDealCount) for i, deal := range minerDeals { if len(answers[i].Message) != 0 { @@ -127,8 +128,11 @@ func (p *RetrievalStreamHandler) HandleQueryStream(stream rmnet.RetrievalQuerySt } ask, err := p.askRepo.GetAsk(ctx, deal.Proposal.Provider) if err != nil { - answer.Status = retrievalmarket.QueryResponseError - answer.Message = fmt.Sprintf("failed to got deal price: %s, %s", deal.Proposal.Provider, err) + if firstErrorIdx == -1 { + firstErrorIdx = i + } + answers[i].Status = retrievalmarket.QueryResponseError + answers[i].Message = fmt.Sprintf("failed to got deal price: %s, %s", deal.Proposal.Provider, err) continue } @@ -140,7 +144,7 @@ func (p *RetrievalStreamHandler) HandleQueryStream(stream rmnet.RetrievalQuerySt } if len(validAnswers) == 0 { - sendResp(answers[0]) + sendResp(answers[firstErrorIdx]) } else { sendResp(*validAnswers[0]) }