BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 17 авг 2022, 16:38

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




Начать новую тему Ответить на тему  [ Сообщений: 359 ]  На страницу 1, 2, 3, 4, 5 ... 12  След.
Автор Сообщение
 Заголовок сообщения: Незакрытые preparedStatement
СообщениеДобавлено: 01 ноя 2012, 07:31 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
В логах постоянно проскакивают подобные сообщения:

Код:
scheduler 11-01/09:45:31 ERROR [pool-2-thread-10] DefaultServerSetup - Many statements was open at connection close:
com.mysql.jdbc.ServerPreparedStatement[2045] - SELECT * FROM dispatch_dispatch LEFT JOIN dispatch_sender_type ON dispatch_dispatch.sender_type_id=dispatch_sender_type.id ORDER BY dispatch_dispatch.title
<...>

java.lang.RuntimeException
        at ru.bitel.bgbilling.server.util.DefaultServerSetup$2$1.close(DefaultServerSetup.java:480)
        at ru.bitel.bgbilling.server.util.PoolGuardConnectionWrapper.close(PoolGuardConnectionWrapper.java:47)
        at ru.bitel.common.sql.ConnectionSet.recycle(ConnectionSet.java:261)
        at ru.bitel.bgbilling.kernel.base.server.DefaultContext.destroy(DefaultContext.java:37)
        at ru.bitel.bgbilling.kernel.container.managed.ServerContext.destroy(ServerContext.java:396)
        at ru.bitel.bgbilling.plugins.dispatch.server.DispatchWorker.executeTask(DispatchWorker.java:126)
        at ru.bitel.bgbilling.kernel.task.server.TaskBase.run(TaskBase.java:74)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)


Сами запросы могут быть разными. Иногда это запросы из моих скриптов, иногда - в коде разработчиков.
Причина - незакрытые PreparedStatement-ы.

Например, в данном случае:
ru.bitel.bgbilling.plugins.dispatch.server.dao.SubscriptionDao:
Код:
private List<Contact> getContactsForSubscription(ContactDao cm, int subscriptionId)
    throws SQLException, BGException
  {
    List result = new ArrayList();
    String query = "SELECT dispatch_contact.* FROM dispatch_subscription_contact as cont  LEFT JOIN dispatch_contact ON dispatch_contact.id=cont.contact_id WHERE cont.subscription_id=?";

    PreparedStatement ps = this.con.prepareStatement(query);
    ps.setInt(1, subscriptionId);
    ResultSet rs = ps.executeQuery();
    while (rs.next())
    {
      result.add(cm.getContactFromRS(rs));
    }
    return result;
  }

- забыли сделать ps.close();

Предлагаю писать в эту тему такие запросы с указанием версии.
Очевидно, свои косяки писать не надо :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Незакрытые preparedStatement
СообщениеДобавлено: 01 ноя 2012, 07:39 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Итак:
Сервер: вер. 5.2 сборка 1309 от 08.10.2012 13:30:45
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.6.0_22
ru.bitel.bgbilling.plugins.dispatch вер. 5.2 сборка 44 от 01.10.2012 12:53:04

Цитата:
com.mysql.jdbc.JDBC4PreparedStatement@59e5d96a: SELECT * FROM dispatch_message WHERE dispatch_id=2 ORDER BY id
com.mysql.jdbc.JDBC4PreparedStatement@7525e2d7: SELECT dispatch_contact.* FROM dispatch_subscription_contact as cont LEFT JOIN dispatch_contact ON dispatch_contact.id=cont.contact_id WHERE cont.subscription_id=517

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

Начал рыться в логах и исходниках - много запросов типа SELECT * FROM ...
Они вызываются в коде битела во всяких Dao (data access object), типа TariffOptionDao, ContractDao и т.п.
Закрываться такие preparedStatement-ы должны явно тем, кто использует этот Dao вызовом метода recycle():
Код:
TariffOptionDao toDao = ...
<... поработали ...>
toDao.recycle();


Поэтому совет всем скриптописцам:
Используешь Dao - делай recycle()!
Я вот не знал, сейчас буду искать у себя по коду.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Незакрытые preparedStatement
СообщениеДобавлено: 01 ноя 2012, 08:26 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Сервер: вер. 5.2 сборка 1309 от 08.10.2012 13:30:45
dialup вер. 5.2 сборка 354 от 01.10.2012 12:52:48

Ещё несколько - 100% Бител:

