Перейти до

Новая сборка СТГ 2.4


Рекомендованные сообщения

По материалам темы http://local.com.ua/forum/index.php?showtopic=9355.

Исправлены указанные ошибки и выполнены некоторые пожелания (например передача в скрипт изменения пользователя пароля).

 

Брать здесь: http://www.rapidshare.ru/408362

 

 

Просьба отписываться в теме только по обнаруженным ошибкам.

Ссылка на сообщение
Поделиться на других сайтах

Чего то не все ошибки подправлены, при беглом просмотре осталось:

 

- Неправильны формат поля freemb в базе и при сохранении, не пишется дробная часть да и в формате БД не предусмотрена она.

 

- Не решена проблема с буквой Z если она первая в логине, имени тарифа.

 

Глубже пока не тестировал, неприятно осознавать что к подробным багрепортом, иногда и с патчем для исправления, относятся не очень внимательно.

Ссылка на сообщение
Поделиться на других сайтах

Косметический баг в модуле FB, был на прошлой версии, но не успел зарепортить.

 

При запуске биллинга все метки времени в базе (время последнего логина и последних денег) уползает вперед на 2-4 часа (точно не замечал, но все время постоянный фактор), думаю что тупо связано с timezone сервера.

Ссылка на сообщение
Поделиться на других сайтах

To egor2fsys

Исправлен ли в данной версии баг:

Если клиенту в абонплате забить 60 грн предоплаченного трафика, то каждый день в 00.00 баланс устанавливается опять в 60 грн.

То есть, если я насидел за день 15 грн, в балансе осталось 45, а в 00.00 баланс опять восстанавливается на 60 грн.

Вопрос довольно критичен.

Ссылка на сообщение
Поделиться на других сайтах
Чего то не все ошибки подправлены, при беглом просмотре осталось:

 

- Неправильны формат поля freemb в базе и при сохранении, не пишется дробная часть да и в формате БД не предусмотрена она.

 

- Не решена проблема с буквой Z если она первая в логине, имени тарифа.

 

Глубже пока не тестировал, неприятно осознавать что к подробным багрепортом, иногда и с патчем для исправления, относятся не очень внимательно.

Oбраз sql базы пока не исправляли.

Ссылка на сообщение
Поделиться на других сайтах

Ошибка модуля FB (или недоработка)

 

Ошибка связана с полями userdata

При сохранении в базу у полей не проставляет поле num, то есть все идут с 0 номером, принципиально это ничего не меняет так как сортировка все равно идет правильно и загружаются они в той же последовательности, НО

 

при некорректной остановке старгейзера (которая иногда неизбежно случается) в базе могут накапливатся неудаленные или лишние поля userdata, в результате они:

 

1. Путаются, баг визуально заметен, иногда поля у юзеров уползают на 5-6 userdata

2. Накапливаются старые поля и складируются в базе, не заметно, но например у меня на 300 пользователей уже 5000 userdata что в 1,5 раза больше.

 

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

Ссылка на сообщение
Поделиться на других сайтах

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

 

Перенес Insert запросы в UserAdd

И заменил Insert на Update в SaveConf и добавил внесение в базу правильного num.

 

--- firebird_store_users.cpp    2007-09-14 15:06:02.000000000 +0400
+++ firebird_store_users.cpp.new        2007-09-23 00:20:35.000000000 +0400
@@ -166,6 +167,18 @@
            return -1;
            }
        }
+
+    for (i = 0; i < 10; i++)
+    {
+        strprintf(&query, "insert into tb_users_data (fk_user, data, num) values (%d, '', '%u')", uid, i);
+        if (db.Query(query))
+        {
+            strError = "Error making query: \"" + query + "\"";
+            db.Rollback();
+            return -1;
+        }
+    }
+
    db.Commit();
    }

@@ -578,23 +593,17 @@
            return -1;
            }
        }
-    strprintf(&query, "delete from tb_users_data where fk_user = %d", uid);
-    if (db.Query(query))
-        {
-        strError = "Error makeing query: \"" + query + "\"";
-        db.Rollback();
-        return -1;
-        }
+    i = 0;
    for (it = conf.userdata.begin(); it != conf.userdata.end(); ++it)
        {
-        strprintf(&query, "insert into tb_users_data (fk_user, data, num) values (%d, '%s', 0)", uid, it->c_str());
+        strprintf(&query, "update tb_users_data set data = '%s' where fk_user=%d and num=%u", it->c_str(), uid, i++);
        if (db.Query(query))
            {
            strError = "Error making query: \"" + query + "\"";
            db.Rollback();
            return -1;
            }
-        }
+       }
    strprintf(&query,
              "delete from tb_allowed_ip where fk_user = %d",
              uid);

