forum.bitel.ru
http://forum.bitel.ru/

Блокировка шлюза сервером при начислении абонплаты.
http://forum.bitel.ru/viewtopic.php?f=7&t=3516
Страница 1 из 2

Автор:  iONE [ 01 фев 2010, 17:12 ]
Заголовок сообщения:  Блокировка шлюза сервером при начислении абонплаты.

Есть проблема.

Второй месяц подряд идут обращения из Т.П., по поводу не верного блокирования шлюза IPN, сервером. Шлюз блокируется, даже при положительном балансе.

Начисление абонплаты запускается в 05 мин. каждого часа.
Проверка шлюзов IPN запускается с интервалом в 5 мин.

Сервер 4.6.647
IPN 4.6.239

Автор:  stark [ 01 фев 2010, 18:16 ]
Заголовок сообщения:  Re: Блокировка шлюза сервером при начислении абонплаты.

в логах шедулера надо искать строки типа :
Locking xxx balance: -188.38 limit 0.00
где xxx - номер договора

Автор:  iONE [ 01 фев 2010, 18:36 ]
Заголовок сообщения:  Re: Блокировка шлюза сервером при начислении абонплаты.

02-01/01:10:05 INFO [pool-2-thread-2] IPNTestGates - Locking XXX balance: -146.23 limit 0.00

Автор:  iONE [ 03 фев 2010, 13:42 ]
Заголовок сообщения:  Re: Блокировка шлюза сервером при начислении абонплаты.

Ув. разработчики, кто нибудь ответит?

Автор:  stark [ 04 фев 2010, 16:59 ]
Заголовок сообщения:  Re: Блокировка шлюза сервером при начислении абонплаты.

у вас это стабильно происходит ? Попробуйте разнести подсчёт абонплаты и обсчет IPN по времени, чтобы они не пересекались . не получается это отловить

Автор:  stark [ 04 фев 2010, 17:05 ]
Заголовок сообщения:  Re: Блокировка шлюза сервером при начислении абонплаты.

Предлагаю установить в на таблицу contract_balance подобие вот этого тригера :
http://wiki.bgbilling.ru/index.php/%D0% ... 0%B8%D0%B9

и отследить когда меняется баланс . Если ситуация повторится и баланс неожиданно временно станет отрицательыным, тогда нужны логи шедулера и сервера на момент этих изменений

Автор:  iONE [ 04 фев 2010, 18:23 ]
Заголовок сообщения:  Re: Блокировка шлюза сервером при начислении абонплаты.

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

Автор:  stark [ 04 фев 2010, 19:07 ]
Заголовок сообщения:  Re: Блокировка шлюза сервером при начислении абонплаты.

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


А почему ждать следующего месяца ? у вас в середине месяца такое не происходит ?

Автор:  iONE [ 04 фев 2010, 19:37 ]
Заголовок сообщения:  Re: Блокировка шлюза сервером при начислении абонплаты.

Ну по крайней мере ТП не обращалась с такой проблемой в середине месяца.

Автор:  stark [ 04 фев 2010, 19:44 ]
Заголовок сообщения:  Re: Блокировка шлюза сервером при начислении абонплаты.

iONE писал(а):
Ну по крайней мере ТП не обращалась с такой проблемой в середине месяца.

мы наткнулись еще на один такой случай ..там это произошло 31-го числа

Автор:  iONE [ 04 фев 2010, 19:54 ]
Заголовок сообщения:  Re: Блокировка шлюза сервером при начислении абонплаты.

Триггеры на добавление, изменение таблицы contract_balance стоят, посмотрим что происходит и когда.

Автор:  iONE [ 05 фев 2010, 13:42 ]
Заголовок сообщения:  Re: Блокировка шлюза сервером при начислении абонплаты.

