バグ #3978
完了
shutdownOnNoRtcs関数で終了する場合にエラーが表示される
n-miyamoto さんがほぼ8年前に追加.
ほぼ8年前に更新.
説明
shutdownOnNoRtcs関数で終了する際に以下のエラーが表示されるので修正する。
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/OpenRTM_aist/CorbaNaming.py", line 157, in isAlive
if self._rootContext._non_existent():
File "/usr/local/lib/python2.7/dist-packages/omniORB/CORBA.py", line 561, in _non_existent
return self._obj.nonExistent()
- ステータス を 新規 から 解決 に変更
- 進捗率 を 0 から 100 に変更
発生個所は、NamingManagerのネームサーバ確認、再登録処理の部分。
def update(self):
(省略)
if not self._names[i].ns.isAlive():
この部分がORBの終了後に呼び出されるとエラーが表示される。
そのため、Managerのshutdown関数内でタイマを先に終了するように変更した。
def shutdown(self):
self._rtcout.RTC_TRACE("Manager.shutdown()")
self._listeners.manager_.preShutdown()
self.shutdownTimer()
self.shutdownComponents()
self.shutdownNaming()
self.shutdownORB()
self.shutdownManager()
ただ、shutdownOnNoRtcs関数はタイマのスレッドで呼び出しているため、タイマのスレッドの終了待ちはできず、ネームサーバ確認、再登録処理が実行されてしまう。
そのため、shutdownOnNoRtcs関数では新たにスレッドを生成してshutdown関数を呼び出すように変更した。
def shutdownOnNoRtcs(self):
(省略)
if len(comps) == 0:
self.shutdown_thread = threading.Thread(target=self.shutdown)
self.shutdown_thread.start()
これでエラーは表示されなくなりました。
他の形式にエクスポート: Atom
PDF