今天写一个接口的时候一直报错decode 参数错误:

通过加日志追踪到出问题的代码:

这是个函数指针,找到对应的函数进去看到:

打印出val->type的值为32,SPDK_JSON_VAL_NUMBER的值是16,SPDK_JSON_VAL_STRING的值才是32,也就是这个传入的val是string类型,不是想要的int number类型,再继续追踪:

可以看到rpc_create顶层函数传入的size值就是string类型,这就奇怪了,明明命令行输入的值是数字呀,那就只能再去python脚本看看了,

和其他接口对比后,再去查看了python的argparse模块的命令行接口发现不指定参数类型默认是字符串类型,因此需要给数字类型的参数指定类型,修改后如下:

问题解决。