Project

General

Profile

バグ #3978

shutdownOnNoRtcs関数で終了する場合にエラーが表示される

Added by n-miyamoto over 5 years ago. Updated over 5 years ago.

Status:
終了
Priority:
通常
Assignee:
Target version:
-
Start date:
03/07/2017
Due date:
% Done:

100%

Estimated time:

Description

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()

History

#1 Updated by n-miyamoto over 5 years ago

  • Status changed from 新規 to 解決
  • % Done changed from 0 to 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()

これでエラーは表示されなくなりました。

#2 Updated by n-ando over 5 years ago

  • Status changed from 解決 to 終了

確認しました。ありがとうございました。

Also available in: Atom PDF