OpenRTM / OpenRTM-aist-Python

OpenRTM-aist: RT-Middleware and OMG RTC implementation in Python implemented by AIST
Other
2 stars 7 forks source link

create_component引数の最後がmanager_nameでない場合RTCが生成されない #303

Open n-ando opened 11 months ago

n-ando commented 11 months ago

Describe the bug ManagerServant::create_component()引数には、"?"の後ろにパラメータを与えられる場合があるが、manager_name(or manager_address) が最後ではなく途中にあると、引数の処理が正しくされず、RTCが生成できない。

To Reproduce 以下のような引数をマスターマネージャーのcreate_component()に与える。

create_component(RTC:AIST:example:ConsoleOut:C++:2.0.0?manager_name=manager_51510&instance_name=hogemunya)

この引数は、以下のようにmanager_nameを削除してスレーブマネージャに与えられるべきだが、

create_component(RTC:AIST:example:ConsoleOut:C++:2.0.0?instance_name=hogemunya)

実際には、

create_component(RTC:AIST:example:ConsoleOut:C++:2.0.0&instance_name=hogemunya)

のような("?"区切りが"&"区切りになっている)引数が与えられるため、コンポーネントを正常に生成できない。

Reproducibility 100% ManagerServant::getParameterByModulename() に処理に間違いがある。引数文字列の最後のパラメータを指定する時以外正常に動作しない。

Expected behavior manager_name/manager_addressが引数パラメータの途中にあってもRTCが正常に生成されるべき。

Screenshots or Logs

Oct 01 21:18:53.400 TRACE: ManagerServant: create_component(RTC:AIST:example:ConsoleOut:C++:2.0.0?manager_name=manager_51510&instance_name=hogemunya)
Oct 01 21:18:53.400 TRACE: ManagerServant: This manager is master: YES
Oct 01 21:18:53.400 TRACE: ManagerServant: createComponentByAddress(RTC:AIST:example:ConsoleOut:C++:2.0.0?manager_name=manager_51510&instance_name=hogemunya)
Oct 01 21:18:53.400 DEBUG: ManagerServant: create_arg[instance_name] = hogemunya
Oct 01 21:18:53.400 DEBUG: ManagerServant: create_arg[manager_name] = manager_51510
Oct 01 21:18:53.400 WARNING: ManagerServant: No manager_address found: 
Oct 01 21:18:53.400 TRACE: ManagerServant: createComponentByManagerName(RTC:AIST:example:ConsoleOut:C++:2.0.0?manager_name=manager_51510&instance_name=hogemunya)
Oct 01 21:18:53.400 DEBUG: ManagerServant: create_arg[instance_name] = hogemunya
Oct 01 21:18:53.400 DEBUG: ManagerServant: create_arg[manager_name] = manager_51510
Oct 01 21:18:53.400 INFO: ManagerServant: Specified manager's language: C++
Oct 01 21:18:53.400 TRACE: ManagerServant: findManagerByName(manager_51510)
Oct 01 21:18:53.400 INFO: ManagerServant: Manager: manager_51510 not found.
Oct 01 21:18:53.400 INFO: ManagerServant: Creating new manager named manager_51510
Oct 01 21:18:53.400 DEBUG: ManagerServant: Invoking command: rtcd2 -o "manager.modules.load_path:./" -o "manager.modules.C++.load_paths:/opt/homebrew/Cellar/openrtm2-py311/2.0.1/share/openrtm-2.0/components/c++/" -o "manager.is_master:NO" -o "manager.corba_servant:YES" -o "corba.master_manager:localhost:2810" -o "manager.name:manager" -o "manager.instance_name:manager_51510" -o "manager.shutdown_auto:NO".
Oct 01 21:18:53.401 DEBUG: ManagerServant: Detecting new slave manager (manager_51510).
Oct 01 21:18:53.401 TRACE: ManagerServant: findManagerByName(manager_51510)
Oct 01 21:18:53.401 DEBUG: ManagerServant: Waiting for slave manager started.
Oct 01 21:18:53.412 DEBUG: ManagerServant: Detecting new slave manager (manager_51510).
Oct 01 21:18:53.412 TRACE: ManagerServant: findManagerByName(manager_51510)
Oct 01 21:18:53.412 DEBUG: ManagerServant: Waiting for slave manager started.
Oct 01 21:18:53.420 TRACE: ManagerServant: add_slave_manager(), 0 slaves
Oct 01 21:18:53.420 TRACE: ManagerServant: add_slave_manager() done, 1 slaves
Oct 01 21:18:53.423 DEBUG: ManagerServant: Detecting new slave manager (manager_51510).
Oct 01 21:18:53.423 TRACE: ManagerServant: findManagerByName(manager_51510)
Oct 01 21:18:53.424 INFO: ManagerServant: New slave manager (manager_51510) launched.
Oct 01 21:18:53.424 DEBUG: ManagerServant: manager_name is manager_51510&instance_name=hogemunya
Oct 01 21:18:53.424 DEBUG: ManagerServant: Creating component on manager_51510
Oct 01 21:18:53.424 DEBUG: ManagerServant: arg: RTC:AIST:example:ConsoleOut:C++:2.0.0&instance_name=hogemunya

Environment

Additional context 特になし