Age: 48 Joined: 06 Aug 2010 Posts: 79 Location: Ukraine
Posted: Mon Sep 23, 2013 3:25 pm Post subject: Parallel processing with RFC
Здравствуйте уважаемые!
Сделал собственно субж, вызываю некий RFC-ФМ в нескольких диалоговых процессах так как это описано в хелпе, все вроде работает, но периодически получаю кучу дампов на продуктиве вот такого типа
CALL_FUNCTION_SEND_ERROR а потом через секунду подряд два таких RABAX_CALLING_RABAX. В общем это звучит как подземный стук, но если кто может помочь, то выдам более подробную информацию...
CALL_FUNCTION_SEND_ERROR
Code:
Анализ ошибки
An error occurred when executing a Remote Function Call.
"CPIC-CALL: 'ThCMSEND' : cmRc=18 thRc=0#Статистика не активна. "
Status of connection.... "CODE=CM_DEALLOCATED_NORMAL CM_SEND_RECEIVED
CM_COMPLETE_DATA_RECEIVED SAPCODE=0 CONV=31381675"
Internal error code.... "RFC_IO5"
There is an error in the communication system. To clarify
and resolve the error, contact your system administrator.
Вроде как похоже что не было свободных диалоговых процессов для пользователя, но я выделил всего 5 штук их, а вообще пользователю у нас доступно 15. Ну так ФМ который это возвращает говорит.
Age: 48 Joined: 25 Jan 2008 Posts: 580 Location: Москва
Posted: Tue Sep 24, 2013 9:30 pm Post subject:
1. Количество внешних сессий (режимов) для одного пользователя не может превышать 6.
2. При вызове ФМ в режиме STARTING NEW TASK обязательно объявляйте EXCEPTION communication_error и others.
3. После Internal error code.... "RFC_IO5" должна быть подробная информация, типа такой
Age: 48 Joined: 06 Aug 2010 Posts: 79 Location: Ukraine
Posted: Thu Sep 26, 2013 11:35 am Post subject:
Удав wrote:
1. Количество внешних сессий (режимов) для одного пользователя не может превышать 6.
2. При вызове ФМ в режиме STARTING NEW TASK обязательно объявляйте EXCEPTION communication_error и others.
3. После Internal error code.... "RFC_IO5" должна быть подробная информация, типа такой
Я так понимаю если превышено кол-во диалоговых процессов то sy-subrc должно быть равно 3. Эту ситуацию я обрабатываю, а ошибки все равно лезут Причем не всегда и не у всех...
Хм.. вот сейчас обнаружил что написано в ошибке
Code:
Динамическая ошибка RABAX_CALLING_RABAX
Дата и время 26.09.2013 09:14:05
Анализ ошибки
The T100 error code is "14 027".
The error text reads
Достигнуто максимальное число режимов.
with this key.
Странно, ведь по идее тогда ФМ должен вернуть resource_failure, а эту ситуацию я обрабатываю
Age: 48 Joined: 06 Aug 2010 Posts: 79 Location: Ukraine
Posted: Fri Sep 27, 2013 2:57 pm Post subject:
Удав wrote:
klkuznetsov wrote:
Странно, ведь по идее тогда ФМ должен вернуть resource_failure, а эту ситуацию я обрабатываю
resource_failure - это про отсутствие свободных диалоговых процессов на сервере приложений.
В общем я так понял решения нет Но вот там же в пояснению к ошибке написано, что достигнуто максимальное количество режимов, это о чем? Неужели эта ситуация никак не обрабатывается?
Age: 40 Joined: 01 Feb 2008 Posts: 387 Location: Воронеж
Posted: Fri Sep 27, 2013 4:34 pm Post subject:
Была похожая ошибка в свое время, теоретически был путь через увеличение количества внешних сессий(кажется это возможно). Но у нас было проще, при открытых 6 окнах один запуск функции работает корректно всегда(если не запущен дополнительно отладчик), поэтому у нас все запускалось последовательно по 1. Хотя были идеи делать запуск отдельно через JOB например или в цикле do ограниченном по времени или по успешности выполнения ФМ-а. Успешность выполнения ФМ-а можно оценить по изменениям в БД. + мы делали логирование(SLG) всего и вся, чтобы потом уже можно было отследить что и когда запускалось и как работало.
Говорю то мы, но делал не я, а мой коллега, просто обсуждали задачу совместно, так что я могу что либо путать. _________________ Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем
Age: 48 Joined: 25 Jan 2008 Posts: 580 Location: Москва
Posted: Sat Sep 28, 2013 1:33 pm Post subject:
klkuznetsov wrote:
В общем я так понял решения нет
Решение есть:
1. Количество свободных процессов сервера приложений (ФМ SPBT_INITIALIZE / SPBT_GET_CURR_RESOURCE_INFO)
2. Если количество свободных процессов больше 2, то вычисляем количество свободных режимов 6 - количество режимов, занятых пользователем (ФМ TH_LONG_USR_INFO).
Меньшее число из п.п.1-2 и определит возможность запуска новых задач. _________________ С уважением,
Удав.
Age: 48 Joined: 06 Aug 2010 Posts: 79 Location: Ukraine
Posted: Mon Sep 30, 2013 12:15 pm Post subject:
Удав wrote:
klkuznetsov wrote:
В общем я так понял решения нет
Решение есть:
1. Количество свободных процессов сервера приложений (ФМ SPBT_INITIALIZE / SPBT_GET_CURR_RESOURCE_INFO)
2. Если количество свободных процессов больше 2, то вычисляем количество свободных режимов 6 - количество режимов, занятых пользователем (ФМ TH_LONG_USR_INFO).
Меньшее число из п.п.1-2 и определит возможность запуска новых задач.
Да, результаты моих раздумий дали похожий результат
Я тут вычислил, что я в проге неверно вычисляю количество запущеных процессов и кол-во процессов доступных пользователю.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG. SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG. Every effort is made to ensure content integrity. Use information on this site at your own risk.