BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 24 июн 2025, 17:14

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Управление лимитом
СообщениеДобавлено: 26 дек 2012, 12:28 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
Предпосылки здесь. В этой теме сразу выводы.
1. Следующий запрос выдаёт не пустой результат:
Код:
SELECT
    *
FROM
    contract_limit_manage m,
    contract_limit_period p
WHERE
    m.clp_id = p.id AND
    m.cid != p.cid;

Т. е. изменение лимита через веб на одном договоре ссылается в том числе на задачу восстановления лимита другого договора! В результате этого в клиенте отображается две задачи на восстановление лимита, и они обе выполняются в назначенное время. Вопрос к разработчикам: почему при формировании списка задач на восстановление лимита не проверяется соответствие кодов договоров?
2. Следующий запрос также выдаёт не пустой результат:
Код:
SELECT
    m.*
FROM
    contract_limit_manage m
    LEFT JOIN contract c ON m.cid = c.id
WHERE
    c.id IS NULL;

Получается, что договор удалили, история изменения лимитов через веб для удалённого договора сохранилась.
3. Ну и напоследок:
Код:
SELECT MAX(p.id), MAX(m.clp_id) FROM contract_limit_period p, contract_limit_manage m;
160 689
SELECT COUNT(*) FROM contract_limit_manage m WHERE m.clp_id > 160;
378

Как так понимать, задача на восстановление лимита ещё не существует, а в истории изменения лимитов через веб уже есть её идентификатор?

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

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление лимитом
СообщениеДобавлено: 26 дек 2012, 14:48 
Не в сети

Зарегистрирован: 22 окт 2009, 15:45
Сообщения: 201
Карма: 15
vkulakov писал(а):
1. Следующий запрос выдаёт не пустой результат:
Код:
SELECT
    *
FROM
    contract_limit_manage m,
    contract_limit_period p
WHERE
    m.clp_id = p.id AND
    m.cid != p.cid;

Т. е. изменение лимита через веб на одном договоре ссылается в том числе на задачу восстановления лимита другого договора! В результате этого в клиенте отображается две задачи на восстановление лимита, и они обе выполняются в назначенное время. Вопрос к разработчикам: почему при формировании списка задач на восстановление лимита не проверяется соответствие кодов договоров?


А договора не связаны никакой иерархией?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление лимитом
СообщениеДобавлено: 26 дек 2012, 15:13 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
Нет. Изначально эксперименты проводились на тестовом договоре, который не был ни супер, ни суб договором.

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление лимитом
СообщениеДобавлено: 26 дек 2012, 16:52 
Не в сети

Зарегистрирован: 22 окт 2009, 15:45
Сообщения: 201
Карма: 15
Что-то не совсем понял как это воспроизвести. Понизил лимт у договора А из клиента биллинга. Задача добавилась 1, потом понизил лимит у договора B через web задача тоже добавилась 1
Алгоритм верный?
У Вас нет никаких скриптов повешенных на событие понижения лимита?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление лимитом
СообщениеДобавлено: 27 дек 2012, 00:32 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
У вас, скорее всего, и не получится воспроизвести. Для этого нужна древняя база с непонятными косяками. Когда вы в клиенте понижаете лимит, в базе видно, что реально добавилась только одна задача на восстановление лимитов, но в клиенте отображаются две, и выполняются потом тоже две. Это вызвано косяками в базе и некорректным поведением класса, который отвечает за получение списка задач из базы (не проверяется идентификатор договора).
В пункте 1 первого сообщения достаточно подробно, вроде, расписано.

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление лимитом
СообщениеДобавлено: 27 дек 2012, 00:34 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
Базу я уже почистил и всё сразу нормализовалось.

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Управление лимитом
СообщениеДобавлено: 27 дек 2012, 00:38 
Не в сети
Клиент

Зарегистрирован: 07 мар 2012, 15:02
Сообщения: 932
Откуда: Воронеж
Карма: 35
Откуда пошли косяки в базе - теперь уже не выяснить. Некорректное поведение класса может быть никогда более не проявится, но для профилактики я бы поправил, если нет противопоказаний.

_________________

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91


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

Часовой пояс: UTC + 5 часов [ Летнее время ]


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

Сейчас этот форум просматривают: Google [Bot] и гости: 1


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

Найти:
Перейти:  
POWERED_BY
Русская поддержка phpBB
[ Time : 0.056s | 32 Queries | GZIP : On ]