Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ConnPool获取失效连接 #12

Open
ianwoolf opened this issue May 29, 2016 · 6 comments
Open

ConnPool获取失效连接 #12

ianwoolf opened this issue May 29, 2016 · 6 comments

Comments

@ianwoolf
Copy link

如果连接超时或者因网络问题断掉,ConnPool仍可以从free中获取这个连接,造成使用这个连接发送数据都会失败。

@laiwei
Copy link
Contributor

laiwei commented Jun 6, 2016

@ianwoolf 能给出更详细的分析 或者 直接提pull-request,我们来review

@ianwoolf
Copy link
Author

ianwoolf commented Jun 7, 2016

从free中获取链接,没有适当的探活。

导致当一个链接,处于free的状态并且因网络或者服务配置不当而断掉的时候,transfer会获取这个链接导致发送失败。

目前只有失败删除链接,但没有获取的时候进行探活。

不过貌似问题不是普遍性的,只是这样会造成100%失败的操作会一直重复,造成数据有一定延迟。

@ianwoolf
Copy link
Author

ianwoolf commented Jun 7, 2016

或者失败了重新获取一个连接重发

@toontong
Copy link

conn := ConnPool.Fetch()
得到conn不一定有效,像mysql协议一样,有个ping接口,就是对conn进行一次ping测试,确保连接有效。
代码中重试发送次数是3,
所以,当 ConnPool下超过3个free连接无效时,就会出现此bug。

@toontong
Copy link

补充一点:
函数forward2GraphTask()中,数据是从队列中items := Q.PopBackBy(batch)出来,
当出现 3次发送都失败,数据没有putBack,就是丢,不是延迟。

@EliseCheng
Copy link

请问这个问题有解决吗?目前遇到一个类似的问题,graph history查不到最近的数据,重启graph就好了,疑似连接重建就好了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants