File tree Expand file tree Collapse file tree 3 files changed +17
-10
lines changed
cubejs-cubestore-driver/src Expand file tree Collapse file tree 3 files changed +17
-10
lines changed Original file line number Diff line number Diff line change @@ -370,10 +370,10 @@ export const buildSqlAndParams = (cubeEvaluator: any): String => {
370370
371371export type ResultRow = Record < string , string > ;
372372
373- export const parseCubestoreResultMessage = ( message : ArrayBuffer ) : CubeStoreResultWrapper => {
373+ export const parseCubestoreResultMessage = async ( message : ArrayBuffer ) : Promise < CubeStoreResultWrapper > => {
374374 const native = loadNative ( ) ;
375375
376- const msg = native . parseCubestoreResultMessage ( message ) ;
376+ const msg = await native . parseCubestoreResultMessage ( message ) ;
377377 return new CubeStoreResultWrapper ( msg ) ;
378378} ;
379379
Original file line number Diff line number Diff line change @@ -515,13 +515,20 @@ fn debug_js_to_clrepr_to_js(mut cx: FunctionContext) -> JsResult<JsValue> {
515515
516516//============ sql orchestrator ===================
517517
518- fn parse_cubestore_ws_result_message ( mut cx : FunctionContext ) -> JsResult < JsBox < CubeStoreResult > > {
518+ fn parse_cubestore_ws_result_message ( mut cx : FunctionContext ) -> JsResult < JsPromise > {
519519 let msg = cx. argument :: < JsBuffer > ( 0 ) ?;
520- let msg_data = msg. as_slice ( & cx) ;
521- match CubeStoreResult :: new ( msg_data) {
522- Ok ( result) => Ok ( cx. boxed ( result) ) ,
523- Err ( err) => cx. throw_error ( err. to_string ( ) ) ,
524- }
520+ let msg_data = msg. as_slice ( & cx) . to_vec ( ) ;
521+
522+ let promise = cx
523+ . task ( move || CubeStoreResult :: new ( & msg_data) )
524+ . promise ( move |mut cx, res| {
525+ match res {
526+ Ok ( result) => Ok ( cx. boxed ( result) ) ,
527+ Err ( err) => cx. throw_error ( err. to_string ( ) ) ,
528+ }
529+ } ) ;
530+
531+ Ok ( promise)
525532}
526533
527534fn get_cubestore_result ( mut cx : FunctionContext ) -> JsResult < JsValue > {
Original file line number Diff line number Diff line change @@ -109,7 +109,7 @@ export class WebSocketConnection {
109109 this . webSocket = undefined ;
110110 }
111111 } ) ;
112- webSocket . on ( 'message' , ( msg ) => {
112+ webSocket . on ( 'message' , async ( msg ) => {
113113 const buf = new flatbuffers . ByteBuffer ( msg ) ;
114114 const httpMessage = HttpMessage . getRootAsHttpMessage ( buf ) ;
115115 const resolvers = webSocket . sentMessages [ httpMessage . messageId ( ) ] ;
@@ -120,7 +120,7 @@ export class WebSocketConnection {
120120
121121 if ( getEnv ( 'nativeOrchestrator' ) && msg . length > 1000 ) {
122122 try {
123- const nativeResMsg = parseCubestoreResultMessage ( msg ) ;
123+ const nativeResMsg = await parseCubestoreResultMessage ( msg ) ;
124124 resolvers . resolve ( nativeResMsg ) ;
125125 } catch ( e ) {
126126 resolvers . reject ( e ) ;
You can’t perform that action at this time.
0 commit comments