Код:
com.mysql.jdbc.ServerPreparedStatement[1965] - SELECT tariff_plan.id FROM contract_tree_link LEFT JOIN module_tariff_tree ON module_tariff_tree.tree_id=contract_tree_link.tree_id LEFT JOIN tariff_plan ON tariff_plan.tree_id=module_tariff_tree.parent_tree WHERE contract_tree_link.cid=184486 AND tariff_plan.id IS NOT NULL AND ('2012-11-01' IS NULL OR (( date1 IS NULL OR date1<='2012-11-01' ) AND ( date2 IS NULL OR date2>='2012-11-01' )))

- не закрыт ps в bitel.billing.server.contract.bean.PersonalTariffManager.getParentTreeTariffIds

Код:
com.mysql.jdbc.PreparedStatement@60274688: DELETE FROM session_detail_1_201210 WHERE session_id=336503 AND dtime>='2012-10-27' AND dtime<'2012-10-28' AND sid IN (8,9,10,141,140,7)

- SessionTrafficCache.flushCache()

Код:
com.mysql.jdbc.ServerPreparedStatement[6337] - INSERT INTO log_function_process_201211 (cid, time, title, data) VALUES (...

- FunctionManager.logFunctionProcess()


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Незакрытые preparedStatement
СообщениеДобавлено: 01 ноя 2012, 08:53 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
предлагаю закрепить тему вверху, очень частая ошибка которая проскакивает как в собственных скриптах, так как и оказалось у разрабов

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Незакрытые preparedStatement
СообщениеДобавлено: 01 ноя 2012, 13:20 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Исправлено. В следующем обновлении будет


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Незакрытые preparedStatement
СообщениеДобавлено: 01 ноя 2012, 13:31 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Вообще у нас один герой нашел все такие места в 5.3 и исправил. Но мы боимся продукт его героических усилий накатить на 5.2, так слишком много изменений и вероятность ошибок очень велика.Лучше будем исправлять потихоньку , по запросу.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Незакрытые preparedStatement
СообщениеДобавлено: 01 ноя 2012, 13:52 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
закрепите тему!!!

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Незакрытые preparedStatement
СообщениеДобавлено: 01 ноя 2012, 14:03 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Дополнительно хочу отметить, что это не совсем ошибка, а скорее предупреждение.
Statement все же закрывается при закрытии Connection, т.е. после окончания выполнения действия/задачи и т.п.
Но в отдельных случаях (обычно в задачах планировщика) может плохо влиять на производительность (из-за внутренней логики пула DBCP - например, если работать напрямую с mysql JDBC Connection, то все работает также быстро), а также при использовании serverPreparedStatement - количество открытых внутри mysql PreparedStatement'ов увеличивается, а оно обычно ограничено.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Незакрытые preparedStatement
СообщениеДобавлено: 01 ноя 2012, 16:34 
Не в сети
Клиент

Зарегистрирован: 21 сен 2009, 13:01
Сообщения: 835
Откуда: Москва
Карма: 15
не знаю, сюда ли, но аккаунт сервер при старте вот такое выдает:
Код:
com.mysql.jdbc.JDBC4PreparedStatement@1f2f29d: SELECT trafficTypeId, SUM(amount), MIN(day) as hh FROM inet_session_detail_20 as detail WHERE sessionId=937926 AND trafficTypeId=0 GROUP BY trafficTypeId

java.lang.RuntimeException
        at ru.bitel.bgbilling.server.util.DefaultServerSetup$2$1.close(DefaultServerSetup.java:480)
        at ru.bitel.bgbilling.server.util.PoolGuardConnectionWrapper.close(PoolGuardConnectionWrapper.java:47)
        at ru.bitel.common.sql.ConnectionSet.recycle(ConnectionSet.java:261)
        at ru.bitel.bgbilling.kernel.base.server.DefaultContext.destroy(DefaultContext.java:37)
        at ru.bitel.bgbilling.kernel.container.managed.ServerContext.destroy(ServerContext.java:396)
        at ru.bitel.bgbilling.modules.inet.accounting.Accounting.startImpl(Accounting.java:304)
        at ru.bitel.bgbilling.modules.inet.accounting.Accounting.start(Accounting.java:212)
        at ru.bitel.bgbilling.kernel.application.server.Application.application(Application.java:239)
        at ru.bitel.bgbilling.kernel.application.server.Application.<init>(Application.java:154)
        at ru.bitel.bgbilling.kernel.application.server.Application.main(Application.java:742)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at ru.bitel.common.bootstrap.Boot.boot(Boot.java:129)
        at ru.bitel.common.bootstrap.Boot.main(Boot.java:178)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Незакрытые preparedStatement
СообщениеДобавлено: 01 ноя 2012, 18:55 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Dog писал(а):
не знаю, сюда ли, но аккаунт сервер при старте вот такое выдает:
Код:
com.mysql.jdbc.JDBC4PreparedStatement@1f2f29d: SELECT trafficTypeId, SUM(amount), MIN(day) as hh FROM inet_session_detail_20 as detail WHERE sessionId=937926 AND trafficTypeId=0 GROUP BY trafficTypeId

java.lang.RuntimeException
        at ru.bitel.bgbilling.server.util.DefaultServerSetup$2$1.close(DefaultServerSetup.java:480)
        at ru.bitel.bgbilling.server.util.PoolGuardConnectionWrapper.close(PoolGuardConnectionWrapper.java:47)
        at ru.bitel.common.sql.ConnectionSet.recycle(ConnectionSet.java:261)
        at ru.bitel.bgbilling.kernel.base.server.DefaultContext.destroy(DefaultContext.java:37)
        at ru.bitel.bgbilling.kernel.container.managed.ServerContext.destroy(ServerContext.java:396)
        at ru.bitel.bgbilling.modules.inet.accounting.Accounting.startImpl(Accounting.java:304)
        at ru.bitel.bgbilling.modules.inet.accounting.Accounting.start(Accounting.java:212)
        at ru.bitel.bgbilling.kernel.application.server.Application.application(Application.java:239)
        at ru.bitel.bgbilling.kernel.application.server.Application.<init>(Application.java:154)
        at ru.bitel.bgbilling.kernel.application.server.Application.main(Application.java:742)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at ru.bitel.common.bootstrap.Boot.boot(Boot.java:129)
        at ru.bitel.common.bootstrap.Boot.main(Boot.java:178)


Исправлено . В следующем обновлении будет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Незакрытые preparedStatement
СообщениеДобавлено: 26 ноя 2012, 20:00 
Не в сети
Клиент

Зарегистрирован: 21 сен 2009, 13:01
Сообщения: 835
Откуда: Москва
Карма: 15
в последнем обновлении Inet у аккаунтинг сервера вот такое вываливается при старте
Код:
com.mysql.jdbc.JDBC4PreparedStatement@c8ca96: SELECT * FROM inet_serv_type_20 WHERE sessionInitiationType=0 ORDER BY id

java.lang.RuntimeException
        at ru.bitel.bgbilling.server.util.DefaultServerSetup$2$1.close(DefaultServerSetup.java:480)
        at ru.bitel.bgbilling.server.util.PoolGuardConnectionWrapper.close(PoolGuardConnectionWrapper.java:47)
        at ru.bitel.common.sql.ConnectionSet.recycle(ConnectionSet.java:261)
        at ru.bitel.bgbilling.kernel.base.server.DefaultContext.destroy(DefaultContext.java:37)
        at ru.bitel.bgbilling.kernel.container.managed.ServerContext.destroy(ServerContext.java:396)
        at ru.bitel.bgbilling.modules.inet.accounting.Accounting.startImpl(Accounting.java:400)
        at ru.bitel.bgbilling.modules.inet.accounting.Accounting.start(Accounting.java:224)
        at ru.bitel.bgbilling.kernel.application.server.Application.application(Application.java:239)
        at ru.bitel.bgbilling.kernel.application.server.Application.<init>(Application.java:154)
        at ru.bitel.bgbilling.kernel.application.server.Application.main(Application.java:742)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at ru.bitel.common.bootstrap.Boot.boot(Boot.java:129)
        at ru.bitel.common.bootstrap.Boot.main(Boot.java:178)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Незакрытые preparedStatement
СообщениеДобавлено: 25 дек 2012, 23:44 
Не в сети
Клиент

Зарегистрирован: 15 ноя 2011, 17:56
Сообщения: 185
Карма: 0
12-21/19:55:53 ERROR ["http-bio-/0.0.0.0-8080"-exec-5] DefaultServerSetup - Many statements was open at connection close:
com.mysql.jdbc.ServerPreparedStatement[3491] - (select t1.val, t1.cid from contract_parameter_type_2_log as t1 left join contract as t4 on t4.id=t1.cid left join address_city as t2 on t2.id=1 left join address_street as t3 on t3.id=15 where t1.pid=8 and (t1.val like concat('%',t2.title,'%') and t1.val like concat('%',t3.title,'%') and t1.val like '%Рґ. 1%')) union (select t1.address, t1.cid from contract_parameter_type_2 as t1 left join contract as t4 on t4.id=t1.cid left join address_city as t2 on t2.id=1 left join address_street as t3 on t3.id=15 where t1.pid=8 and (t1.address like concat('%',t2.title,'%') and t1.address like concat('%',t3.title,'%') and t1.address like '%Рґ. 1%') ) order by 1
com.mysql.jdbc.ServerPreparedStatement[3492] - select t1.address, t1.cid, t4.title, t4.status, t5.val, t6.val, t7.val from contract_parameter_type_2 as t1 left join contract_parameter_type_1 as t5 on t5.cid=t1.cid and t5.pid=1 left join contract_parameter_type_1 as t6 on t6.cid=t1.cid and t6.pid=2 left join contract_parameter_type_1 as t7 on t7.cid=t1.cid and t7.pid=3 left join contract as t4 on t4.id=t1.cid where t1.pid=8 and t1.address='xxxxxxxxxxxxxxxxxxxxxxxxxxxx' and t1.cid=111
com.mysql.jdbc.ServerPreparedStatement[3493] - select t1.val, t1.cid, t1.dt_change, t4.title, t4.status, t5.val, t6.val, t7.val from contract_parameter_type_2_log as t1 left join contract_parameter_type_1 as t5 on t5.cid=t1.cid and t5.pid=1 left join contract_parameter_type_1 as t6 on t6.cid=t1.cid and t6.pid=2 left join contract_parameter_type_1 as t7 on t7.cid=t1.cid and t7.pid=3 left join contract as t4 on t4.id=t1.cid where t1.pid=8 and t1.val='xxxxxxxxxxxxxxxxxxxxxxxxxxxx' and t1.cid=111

_________________
Версия 6.2


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Незакрытые preparedStatement
СообщениеДобавлено: 26 дек 2012, 13:47 
Не в сети

Зарегистрирован: 16 ноя 2007, 16:11
Сообщения: 829
Карма: 49
А архитектурно прибить проблему никак нельзя?
В Яве нет рельной альтернативы auto_ptr из стандартной либы c++?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Незакрытые preparedStatement
СообщениеДобавлено: 26 дек 2012, 16:05 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Цитата:
А архитектурно прибить проблему никак нельзя?
Есть обработка при сборке мусора, но обычное закрытие отработает все равно гораздо раньше. Просто иногда желательно закрывать (освобождать) еще раньше.


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

Зарегистрирован: 16 ноя 2007, 16:11
Сообщения: 829
Карма: 49
Amir писал(а):
Цитата:
А архитектурно прибить проблему никак нельзя?
Есть обработка при сборке мусора, но обычное закрытие отработает все равно гораздо раньше. Просто иногда желательно закрывать (освобождать) еще раньше.

А сборщик мусора высвобождает ресурсы!?
Но вопрос как раз об высвобождении в нужное время. Нет таких решений в Java?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Незакрытые preparedStatement
СообщениеДобавлено: 26 дек 2012, 17:31 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6053
Карма: 244
Есть в 7 яве try-with-resources, но оно тоже не всегда от всего спасёт в нашем случае.

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Незакрытые preparedStatement
СообщениеДобавлено: 26 дек 2012, 17:46 
Не в сети

Зарегистрирован: 16 ноя 2007, 16:11
Сообщения: 829
Карма: 49
dimOn писал(а):
Есть в 7 яве try-with-resources, но оно тоже не всегда от всего спасёт в нашем случае.

Надо полагать, это аналог шарпового using(){}. Если так, то до auto_ptr ему как до Плутона.
Я слышал от знакомых ява-программеров, что какие-то там Inversion-Of-Control архитектуры позволяют гарантированно управлять ресурсами в Ява. Врут?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Незакрытые preparedStatement
СообщениеДобавлено: 26 дек 2012, 17:57 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6053
Карма: 244
причём тут auto_ptr? В java все ссылки всегда и есть auto_ptr. Но за руками выделенными ресурсами как оно интересно должно следить? Нету нигде такого, потому что в принципе невозможно.

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Незакрытые preparedStatement
СообщениеДобавлено: 26 дек 2012, 18:03 
Не в сети

Зарегистрирован: 16 ноя 2007, 16:11
Сообщения: 829
Карма: 49
dimOn писал(а):
В java все ссылки всегда и есть auto_ptr.

Формально, учитывая что GC вызывает деструктор у объекта - да.
Но фактически, из-за того, что в Яве объекты создаются только в куче - НЕТ.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Незакрытые preparedStatement
СообщениеДобавлено: 26 дек 2012, 18:10 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6053
Карма: 244
Не понимаю подоплёки

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Незакрытые preparedStatement
СообщениеДобавлено: 14 янв 2013, 15:18 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
nikav80 писал(а):
12-21/19:55:53 ERROR ["http-bio-/0.0.0.0-8080"-exec-5] DefaultServerSetup - Many statements was open at connection close:
com.mysql.jdbc.ServerPreparedStatement[3491] - (select t1.val, t1.cid from contract_parameter_type_2_log as t1 left join contract as t4 on t4.id=t1.cid left join address_city as t2 on t2.id=1 left join address_street as t3 on t3.id=15 where t1.pid=8 and (t1.val like concat('%',t2.title,'%') and t1.val like concat('%',t3.title,'%') and t1.val like '%Рґ. 1%')) union (select t1.address, t1.cid from contract_parameter_type_2 as t1 left join contract as t4 on t4.id=t1.cid left join address_city as t2 on t2.id=1 left join address_street as t3 on t3.id=15 where t1.pid=8 and (t1.address like concat('%',t2.title,'%') and t1.address like concat('%',t3.title,'%') and t1.address like '%Рґ. 1%') ) order by 1
com.mysql.jdbc.ServerPreparedStatement[3492] - select t1.address, t1.cid, t4.title, t4.status, t5.val, t6.val, t7.val from contract_parameter_type_2 as t1 left join contract_parameter_type_1 as t5 on t5.cid=t1.cid and t5.pid=1 left join contract_parameter_type_1 as t6 on t6.cid=t1.cid and t6.pid=2 left join contract_parameter_type_1 as t7 on t7.cid=t1.cid and t7.pid=3 left join contract as t4 on t4.id=t1.cid where t1.pid=8 and t1.address='xxxxxxxxxxxxxxxxxxxxxxxxxxxx' and t1.cid=111
com.mysql.jdbc.ServerPreparedStatement[3493] - select t1.val, t1.cid, t1.dt_change, t4.title, t4.status, t5.val, t6.val, t7.val from contract_parameter_type_2_log as t1 left join contract_parameter_type_1 as t5 on t5.cid=t1.cid and t5.pid=1 left join contract_parameter_type_1 as t6 on t6.cid=t1.cid and t6.pid=2 left join contract_parameter_type_1 as t7 on t7.cid=t1.cid and t7.pid=3 left join contract as t4 on t4.id=t1.cid where t1.pid=8 and t1.val='xxxxxxxxxxxxxxxxxxxxxxxxxxxx' and t1.cid=111

не могу найти этого в нашем коде . Больше похоже на ваши отчеты или скрипты какие-то.. Версия какая?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Незакрытые preparedStatement
СообщениеДобавлено: 14 янв 2013, 23:00 
Не в сети
Клиент

Зарегистрирован: 15 ноя 2011, 17:56
Сообщения: 185
Карма: 0
stark писал(а):
nikav80 писал(а):
12-21/19:55:53 ERROR ["http-bio-/0.0.0.0-8080"-exec-5] DefaultServerSetup - Many statements was open at connection close:
com.mysql.jdbc.ServerPreparedStatement[3491] - (select t1.val, t1.cid from contract_parameter_type_2_log as t1 left join contract as t4 on t4.id=t1.cid left join address_city as t2 on t2.id=1 left join address_street as t3 on t3.id=15 where t1.pid=8 and (t1.val like concat('%',t2.title,'%') and t1.val like concat('%',t3.title,'%') and t1.val like '%Рґ. 1%')) union (select t1.address, t1.cid from contract_parameter_type_2 as t1 left join contract as t4 on t4.id=t1.cid left join address_city as t2 on t2.id=1 left join address_street as t3 on t3.id=15 where t1.pid=8 and (t1.address like concat('%',t2.title,'%') and t1.address like concat('%',t3.title,'%') and t1.address like '%Рґ. 1%') ) order by 1
com.mysql.jdbc.ServerPreparedStatement[3492] - select t1.address, t1.cid, t4.title, t4.status, t5.val, t6.val, t7.val from contract_parameter_type_2 as t1 left join contract_parameter_type_1 as t5 on t5.cid=t1.cid and t5.pid=1 left join contract_parameter_type_1 as t6 on t6.cid=t1.cid and t6.pid=2 left join contract_parameter_type_1 as t7 on t7.cid=t1.cid and t7.pid=3 left join contract as t4 on t4.id=t1.cid where t1.pid=8 and t1.address='xxxxxxxxxxxxxxxxxxxxxxxxxxxx' and t1.cid=111
com.mysql.jdbc.ServerPreparedStatement[3493] - select t1.val, t1.cid, t1.dt_change, t4.title, t4.status, t5.val, t6.val, t7.val from contract_parameter_type_2_log as t1 left join contract_parameter_type_1 as t5 on t5.cid=t1.cid and t5.pid=1 left join contract_parameter_type_1 as t6 on t6.cid=t1.cid and t6.pid=2 left join contract_parameter_type_1 as t7 on t7.cid=t1.cid and t7.pid=3 left join contract as t4 on t4.id=t1.cid where t1.pid=8 and t1.val='xxxxxxxxxxxxxxxxxxxxxxxxxxxx' and t1.cid=111

не могу найти этого в нашем коде . Больше похоже на ваши отчеты или скрипты какие-то.. Версия какая?

Действительно, отчет. :facepalm:

_________________
Версия 6.2


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Незакрытые preparedStatement
СообщениеДобавлено: 15 янв 2013, 18:40 
Не в сети
Клиент

Зарегистрирован: 20 мар 2008, 20:20
Сообщения: 676
Откуда: Россия, Иваново
Карма: 36
В ContractManager.getContractById( cid )
ps не закрывается.


Сервер: вер. 5.2 сборка 1376 от 26.12.2012 17:59:24


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Незакрытые preparedStatement
СообщениеДобавлено: 15 янв 2013, 19:09 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Цитата:
В ContractManager.getContractById( cid )
ps не закрывается.
Либо не создавать для одного потока, а значит и соединения к БД, каждый раз новый ContractManager, либо вызывать у него recycle(), после того как стал не нужен.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Незакрытые preparedStatement
СообщениеДобавлено: 15 янв 2013, 19:26 
Не в сети
Клиент

Зарегистрирован: 20 мар 2008, 20:20
Сообщения: 676
Откуда: Россия, Иваново
Карма: 36
Amir писал(а):
Цитата:
В ContractManager.getContractById( cid )
ps не закрывается.
Либо не создавать для одного потока, а значит и соединения к БД, каждый раз новый ContractManager, либо вызывать у него recycle(), после того как стал не нужен.

Простите, может быть я что то не понимаю.
У вас в функции public Contract getContractById( int cid ) не закрывается ps (PreparedStatement).
Это не является ошибкой которую нужно исправить?
Нельзя просто добавить в код "ps.close();" или так и должно быть?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Незакрытые preparedStatement
СообщениеДобавлено: 15 янв 2013, 20:24 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Так и должно быть - он кэшируется.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Незакрытые preparedStatement
СообщениеДобавлено: 16 янв 2013, 07:38 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Cromeshnic писал(а):
Используешь Dao - делай recycle()!


http://bgbilling.ru/v5.2/javadoc/bitel/billing/server/contract/bean/ContractManager.html#recycle()


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Незакрытые preparedStatement
СообщениеДобавлено: 16 янв 2013, 10:46 
Не в сети
Клиент

Зарегистрирован: 20 мар 2008, 20:20
Сообщения: 676
Откуда: Россия, Иваново
Карма: 36
Все понятно, спасибо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Незакрытые preparedStatement
СообщениеДобавлено: 21 янв 2013, 14:56 
Не в сети

Зарегистрирован: 11 окт 2012, 08:45
Сообщения: 36
Откуда: Иркутск
Карма: 13
Ув. разработчики!
kernel - класс LimitManager
Насколько я понимаю, довольно много не закрытых PS, в логи ошибок отсюда много летит..

_________________
Код:
Клиент: вер. 5.2 сборка 1103 от 08.02.2013 14:46:26
    os: Windows XP; java: Java HotSpot(TM) Client VM, v.1.7.0_11
Сервер: вер. 5.2 сборка 1402 от 08.02.2013 14:46:31
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.6.0_22


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Незакрытые preparedStatement
СообщениеДобавлено: 21 янв 2013, 17:57 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4482
Откуда: Уфа, Россия
Карма: 186
Jimm писал(а):
kernel - класс LimitManager. Насколько я понимаю, довольно много не закрытых PS, в логи ошибок отсюда много летит..

подчистили


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 359 ]  На страницу 1, 2, 3, 4, 5 ... 12  След.

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


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

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