Вот такое действие, сначала INSERT с вх. ост = 0, а потом UPDATE с вх.ост=1000 - нормальное поведение?
Код:
select * from events_log_contract_balance where cid = 14;
+----+---------------------+--------+------+----+-----+---------+--------+--------+--------+
| id | date                | event  | yy   | mm | cid | summa1  | summa2 | summa3 | summa4 |
+----+---------------------+--------+------+----+-----+---------+--------+--------+--------+
| 62 | 2010-02-04 23:18:57 | INSERT | 2010 |  2 |  14 |    0.00 |   0.00 |   0.00 |   0.00 |
| 63 | 2010-02-04 23:18:57 | UPDATE | 2010 |  2 |  14 | 1000.00 |   0.00 |   0.00 |   0.00 |
+----+---------------------+--------+------+----+-----+---------+--------+--------+--------+
2 rows in set (0.00 sec)

Автор:  stark [ 05 фев 2010, 17:09 ]
Заголовок сообщения:  Re: Блокировка шлюза сервером при начислении абонплаты.

iONE писал(а):
Вот такое действие, сначала INSERT с вх. ост = 0, а потом UPDATE с вх.ост=1000 - нормальное поведение?
Код:
select * from events_log_contract_balance where cid = 14;
+----+---------------------+--------+------+----+-----+---------+--------+--------+--------+
| id | date                | event  | yy   | mm | cid | summa1  | summa2 | summa3 | summa4 |
+----+---------------------+--------+------+----+-----+---------+--------+--------+--------+
| 62 | 2010-02-04 23:18:57 | INSERT | 2010 |  2 |  14 |    0.00 |   0.00 |   0.00 |   0.00 |
| 63 | 2010-02-04 23:18:57 | UPDATE | 2010 |  2 |  14 | 1000.00 |   0.00 |   0.00 |   0.00 |
+----+---------------------+--------+------+----+-----+---------+--------+--------+--------+
2 rows in set (0.00 sec)


да

Автор:  iONE [ 09 фев 2010, 20:05 ]
Заголовок сообщения:  Re: Блокировка шлюза сервером при начислении абонплаты.

В продолжение темы. Поступил запрос из ТП, что при положительном балансе, шлюз не перешёл из состояния "заблокирован" в состояние "закрыт". Пришлось открывать в ручную.

Вот логи по этому договору, собранные триггером:

Код:
+-----+---------------------+--------+------+----+------+---------+--------+---------+--------+
| id  | date                | event  | yy   | mm | cid  | summa1  | summa2 | summa3  | summa4 |
+-----+---------------------+--------+------+----+------+---------+--------+---------+--------+
| 504 | 2010-02-09 12:00:03 | UPDATE | 2010 |  2 | 5134 | 4007.42 |   0.00 | 4300.00 |   0.00 |
| 547 | 2010-02-09 16:00:03 | UPDATE | 2010 |  2 | 5134 | 4007.42 |   0.00 | 4000.00 |   0.00 |
+-----+---------------------+--------+------+----+------+---------+--------+---------+--------+
2 rows in set (0.01 sec)

Автор:  stark [ 09 фев 2010, 20:35 ]
Заголовок сообщения:  Re: Блокировка шлюза сервером при начислении абонплаты.

iONE писал(а):
В продолжение темы. Поступил запрос из ТП, что при положительном балансе, шлюз не перешёл из состояния "заблокирован" в состояние "закрыт". Пришлось открывать в ручную.

Вот логи по этому договору, собранные триггером:

Код:
+-----+---------------------+--------+------+----+------+---------+--------+---------+--------+
| id  | date                | event  | yy   | mm | cid  | summa1  | summa2 | summa3  | summa4 |
+-----+---------------------+--------+------+----+------+---------+--------+---------+--------+
| 504 | 2010-02-09 12:00:03 | UPDATE | 2010 |  2 | 5134 | 4007.42 |   0.00 | 4300.00 |   0.00 |
| 547 | 2010-02-09 16:00:03 | UPDATE | 2010 |  2 | 5134 | 4007.42 |   0.00 | 4000.00 |   0.00 |
+-----+---------------------+--------+------+----+------+---------+--------+---------+--------+
2 rows in set (0.01 sec)


А это другой случай. Обратную операцию , т.е перевод из состояния открыт в состояние закрыт делает не задача проверки шлюзов . Это происходит только по приходу платежа . Но у вас приходов платежа не было . В 16:00:03 у вас уменьшилась наработка . Посмотрите какой пересчет был в это время и почему так получилось .

Автор:  stark [ 09 фев 2010, 20:40 ]
Заголовок сообщения:  Re: Блокировка шлюза сервером при начислении абонплаты.

