Skip to content

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

@n-ando

Description

@n-ando

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

  • OS: macOS Venturra
  • OpenRTM-aist 2.0.1

Additional context
特になし

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions