@@ -73,42 +73,46 @@ func (ccc *CircuitCapacityChecker) ApplyTransaction(traces *types.BlockTrace) (*
73
73
}
74
74
75
75
encodeStart := time .Now ()
76
- rustTrace := MakeRustTrace (traces , & ccc .jsonBuffer )
76
+ ccc .jsonBuffer .Reset ()
77
+ err := json .NewEncoder (& ccc .jsonBuffer ).Encode (traces )
78
+ if err != nil {
79
+ log .Error ("fail to json marshal traces in ApplyTransaction" , "id" , ccc .ID , "TxHash" , traces .Transactions [0 ].TxHash , "err" , err )
80
+ return nil , ErrUnknown
81
+ }
82
+
83
+ tracesStr := C .CString (string (ccc .jsonBuffer .Bytes ()))
84
+ defer func () {
85
+ C .free (unsafe .Pointer (tracesStr ))
86
+ }()
87
+
88
+ rustTrace := C .parse_json_to_rust_trace (tracesStr )
77
89
if rustTrace == nil {
78
90
log .Error ("fail to parse json in to rust trace" , "id" , ccc .ID , "TxHash" , traces .Transactions [0 ].TxHash )
79
91
return nil , ErrUnknown
80
92
}
81
93
encodeTimer .UpdateSince (encodeStart )
82
94
83
95
log .Debug ("start to check circuit capacity for tx" , "id" , ccc .ID , "TxHash" , traces .Transactions [0 ].TxHash )
84
- return ccc .applyTransactionRustTrace (rustTrace )
85
- }
86
-
87
- func (ccc * CircuitCapacityChecker ) ApplyTransactionRustTrace (rustTrace unsafe.Pointer ) (* types.RowConsumption , error ) {
88
- ccc .Lock ()
89
- defer ccc .Unlock ()
90
- return ccc .applyTransactionRustTrace (rustTrace )
91
- }
92
-
93
- func (ccc * CircuitCapacityChecker ) applyTransactionRustTrace (rustTrace unsafe.Pointer ) (* types.RowConsumption , error ) {
94
96
rawResult := C .apply_tx (C .uint64_t (ccc .ID ), rustTrace )
95
97
defer func () {
96
98
C .free_c_chars (rawResult )
97
99
}()
100
+ log .Debug ("check circuit capacity for tx done" , "id" , ccc .ID , "TxHash" , traces .Transactions [0 ].TxHash )
98
101
99
102
result := & WrappedRowUsage {}
100
- if err : = json .Unmarshal ([]byte (C .GoString (rawResult )), result ); err != nil {
101
- log .Error ("fail to json unmarshal apply_tx result" , "id" , ccc .ID , "err" , err )
103
+ if err = json .Unmarshal ([]byte (C .GoString (rawResult )), result ); err != nil {
104
+ log .Error ("fail to json unmarshal apply_tx result" , "id" , ccc .ID , "TxHash" , traces . Transactions [ 0 ]. TxHash , " err" , err )
102
105
return nil , ErrUnknown
103
106
}
104
107
105
108
if result .Error != "" {
106
- log .Error ("fail to apply_tx in CircuitCapacityChecker" , "id" , ccc .ID , "err" , result .Error )
109
+ log .Error ("fail to apply_tx in CircuitCapacityChecker" , "id" , ccc .ID , "TxHash" , traces . Transactions [ 0 ]. TxHash , " err" , result .Error )
107
110
return nil , ErrUnknown
108
111
}
109
112
if result .AccRowUsage == nil {
110
113
log .Error ("fail to apply_tx in CircuitCapacityChecker" ,
111
- "id" , ccc .ID , "result.AccRowUsage == nil" , result .AccRowUsage == nil ,
114
+ "id" , ccc .ID , "TxHash" , traces .Transactions [0 ].TxHash ,
115
+ "result.AccRowUsage == nil" , result .AccRowUsage == nil ,
112
116
"err" , "AccRowUsage is empty unexpectedly" )
113
117
return nil , ErrUnknown
114
118
}
@@ -124,7 +128,19 @@ func (ccc *CircuitCapacityChecker) ApplyBlock(traces *types.BlockTrace) (*types.
124
128
defer ccc .Unlock ()
125
129
126
130
encodeStart := time .Now ()
127
- rustTrace := MakeRustTrace (traces , & ccc .jsonBuffer )
131
+ ccc .jsonBuffer .Reset ()
132
+ err := json .NewEncoder (& ccc .jsonBuffer ).Encode (traces )
133
+ if err != nil {
134
+ log .Error ("fail to json marshal traces in ApplyBlock" , "id" , ccc .ID , "blockNumber" , traces .Header .Number , "blockHash" , traces .Header .Hash (), "err" , err )
135
+ return nil , ErrUnknown
136
+ }
137
+
138
+ tracesStr := C .CString (string (ccc .jsonBuffer .Bytes ()))
139
+ defer func () {
140
+ C .free (unsafe .Pointer (tracesStr ))
141
+ }()
142
+
143
+ rustTrace := C .parse_json_to_rust_trace (tracesStr )
128
144
if rustTrace == nil {
129
145
log .Error ("fail to parse json in to rust trace" , "id" , ccc .ID , "TxHash" , traces .Transactions [0 ].TxHash )
130
146
return nil , ErrUnknown
@@ -139,7 +155,7 @@ func (ccc *CircuitCapacityChecker) ApplyBlock(traces *types.BlockTrace) (*types.
139
155
log .Debug ("check circuit capacity for block done" , "id" , ccc .ID , "blockNumber" , traces .Header .Number , "blockHash" , traces .Header .Hash ())
140
156
141
157
result := & WrappedRowUsage {}
142
- if err : = json .Unmarshal ([]byte (C .GoString (rawResult )), result ); err != nil {
158
+ if err = json .Unmarshal ([]byte (C .GoString (rawResult )), result ); err != nil {
143
159
log .Error ("fail to json unmarshal apply_block result" , "id" , ccc .ID , "blockNumber" , traces .Header .Number , "blockHash" , traces .Header .Hash (), "err" , err )
144
160
return nil , ErrUnknown
145
161
}
@@ -203,23 +219,3 @@ func (ccc *CircuitCapacityChecker) SetLightMode(lightMode bool) error {
203
219
204
220
return nil
205
221
}
206
-
207
- func MakeRustTrace (trace * types.BlockTrace , buffer * bytes.Buffer ) unsafe.Pointer {
208
- if buffer == nil {
209
- buffer = new (bytes.Buffer )
210
- }
211
- buffer .Reset ()
212
-
213
- err := json .NewEncoder (buffer ).Encode (trace )
214
- if err != nil {
215
- log .Error ("fail to json marshal traces in MakeRustTrace" , "err" , err )
216
- return nil
217
- }
218
-
219
- tracesStr := C .CString (string (buffer .Bytes ()))
220
- defer func () {
221
- C .free (unsafe .Pointer (tracesStr ))
222
- }()
223
-
224
- return C .parse_json_to_rust_trace (tracesStr )
225
- }
0 commit comments