Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Подключение отладчика к пдвисающему фоновому заданию  (Прочитано 10714 раз)
0 Пользователей и 3 Гостей смотрят эту тему.
Radistka
Помогающий

ru
Offline Offline
Пол: Женский

« : 17-10-2013 05:42 » new

В общем, тема наверное насущная и не раз упоминавшаяся.

у нас удут обмены внутри РИБ. обмены запускаются фоновым заданием. время от времени обмены зависают. причём непонятно почему и в какой момент и на чём. иногда обмен уже завершился, все данные сохранены, выходит из транзакции и тут зависает. так и висит. соответственно второй раз не запускается. в расписании указано чтобы прекращался процесс через определённое время - не прекращается.

задача: найти способ подключиться в отладчике к уже зависшему фоновому заданию и определить на какой строке оно зависло.
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 17-10-2013 06:50 » 

Непроста задача...
Проблема также может быть не в самом задании, а в каком-то объекте: при наличии такого объекта в обмене (и ошибке ПередЗаписью/ПриЗаписи) будет подвисать все задание.
Почему не снимает по времени - второй вопрос. Попробуй програмно снять такое задание - получится?
Еще могу посоветовать сохранять все пакеты обмена (если обмен не через OLE), зафикировать на каком пакете зависло и попробовать вручную запустить обмен с тем же пакетом на копии базы
Записан
Radistka
Помогающий

ru
Offline Offline
Пол: Женский

« Ответ #2 : 17-10-2013 08:27 » 

Непроста задача...
Проблема также может быть не в самом задании, а в каком-то объекте: при наличии такого объекта в обмене (и ошибке ПередЗаписью/ПриЗаписи) будет подвисать все задание.
Еще могу посоветовать сохранять все пакеты обмена (если обмен не через OLE), зафикировать на каком пакете зависло и попробовать вручную запустить обмен с тем же пакетом на копии базы
вот эти два пункта наверное вместе, ага? если правильно поняла, что ты имел ввиду то могу ответить вот что: когда возникает проблема в каком то определённом объекте то эту проблему мы решаем и довольно быстро(обычно это иерахический справочник ловит цикл в иерархии). у нас зависает как раз таки где то в самом начале обмена, когда ещё никакие объекты не захвачены, либо в самом конце, когда он уже вышел из транзакции(а может он как раз при попытке зайти/выйти с транзакции подвисает изза чего нить?). обычно обвисает самый первый утренний обмен, но иногда и в середине дня. кстати надо будет поймать такой, зависший в конце обмена, и глянуть, вышел ли он из транзакции или она оборвалась(просто проверю принял ли изменения).
пакеты обмена можно и попробовать сохранять, но могу точно сказать что если фоновое задание висит то я могу спокойно запускать обмен и он нормально проходит в ручном режиме.

Почему не снимает по времени - второй вопрос. Попробуй програмно снять такое задание - получится?
программно это как? обработкой поймать соединение и попробовать оборвать или как?

ещё добавлю с чем уже сталкивались в этом направлении:
1.) когда фтпшка не стабильно в сети и иногда обрывает соединение в тот момент, когда к ней обращается фоновое, или когда фоновое читает с неё - задание повисает. в тот раз подшаманили фтпшку и больше этой проблемы нет

2.) если xml остался захваченым то обмен завершается, но повторно не идёт - файл заблокированный и к нему не может обратиться. задание не повисает при этом. (сейчас вот как раз у меня такой зависший есть обмен, я на нём эксперименты ставлю. завис он после начала выгрузки. файл выгрузки не создал xml, соответственно ниодин из объектов не захвачен. вот я думаю, может ему чтото мешает создать этот файл? но тогда бы от вылетел с шибкой.. сегодня вечером дома поищу в коде этот момент и посмотрю, где "попыток" не хватает.)

хотелось бы как-то всё таки отладчиком туда цепануться. )
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 17-10-2013 09:41 » 

Почему не снимает по времени - второй вопрос. Попробуй програмно снять такое задание - получится?
программно это как? обработкой поймать соединение и попробовать оборвать или как?
Программно - это найти нужное фоновое задание (из кода) и оборвать его. В 8.2 такое точно возможно.

Ну а подключится отладчиком могу только описать предполагаемый путь (никогда не пробовал):
* запустить сервер в режиме отладки (ключ /debug)
* дождаться зависание задания
* запустить конфигуратор и выбрать Отладка/Подключение: надеюсь фоновое задание будет светиться здесь
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines