Thrift底层对java传输空值对象的处理

在使用Thrift作为RPC框架时,遇到数据库中字段默认为null导致的Java空指针异常。问题出现在Thrift无法处理Java的null值转换为基本数据类型。通过对Thrift底层解析的探讨,发现其仅支持基本类型。解决方案是在后端读取到null时,转换为0以避免异常,确保接口兼容性。
摘要由CSDN通过智能技术生成

一、问题背景

基本需求

对于模型租户控制台新增了一个字段,名称为max_token_limit,表示模型请求的最大token限制,现在需要开放一个RPC接口,用来查询某个模型的最大token的属性,给其他模块调用。RPC框架采用的是Thrift,它通过IDL具备跨语言调用的能力,支持语言包括但不限于java、golang、c++、python等。

研发过程

功能开发过程并不难,根据传入的模型信息参数,由于支持批量传输,所以入参是一个列表,我们只需要从数据库里面批量读取当前模型允许的最大token属性,存储到一个list里面,然后传输给调用方就行。在线下boe环境数据库里面,我批量设置了max_token_limit初始数值为0,在预发和线上环境的数据库里面则没有进行初始化设置,默认为null.一番简单改代码后,线下boe环境测试成功。

预发环境出现的问题

当我把代码发到预发上以后,控制台出现报错空指针异常,获取logID,通过日志系统进行链路流程追踪,发现报错信息如下。
可以发现是运行到Thrift的某个write函数的地方出现了错误,但是具体细

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值