вы случайно не используете какие-нибудь скрипты для дебитовых абонплат ?

Автор:  iONE [ 09 фев 2010, 20:45 ]
Заголовок сообщения:  Re: Блокировка шлюза сервером при начислении абонплаты.

Да это не тот случай. Мне сообщили что был сделан перерасчёт.
На сколько я понял открытие шлюза происходит по приходу платежа, а вот жёсткая блокировка разблокировка должна производится модулем автоматически в зависимости от состояния баланса.

Автор:  stark [ 09 фев 2010, 20:48 ]
Заголовок сообщения:  Re: Блокировка шлюза сервером при начислении абонплаты.

iONE писал(а):
Да это не тот случай. Мне сообщили что был сделан перерасчёт.
На сколько я понял открытие шлюза происходит по приходу платежа, а вот жёсткая блокировка разблокировка должна делаться производится модулем автоматически в зависимости от состояния баланса.


что вы понимаете под блокировкой и разблокировкой ?

Автор:  iONE [ 09 фев 2010, 20:53 ]
Заголовок сообщения:  Re: Блокировка шлюза сервером при начислении абонплаты.

блокировка - состояние шлюза "Заблокирован", абонент не может сам открыть.
разблокировка - состояние шлюза "Закрыт", абонент может сам открыть.

Автор:  stark [ 09 фев 2010, 20:56 ]
Заголовок сообщения:  Re: Блокировка шлюза сервером при начислении абонплаты.

т.к открытие шлюза это и есть разблокировка ..вы просто разнесли эти понятия выше

Нет ..автоматически(в задаче проверки шлюзов) происходит только бликировка по состоянию баланса. Обратная операция не производится

Автор:  iONE [ 09 фев 2010, 21:00 ]
Заголовок сообщения:  Re: Блокировка шлюза сервером при начислении абонплаты.

т.е. состояния шлюза "Закрыт/Открыт" меняются только по событию прихода платежа?

И как быть в такой ситуации? Всем в ручную после выхода из минуса или скриптом по таймеру, не по приходу платежа, "разблокировать"?

Автор:  stark [ 10 фев 2010, 13:46 ]
Заголовок сообщения:  Re: Блокировка шлюза сервером при начислении абонплаты.

iONE писал(а):
т.е. состояния шлюза "Закрыт/Открыт" меняются только по событию прихода платежа?

не совсем . Работает так

1. задача поверки шлюзов запускается по планировщику и кроме проверки статус самих шлюзов (реальны статус шлюза на железке совпадает со статусом модуля IPN ) она перед этим еще может менять статус модуля IPN. Но меняет она его в одну сторону. Т.е если баланс стал меньше лимита , то стату шлюза меняет за заблокирован.

2. По приходу платежа(или изменения лимита ) если баланс стал больше лимита , то статус шлюза меняется на открыт.

Логика тут такая . наработка обычно должна расти в результате пересчетов, а не уменьшаться, поэтому в 1-м пункте статус IPN меняется только в одну сторону . И баланс должен расти только во 2-м случае . Если это происходит по каким-то другим причинам , то это либо ошибка и надо разбираться почему наработка уменьшилась либо это какой-то специальный случай (поменяли тариф и сделали перобсчет напрмер) и в этом случае надо поменять статус шлюза вручную.

iONE писал(а):
И как быть в такой ситуации? Всем в ручную после выхода из минуса или скриптом по таймеру, не по приходу платежа, "разблокировать"?


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

Автор:  stark [ 10 фев 2010, 13:48 ]
Заголовок сообщения:  Re: Блокировка шлюза сервером при начислении абонплаты.

вот тут эта тема поднималась уже:
viewtopic.php?f=7&t=3244

Автор:  iONE [ 01 ноя 2010, 20:44 ]
Заголовок сообщения:  Re: Блокировка шлюза сервером при начислении абонплаты.

Шлюз не переходит из состояния "Заблокирован" в состояние "Открыт" по приходу платежа через модуль "карточки и удалённые платежи".
Если платёж внести из клиента, то статус меняется.

Сервер 5.0.768.