Ссылка на сообщение
Поделиться на других сайтах

Баг пофикшен. Решение с апдейтами не проходит в виду того, что количество полей user_data не регламентировано (в вашем патче оно принято равным 10).

Ссылка на сообщение
Поделиться на других сайтах

На данный момент число полей все равно получается всегда 10 ввиду конфигуратора, а если реализуется концепция любого числа полей то тем более надо искать какое то новое решение, например с триггерами FB.

Ссылка на сообщение
Поделиться на других сайтах

Новая ошибка в модуле FB

Нет экранирования переменных, при попытка сохранения поля note вываливается ошибка если разместить там '

 

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

Ссылка на сообщение
Поделиться на других сайтах

По поводу последнего бага: сборка от 26.06.2007 или от 20.09.2007?

Эта бага уже была исправлена. Проверил - все нормально.

По поводу полей user_data: в идеале неплохо было бы использовать конструкцию UPDATE OR INSERT, но она поддерживается только самыми последними версиями Firebird (начиная с 2.1). А делать каждый раз проверку на наличие поля - достаточно накладно. Мне кажется, лучше сделать 1 delete и 10 insert чем 10 select и 10 insert/update. Можно, конечно, заранее сделать выборку всех полей для юзера и вынести логику из базы в модуль, но это как-то не искренне.

А то что id растут - так это ничего. Вон в детальной статистике они еще больше растут.

Ссылка на сообщение
Поделиться на других сайтах

господа

 

у меня второй месяц траффик не обнуляется в начале месяца

dayresettarif=0

 

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

тоже было замечено при быстрой работе через виндячий конфигуратор

 

поставил в скрипте слип на 2секунды - вроде едет

 

 

от чего зависит скорость выполнения запросов у КК???

и что за лажа с обнулением?

Ссылка на сообщение
Поделиться на других сайтах
у меня второй месяц траффик не обнуляется в начале месяца

dayresettarif=0

1. Параметр называется DayResetTraff (а не Tariff)

2. 0 - не начало месяца, а последний его день.

3. Версия stg не указана а экстрасенсы в пожизненном отпуске :)

 

Еще было бы неплохо узнать, как оно загибается...

Ссылка на сообщение
Поделиться на других сайтах

1. опечатка

2. вчера был послдений - на утро все данные, раньше стг2 - все обнулял

 

2.4, предпоследня сборка, сентябрь

 

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

 

делаю группы по 4, через 2х секундный перерыв - работает

Ссылка на сообщение
Поделиться на других сайтах

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

 

У меня часто случается такой конфликт у параллельно работающих кассиров. Надо просто переписать всю работу с конфигураторами на полностью параллельную обработку.

Ссылка на сообщение
Поделиться на других сайтах

при удалении пользователя - падает, ничего не оставляя в логах, конфигурато версии - 1.88.9 (вроде ж последняя?)

 

КК (тот что в комплекте) не отправляет сообщение пользователю - хотя и выводит "ОК"

 

и самое не приятное - параметры $ip $login $cash $id - передаются только OnConnect + OnDisconnect. раньше передавались всем скриптам ( в связи с этим возникло несколько проблемок) тобишь OnUserAdd и OnConnect в пользовательской дирректории...

 

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

 

