@@ -11,6 +11,7 @@ import (
1111 "api.audius.co/trashid"
1212 "connectrpc.com/connect"
1313 v1 "github.com/OpenAudio/go-openaudio/pkg/api/core/v1"
14+ "github.com/OpenAudio/go-openaudio/pkg/sdk"
1415 cconfig "github.com/OpenAudio/go-openaudio/pkg/core/config"
1516 "github.com/OpenAudio/go-openaudio/pkg/core/server"
1617 eth_gen "github.com/OpenAudio/go-openaudio/pkg/eth/contracts/gen"
@@ -259,37 +260,43 @@ func (app *ApiServer) relay(c *fiber.Ctx) error {
259260 })
260261}
261262
263+ const sosEndpoint = "https://sos.audius.co"
264+
262265func (app * ApiServer ) handleRelay (ctx context.Context , logger * zap.Logger , decodedTx * v1.ManageEntityLegacy ) (* v1.Transaction , error ) {
263- allClients := app .openAudioPool .GetAll ()
264- if len (allClients ) == 0 {
265- logger .Error ("no OpenAudio clients configured" )
266- return nil , fmt .Errorf ("no OpenAudio clients configured" )
267- }
268-
269- var lastErr error
270- for i , clientInfo := range allClients {
271- endpointLogger := logger .With (zap .String ("openaudio_endpoint" , clientInfo .Endpoint ), zap .Int ("attempt" , i + 1 ))
272- res , err := clientInfo .Client .Core .SendTransaction (ctx , connect .NewRequest (& v1.SendTransactionRequest {
273- Transaction : & v1.SignedTransaction {
274- Transaction : & v1.SignedTransaction_ManageEntity {
275- ManageEntity : decodedTx ,
276- },
266+ req := & v1.SendTransactionRequest {
267+ Transaction : & v1.SignedTransaction {
268+ Transaction : & v1.SignedTransaction_ManageEntity {
269+ ManageEntity : decodedTx ,
277270 },
278- }))
279-
280- if err != nil {
281- lastErr = err
282- endpointLogger .Warn ("transaction failed, trying next" , zap .Error (err ))
283- continue
271+ },
272+ }
273+
274+ // mainnet
275+ go func () {
276+ allClients := app .openAudioPool .GetAll ()
277+ for i , clientInfo := range allClients {
278+ endpointLogger := logger .With (zap .String ("openaudio_endpoint" , clientInfo .Endpoint ), zap .Int ("attempt" , i + 1 ))
279+ res , err := clientInfo .Client .Core .SendTransaction (context .Background (), connect .NewRequest (req ))
280+ if err != nil {
281+ endpointLogger .Warn ("transaction failed, trying next" , zap .Error (err ))
282+ continue
283+ }
284+ endpointLogger .Info ("transaction confirmed" , zap .String ("hash" , res .Msg .Transaction .GetHash ()))
285+ return
284286 }
287+ logger .Error ("all mainnet endpoints failed" )
288+ }()
285289
286- msg := res .Msg .Transaction
287- endpointLogger .Info ("transaction confirmed" , zap .String ("hash" , msg .GetHash ()))
288- return msg , nil
290+ // sos
291+ sosClient := sdk .NewOpenAudioSDK (sosEndpoint )
292+ sosLogger := logger .With (zap .String ("openaudio_endpoint" , sosEndpoint ))
293+ res , err := sosClient .Core .SendTransaction (ctx , connect .NewRequest (req ))
294+ if err != nil {
295+ sosLogger .Warn ("sos dual-write failed" , zap .Error (err ))
296+ return nil , err
289297 }
290-
291- logger .Error ("all OpenAudio endpoints failed" , zap .Error (lastErr ))
292- return nil , fmt .Errorf ("all endpoints failed, last error: %w" , lastErr )
298+ sosLogger .Info ("sos dual-write confirmed" , zap .String ("hash" , res .Msg .Transaction .GetHash ()))
299+ return res .Msg .Transaction , nil
293300}
294301
295302func transactionToReceipt (tx * v1.Transaction , wallet string ) map [string ]interface {} {
0 commit comments