@@ -243,16 +243,27 @@ func (eIndexer *EventsIndexer) SyncEvent(ctx context.Context, selector *client.E
243243 }
244244
245245 if dbOffsetCursor != nil {
246- txDigestBytes , err := hex .DecodeString (strings .TrimPrefix (dbOffsetCursor .TxDigest , "0x" ))
247- if err != nil {
248- eIndexer .cursorMutex .RUnlock ()
249- eIndexer .logger .Errorw ("syncEvent: failed to decode tx digest" , "error" , err , "txDigest" , dbOffsetCursor .TxDigest )
250- return err
251- }
252- // convert the db offset cursor digest from hex (the format stored in the DB) to base58 (the format expected by the client)
253- cursor = & models.EventId {
254- TxDigest : base58 .Encode (txDigestBytes ),
255- EventSeq : dbOffsetCursor .EventSeq ,
246+ txDigest := dbOffsetCursor .TxDigest
247+
248+ // note: this is to ensure existing base58 txDigest can be read without error pre-migration.
249+ if strings .HasPrefix (txDigest , "0x" ) || strings .HasPrefix (txDigest , "0X" ) {
250+ txDigestBytes , err := hex .DecodeString (strings .TrimPrefix (strings .TrimPrefix (txDigest , "0x" ), "0X" ))
251+ if err != nil {
252+ eIndexer .cursorMutex .RUnlock ()
253+ eIndexer .logger .Errorw ("syncEvent: failed to decode tx digest" , "error" , err , "txDigest" , dbOffsetCursor .TxDigest )
254+ return err
255+ }
256+
257+ cursor = & models.EventId {
258+ TxDigest : base58 .Encode (txDigestBytes ),
259+ EventSeq : dbOffsetCursor .EventSeq ,
260+ }
261+ } else {
262+ // DB already has base58
263+ cursor = & models.EventId {
264+ TxDigest : txDigest ,
265+ EventSeq : dbOffsetCursor .EventSeq ,
266+ }
256267 }
257268
258269 totalCount = dbTotalCount
0 commit comments