ах да, после перехода со старой версии (2.016 ??? точно и не припомню ((() содуль статистики теперь не может присоединиться к серверу...

 

если кто может что подсказать - будьте добры!

Ссылка на сообщение
Поделиться на других сайтах
при удалении пользователя - падает, ничего не оставляя в логах, конфигурато версии - 1.88.9 (вроде ж последняя?)

 

КК (тот что в комплекте) не отправляет сообщение пользователю - хотя и выводит "ОК"

 

и самое не приятное - параметры $ip $login $cash $id - передаются только OnConnect + OnDisconnect. раньше передавались всем скриптам ( в связи с этим возникло несколько проблемок) тобишь OnUserAdd и OnConnect в пользовательской дирректории...

 

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

 

ах да, после перехода со старой версии (2.016 ??? точно и не припомню ((() содуль статистики теперь не может присоединиться к серверу...

 

если кто может что подсказать - будьте добры!

Версии СТГ, сервера, ГСС где ? Дядя Вася, который бы за вас это все написал, в отпуске.

Ссылка на сообщение
Поделиться на других сайтах

эээ.... ну вроде в этом топике обсуждается определенная сборка СТГ ? если точнее то 2.403b (stg-2.4-2007.09.20-16.35.00)

...

 

ошибок при сборке замечено небыло, но если интересно - gcc (GCC) 4.1.0 2006030.

 

система - линукс, федора 4, ядро 2.6.15.5 сборное.

Ссылка на сообщение
Поделиться на других сайтах

Попробуйте собрать с дебагом (раскоментировав в main.cpp #define NO_DAEMON 1), и после того как демон упадет при удалении пользователя, скинуть последние 20 строк лога сюда.

Ссылка на сообщение
Поделиться на других сайтах

по поводу КК - в логах - "не могу подключиться к серверу 127.0.0.1" (СТГ на этой же машине), сам КК говорит ОК - но действий никаких не происходит.

 

при включенном дебаггере не собирается ....

 

так что вывод не покажу

 

g++ -c admin.cpp -g3 -Wall -I ../../include -DLINUX
g++ -c admins.cpp -g3 -Wall -I ../../include -DLINUX
g++ -c main.cpp -g3 -Wall -I ../../include -DLINUX
main.cpp:61: error: ‘define’ does not name a type
main.cpp: In function ‘void CatchHUP(int)’:
main.cpp:231: error: ‘needRulesReloading’ was not declared in this scope
main.cpp: In function ‘int main(int, char**)’:
main.cpp:670: error: ‘needRulesReloading’ was not declared in this scope

 

прочем если просто запустить СТГ он выводи много информации, во время этого падения - ничегошеньки не выдает...

 

       rsconf.cpp > 14:01:11 > Connection accepted from 10.4.0.11
       rsconf.cpp > 14:01:11 > RecvHdr - ok buf = SG04 sizeof(STG_HEADER) = 4
  configproto.cpp > 14:01:11 > ParseXMLStart
  configproto.cpp > 14:01:11 > Start
       parser.cpp > 14:01:11 > PARSER_GET_SERVER_INFO::ParseStart
  configproto.cpp > 14:01:11 > Start
       parser.cpp > 14:01:11 > PARSER_GET_USERS::ParseStart
  configproto.cpp > 14:01:11 > Start
  configproto.cpp > 14:01:11 > Start
       parser.cpp > 14:01:11 > PARSER_CHG_USER::Reset()
       parser.cpp > 14:01:11 > PARSER_CHG_USER::Reset() DEL USR =====================
       parser.cpp > 14:01:11 > PARSER_CHG_USER::ParseStart el = DelUser depth = 1
       parser.cpp > 14:01:11 > PARSER_CHG_USER::Reset()
       parser.cpp > 14:01:11 > PARSER_CHG_USER::Reset() DEL USR =====================
  configproto.cpp > 14:01:11 > Start
       parser.cpp > 14:01:11 > PARSER_ADD_USER::ParseStart el = DelUser depth = 1
  configproto.cpp > 14:01:11 > Start
       parser.cpp > 14:01:11 > PARSER_DEL_USER::ParseStart el = DelUser
 traffcounter.cpp > 14:01:11 > DelUser: buratino

 

но намного больше меня беспокоит то, что не передаются переменные типа $ip $login в скрипты OnUserAdd и пользовательские скрипты.... это критично... может я в чем-то не прав, и в версиях 2,4х этого и не должно происходить?

Ссылка на сообщение
Поделиться на других сайтах

упс, тогда выходит что у меня дебаг включен по умолчанию.... то-то он в консоль сколько всего выводит :)

 

тогда вот логи с дебаг опцией - выше...

 

пс (сорри программер с меня никакой)

Ссылка на сообщение
Поделиться на других сайтах
и самое не приятное - параметры $ip $login $cash $id - передаются только OnConnect + OnDisconnect. раньше передавались всем скриптам ( в связи с этим возникло несколько проблемок) тобишь OnUserAdd и OnConnect в пользовательской дирректории...

 

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

В скрипт OnChange передаются параметры:

логин, название измененного параметра, старое значение, новое значение

 

В скрипты OnConnect/OnDisconnect передаются параметры:

логин, IP, деньги, идентификатор пользователя, включенные направления

 

В скрипт OnUserAdd/OnUserDel передается только логин. В момент передачи все другие параметры либо еще неизвестны (Add) либо уже неизвестны (Del).

 

При добавлении нового пользователя сперва вызывается OnUserAdd, а потом идет серия вызовов OnChange из которых Вы можете почерпнуть необходимую информацию.

При удалении пользователя сперва происходит вызов OnUserDel, а потом - OnDisconnect, из которого Вы можете почерпнуть необходимую информацию.

Ссылка на сообщение
Поделиться на других сайтах
Гость
Эта тема закрыта для публикации сообщений.
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

×
×
  • Створити нове...