From 2f5b1e490bd720142db4451be802a65a6d25bfb9 Mon Sep 17 00:00:00 2001
From: Alex Sharov <AskAlexSharov@gmail.com>
Date: Tue, 7 Sep 2021 09:54:00 +0700
Subject: [PATCH] revert json iter  pool change (#2627)

---
 cmd/rpcdaemon/commands/trace_filtering.go | 28 +++++++++++++++--------
 1 file changed, 19 insertions(+), 9 deletions(-)

diff --git a/cmd/rpcdaemon/commands/trace_filtering.go b/cmd/rpcdaemon/commands/trace_filtering.go
index f91e71104e..d09b54727a 100644
--- a/cmd/rpcdaemon/commands/trace_filtering.go
+++ b/cmd/rpcdaemon/commands/trace_filtering.go
@@ -266,9 +266,7 @@ func (api *TraceAPIImpl) Filter(ctx context.Context, req TraceFilterRequest, str
 		return err
 	}
 
-	var stdlibCompatibleJson = jsoniter.ConfigCompatibleWithStandardLibrary.BorrowStream(stream)
-	defer jsoniter.ConfigCompatibleWithStandardLibrary.ReturnStream(stdlibCompatibleJson)
-
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
 	stream.WriteArrayStart()
 	first := true
 	// Execute all transactions in picked blocks
@@ -324,14 +322,18 @@ func (api *TraceAPIImpl) Filter(ctx context.Context, req TraceFilterRequest, str
 					pt.BlockNumber = &blockNumber
 					pt.TransactionHash = &txHash
 					pt.TransactionPosition = &txPosition
+					b, err := json.Marshal(pt)
+					if err != nil {
+						stream.WriteNil()
+						return err
+					}
 					if nSeen > after && nExported < count {
 						if first {
 							first = false
 						} else {
 							stream.WriteMore()
 						}
-						stdlibCompatibleJson.WriteVal(pt)
-						stdlibCompatibleJson.Flush()
+						stream.Write(b)
 						nExported++
 					}
 				}
@@ -352,14 +354,18 @@ func (api *TraceAPIImpl) Filter(ctx context.Context, req TraceFilterRequest, str
 			*tr.BlockNumber = block.NumberU64()
 			tr.Type = "reward" // nolint: goconst
 			tr.TraceAddress = []int{}
+			b, err := json.Marshal(tr)
+			if err != nil {
+				stream.WriteNil()
+				return err
+			}
 			if nSeen > after && nExported < count {
 				if first {
 					first = false
 				} else {
 					stream.WriteMore()
 				}
-				stdlibCompatibleJson.WriteVal(tr)
-				stdlibCompatibleJson.Flush()
+				stream.Write(b)
 				nExported++
 			}
 		}
@@ -379,14 +385,18 @@ func (api *TraceAPIImpl) Filter(ctx context.Context, req TraceFilterRequest, str
 					*tr.BlockNumber = block.NumberU64()
 					tr.Type = "reward" // nolint: goconst
 					tr.TraceAddress = []int{}
+					b, err := json.Marshal(tr)
+					if err != nil {
+						stream.WriteNil()
+						return err
+					}
 					if nSeen > after && nExported < count {
 						if first {
 							first = false
 						} else {
 							stream.WriteMore()
 						}
-						stdlibCompatibleJson.WriteVal(tr)
-						stdlibCompatibleJson.Flush()
+						stream.Write(b)
 						nExported++
 					}
 				}
-- 
GitLab