Исключение TAO: TAO (2723|139817071765312) - ServerRequest::tao_send_reply_exception, не удалось отправить ответ об исключении

Я реализовал пару серверов публикации-подписки, используя службу уведомлений TAO в Linux. Есть два сервера E1 и E2. E2 подписался на тип новостей, скажем, 1, а E1 подписался на новый тип, скажем, 2. E1 публикует новости типа 1, после чего E2 выполняет некоторые вычисления и публикует результат новостей типа 2, который получает E1. Этот цикл продолжается. События имеют тип CosNotification::StructuredEvent. Проблема в том, что система выдает много сообщений об ошибках после выполнения несколько раз на обоих терминалах сервера.

TAO (2723|139817071765312) — ServerRequest::tao_send_reply_exception, не удалось отправить ответ об исключении

Я новичок в TAO (а также в CORBA), поэтому я не уверен, связана ли эта проблема с потоками или нет. Если я использую следующий svc.conf на E1, E2 или на обеих сторонах, передача событий становится очень медленной:

static Server_Strategy_Factory "-ORBConcurrency thread-per-connection" static Client_Strategy_Factory "-ORBWaitStrategy rw -ORBTransportMuxStrategyэксклюзивный -ORBConnectStrategy заблокирован -ORBConnectionHandlerCleanup 1" static Resource_Factory "-ORBFlushingStrategy blocking"

Я скопировал приведенные выше параметры с веб-сайта TAO, чтобы иметь один поток для каждого соединения, думая, что ошибка может быть вызвана достижением предела количества потоков. Также я попытался использовать -ORBConcurrency thread-per-connect в качестве параметра командной строки на обеих сторонах E1 и E2. Это приводит к тому, что некоторые CORBA-исключения не запускают серверы. Ниже приведены команды, которые я использую для запуска своей системы, которая выдает ServerRequest::tao_send_reply_exception, через некоторое время не может отправлять ответные сообщения об исключении:

tao_cosnaming -ORBEndPoint iiop:localhost:12345 -ORBDaemon // для запуска службы имен tao_cosnotification -ORBDebugLevel 10 -ORBInitRef NameService=corbaloc:iiop:localhost:12345/NameService -ORBDaemon // для запуска службы уведомлений ./E1 corbaloc:iiop:localhost: 12345/NameService // запускает E1 ./E2 corbaloc:iiop:localhost:12345/NameService //запускает E2

Может ли кто-нибудь предложить о том, что происходит здесь и как справиться с этой проблемой?


person Ahana Pradhan    schedule 04.02.2014    source источник


Ответы (1)


Некоторая часть имеет проблемы с отправкой исключения вызывающей стороне вызова CORBA. Это может быть любой запущенный процесс. Попробуйте запустить с "-ORBDebugLevel 10 -ORBVerboseLogging 2", добавленным в командную строку, при желании вы можете использовать "-ORBLogFile foo.txt" для перенаправления ведения журнала в файл (используйте отдельное имя файла для каждого процесса). Это должно сказать вам намного больше, у какого процесса возникла проблема с отправкой ответа, а также некоторые подробности о том, почему.

person Johnny Willemsen    schedule 04.02.2014
comment
Спасибо за ответ. Что я мог понять из файлов журнала, что E2 не может проанализировать какое-то сообщение, затем E1 не может прочитать, а затем много ошибок сломанной трубы в обоих процессах. Любые предложения о том, как подойти к этим внутренним ошибкам из моих процессов? - person Ahana Pradhan; 04.02.2014
comment
Какая версия TAO и на какой ОС вы работаете, смотрите в ФОРМЕ ПРОБЛЕМА-ОТЧЕТ, которая находится в корне пакета. - person Johnny Willemsen; 04.02.2014
comment
Моя система Ubuntu 12.04. У меня была проблема с установкой TAO из исходного кода, я установил из диспетчера пакетов synaptic, и он показывает версию 6.0.1-3. Хотя в форме отчета о проблеме отображается ВЕРСИЯ TAO: 2.0.1 ВЕРСИЯ ACE: 6.0.1 - person Ahana Pradhan; 05.02.2014
comment
Эта версия устарела, сначала обновите ее до TAO 2.2.4, которую вы можете получить на download.dre.vanderbilt.edu< /а> - person Johnny Willemsen; 05.02.2014