修复flight-sql-js-client 支持连接dremio
flight-sql-js-client 是基于grpc+ arrow flight 的原生arrow flight sql client,上次我也说过连接dremio 是有问题的,通过实际上的分析(结合wireshark 以及jave remote debug) 发现实际的请求是可以处理成功的,而且用户认证实际是成功的,只是client 在处理协议的时候不完整,以下说明下解决方法
内部原因
因为dremio 在处理auth 上使用了自己的auth2默认的认证(实际上也是标准的arrow flight rpc 模式),支持对于auth 的token 是基于了rpc 的status 处理的,并没有通过metadata 那个事件处理的,所以数据处理上就有缺陷
解决方法
添加对于status 的处理就可以了,参考如下
grpc_util.ts
call.on("status", (status) => {
if(status.code === 0) {
this.responses_.push({ metadata: new Metadata(status.metadata) });
}
});
说明
修改之后连接dremio 是可以的,目前我也已经发了一个pr,临时使用的可以自己直接修改构建,基于原生grpc 的arrow flight sql 访问还是挺方便的
参考资料
https://github.com/voltrondata/sqlflite
浙公网安备 33010602011771号