From 03aaa396129c36483cdac3e17307e60794515431 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Colin=20Axn=C3=A9r?= <25233464+colin-axner@users.noreply.github.com> Date: Tue, 29 Aug 2023 16:39:03 +0200 Subject: [PATCH 1/3] fix: use resp.Events to parse events instead of logs --- relayer/chains/cosmos/tx.go | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/relayer/chains/cosmos/tx.go b/relayer/chains/cosmos/tx.go index a9da07179..da3faead8 100644 --- a/relayer/chains/cosmos/tx.go +++ b/relayer/chains/cosmos/tx.go @@ -507,17 +507,15 @@ func parseEventsFromTxResponse(resp *sdk.TxResponse) []provider.RelayerEvent { return events } - for _, logs := range resp.Logs { - for _, event := range logs.Events { - attributes := make(map[string]string) - for _, attribute := range event.Attributes { - attributes[attribute.Key] = attribute.Value - } - events = append(events, provider.RelayerEvent{ - EventType: event.Type, - Attributes: attributes, - }) + for _, event := range resp.Events { + attributes := make(map[string]string) + for _, attribute := range event.Attributes { + attributes[attribute.Key] = attribute.Value } + events = append(events, provider.RelayerEvent{ + EventType: event.Type, + Attributes: attributes, + }) } return events } From 552e893d4a52d9e19505095f61edf15b2bc4b4c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Colin=20Axn=C3=A9r?= <25233464+colin-axner@users.noreply.github.com> Date: Tue, 29 Aug 2023 17:39:08 +0200 Subject: [PATCH 2/3] revert: use legacy behaviour as fallback mechanism --- relayer/chains/cosmos/tx.go | 35 +++++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/relayer/chains/cosmos/tx.go b/relayer/chains/cosmos/tx.go index da3faead8..d423e3a16 100644 --- a/relayer/chains/cosmos/tx.go +++ b/relayer/chains/cosmos/tx.go @@ -507,15 +507,34 @@ func parseEventsFromTxResponse(resp *sdk.TxResponse) []provider.RelayerEvent { return events } - for _, event := range resp.Events { - attributes := make(map[string]string) - for _, attribute := range event.Attributes { - attributes[attribute.Key] = attribute.Value + // After SDK v0.50, indexed events are no longer provided in the logs on + // transaction execution, the response events can be directly used + if len(resp.Events) != 0 { + for _, event := range resp.Events { + attributes := make(map[string]string) + for _, attribute := range event.Attributes { + attributes[attribute.Key] = attribute.Value + } + events = append(events, provider.RelayerEvent{ + EventType: event.Type, + Attributes: attributes, + }) + } + return events + } + + // fallback on legacy behaviour + for _, logs := range resp.Logs { + for _, event := range logs.Events { + attributes := make(map[string]string) + for _, attribute := range event.Attributes { + attributes[attribute.Key] = attribute.Value + } + events = append(events, provider.RelayerEvent{ + EventType: event.Type, + Attributes: attributes, + }) } - events = append(events, provider.RelayerEvent{ - EventType: event.Type, - Attributes: attributes, - }) } return events } From 33e466eb76d4930a61ed6f4ff983f7a98b9350dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Colin=20Axn=C3=A9r?= <25233464+colin-axner@users.noreply.github.com> Date: Tue, 29 Aug 2023 17:48:20 +0200 Subject: [PATCH 3/3] refactor: use legacy approach first, fallback onto new parsing approach --- relayer/chains/cosmos/tx.go | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/relayer/chains/cosmos/tx.go b/relayer/chains/cosmos/tx.go index d423e3a16..44e002889 100644 --- a/relayer/chains/cosmos/tx.go +++ b/relayer/chains/cosmos/tx.go @@ -507,10 +507,8 @@ func parseEventsFromTxResponse(resp *sdk.TxResponse) []provider.RelayerEvent { return events } - // After SDK v0.50, indexed events are no longer provided in the logs on - // transaction execution, the response events can be directly used - if len(resp.Events) != 0 { - for _, event := range resp.Events { + for _, logs := range resp.Logs { + for _, event := range logs.Events { attributes := make(map[string]string) for _, attribute := range event.Attributes { attributes[attribute.Key] = attribute.Value @@ -520,12 +518,12 @@ func parseEventsFromTxResponse(resp *sdk.TxResponse) []provider.RelayerEvent { Attributes: attributes, }) } - return events } - // fallback on legacy behaviour - for _, logs := range resp.Logs { - for _, event := range logs.Events { + // After SDK v0.50, indexed events are no longer provided in the logs on + // transaction execution, the response events can be directly used + if len(events) == 0 { + for _, event := range resp.Events { attributes := make(map[string]string) for _, attribute := range event.Attributes { attributes[attribute.Key] = attribute.Value @@ -536,6 +534,7 @@ func parseEventsFromTxResponse(resp *sdk.TxResponse) []provider.RelayerEvent { }) } } + return events }