From fc08a3890deec81e0c31239c9b0807589e413df0 Mon Sep 17 00:00:00 2001 From: Will Scott Date: Fri, 30 Oct 2020 11:26:53 -0700 Subject: [PATCH 1/4] continue message parsing task when cbor parse fails --- tasks/message/message.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tasks/message/message.go b/tasks/message/message.go index 2be945b25..75e9f3ae4 100644 --- a/tasks/message/message.go +++ b/tasks/message/message.go @@ -419,13 +419,15 @@ func parseMsg(m *messagemodel.Message, ts *types.TipSet, destCode string) (*mess actor = statediff.LotusTypeUnknown params, name, err = statediff.ParseParams(m.Params, int(m.Method), actor) } - if err != nil { - return nil, xerrors.Errorf("parse params: %w", err) - } if name == "Unknown" { name = fmt.Sprintf("%s.%d", actor, m.Method) } pm.Method = name + if err != nil { + // this can occur when the message is not valid cbor + pm.Params = "" + return pm, nil + } if params != nil { buf := bytes.NewBuffer(nil) if err := fcjson.Encoder(params, buf); err != nil { From 541e5d78f4832d15dfefa74fb16f76d90d4cd134 Mon Sep 17 00:00:00 2001 From: Will Scott Date: Fri, 30 Oct 2020 14:46:59 -0700 Subject: [PATCH 2/4] sanitize utf8 json fix #186 --- tasks/message/message.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasks/message/message.go b/tasks/message/message.go index 75e9f3ae4..865f2163d 100644 --- a/tasks/message/message.go +++ b/tasks/message/message.go @@ -433,7 +433,7 @@ func parseMsg(m *messagemodel.Message, ts *types.TipSet, destCode string) (*mess if err := fcjson.Encoder(params, buf); err != nil { return nil, xerrors.Errorf("json encode: %w", err) } - pm.Params = string(buf.Bytes()) + pm.Params = string(bytes.ToValidUTF8(buf.Bytes(), []byte{})) } return pm, nil From 57ba3dfe0ddf4811c03942a418be6aadee32f053 Mon Sep 17 00:00:00 2001 From: Will Scott Date: Mon, 2 Nov 2020 10:14:51 -0800 Subject: [PATCH 3/4] add log per review --- tasks/message/message.go | 1 + 1 file changed, 1 insertion(+) diff --git a/tasks/message/message.go b/tasks/message/message.go index 865f2163d..833977eac 100644 --- a/tasks/message/message.go +++ b/tasks/message/message.go @@ -424,6 +424,7 @@ func parseMsg(m *messagemodel.Message, ts *types.TipSet, destCode string) (*mess } pm.Method = name if err != nil { + log.Warnf("failed to parse parameters of message %s: %v", m.Cid, err) // this can occur when the message is not valid cbor pm.Params = "" return pm, nil From 9975055f8bacb2270732555a8904cf3ce912b8d5 Mon Sep 17 00:00:00 2001 From: Will Scott Date: Thu, 5 Nov 2020 19:07:36 -0800 Subject: [PATCH 4/4] remove null bytes --- tasks/message/message.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasks/message/message.go b/tasks/message/message.go index 833977eac..c246c3091 100644 --- a/tasks/message/message.go +++ b/tasks/message/message.go @@ -434,7 +434,7 @@ func parseMsg(m *messagemodel.Message, ts *types.TipSet, destCode string) (*mess if err := fcjson.Encoder(params, buf); err != nil { return nil, xerrors.Errorf("json encode: %w", err) } - pm.Params = string(bytes.ToValidUTF8(buf.Bytes(), []byte{})) + pm.Params = string(bytes.ReplaceAll(bytes.ToValidUTF8(buf.Bytes(), []byte{}), []byte{0x00}, []byte{})) } return pm, nil