プロジェクト

全般

プロフィール

バグ #4351

rtcd_javaがネームサーバーに登録されない。

katami が6年以上前に追加. 6年以上前に更新.

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

100%

予定工数:

説明

windowsでネームサーバー起動後のrtcd_javaを起動するとRTSEのNameServiceViewに表示されない。
rtcd_javaを一旦落として、再起動すると表示される。

関係しているリビジョン

リビジョン 1068 (差分)
t-katami が6年以上前に追加

[compat,bugfix->releng_1_2] Fixed the bug. refs #4351

リビジョン 1069 (差分)
t-katami が6年以上前に追加

[compat,bugfix->releng_1_2] Fixed the bug. refs #4351

履歴

#1 katami が6年以上前に更新

調査

コンフィグレーションファイルの設定でnaming.formatsが設定されいる。

naming.formats: %h.host_cxt/%n.rtc

rtcd_java を実行すると、RTSEのNameServiceViewに「OPENRTM93F7|host_cxt」と表示されるが、「manager|mgr」と表示されない。
この状態で、rtcd_javaを再実行すると、「manager|mgr」が表示される。

原因

CorbaNaming.rebindRecursive()でネーミングコンテキストを作成してオブジェクトを登録しているが、その処理で、オブジェクトがネーミングコンテキストクラスかどうか判定している。
その判定処理でオブジェクトがネーミングコンテキストでない場合、処理が停止するときがある。

対策

判定方法を変更した。
これまではオブジェクトをNamingContextExtでキャスト(詳細には、NamingContextExtHelper.narrow)して、成功した場合はtrue、失敗した場合はfalseと判定していた。
しかしながら、オブジェクトによっては、キャストの際に処理がブロックしてしまい制御が帰ってこないことがある。(本件の不具合の原因。)
そこで キャストをやめて instanceof を使い、オブジェクトがNamingContextを継承してるかどうかという判定に変更した。

#2 katami が6年以上前に更新

  • ステータス新規 から 担当 に変更
  • 担当者katami にセット
  • 進捗率0 から 100 に変更

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