Skip to content

Commit e239911

Browse files
committed
use cx.execute_scoped for optimization
1 parent 2ef1675 commit e239911

File tree

1 file changed

+19
-9
lines changed

1 file changed

+19
-9
lines changed

packages/cubejs-backend-native/src/node_export.rs

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -513,16 +513,26 @@ fn parse_cubestore_ws_result_message(mut cx: FunctionContext) -> JsResult<JsValu
513513
let msg_data = msg.as_slice(&cx).to_vec();
514514
match parse_cubestore_ws_result(&*msg_data) {
515515
Ok(result) => {
516-
let js_array = JsArray::new(&mut cx, result.len());
517-
for (i, row) in result.into_iter().enumerate() {
518-
let js_row = JsObject::new(&mut cx);
519-
for (key, value) in row.into_iter() {
520-
let js_key = cx.string(key);
521-
let js_value = cx.string(value);
522-
js_row.set(&mut cx, js_key, js_value)?;
516+
let js_array = cx.execute_scoped(|mut cx| {
517+
let js_array = JsArray::new(&mut cx, result.len());
518+
519+
for (i, row) in result.into_iter().enumerate() {
520+
let js_row = cx.execute_scoped(|mut cx| {
521+
let js_row = JsObject::new(&mut cx);
522+
for (key, value) in row.into_iter() {
523+
let js_key = cx.string(key);
524+
let js_value = cx.string(value);
525+
js_row.set(&mut cx, js_key, js_value)?;
526+
}
527+
Ok(js_row)
528+
})?;
529+
530+
js_array.set(&mut cx, i as u32, js_row)?;
523531
}
524-
js_array.set(&mut cx, i as u32, js_row)?;
525-
}
532+
533+
Ok(js_array)
534+
})?;
535+
526536
Ok(js_array.upcast())
527537
}
528538
Err(err) => cx.throw_error(err.to_string()),

0 commit comments

Comments
 (0)