Текущее время: Вс, апр 30 2017, 09:03

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Проблема с использованием RSPC_API_CHAIN_START для запуска цепочки
СообщениеДобавлено: Вт, дек 27 2016, 09:33 
Начинающий
Начинающий

Зарегистрирован:
Пн, июл 16 2012, 20:17
Сообщения: 11
Добрый день.
Кто-нибудь сталкивался со следующей проблемой:
когда вызываю ФМ RSPC_API_CHAIN_START, то при выполнении цепочки происходит двойной запуск цепочки в одно и то же время.
17:06:09 58BYGFWHBFZ7XODXKR4H7T8CU
17:06:09 58BY6SXIKZ6NSPEHMOPD5L5ZI
В результате ДТП в одной из цепочек падает в ошибку и пишет, что На данный момент уже обрабатывается запрос . А мне важен итоговый статус цепочки.
С чем это может быть связано? Как решить проблему двойного запуска?

CALL FUNCTION 'RSPC_API_CHAIN_START'
EXPORTING
i_chain = 'ZPC1'
* I_T_VARIABLES =
i_synchronous = 'X'
* I_SIMULATE =
* I_NOPLAN =
* I_DONT_WAIT =
* I_POLL =
IMPORTING
e_logid = e_logid
EXCEPTIONS
failed = 1
OTHERS = 2.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с использованием RSPC_API_CHAIN_START для запуска цепочки
СообщениеДобавлено: Вт, дек 27 2016, 10:25 
Директор
Директор

Зарегистрирован:
Чт, апр 16 2009, 14:30
Сообщения: 759
Пол: Мужской
добрый день!
похоже что у вас один и тот же ДТП используется в обеих цепочках.
если это так, скопируйте ДТП и вставьте в одну из цепочек копию вместо оригинала.
единственное, если у вас ДТП с дельтой , то второй придется поменять на фулл.
если вам нужно чтобы все осталось как есть придется распараллелить цепочки.
для чего вы их запускаете через ФМ? вы же можете это делать как вручную по отдельности, так и запланировать их на любое время и периодичность.

также вы можете в цепочках в одной из них перенести ДТП (если возможно) в другую часть потока данных, так чтобы в одной цепочке он уже гарантированно отработал до запуска во второй цепочке.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с использованием RSPC_API_CHAIN_START для запуска цепочки
СообщениеДобавлено: Вт, дек 27 2016, 15:02 
Начинающий
Начинающий

Зарегистрирован:
Пн, июл 16 2012, 20:17
Сообщения: 11
Программ в фоновом режиме считывает данные из обычной таблицы, загружает в ДСО прямой записи и дальше запускается цепочки загрузки данных из этого ДСО.
Фоновый запуск запланирован каждые 15 минут и если есть активная цепочка, то ждет ее завершения.
Но почему то цепочка запускается дважды, один сеанс отрабатывает полностью, успешно, а второй падает на ДТП, т.к. оно в тот момент было занято первый сеансом.
Причем такая ошибка случается только один раз в день, остальные загрузки проходят последовательно и без проблем.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с использованием RSPC_API_CHAIN_START для запуска цепочки
СообщениеДобавлено: Вт, дек 27 2016, 15:14 
Директор
Директор

Зарегистрирован:
Чт, апр 16 2009, 14:30
Сообщения: 759
Пол: Мужской
Lenaone писал(а):
Программ в фоновом режиме считывает данные из обычной таблицы, загружает в ДСО прямой записи и дальше запускается цепочки загрузки данных из этого ДСО.
Фоновый запуск запланирован каждые 15 минут и если есть активная цепочка, то ждет ее завершения.
Но почему то цепочка запускается дважды, один сеанс отрабатывает полностью, успешно, а второй падает на ДТП, т.к. оно в тот момент было занято первый сеансом.
Причем такая ошибка случается только один раз в день, остальные загрузки проходят последовательно и без проблем.


ну если это один и тот же ДТП, то все понятно и решение лежит на поверхности, уже описано выше
а если нет, то надо смотреть поток данных.
попробуйте смоделировать эту ситуацию в системе разработки или теста, и сразу поймете в чем дело.
но думаю, что вам скорее всего придется что-то поменять в потоках данных одной из цепочек
если у вас нет такой возможности, то остается только разносить цепочки во времени , либо запускать их поочередно вручную.
может быть, есть и еще какие-то варианты, все зависит от ваших целей и возможностей изменения текущей реализации.
но проблема однозначно решаема, на мой взгляд.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с использованием RSPC_API_CHAIN_START для запуска цепочки
СообщениеДобавлено: Вт, дек 27 2016, 18:41 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Вс, янв 11 2009, 15:41
Сообщения: 865
Откуда: Москва
Пол: Мужской
Lenaone писал(а):
Программ в фоновом режиме считывает данные из обычной таблицы, загружает в ДСО прямой записи и дальше запускается цепочки загрузки данных из этого ДСО.
Фоновый запуск запланирован каждые 15 минут и если есть активная цепочка, то ждет ее завершения.

Из написанного вами получается, что в SM37 у вас запланировано фоновое задание, которое запускается каждые 15 минут, заполняет DSO и затем запускает BW-цепочку. BW-цепочка может выполняться дольше 15 минут и, таким образом, следующий запуск фонового задания должен ожидать завершения предыдущего прогона цепочки. Как организовано это ожидание вы не написали. Могу предположить, что вы проверяете статус цепочки в цикле и это означает, что ваше фоновое задание продолжает работать и, следующий запуск фонового задания (который наступает через 15 минут) входит в тот же цикл ожидания зеленого статуса цепочки. В конце концов цепочка завершает свое выполнение, ее статус становится зеленым и оба фоновых задания дружно одновременно запускают цепочку. В итоге вы имеете то, что имеете.

Как устранить проблему?! Сократите интервал запуска фонового задания до 5 минут, уберите цикл с ожиданием - то есть проверяете статус цепочки и, если он зеленый, запускаете цепочку, а если нет - просто выходите из фонового задания (оно отрабатывает вхолостую)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB