Jump to content

Новый месяц и не снялась абонплата некоторых юзеров...


Recommended Posts

2 месяца назад не перестала сниматься абоплата у логина shmel, помогло полное удаление и заведение юзера с нуля, проблема исчезла.

Сегодня ночью история повторилась, не снялась абонплата у одного юзера под логином alex1. В логах списание абонплаты этого юзера не произошло, только одна строчка

2010-05-01 00:00:00 -- Admin "@stargazer", 0.0.0.0: "freeMb" parameter changed from "-12.825312" to "280.000000". Prepaid traffic

у всех других присутствует строка снятия АП

2010-05-01 00:00:01 -- Admin "@stargazer", 0.0.0.0: "cash" parameter changed from "0.161793" to "-299.838207". Subscriber fee charge

первый глюк наблюдался когда юзеры были в файлах, теперь в мускуле, значит проблема не в этом, пересоздавать юзера не буду, хочется найти и устранить эту весчь... спасибо

Stg-2.406

 

посмотрел логи снатия абоплаты месяц назад, у этого логина тоже не снялась абонплата в начале марта!

конфиг тарифа проверил, 200 рублей абонка на нём, этот тариф есть у других людей, у них всё исправно

Edited by yKpon
Link to post
Share on other sites

2 месяца назад не перестала сниматься абоплата у логина shmel, помогло полное удаление и заведение юзера с нуля, проблема исчезла.

Сегодня ночью история повторилась, не снялась абонплата у одного юзера под логином alex1. В логах списание абонплаты этого юзера не произошло, только одна строчка

2010-05-01 00:00:00 -- Admin "@stargazer", 0.0.0.0: "freeMb" parameter changed from "-12.825312" to "280.000000". Prepaid traffic

у всех других присутствует строка снятия АП

2010-05-01 00:00:01 -- Admin "@stargazer", 0.0.0.0: "cash" parameter changed from "0.161793" to "-299.838207". Subscriber fee charge

первый глюк наблюдался когда юзеры были в файлах, теперь в мускуле, значит проблема не в этом, пересоздавать юзера не буду, хочется найти и устранить эту весчь... спасибо

Stg-2.406

 

посмотрел логи снатия абоплаты месяц назад, у этого логина тоже не снялась абонплата в начале марта!

конфиг тарифа проверил, 200 рублей абонка на нём, этот тариф есть у других людей, у них всё исправно

Проверь состояние флага "заморозки".

Link to post
Share on other sites

Проверь состояние флага "заморозки".

Passive 0

Down 0

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

Link to post
Share on other sites

Проверь состояние флага "заморозки".

Passive 0

Down 0

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

Так может он как раз весь месяц был "заморожен" - по этому и не снялось ничего.

Link to post
Share on other sites

У меня та же ситуация. Аналогично абонент был замороже несколько месяцев, после разморозки абонплата перестала сниматься и где-то месяцев 6. Надоело - удалил-завел заново пользователья. Эффект увижу в след. месяце.

Link to post
Share on other sites

Так может он как раз весь месяц был "заморожен" - по этому и не снялось ничего.

разморозился в феврале, абонка не снялась ни за март ни за апрель

Link to post
Share on other sites

Так может он как раз весь месяц был "заморожен" - по этому и не снялось ничего.

разморозился в феврале, абонка не снялась ни за март ни за апрель

Это данные из базы или непосредственно из самого Stargazer'а?

Link to post
Share on other sites

Это данные из базы или непосредственно из самого Stargazer'а?

из головы, помню когда размораживал :mellow:

вот этого юзера старый лог на файлах в котором видно как я вручную вычитал абонку http://skyprox.net.ru/upload/log

Link to post
Share on other sites

Это данные из базы или непосредственно из самого Stargazer'а?

из головы, помню когда размораживал :mellow:

вот этого юзера старый лог на файлах в котором видно как я вручную вычитал абонку http://skyprox.net.ru/upload/log

А из конфигуратора что видно?

Link to post
Share on other sites

А из конфигуратора что видно?

у юзера тариф с абонплатной 200 руб., не отключен и не заморожен

А патчи какие-нибуть накладывались? Или самостоятельные правки были?

void USER::ProcessDayFee()
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);

double passiveTimePart = 1.0;
if (!settings->GetFullFee())
   {
   passiveTimePart = GetPassiveTimePart();
   }
double f = tariff->GetFee() * passiveTimePart;

if (f == 0.0)
   return;

double c = cash;
printfd(__FILE__, "login: %8s   Fee=%f PassiveTimePart=%f fee=%f\n",
       login.c_str(),
       tariff->GetFee(),
       GetPassiveTimePart(),
       f);
property.cash.Set(c - f, sysAdmin, login, store, "Subscriber fee charge");
ResetPassiveTime();
}

Можно заметить что "неснятие" абонки происходит только в одном случае: если пользователь был заморожен весь месяц.

В связи с этим: что показывает параметр PassiveTime в stat-файле пользователя (ну или в базе, соответственно)?

Link to post
Share on other sites

Можно заметить что "неснятие" абонки происходит только в одном случае: если пользователь был заморожен весь месяц.

В связи с этим: что показывает параметр PassiveTime в stat-файле пользователя (ну или в базе, соответственно)?

28 марта перевёл базу на MySQL, абонка тоже не снималась когда база была на файлах, в его stat

 

PassiveTime=477460358

 

такой же параметр сейчас в мускульной базе

Link to post
Share on other sites

Спасибо за поднятую панику, нашел багу. Проблема была в том что если пользователь целый месяц был "заморожен" ему не нужно снимать абонку и метод USER::ProcessDayFee просто завершался:

...
double passiveTimePart = 1.0;
if (!settings->GetFullFee())
   {
   passiveTimePart = GetPassiveTimePart();
   }
double f = tariff->GetFee() * passiveTimePart;

if (f == 0.0)
   return;
...

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

Ошибка исправляется путем переноса вызова USER::ResetPassiveTime() из конца метода в строчку перед проверкой f == 0.0 (тоже, к стати, дурацкая проверка, может не работать, но ничего страшного при этом не произойдет - у пользователя снимется мизерная доля копейки).

Патч:

--- projects/stargazer/user.cpp	2010-05-13 13:29:43.616410461 +0300
+++ projects/stargazer/user.cpp.new	2010-05-13 13:30:27.569444110 +0300
@@ -1314,6 +1314,8 @@
    }
double f = tariff->GetFee() * passiveTimePart;

+ResetPassiveTime();
+
if (f == 0.0)
    return;

@@ -1324,7 +1326,6 @@
        GetPassiveTimePart(),
        f);
property.cash.Set(c - f, sysAdmin, login, store, "Subscriber fee charge");
-ResetPassiveTime();
}
//-----------------------------------------------------------------------------

Link to post
Share on other sites
..... но ничего страшного при этом не произойдет - у пользователя снимется мизерная доля копейки).

да да кстати, у замороженых весь месяц снимаются этот мизер как раз :mellow:

у не замороженых и отмороженых юзеров больше месяца параметр PassiveTime должен быть = 0 правильно я понимаю?

 

подскажите как патчить? никогда не приходилось этого делать просто

Link to post
Share on other sites
..... но ничего страшного при этом не произойдет - у пользователя снимется мизерная доля копейки).

да да кстати, у замороженых весь месяц снимаются этот мизер как раз :)

у не замороженых и отмороженых юзеров больше месяца параметр PassiveTime должен быть = 0 правильно я понимаю?

 

подскажите как патчить? никогда не приходилось этого делать просто

Копируем текст патча в файлик, скажем, passive-time-patch.diff и ложим его в корень проекта. Потом выполняем:

$ patch -p0 < passive-time-patch.diff

И оно должно написать что все прошло успешно. После этого пересобираем и делаем make install-bin либо раскидываем бинарники руками.

Link to post
Share on other sites

пропатчил, 10 минут полёт нормальный, и всё же вопрос по прежнему в голове крутится

у не замороженых и отмороженых юзеров больше месяца параметр PassiveTime должен быть = 0 правильно я понимаю?

кстати не много оффтопа, траффик считается точно по 1024кбайта в мегобайте? не 1000? почему то для теста скачиваю файл с фтп длинка размером 1712192 байта, инетаццесс насчитывает 1.72Мб, а должно быть 1.63

я это замечал и на предыдущих, а так же старых версиях стг

Link to post
Share on other sites

....1024кбайта в мегобайте? не 1000? почему то для теста скачиваю файл с фтп длинка размером 1712192 байта, инетаццесс насчитывает 1.72Мб, а должно быть 1.63

я это замечал и на предыдущих, а так же старых версиях стг

А как считается в тарифе (up+down)? Если так - то по моим экспериментам за запрос уходит 5..6% от размера

Link to post
Share on other sites

А как считается в тарифе (up+down)? Если так - то по моим экспериментам за запрос уходит 5..6% от размера

нет, только download, я даже не знаю как может считаться суммарно, как то не правильно это

Link to post
Share on other sites

Точно 1024.

Считаются данняе о размере из IP-заголовка. Т.е. overhead протоколов более высокого уровня (TCP, FTP, HTTP, etc.) тоже считается.

А почему неправильно?

Link to post
Share on other sites

Цифра 1712192 откуда взята?

размер скачанного файла в байтах

Надо бы размеры заголовков пакетов прибавить и установку TCP-соединения (если, конечно, по TCP передавался). А при передаче по почте еще происходит и MIME-кодирование и раза в 2 раздувает файл.

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...