-
Notifications
You must be signed in to change notification settings - Fork 357
崩溃恢复问题,非正常退出之后,重新连接,会出现无法发送和接收的问题 #100
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
Comments
用master分支上的代码试试? |
我用最新的测试过了,也用例子试验了一下,最后的结论是: ipc::channel 两个建立通信连接之后,不论那个崩溃重启,都可以重新连接成功,但是ipc::route 却不可以。 你也可以自己测试一下,就那个send_recv 例子改成 route, 很容易复现 |
ipc::route 机制有点差别,可能有bug。我有空看下咋回事 |
最近又忙起来了,可能端午我在家看看 |
这个库性能蛮好的。可如果用在嵌入式上,必须保持稳定或者程序重启恢复机制。另外就是,当发现连接端已经断掉之后,貌似没有通知机制。 |
是的,因为连接是假的。我打算重构的时候用一些别的方式来做,比如用一个socket做连接;或者干脆抛弃连接的概念…… |
就是刻意杀死程序之后,重新启动, 然后就收发不到消息了。我在linux 虚拟机和 嵌入式设备都试验过。毕竟我们注册的signal 是不完整的。异常退出就没有清理。 |
嗯,对的,这种崩溃现在确实没办法恢复 =.= |
hi @mutouyun, 我想请问下怎么才能清除一个channel的cache?我遇到这种情况(非正常退出)的做法就是开一个新channel,想问问可不可以直接把原来的数据给清空。 |
可以的,通过 |
@mutouyun 感谢! |
大佬,我用的代码是:6111722 (HEAD -> master, origin/master, origin/HEAD) fix: the receiver of channel will hang after disconnect,我没有改动任何代码,但是在测试msg_que这个程序时,发现:重启./msg_que r时,在./smg_que s方有时候会出现force_push: msg_id = 50160838, remain = 6496, size = 0 |
同样的commit id:6111722 ,还有有时候会出现:force_push: msg_id = 10457620, remain = 11104, size = 0 |
我最近没怎么上github……要不你邮件发我微信吧,我加你聊下 |
@mutouyun @Jiwangreal 我也遇到了同样的问题,请问有优雅的解决方法吗? |
额,是的,主要是异常退出导致的。。根本原因有如下几个方面:
如上这几个情况里,1需要对实现做重构,并定义出不同预期的接口;3需要考虑用无锁结构重构这部分原子锁代码;2我暂时没想出啥好办法解决=.= 我最近半年太忙了,而且暂时看不到头,基本没啥时间改代码。如果你有好的点子,可以帮我提提pr…… |
我用的最新的版本,我比较注重灾难恢复,正常通信的两个程序,强行让其崩溃,并重新启动之后,就会出现无法通信的情况。而disconnect 函数也会阻塞起来没有动静。
The text was updated successfully, but these errors were encountered: