Project

General

Profile

バグ #4351

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

Added by katami over 6 years ago. Updated over 6 years ago.

Status:
担当
Priority:
通常
Assignee:
katami
Target version:
-
Start date:
10/26/2017
Due date:
% Done:

100%

Estimated time:

Description

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

Associated revisions

Revision 1068 (diff)
Added by t-katami over 6 years ago

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

Revision 1069 (diff)
Added by t-katami over 6 years ago

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

History

#1 Updated by katami over 6 years ago

調査

コンフィグレーションファイルの設定で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 Updated by katami over 6 years ago

  • Status changed from 新規 to 担当
  • Assignee set to katami
  • % Done changed from 0 to 100

Also available in: Atom PDF