Автор:  iONE [ 01 ноя 2010, 23:08 ]
Заголовок сообщения:  Re: Блокировка шлюза сервером при начислении абонплаты.

Есть сервер 5.0.766 на нём такой проблемы не наблюдается.

Автор:  iONE [ 02 ноя 2010, 00:27 ]
Заголовок сообщения:  Re: Блокировка шлюза сервером при начислении абонплаты.

Обновил сервер до 5.0.778
Ситуация не изменилась, при приходе платежа шлюз IPN не меняет статус.
Сейчас вышел из положения путём ручного смены статуса в базе.

Автор:  iONE [ 02 ноя 2010, 12:23 ]
Заголовок сообщения:  Re: Блокировка шлюза сервером при начислении абонплаты.

Так же не понятки со сменой статуса шлюза на "заблокирован" задачей IPNTestGates:

Код:
SELECT count(*) FROM contract c, ipn_contract_status_7 ics WHERE c.id = ics.cid AND c.status <> 0 AND ics.status = 0;
+----------+
| count(*) |
+----------+
|      189 |
+----------+


Лог scheduler.log:
Код:
11-02/09:30:07  INFO [pool-2-thread-1] IPNTestGates - Gate: X.X.0.90 : 4567 [ ??19 ] - checking end..
11-02/09:30:07  INFO [pool-2-thread-1] IPNTestGates - Gate: X.X.1.7 : 4567 [ ???????? ] - checking end..
11-02/09:30:08  INFO [pool-2-thread-1] IPNTestGates - Gate: X.X.59.18 : 4567 [ ??????? ] - checking end..
11-02/09:30:09  INFO [pool-2-thread-1] IPNTestGates - Locked clients:
11-02/09:30:09  INFO [pool-2-thread-1] IPNTestGates -
11-02/09:30:09  INFO [pool-2-thread-1] IPNTestGates - Task finished time=6453 ms.

Автор:  iONE [ 02 ноя 2010, 13:13 ]
Заголовок сообщения:  Re: Блокировка шлюза сервером при начислении абонплаты.

Сегодня пришёл платёж от дилера и шлюз успешно сменил статус с "Заблокирован" на "Открыт".

Что происходит, от чего зависит результат? Куда копать, что смотреть?

Автор:  stark [ 02 ноя 2010, 18:48 ]
Заголовок сообщения:  Re: Блокировка шлюза сервером при начислении абонплаты.

iONE писал(а):
Так же не понятки со сменой статуса шлюза на "заблокирован" задачей IPNTestGates:

Код:
SELECT count(*) FROM contract c, ipn_contract_status_7 ics WHERE c.id = ics.cid AND c.status <> 0 AND ics.status = 0;
+----------+
| count(*) |
+----------+
|      189 |
+----------+


Лог scheduler.log:
Код:
11-02/09:30:07  INFO [pool-2-thread-1] IPNTestGates - Gate: X.X.0.90 : 4567 [ ??19 ] - checking end..
11-02/09:30:07  INFO [pool-2-thread-1] IPNTestGates - Gate: X.X.1.7 : 4567 [ ???????? ] - checking end..
11-02/09:30:08  INFO [pool-2-thread-1] IPNTestGates - Gate: X.X.59.18 : 4567 [ ??????? ] - checking end..
11-02/09:30:09  INFO [pool-2-thread-1] IPNTestGates - Locked clients:
11-02/09:30:09  INFO [pool-2-thread-1] IPNTestGates -
11-02/09:30:09  INFO [pool-2-thread-1] IPNTestGates - Task finished time=6453 ms.


в Locked clients: выводятс те, у кого сменился статус при запуске этой задачи . Т.е баланс меньше лимита, а статус открыт . тогда меняется статус в ipn_contract_status. У вас похоже таких нет.

Автор:  stark [ 02 ноя 2010, 18:48 ]
Заголовок сообщения:  Re: Блокировка шлюза сервером при начислении абонплаты.

iONE писал(а):
Сегодня пришёл платёж от дилера и шлюз успешно сменил статус с "Заблокирован" на "Открыт".

Что происходит, от чего зависит результат? Куда копать, что смотреть?


статус договора у вас при этом какой ?

Страница 1 из 2 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/