go thrift开发过程中,多个goroutine共用一个client时,报错:
panic: runtime error: index out of range
goroutine 24 [running]: happy-apple/vendor/git.apache.org/thrift.git/lib/go/thrift.(*TCompactProtocol).WriteStructEnd(0xc4201086e0, 0x0, 0x0) /home/admin/workspace/src/happy-apple/vendor/git.apache.org/thrift.git/lib/go/thrift/compact_protocol.go:160 +0x66 happy-apple/protocol/falconeye.(*TAppleMetric).Write(0xc420112090, 0x787020, 0xc4201086e0, 0x0, 0x0) /home/admin/workspace/src/happy-apple/protocol/falconeye/common.go:1714 +0xb9 happy-apple/protocol/falconeye.(*ReportPutMetricDataArgs).writeField1(0xc4200f85a0, 0x787020, 0xc4201086e0, 0x0, 0x0) /home/admin/workspace/src/happy-apple/protocol/falconeye/report.go:308 +0x123 happy-apple/protocol/falconeye.(*ReportPutMetricDataArgs).Write(0xc4200f85a0, 0x787020, 0xc4201086e0, 0x200000001, 0x0) /home/admin/workspace/src/happy-apple/protocol/falconeye/report.go:292 +0x195 happy-apple/protocol/falconeye.(*ReportClient).sendPutMetricData(0xc420094320, 0xc4200aa040, 0x1, 0x1, 0x1, 0xc420112090) /home/admin/workspace/src/happy-apple/protocol/falconeye/report.go:70 +0xe9 happy-apple/protocol/falconeye.(*ReportClient).PutMetricData(0xc420094320, 0xc4200aa040, 0x1, 0x1, 0x1, 0xc4200aa040, 0x0) /home/admin/workspace/src/happy-apple/protocol/falconeye/report.go:53 +0x4d main.TestSendData(0xc420094320, 0x0, 0x0) /home/admin/workspace/src/happy-apple/protocol/falconeye/report-remote/qps_client.go:116 +0x2c9 main.sendTask(0xc420094320) /home/admin/workspace/src/happy-apple/protocol/falconeye/report-remote/qps_client.go:71 +0x2b created by main.main /home/admin/workspace/src/happy-apple/protocol/falconeye/report-remote/qps_client.go:47 +0x17b
使用的lib是git.apache.org/thrift.git/lib/go
原因及解决办法: 一个thrift client 不支持多个协程routine同时使用. 可创建多个client,每个协程routine一个client
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。