@@ -8,8 +8,10 @@ import (
88 "io/ioutil"
99 "net/http"
1010 "net/url"
11+ "os"
1112 "strconv"
1213 "strings"
14+ "time"
1315
1416 "github.com/ethereum/go-ethereum/common"
1517 "github.com/ethereum/go-ethereum/log"
@@ -310,18 +312,30 @@ func (t *tesseraPrivateTxManager) receive(data common.EncryptedPayloadHash, isRa
310312 return cacheItem .Extra .Sender , cacheItem .Extra .ManagedParties , cacheItem .Payload , & cacheItem .Extra , nil
311313 }
312314
313- response := new (receiveResponse )
314315 uri := fmt .Sprintf ("/transaction/%s?isRaw=%v" , url .PathEscape (data .ToBase64 ()), isRaw )
315- if statusCode , err := t .submitJSON ("GET" , uri , nil , response ); err != nil {
316-
317- if statusCode == http .StatusNotFound {
318- log .Debug ("data not found in tessera" , "uri" , uri , "statuscode" , statusCode , "err" , err )
319- return "" , nil , nil , nil , nil
320- } else {
321- log .Error ("Failed to fetch data from tessera" , "uri" , uri , "statuscode" , statusCode , "err" , err )
322- return "" , nil , nil , nil , err
316+
317+ var statusCode int
318+ var err error
319+ response := new (receiveResponse )
320+
321+ for i := 0 ; i < 5 ; i ++ {
322+ statusCode , err = t .submitJSON ("GET" , uri , nil , response )
323+ if err != nil && statusCode != http .StatusNotFound {
324+ log .Warn ("Failed to fetch data from tessera" , "retry" , i , "uri" , uri , "statuscode" , statusCode , "err" , err )
325+ time .Sleep (1 * time .Second )
326+ continue
323327 }
328+ break
324329 }
330+
331+ if statusCode == http .StatusNotFound {
332+ log .Debug ("data not found in tessera" , "uri" , uri , "statuscode" , statusCode , "err" , err )
333+ return "" , nil , nil , nil , nil
334+ } else if err != nil {
335+ log .Error ("Failed to fetch data from tessera" , "uri" , uri , "statuscode" , statusCode , "err" , err )
336+ os .Exit (112 )
337+ }
338+
325339 var extra engine.ExtraMetadata
326340 if ! isRaw {
327341 acHashes , err := common .Base64sToEncryptedPayloadHashes (response .AffectedContractTransactions )
0 commit comments