プロジェクト

全般

プロフィール

バグ #3978

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

n-miyamoto約7年前に追加. 約7年前に更新.

ステータス:
終了
優先度:
通常
担当者:
対象バージョン:
-
開始日:
2017/03/07
期日:
進捗率:

100%

予定工数:

説明

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

履歴

#1 n-miyamoto約7年前に更新

  • ステータス新規 から 解決 に変更
  • 進捗率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()

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

#2 n-ando約7年前に更新

  • ステータス解決 から 終了 に変更

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

他の形式にエクスポート: Atom PDF