Corba Event Client ETIMEDOUT

时间:2010-12-11 19:14:07

标签: python linux corba

我使用omniOrb和Python构建了一个CORBA事件服务客户端。我在Java客户端遇到了同样的问题。我非常肯定我正在经历与这篇文章相同的事情,因为我的strace看起来非常相似,但他没有解释他是如何修复的:Java's 'tnameserv' takes 3+ minutes to be "Ready", why?

底线是我的客户端启动但由于双方都存在ETIMEDOUT错误,因此从未接收到来自服务器的事件。非常感谢任何指导!

提前致谢!

修改

不幸的是,更新ip6tables(也不是iptables)不起作用。

看来我能够远程调用返回数据,但是一旦IT想要启动响应(事件),就会导致此问题(请参阅下面的日志开头)

这是我从strace的日志...

[pid 17571] futex(0xa298288, FUTEX_WAIT_PRIVATE, 1, {4, 999961668} <unfinished ...>
[pid 17568] <... poll resumed> )        = 1 ([{fd=10, revents=POLLOUT}])
[pid 17568] getpeername(10, {sa_family=AF_INET, sin_port=htons(23120), sin_addr=inet_addr("10.10.10.250")}, [16]) = 0
[pid 17568] fcntl64(10, F_SETFL, O_RDONLY) = 0
[pid 17568] getsockname(10, {sa_family=AF_INET, sin_port=htons(37741), sin_addr=inet_addr("10.10.10.204")}, [16]) = 0
[pid 17568] getpeername(10, {sa_family=AF_INET, sin_port=htons(23120), sin_addr=inet_addr("10.10.10.250")}, [16]) = 0
[pid 17568] fcntl64(10, F_SETFD, FD_CLOEXEC) = 0
[pid 17568] send(10, "GIOP\1\1\1\0035\0\0\0\2\0\0\0-\0\0\0\24\1\17\0NUP\0\0\0\24\0"..., 65, 0) = 65
[pid 17568] recv(10,  <unfinished ...>
[pid 17570] <... poll resumed> )        = 0 (Timeout)
[pid 17570] gettimeofday({1292097412, 746922}, NULL) = 0
[pid 17570] poll([{fd=3, events=POLLIN}, {fd=9, events=POLLIN}], 2, 0) = 0 (Timeout)
...
[pid 17570] gettimeofday({1292097412, 747503}, NULL) = 0
[pid 17570] poll([{fd=3, events=POLLIN}, {fd=9, events=POLLIN}], 2, 0) = 0 (Timeout)
[pid 17570] gettimeofday({1292097412, 747544}, NULL) = 0
[pid 17570] gettimeofday({1292097412, 747563}, NULL) = 0
[pid 17570] poll([{fd=3, events=POLLIN}, {fd=9, events=POLLIN}], 2, 50 <unfinished ...>
[pid 17568] <... recv resumed> "GIOP\1\1\0\4\0\0\0\10\0\0\0\2\0\0\0\1", 8192, 0) = 20
[pid 17568] send(10, "GIOP\1\1\1\0z\0\0\0\1\0\0\0\1\0\0\0\f\0\0\0\1\0\0\0\1\0\1\0"..., 134, 0) = 134
[pid 17568] recv(10,  <unfinished ...>
[pid 17570] <... poll resumed> )        = 0 (Timeout)
[pid 17570] gettimeofday({1292097412, 797695}, NULL) = 0
[pid 17570] gettimeofday({1292097412, 797716}, NULL) = 0
[pid 17570] poll([{fd=3, events=POLLIN}, {fd=9, events=POLLIN}], 2, 50 <unfinished ...>
[pid 17568] <... recv resumed> "GIOP\1\1\0\1\0\0\0\330\0\0\0\1\0\0\0\1\0\0\0\f\1\0\0\0\1\0\1\0"..., 8192, 0) = 228
[pid 17568] write(1, "logged on\n", 10logged on
) = 10
[pid 17568] send(10, "GIOP\1\1\1\0u\0\0\0\0\0\0\0\6\0\0\0\1\0\0\0#\0\0\0\24\1\17\0"..., 129, 0) = 129
[pid 17568] recv(10,  <unfinished ...>
[pid 17570] <... poll resumed> )        = 0 (Timeout)
[pid 17570] gettimeofday({1292097412, 847848}, NULL) = 0
[pid 17570] gettimeofday({1292097412, 847868}, NULL) = 0
[pid 17570] poll([{fd=3, events=POLLIN}, {fd=9, events=POLLIN}], 2, 50 <unfinished ...>
[pid 17568] <... recv resumed> "GIOP\1\1\0\1\0\0\0\r\0\0\0\0\0\0\0\6\0\0\0\0\1", 8192, 0) = 25
[pid 17568] send(10, "GIOP\1\1\1\0\t\1\0\0\0\0\0\0\10\0\0\0\1\0\0\0#\0\0\0\24\1\17\0"..., 277, 0) = 277
[pid 17568] recv(10,  <unfinished ...>
[pid 17570] <... poll resumed> )        = 0 (Timeout)
[pid 17570] gettimeofday({1292097412, 898007}, NULL) = 0
[pid 17570] gettimeofday({1292097412, 898028}, NULL) = 0
[pid 17570] poll([{fd=3, events=POLLIN}, {fd=9, events=POLLIN}], 2, 50 <unfinished ...>
[pid 17568] <... recv resumed> "GIOP\1\1\0\1\0\0\0\20\0\0\0\0\0\0\0\10\0\0\0\0\0\2I\360", 8192, 0) = 28
[pid 17568] write(1, "150000\n", 7150000
)     = 7
[pid 17568] write(1, "registered\n", 11registered
) = 11
[pid 17568] gettimeofday({1292097412, 921865}, NULL) = 0
[pid 17568] clock_gettime(CLOCK_REALTIME, {1292097412, 921888446}) = 0
[pid 17568] futex(0xb7228ed4, FUTEX_WAKE_PRIVATE, 1) = 0
[pid 17568] gettimeofday({1292097412, 921935}, NULL) = 0
[pid 17568] clock_gettime(CLOCK_REALTIME, {1292097412, 921956052}) = 0
...
[pid 17568] futex(0xb7228ed4, FUTEX_WAKE_PRIVATE, 1) = 0
[pid 17568] gettimeofday({1292097412, 923784}, NULL) = 0
[pid 17568] clock_gettime(CLOCK_REALTIME, {1292097412, 923804532}) = 0
[pid 17568] futex(0xb7228f48, FUTEX_WAIT_PRIVATE, 65, {0, 581}) = -1 ETIMEDOUT (Connection timed out)
[pid 17568] futex(0xb7228ed4, FUTEX_WAKE_PRIVATE, 1) = 0
[pid 17568] gettimeofday({1292097412, 923933}, NULL) = 0
[pid 17568] clock_gettime(CLOCK_REALTIME, {1292097412, 923953643}) = 0
[pid 17568] futex(0xb7228f48, FUTEX_WAIT_PRIVATE, 67, {0, 2582}) = -1 ETIMEDOUT (Connection timed out)
...
[pid 17568] futex(0xb7228ed4, FUTEX_WAKE_PRIVATE, 1) = 0
[pid 17568] gettimeofday({1292097412, 934108}, NULL) = 0
[pid 17568] clock_gettime(CLOCK_REALTIME, {1292097412, 934127651}) = 0
[pid 17568] futex(0xb7228f48, FUTEX_WAIT_PRIVATE, 135, {0, 573697}) = -1 ETIMEDOUT (Connection timed out)
[pid 17568] futex(0xb7228ed4, FUTEX_WAKE_PRIVATE, 1) = 0
[pid 17568] gettimeofday({1292097412, 934800}, NULL) = 0
[pid 17570] <... poll resumed> )        = 0 (Timeout)
[pid 17570] gettimeofday({1292097412, 989071}, NULL) = 0
[pid 17570] gettimeofday({1292097412, 989093}, NULL) = 0
[pid 17570] poll([{fd=3, events=POLLIN}, {fd=9, events=POLLIN}], 2, -1 <unfinished ...>
[pid 17568] clock_gettime(CLOCK_REALTIME, {1292097412, 989133116}) = 0
[pid 17568] futex(0xb7228ed4, FUTEX_WAKE_PRIVATE, 1) = 0
[pid 17568] gettimeofday({1292097412, 989191}, NULL) = 0
[pid 17568] clock_gettime(CLOCK_REALTIME, {1292097412, 989211757}) = 0
[pid 17568] futex(0xb7228f48, FUTEX_WAIT_PRIVATE, 139, {0, 697194}) = -1 ETIMEDOUT (Connection timed out)
...
[pid 17568] futex(0xb7228ed4, FUTEX_WAKE_PRIVATE, 1) = 0
[pid 17568] gettimeofday({1292097413, 255954}, NULL) = 0
[pid 17568] clock_gettime(CLOCK_REALTIME, {1292097413, 255977528}) = 0
[pid 17568] futex(0xb7228f48, FUTEX_WAIT_PRIVATE, 215, {0, 26830986}) = -1 ETIMEDOUT (Connection timed out)

2 个答案:

答案 0 :(得分:0)

我通过在防火墙脚本中添加以下行来修复此问题

 ip6tables -A INPUT -i lo -j ACCEPT

答案 1 :(得分:0)

我最终弄清楚,因为我在与服务器不同的子网上,ORB发布了错误的IP地址,并且在偶数触发时无法找出返回我的客户端的路由。

我最终更改了/etc/omniORB.cfg中的配置文件,并将“endPointPublish”属性的值更改为服务器子网上的IP地址!