thrift运行过程报错,多线程环境,docker环境
报错信息:
terminate called after throwing an instance of 'apache::thrift::transport::TTransportException'
what(): Frame size has negative value
错误定位:
clinet调用sever端接口时卡死。
eg:
Ia10kThriftClient<common::api::thrift::TestClient> client;
void ClientInit()
{client.create(IP, POST, NAME);client.setTimeout(10000, 10000, 10000);client.open();
}void callback(const int id, const Data::data)
{boost::call_once(once_TOOLClientInit, &TOOLClientInit);try{cout<<"###add by zcq###start"<<endl;client->ResultData(id, data);cout<<"###add by zcq###end"<<endl;//usleep(1000); //1毫秒}catch (boost::bad_get&){ISFLOG_ERROR << "callback reslut error";return;}
}
多线程调用,或者callback调用频繁,会导致以上报错,现象为,执行到ResultData函数此语句时,会出现两个start却没有end,猜想可能是由于thrift内部资源死锁导致,有那位高人若知望指出哈。
解决方法:
在callback中加锁。(当时不知道,苦苦撑了好几天,撸了好多代码,走了好多弯路,说多了都是泪呀)
boost::unique_lock<boost::mutex> lock(mutex);
报错信息:
clinet端报错:
terminate called after throwing an instance of 'apache::thrift::TApplicationException'
what(): Unknown function Media:mediaResultPictureData
解决方法:
server用python
client用C++,但是python中的server有多种方法:
# server = TServer.TSimpleServer(tMultiplexedProcessor, transport, tfactory, pfactory)# server = TServer.TThreadPoolServer(tMultiplexedProcessor, transport, tfactory, pfactory)server = TServer.TThreadedServer(processor, transport, tfactory, pfactory)# server = TServer.TForkingServer(processor, transport, tfactory, pfactory)# server = TServer.TNonblockingServer(processor, transport, tfactory, pfactory)
至于和C++之中有什么关系有待进一步研究。。。
使用
TServer.TSimpleServer【python】搞定
thrift运行过程报错,多线程环境,docker环境相关推荐
- 解决 vue 项目运行过程报错 JavaScript heap out of memory(内存溢出) “‘node --max-old-space-size=10240“‘ 不是内部或外部命令
你是不是也遇到过 vue 项目 当你 ctrl+s,编译代码,项目就挂掉的情况?那么恭喜你,内存溢出了.兄dei,你膨胀了哟~ 不过不要慌,以下有完整的解决方案! 1.我们全局安装 i ...
- Linux上安装Apache环境及安装过程报错解决方案toastr弹框
一.Linux上安装Apache环境及安装 下载apache源代码 1.下载地址:http://httpd.apache.org/download.cgi 找稳定的最新的版本(Stable Rele ...
- 应用在vs的ide调试环境下运行顺利,但是在bin目录直接运行exe报错的问题
在项目中需要获取摄像头的实时视频,因为不想安装第三方的安装文件来实现,经过筛选找到了easydarwin中的libEasyPlayer. 我们的项目语言是C#,libEasyPlayer的语言是C++ ...
- 编译正确,运行ORB_SLAM3报错Segmentation fault
环境编译什么的都没问题,但一运行ORB_SLAM3(基于ROS)的时候就报Segmentation fault 无论是单目还是RGBD,详细的报错信息如下: max@max-virtual-m ...
- 苹果cms安装mysql检测失败_maccms(苹果cms)采集过程报错--MySQL server has gone away错误的解决办法...
maccms(苹果cms)采集过程报错--MySQL server has gone away,造成这样的原因一般是sql操作的时间过长,或者是传送的数据太大(例如使用insert ... value ...
- php 运行命令行,命令行运行php报错
在cmd中输入php -v,后报错,如:php Startup:Unable to load dynamic library '\xampp\php\php_bz2.dll' - 找不到指定的模块.如 ...
- Docker服务启动报错:Job for docker.service failed because the control process exited with error
错误 Docker服务启动报错:Job for docker.service failed because the control prcess exited with error 原文地址: htt ...
- vscode虚拟环境运行文件报错ImportError: DLL load failed: 找不到指定的模块的问题
题主使用anaconda创建了虚拟环境,通过cmd命令行安装了一些必要的库,但当我在vscode使用该虚拟环境时却发现vscode一直报错说我有一些库没安装上,比如numpy. Traceback ( ...
- vue脚手架运行项目报错“serve with message ‘spawn vue-cli-service ENO’解决办法
由于我的电脑用户名是中文的,某天下午改成英文后,即使重新配置了环境变量,还是经常报错.后来重新安装了nodejs,有些依赖可能没安 以上为前提 今天想启动下以前的项目,发现vue脚手架用不了了,重新安 ...
最新文章
- dataframe groupby_PySpark SQL——SQL和pd.DataFrame的结合体
- python - IO模型
- 线上BUG定位神器(阿尔萨斯)-Arthas2019-0801
- Java并发包中Semaphore的工作原理、源码分析及使用示例
- HTML5 API详解(17):Web SQL DataBase本地数据库
- 网络存储(三)之ISCSI搭建的入门
- Google Map API v2 (三)----- 地图上添加标记(Marker),标记info窗口,即指定经纬度获取地址字符串...
- 随笔小杂记(六)——tqdm进度条显示出现多余行
- linux内核计算list的长度,linux内核list.h头文件分析(四)
- oracle表的incremental,ODI IKM Oracle Incremental Update的四种探测处理策略
- OA系统四级模块编写测试用例(用户模块)
- EPLAN导入EDZ文件
- flink cdc 2.2.1 mysql connector
- OL3矢量图层样式自定义
- XP系统的倔强——python3.4+PyCharm+numpy、networkx等的安装
- Webdings字体和Wingdings字体对照表
- 北京博奥智源,浅谈术语管理服务器软件开发所需功能设计
- 计算机学院 运动会稿,学院运动会加油稿
- MySQL 09 DQL → select 初识查询数据和别名的使用
- 【问】登陆提示用户SA登陆失败