|
Странный сбой http сервиса | ☑ | ||
---|---|---|---|---|
0
FirstLine Support
29.11.22
✎
20:13
|
В БП30 добавил свой http сервис, совершенно простейший – создание документа в базе. Всё работает, разумеется есть и файл логирования, пишет текстовый файлик на диск. Есть проблема, изредка (раз в сутки) случаются странные сбои: по одному запросу создаётся два документа. Естественно посмотрел совой лог: был удивлён. Нет, не так, был очень сильно удивлён. По логу выходит, что процедура сервиса действительно создаёт два документа, причем управление передаётся куда-то в середину процедуры, между расшифровкой запроса и созданием документа и процесс создания как бы задваивается.
В модуле объекта ПередЗаписью поставил контроль дублей, но сам факт интересен. Никто не сталкивался? |
|||
1
hockeyist
29.11.22
✎
20:38
|
(0) Интересно, сколько постов пройдет до того, как ТС напишет что-то типа "я идиот"?
|
|||
2
FirstLine Support
29.11.22
✎
20:42
|
(1) 16?
|
|||
3
Genayo
29.11.22
✎
21:00
|
(0) Чудес не бывает, скорее всего кривой код создания документа.
|
|||
4
FirstLine Support
29.11.22
✎
21:18
|
(3) да было подозрение, я два раза документ записывал, первый раз просто записывал, второй раз проводил. Естественно убрал эту фигню, стал просто записывать в режиме проведения.
Ну не знаю... В остальном всё стандартно, в документе проводок нет, документ самописный, простейший |
|||
5
ass1c
30.11.22
✎
09:05
|
(4) - Будь мужиком! Покажи код!
|
|||
6
mikecool
30.11.22
✎
09:08
|
(0) если считаешь, что сбой - почисти серверный кеш, рестартани веб-сервер
но думаю (1) прав |
|||
7
Dzenn
гуру
30.11.22
✎
09:41
|
1 — в запрос также передавать уникальный идентификатор или что-то подобное
2 — записывать уникальный идентификатор в какое-то поле созданного документа 3 — перед записью документа проверять наличие документов с этим уникальным идентификатором, и если они есть, то ничего не делать |
|||
8
mikecool
30.11.22
✎
10:26
|
документ создавать отдельным фоновым, сервис только получает данные и запускает ФЗ
|
|||
9
FirstLine Support
30.11.22
✎
10:28
|
(7) именно по этой схеме и работаю. В запросе приходи ИД транзакции. Проверяю есть ли в базе документы с таким ИД. Если есть, даю ответ клиенту, что он не прав, у себя пишу в лог ошибку, разумеется дубль не создаю. Но каким-то непонятным образом, функция создания документа (оформлено отдельной функцией) ИНОГДА запускается дважды судя по логу. Проверка не срабатывает. Пока сделал такую же проверку непосредственно в модуле объекта документа
|
|||
10
Галахад
гуру
30.11.22
✎
10:29
|
Кстати, да. Возможно не две записи в одном запросе, а два запроса. Т.е. источник не получил ответ и запустил новый запрос.
|
|||
11
FirstLine Support
30.11.22
✎
10:31
|
(10) тоже думал в эту сторону
|
|||
12
rozer76
30.11.22
✎
10:31
|
(9) см (8)
|
|||
13
FirstLine Support
30.11.22
✎
10:32
|
(12) в чем преимущество такой асинхронности?
|
|||
14
Галахад
гуру
30.11.22
✎
10:32
|
(11) Ну, это можно посмотреть по логам.
|
|||
15
FirstLine Support
30.11.22
✎
10:35
|
(14) к сожалению лог не видит, что запрос приходит два раза. Это и вводит меня в недоумение
|
|||
16
Мимохожий Однако
30.11.22
✎
10:38
|
Документ можно искать не по ИД транзакции, а по номеру
|
|||
17
Галахад
гуру
30.11.22
✎
10:42
|
(13) Как минимум в производительности. Если толпа клиентов стучится в сервис, то вероятны ошибки.
(15) Лог не настроен или в логе нет дублей? |
|||
18
FirstLine Support
30.11.22
✎
10:47
|
(17) да, согласен, очередь на РС сделать не сложно, буду запускать ФЗ
лог говорит, что есть ОДИН заход в процедуру, которая привязана к http методу, а дальше происходи какое-то безумие, фиксируется создание двух документов. Возможно нужно очень подробно логировать, чтобы выяснить в какой строчке происходит вот это всё |
|||
19
FirstLine Support
30.11.22
✎
10:57
|
(16) номера не дублируются
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |