Технологический журнал 1С и бесконечный цикл в коде 1С
Несмотря на то, что проблема в статье История одного конфликта блокировок 1С , казалось, была решена, ее повторное появление не заставило себя долго ждать.
Пользователь Лапкина вновь приступила к работе и ее сеанс снова парализовал работу пользователей системы с блокируемым справочником.
Описание ошибки:
Пользователь создает элемент справочника и при записи система 1С:Предприятия «повисает».
Сеанс закрывается пользователем, а блокировка ресурсов продолжает «висеть» в системе и мешать работать другим пользователям, до момента завершения из консоли «Администрирование серверов 1С Предприятия» администратором блокирующего сеанса.
Попытка смоделировать ситуацию не увенчалась успехом. Описываемого пользователем сценария не повторилось.
Расследование:
Расследуем также наиболее полный на события технологический журнал. Который был получен после повторения описываемого пользователем сценария возникновения проблемы.
Сначала отбираем всю информацию по интересующему нас пользователю «Лапкина».
1 |
grep -P 'Лапкина' --color / D/logs1с/rphost_*/*.log |
Получаем следующий результат.
1 2 3 4 |
03:45.051000-992,DBPOSTGRS,6,process=rphost,p:processName= base,OSThread=21434,t:clientID=63054,t:applicationName=WebServerExtension,t:computerName=1s-on-web,t:connectID=218530,SessionID=284296,Usr=Лапкина,AppID=1CV8C,DBMS=DBPOSTGRS,DataBase=1s-on-1c\base,Trans=1,dbpid=27140,Sql='SELECT ID, Name, Descr, OSName, Changed, RolesID, Show, Data, EAuth, AdmRole, UsSprH 32:39.723000-0,EXCP,4,process=rphost,p:processName= base,OSThread=21434,t:clientID=63054,t:applicationName=WebServerExtension,t:computerName=1s-on-web,t:connectID=218530,SessionID=284296,Usr=Лапкина,AppID=1CV8C,Exception=95c658d1-d3d5-4ea9-8a81-1bf820fea4a8,Descr='./src/RemoteCallListenerImpl.cpp(3793): 32:39.726001-0,EXCP,5,process=rphost,p:processName= base,OSThread=21434,t:clientID=63054,t:applicationName=WebServerExtension,t:computerName=1s-on-web,t:connectID=218530,SessionID=284296,Usr=Лапкина,AppID=1CV8C,Exception=SeanceContextException,Descr='Сеанс отсутствует или удален |
Обнаруживаем интересную ситуацию.
Между двумя соседними событиями пользователя «Лапкиной» большой временной перерыв – с 3 минут до 32. А на 32 минуте исключительная ситуация сброса сеанса.
Далее находим 20 строк до и после запуска события Лапкиной в 03.45.
1 |
grep -P '^03:45.' --color /D/logs1с/rphost_*/21042611.log -C 20 |
Видим контекст вызванного события.
1 |
03:45.051000-992,DBPOSTGRS,6,process=rphost,p:processName=base,OSThread=21434,t:clientID=63054,t:applicationName=WebServerExtension,t:computerName=1s-on-web,t:connectID=218530,SessionID=284296,Usr=ЛапинаМЮ,AppID=1CV8C,DBMS=DBPOSTGRS,DataBase=1s-on-1c\base,Trans=1,dbpid=27140,Sql='SELECT ID, Name, Descr, OSName, Changed, RolesID, Show, Data, EAuth, AdmRole, UsSprH FROM v8users WHERE ID >= $1 AND ID <> $2 ORDER BY ID LIMIT 1',Prm=" -p_1: '\\306\\237\\000PV\\267V\\265\\021\\353am\\310\\013\\217J'::bytea p_2: '\\225*P\\031\\352\\346\\241\\367@#\\347\\226n>\\341\\336'::bytea",RowsAffected=1,Result=PGRES_TUPLES_OK,Context='Форма.Записать : Справочник.Пользователи.Форма.ФормаЭлемента Справочник.Пользователи.МодульОбъекта : 221 : ПользователиСлужебный.ЗавершитьОбработкуПользователяИБ( ОбщийМодуль.ПользователиСлужебный.Модуль : 2633 : СкопироватьНастройкиПользователяИБ(ПользовательОбъект, ПараметрыОбработки); ОбщийМодуль.ПользователиСлужебный.Модуль : 5644 : ОписаниеКопируемогоПользователяИБ = Пользователи.СвойстваПользователяИБ(ИдентификаторКопируемогоПользователяИБ); ОбщийМодуль.Пользователи.Модуль : 800 : ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(ИмяИлиИдентификатор);' |
По контексту видим, что запись была запущена при создании объекта методом копирования. И место в коде конфигурации.
При дальнейшем анализе кода конфигурации обнаруживаем, что, в связи с определенными доработками системы – в данном месте возникал бесконечный цикл, который и блокировал ресурсы справочника до момента, когда сеанс был сброшен принудительно администратором.
Решение:
Устраним ошибку в коде конфигурации, которая приводила к возникновению бесконечного цикла при записи элемента справочника созданного методом копирования.
Изображение PublicDomainPictures с сайта Pixabay
Еще можно посмотреть
Похожие записи
- Ошибка 1С:Предприятие «Потеряно соединение»
- Расследование конфликтов управляемых блокировок (TTIMEOUT) 1С:Предприятия
- Что такое PG_TEMP в PostgreSQL для 1С
- НАСТРОЙКА PG_PROFILE ДЛЯ POSTGRESQL 1.
- Статистика PostgreSQL при работе с 1С:Предприятием
- Настройка непрерывного архивирования (point-in-time-recovery, PITR) в PostgresPro 11 Linux
- Пропажа индексов дескрипторов в 1С:Документообороте
- История одного конфликта блокировок 1С
- 1C тормозит и возникают ошибки. С чего начать расследование?
- Анализ технологического журнала 1С регулярными выражениями. От простого к сложному.