egor2fsys 5 Опубликовано: 2007-09-20 14:53:35 Share Опубликовано: 2007-09-20 14:53:35 По материалам темы http://local.com.ua/forum/index.php?showtopic=9355. Исправлены указанные ошибки и выполнены некоторые пожелания (например передача в скрипт изменения пользователя пароля). Брать здесь: http://www.rapidshare.ru/408362 Просьба отписываться в теме только по обнаруженным ошибкам. Ссылка на сообщение Поделиться на других сайтах
Genius 0 Опубліковано: 2007-09-20 17:41:39 Share Опубліковано: 2007-09-20 17:41:39 Чего то не все ошибки подправлены, при беглом просмотре осталось: - Неправильны формат поля freemb в базе и при сохранении, не пишется дробная часть да и в формате БД не предусмотрена она. - Не решена проблема с буквой Z если она первая в логине, имени тарифа. Глубже пока не тестировал, неприятно осознавать что к подробным багрепортом, иногда и с патчем для исправления, относятся не очень внимательно. Ссылка на сообщение Поделиться на других сайтах
Genius 0 Опубліковано: 2007-09-20 18:51:39 Share Опубліковано: 2007-09-20 18:51:39 Косметический баг в модуле FB, был на прошлой версии, но не успел зарепортить. При запуске биллинга все метки времени в базе (время последнего логина и последних денег) уползает вперед на 2-4 часа (точно не замечал, но все время постоянный фактор), думаю что тупо связано с timezone сервера. Ссылка на сообщение Поделиться на других сайтах
Ganjubas 0 Опубліковано: 2007-09-20 20:38:18 Share Опубліковано: 2007-09-20 20:38:18 To egor2fsys Исправлен ли в данной версии баг: Если клиенту в абонплате забить 60 грн предоплаченного трафика, то каждый день в 00.00 баланс устанавливается опять в 60 грн. То есть, если я насидел за день 15 грн, в балансе осталось 45, а в 00.00 баланс опять восстанавливается на 60 грн. Вопрос довольно критичен. Ссылка на сообщение Поделиться на других сайтах
egor2fsys 5 Опубліковано: 2007-09-21 05:22:27 Автор Share Опубліковано: 2007-09-21 05:22:27 Чего то не все ошибки подправлены, при беглом просмотре осталось: - Неправильны формат поля freemb в базе и при сохранении, не пишется дробная часть да и в формате БД не предусмотрена она. - Не решена проблема с буквой Z если она первая в логине, имени тарифа. Глубже пока не тестировал, неприятно осознавать что к подробным багрепортом, иногда и с патчем для исправления, относятся не очень внимательно. Oбраз sql базы пока не исправляли. Ссылка на сообщение Поделиться на других сайтах
Genius 0 Опубліковано: 2007-09-21 21:19:38 Share Опубліковано: 2007-09-21 21:19:38 Ошибка модуля FB (или недоработка) Ошибка связана с полями userdata При сохранении в базу у полей не проставляет поле num, то есть все идут с 0 номером, принципиально это ничего не меняет так как сортировка все равно идет правильно и загружаются они в той же последовательности, НО при некорректной остановке старгейзера (которая иногда неизбежно случается) в базе могут накапливатся неудаленные или лишние поля userdata, в результате они: 1. Путаются, баг визуально заметен, иногда поля у юзеров уползают на 5-6 userdata 2. Накапливаются старые поля и складируются в базе, не заметно, но например у меня на 300 пользователей уже 5000 userdata что в 1,5 раза больше. Поскольку судя по коду это просто недоработка которую не успели доделать (расстановка num полей и сохранение каждого поля в свой номер), то прошу обратить внимание на серьезность данной проблемы. Ссылка на сообщение Поделиться на других сайтах
Genius 0 Опубліковано: 2007-09-23 16:44:56 Share Опубліковано: 2007-09-23 16:44:56 Переработал целиком систему сохранения 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); Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2007-09-26 15:25:32 Share Опубліковано: 2007-09-26 15:25:32 Баг пофикшен. Решение с апдейтами не проходит в виду того, что количество полей user_data не регламентировано (в вашем патче оно принято равным 10). Ссылка на сообщение Поделиться на других сайтах
Genius 0 Опубліковано: 2007-09-26 20:44:20 Share Опубліковано: 2007-09-26 20:44:20 На данный момент число полей все равно получается всегда 10 ввиду конфигуратора, а если реализуется концепция любого числа полей то тем более надо искать какое то новое решение, например с триггерами FB. Ссылка на сообщение Поделиться на других сайтах
Genius 0 Опубліковано: 2007-09-26 21:06:10 Share Опубліковано: 2007-09-26 21:06:10 Новая ошибка в модуле FB Нет экранирования переменных, при попытка сохранения поля note вываливается ошибка если разместить там ' В других вариантах не проверял, думаю надо просто везде экранировать спецсимволы. Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2007-09-27 08:58:27 Share Опубліковано: 2007-09-27 08:58:27 По поводу последнего бага: сборка от 26.06.2007 или от 20.09.2007? Эта бага уже была исправлена. Проверил - все нормально. По поводу полей user_data: в идеале неплохо было бы использовать конструкцию UPDATE OR INSERT, но она поддерживается только самыми последними версиями Firebird (начиная с 2.1). А делать каждый раз проверку на наличие поля - достаточно накладно. Мне кажется, лучше сделать 1 delete и 10 insert чем 10 select и 10 insert/update. Можно, конечно, заранее сделать выборку всех полей для юзера и вынести логику из базы в модуль, но это как-то не искренне. А то что id растут - так это ничего. Вон в детальной статистике они еще больше растут. Ссылка на сообщение Поделиться на других сайтах
Genius 0 Опубліковано: 2007-09-27 09:50:08 Share Опубліковано: 2007-09-27 09:50:08 Да, прошу прощение, бага действительно в версиия 26.06. С user_data да, именно так, значит ждем firebird2.1 stable Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2007-09-28 14:11:56 Share Опубліковано: 2007-09-28 14:11:56 По поводу экранирования. Перепроверил код, нашел его отсутствие в некоторых местах и в новой версии. Фикшу. Ссылка на сообщение Поделиться на других сайтах
Ork Yason 8 Опубліковано: 2007-10-01 06:51:33 Share Опубліковано: 2007-10-01 06:51:33 господа у меня второй месяц траффик не обнуляется в начале месяца dayresettarif=0 ладно, это можно пофиксить в ручную, но при выполнении скрипта с КК который обнуляет все виды траффика - оно загибается... тоже было замечено при быстрой работе через виндячий конфигуратор поставил в скрипте слип на 2секунды - вроде едет от чего зависит скорость выполнения запросов у КК??? и что за лажа с обнулением? Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2007-10-01 12:08:44 Share Опубліковано: 2007-10-01 12:08:44 у меня второй месяц траффик не обнуляется в начале месяцаdayresettarif=0 1. Параметр называется DayResetTraff (а не Tariff) 2. 0 - не начало месяца, а последний его день. 3. Версия stg не указана а экстрасенсы в пожизненном отпуске Еще было бы неплохо узнать, как оно загибается... Ссылка на сообщение Поделиться на других сайтах
Ork Yason 8 Опубліковано: 2007-10-01 12:47:21 Share Опубліковано: 2007-10-01 12:47:21 1. опечатка 2. вчера был послдений - на утро все данные, раньше стг2 - все обнулял 2.4, предпоследня сборка, сентябрь даешь ему выполнить более полусотни запрос к КК, конфигуратор виснет, виндячим подключится нельзя, спасает рестарт стг делаю группы по 4, через 2х секундный перерыв - работает Ссылка на сообщение Поделиться на других сайтах
Genius 0 Опубліковано: 2007-10-01 14:51:41 Share Опубліковано: 2007-10-01 14:51:41 Конфигуратор в стг, как я понимаю, работает довольно хитро и криво, то есть одновременно отдача данных нескольким конфигураторам невозможна, но соединения он принимает всегда и просто тупо подвисает второй подключившийся до момента окончания отдачи данных первому. У меня часто случается такой конфликт у параллельно работающих кассиров. Надо просто переписать всю работу с конфигураторами на полностью параллельную обработку. Ссылка на сообщение Поделиться на других сайтах
nallien 3 Опубліковано: 2007-10-03 16:08:03 Share Опубліковано: 2007-10-03 16:08:03 при удалении пользователя - падает, ничего не оставляя в логах, конфигурато версии - 1.88.9 (вроде ж последняя?) КК (тот что в комплекте) не отправляет сообщение пользователю - хотя и выводит "ОК" и самое не приятное - параметры $ip $login $cash $id - передаются только OnConnect + OnDisconnect. раньше передавались всем скриптам ( в связи с этим возникло несколько проблемок) тобишь OnUserAdd и OnConnect в пользовательской дирректории... не уверен что это баги и что именно этой версии, но все же ранее такого не наблюдалось. ах да, после перехода со старой версии (2.016 ??? точно и не припомню ((() содуль статистики теперь не может присоединиться к серверу... если кто может что подсказать - будьте добры! Ссылка на сообщение Поделиться на других сайтах
egor2fsys 5 Опубліковано: 2007-10-03 17:00:13 Автор Share Опубліковано: 2007-10-03 17:00:13 при удалении пользователя - падает, ничего не оставляя в логах, конфигурато версии - 1.88.9 (вроде ж последняя?) КК (тот что в комплекте) не отправляет сообщение пользователю - хотя и выводит "ОК" и самое не приятное - параметры $ip $login $cash $id - передаются только OnConnect + OnDisconnect. раньше передавались всем скриптам ( в связи с этим возникло несколько проблемок) тобишь OnUserAdd и OnConnect в пользовательской дирректории... не уверен что это баги и что именно этой версии, но все же ранее такого не наблюдалось. ах да, после перехода со старой версии (2.016 ??? точно и не припомню ((() содуль статистики теперь не может присоединиться к серверу... если кто может что подсказать - будьте добры! Версии СТГ, сервера, ГСС где ? Дядя Вася, который бы за вас это все написал, в отпуске. Ссылка на сообщение Поделиться на других сайтах
nallien 3 Опубліковано: 2007-10-04 05:01:49 Share Опубліковано: 2007-10-04 05:01:49 эээ.... ну вроде в этом топике обсуждается определенная сборка СТГ ? если точнее то 2.403b (stg-2.4-2007.09.20-16.35.00) ... ошибок при сборке замечено небыло, но если интересно - gcc (GCC) 4.1.0 2006030. система - линукс, федора 4, ядро 2.6.15.5 сборное. Ссылка на сообщение Поделиться на других сайтах
egor2fsys 5 Опубліковано: 2007-10-04 09:31:00 Автор Share Опубліковано: 2007-10-04 09:31:00 Попробуйте собрать с дебагом (раскоментировав в main.cpp #define NO_DAEMON 1), и после того как демон упадет при удалении пользователя, скинуть последние 20 строк лога сюда. Ссылка на сообщение Поделиться на других сайтах
nallien 3 Опубліковано: 2007-10-04 10:42:46 Share Опубліковано: 2007-10-04 10:42:46 по поводу КК - в логах - "не могу подключиться к серверу 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х этого и не должно происходить? Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2007-10-04 15:51:18 Share Опубліковано: 2007-10-04 15:51:18 main.cpp:61: error: ‘define’ does not name a type Удалили лишнего. Должно быть: #define NO_DAEMON 1 По поводу остального - посмотрю Ссылка на сообщение Поделиться на других сайтах
nallien 3 Опубліковано: 2007-10-04 15:57:17 Share Опубліковано: 2007-10-04 15:57:17 упс, тогда выходит что у меня дебаг включен по умолчанию.... то-то он в консоль сколько всего выводит тогда вот логи с дебаг опцией - выше... пс (сорри программер с меня никакой) Ссылка на сообщение Поделиться на других сайтах
madf 279 Опубліковано: 2007-10-04 16:15:29 Share Опубліковано: 2007-10-04 16:15:29 и самое не приятное - параметры $ip $login $cash $id - передаются только OnConnect + OnDisconnect. раньше передавались всем скриптам ( в связи с этим возникло несколько проблемок) тобишь OnUserAdd и OnConnect в пользовательской дирректории... не уверен что это баги и что именно этой версии, но все же ранее такого не наблюдалось. В скрипт OnChange передаются параметры: логин, название измененного параметра, старое значение, новое значение В скрипты OnConnect/OnDisconnect передаются параметры: логин, IP, деньги, идентификатор пользователя, включенные направления В скрипт OnUserAdd/OnUserDel передается только логин. В момент передачи все другие параметры либо еще неизвестны (Add) либо уже неизвестны (Del). При добавлении нового пользователя сперва вызывается OnUserAdd, а потом идет серия вызовов OnChange из которых Вы можете почерпнуть необходимую информацию. При удалении пользователя сперва происходит вызов OnUserDel, а потом - OnDisconnect, из которого Вы можете почерпнуть необходимую информацию. Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения