Незакрытые preparedStatement (CRM)

Основная часть программы и общие вопросы по модулям. Установка и настройка BGBillingServer, BGBillingClient.

Re: Незакрытые preparedStatement (CRM)

Сообщение dimOn » 14 июл 2016, 23:21

ну.... так вы там закрываете статементы? и почему у вас целая куча одинаковых запросов вообще если вы их используете?
dimOn
 
Сообщения: 5918
Зарегистрирован: 30 май 2008, 15:51

Re: Незакрытые preparedStatement (CRM)

Сообщение Ping333 » 15 июл 2016, 08:49

Дак, закрываю по финишу, куча запросов летит при получении баланса по каждому поинту
PreparedStatement ps = con.prepareStatement(sql) ;
ResultSet rs = ps.executeQuery(); //массив cid-ов
while ( rs.next() )
{
BalanceUtils bu = new BalanceUtils(con) ;
BigDecimal ACCOUNT_BALANCE = BigDecimal.ZERO;
ACCOUNT_BALANCE = bu.getBalance(new Date(), cid) ;
}
если закоментить bu.getBalance, тогда все ок ) но нужны балансы на сегодня )

ох тыж еп ) пока не написал здесь не понял.
все ок. проблема ясна
Ping333
Клиент
 
Сообщения: 243
Зарегистрирован: 29 мар 2013, 11:54
Откуда: Краснодар

Re: Незакрытые preparedStatement (CRM)

Сообщение Artur » 15 июл 2016, 10:54

$this->bbcode_second_pass_quote('Ping333', '')га, в дин коде


Здравствуйте. Код скрипта покажите.
С уважением, Гареев Артур. Вежливый разработчик ООО "Бител".
Аватара пользователя
Artur
Разработчик
 
Сообщения: 940
Зарегистрирован: 27 янв 2010, 16:12
Откуда: Уфа

Re: Незакрытые preparedStatement (CRM)

Сообщение Ping333 » 15 июл 2016, 11:02

Спасибо за ответ. я уже понял в чем проблема была
while ( rs.next() )
{

BalanceUtils bu = new BalanceUtils(con) ;

на каждом rs вызывался BalanceUtils bu = new BalanceUtils(con) ;
переделал
Ping333
Клиент
 
Сообщения: 243
Зарегистрирован: 29 мар 2013, 11:54
Откуда: Краснодар

Re: Незакрытые preparedStatement (CRM)

Сообщение dimOn » 15 июл 2016, 11:47

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

BalanceUtils bu = new BalanceUtils(con) ;
PreparedStatement ps = con.prepareStatement(sql) ;
ResultSet rs = ps.executeQuery(); //массив cid-ов
while ( rs.next() )
{
BigDecimal ACCOUNT_BALANCE = bu.getBalance(new Date(), cid) ;
}
ps.close();
bu.close();
dimOn
 
Сообщения: 5918
Зарегистрирован: 30 май 2008, 15:51

Re: Незакрытые preparedStatement (CRM)

Сообщение Ping333 » 15 июл 2016, 12:07

да, спасибо,так и сделал, закрывались дальше, не написал просто.

сейчас примерно так
BalanceUtils bu = new BalanceUtils(con) ;
PreparedStatement ps = con.prepareStatement(sql) ;
ResultSet rs = ps.executeQuery(); //массив cid-ов
while ( rs.next() )
{
BigDecimal ACCOUNT_BALANCE = bu.getBalance(new Date(), cid) ;
}
ps.close();
bu.close();

было так

PreparedStatement ps = con.prepareStatement(sql) ;
ResultSet rs = ps.executeQuery(); //массив cid-ов
while ( rs.next() )
{
BalanceUtils bu = new BalanceUtils(con) ;
BigDecimal ACCOUNT_BALANCE = bu.getBalance(new Date(), cid) ;
}
ps.close();
bu.close();

поэтому и куча запросов была
Ping333
Клиент
 
Сообщения: 243
Зарегистрирован: 29 мар 2013, 11:54
Откуда: Краснодар

Re: Незакрытые preparedStatement (CRM)

Сообщение dimOn » 15 июл 2016, 13:15

а что, так вообще компилировалось? у вас же в момент bu.close() нет никакого bu, он в другом scope, внутри блока
или у вас где то выше ещё один bu объявлен?
dimOn
 
Сообщения: 5918
Зарегистрирован: 30 май 2008, 15:51

Re: Незакрытые preparedStatement (CRM)

Сообщение Ping333 » 15 июл 2016, 13:21

извиняюсь, конечно не скомпилится так.
когда код для форума сокращал, опустил несколько строк,
bu.close() был внутри while
Ping333
Клиент
 
Сообщения: 243
Зарегистрирован: 29 мар 2013, 11:54
Откуда: Краснодар

Re: Незакрытые preparedStatement (CRM)

Сообщение dimOn » 16 июл 2016, 00:54

тогда не должно ругаться на незакрытые
dimOn
 
Сообщения: 5918
Зарегистрирован: 30 май 2008, 15:51

Re: Незакрытые preparedStatement (CRM)

Сообщение vkulakov » 19 июл 2016, 13:54

$this->bbcode_second_pass_code('', '
07-19/10:49:12 ERROR [http-bio-127.0.0.1-8080-exec-9] DefaultServerSetup - Many statements was open at connection close:
com.mysql.jdbc.ServerPreparedStatement[182372] - SELECT * FROM contract WHERE id=45214
...
com.mysql.jdbc.ServerPreparedStatement[184052] - SELECT * FROM contract WHERE id=45745

java.lang.RuntimeException: http://forum.bitel.ru/viewtopic.php?t=7369
at ru.bitel.bgbilling.server.util.DefaultServerSetup$2$1.close(DefaultServerSetup.java:426)
at ru.bitel.bgbilling.server.util.PoolGuardConnectionWrapper.close(PoolGuardConnectionWrapper.java:48)
at ru.bitel.common.sql.ConnectionSet.recycle(ConnectionSet.java:272)
at ru.bitel.bgbilling.kernel.base.server.DefaultContext.destroy(DefaultContext.java:37)
at ru.bitel.bgbilling.kernel.container.managed.ServerContext.destroy(ServerContext.java:400)
at ru.bitel.bgbilling.kernel.container.ws.server.AbstractJaxWsHandler.invoke0(AbstractJaxWsHandler.java:233)
at ru.bitel.bgbilling.kernel.container.ws.server.AbstractJaxWsHandler.access$000(AbstractJaxWsHandler.java:47)
at ru.bitel.bgbilling.kernel.container.ws.server.AbstractJaxWsHandler$1.run(AbstractJaxWsHandler.java:267)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at ru.bitel.bgbilling.kernel.container.ws.server.AbstractJaxWsHandler.invoke(AbstractJaxWsHandler.java:261)
at ru.bitel.bgbilling.kernel.container.ws.server.JaxWsHandler.invoke(JaxWsHandler.java:315)
at ru.bitel.bgbilling.kernel.container.ws.server.AbstractJaxWsHandler$ServiceInstanceResolver$1.invoke(AbstractJaxWsHandler.java:366)
at com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:150)
at com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke(EndpointMethodHandler.java:261)
at com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:100)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:641)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:600)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:585)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:482)
at com.sun.xml.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:314)
at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:608)
at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:259)
at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:162)
at ru.bitel.bgbilling.kernel.container.ws.server.JaxWSAdapter.handle(JaxWSAdapter.java:290)
at bitel.billing.server.Executer.doPost(SourceFile:163)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1074)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
')

Подозреваю, что это из-за того, что в методе ContractStatusService.contractStatusChange() не вызывается метод ContractStatusManager.recycle().

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91
vkulakov
Клиент
 
Сообщения: 932
Зарегистрирован: 07 мар 2012, 15:02
Откуда: Воронеж

Re: Незакрытые preparedStatement (CRM)

Сообщение stark » 19 июл 2016, 14:28

$this->bbcode_second_pass_quote('vkulakov', '
')Подозреваю, что это из-за того, что в методе ContractStatusService.contractStatusChange() не вызывается метод ContractStatusManager.recycle().



А вы уверены что этот сервис? Там просто вызов один раз всего идет, нет цикла никакого . Не должно создавать столько preparestatement.
stark
Разработчик
 
Сообщения: 8343
Зарегистрирован: 08 ноя 2007, 01:05
Откуда: Уфа

Re: Незакрытые preparedStatement (CRM)

Сообщение vkulakov » 19 июл 2016, 14:32

ContractStatusService.contractStatusChange() вызывается в цикле снаружи (в моём коде).

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91
vkulakov
Клиент
 
Сообщения: 932
Зарегистрирован: 07 мар 2012, 15:02
Откуда: Воронеж

Re: Незакрытые preparedStatement (CRM)

Сообщение stark » 19 июл 2016, 15:02

$this->bbcode_second_pass_quote('vkulakov', 'C')ontractStatusService.contractStatusChange() вызывается в цикле снаружи (в моём коде).


Судя по стеку вы его не из динамического скрипта вызываете, а с помощью http-запроса. А это разные запросы, разные соединения, разные preparedStatment. Вы бы поискали в своем скрипте в другом месте.
stark
Разработчик
 
Сообщения: 8343
Зарегистрирован: 08 ноя 2007, 01:05
Откуда: Уфа
Вернуться к началу

Re: Незакрытые preparedStatement (CRM)

Сообщение vkulakov » 19 июл 2016, 15:42

Вызываю в динамическом коде, точно не через HTTP-запрос. Вот метод execute() моего кода:
$this->bbcode_second_pass_code('', '
@Override
public void execute(Setup setup, ConnectionSet conns) throws Exception {
this.conn = conns.getConnection();
this.setup = setup;

ContractService cs = ((ServerContext) ServerContext.get()).getService(ContractService.class, 0);
ContractStatusService css = ((ServerContext) ServerContext.get()).getService(ContractStatusService.class, 0);

try {
List<TContract> tContracts = listTContracts();
for(TContract tContract : tContracts) {
List<Contract> contracts = cs.contractList(tContract.getConvertedTitle(), null, -1, 0, null, false, false, false, null);
if(contracts.size() == 0) {
logger.error("Договор не найден [id=" + tContract.getId() + ", title=" + tContract.getConvertedTitle() + "]");
continue;
}
if(contracts.size() > 1) {
logger.error("Найдено слишком много договоров [id=" + tContract.getId() + ", title=" + tContract.getConvertedTitle() + "]");
continue;
}

Contract contract = contracts.get(0);

List<ContractStatus> statuses = css.contractStatusList(contract.getId(), new Date());
if(statuses.size() == 0) {
logger.error("Статус договора не найден [id=" + contract.getId() + ", title=" + contract.getTitle() + "]");
continue;
}
if(statuses.size() > 1) {
logger.error("Найдено слишком много статусов договоров [id=" + contract.getId() + ", title=" + contract.getTitle() + "]");
continue;
}

ContractStatus oldStatus = statuses.get(0);
if(oldStatus.getStatus() == 0 && tContract.isStatus()) {
//logger.info("Изменение статуса договора не требуется [id=" + tContract.getId() + "|" + contract.getId() + ", title=" + tContract.getTitle() + "|" + contract.getTitle() + ", status=" + tContract.isStatus() + "|" + oldStatus.getStatus() + "]");
continue;
}
if(oldStatus.getStatus() != 0 && !tContract.isStatus()) {
//logger.info("Изменение статуса договора не требуется [id=" + tContract.getId() + "|" + contract.getId() + ", title=" + tContract.getTitle() + "|" + contract.getTitle() + ", status=" + tContract.isStatus() + "|" + oldStatus.getStatus() + "]");
continue;
}

ContractStatus newStatus = new ContractStatus();
newStatus.setStatus((tContract.isStatus() ? 0 : 3));
newStatus.setContractId(contract.getId());
newStatus.setDateFrom(new Date());
newStatus.setComment("Синхронизация статуса с биллингом");

css.contractStatusChange(contract.getId(), newStatus, false);

logger.info("Статус договора изменён [id=" + tContract.getId() + "|" + contract.getId() + ", title=" + tContract.getTitle() + "|" + contract.getTitle() + ", status=" + tContract.isStatus() + "|" + oldStatus.getStatus() + " => " + newStatus.getStatus() + "]");
}
} finally {
closeConnection(technor);
}

logger.info("Синхронизация статусов договоров завершена");
}
')

Клиент: вер. 6.2.873 / 04.12.2017 19:38:11
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_65
Сервер: вер. 6.2.1202 / 04.12.2017 19:39:21
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_91
vkulakov
Клиент
 
Сообщения: 932
Зарегистрирован: 07 мар 2012, 15:02
Откуда: Воронеж

Re: Незакрытые preparedStatement (CRM)

Сообщение Ildar » 20 июл 2016, 10:44

$this->bbcode_second_pass_quote('vkulakov', 'C')ontractStatusService.contractStatusChange() вызывается в цикле снаружи (в моём коде).


Спасибо. Исправлено. Будет доступно в следующем обновлении.
Аватара пользователя
Ildar
Разработчик
 
Сообщения: 424
Зарегистрирован: 05 сен 2012, 18:20
Вернуться к началу

Re: Незакрытые preparedStatement (CRM)

Сообщение barguzin2 » 12 янв 2017, 15:02

$this->bbcode_second_pass_code('', 'java.lang.RuntimeException: http://forum.bitel.ru/viewtopic.php?t=7369
at ru.bitel.bgbilling.server.util.DefaultServerSetup$2$1.close(DefaultServerSetup.java:426)
at ru.bitel.bgbilling.server.util.PoolGuardConnectionWrapper.close(PoolGuardConnectionWrapper.java:48)
at ru.bitel.bgbilling.server.util.ServerUtils.closeConnection(ServerUtils.java:577)
at ru.bitel.bgbilling.server.util.ServerUtils.closeConnection(ServerUtils.java:559)
at bitel.billing.server.bill.BillDocsSenderForAll.executeTask(BillDocsSenderForAll.java:87)
at bitel.billing.server.task.bean.RunTask.run(RunTask.java:47)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
')

$this->bbcode_second_pass_code('', '
bill: вер. 7.0.111 / 09.12.2016 13:27:55
')
barguzin2
Клиент
 
Сообщения: 1080
Зарегистрирован: 09 фев 2011, 15:28

Re: Незакрытые preparedStatement (CRM)

Сообщение stark » 20 янв 2017, 01:35

Надо всю ошибку целиком со всеми sql-запросами.
stark
Разработчик
 
Сообщения: 8343
Зарегистрирован: 08 ноя 2007, 01:05
Откуда: Уфа

Re: Незакрытые preparedStatement (CRM)

Сообщение arj57 » 09 мар 2017, 15:49

Добрый день!

Через некоторое время после запуска биллинга в статусе MariaDB
Prepared_stmt_count достигает ограничения ( у меня 16382), и MariaDB предупреждает о большом количестве незакрытых Prepared statements.
Одна из ситуаций:
При выборе пункта меню "Просмотр баланса" (супердоговор) в личном кабинете Prepared_stmt_count стабильно увеличивается на 2.
В general log MariaDB при этом следующие запросы:
$this->bbcode_second_pass_code('', '
Time Id Command Argument
170309 14:20:14
1379051 Query SELECT 1
1379051 Query SET autocommit=0
1379051 Execute SELECT * FROM contract WHERE id=?
1379051 Prepare SELECT * FROM contract WHERE id=?
1379051 Execute SELECT * FROM contract WHERE id=8787
1379051 Prepare SELECT summa1 FROM contract_balance WHERE cid=? AND yy=? AND mm=?
1379051 Execute SELECT summa1 FROM contract_balance WHERE cid=8787 AND yy=2017 AND mm=3
1379051 Prepare SELECT p.id, p.cid, p.comment, p.dt, p.pt, p.summa, p.uid, p.lm FROM contract_payment AS p WHERE p.cid IN (8787,8788) AND dt>=? AND dt<=? ORDER BY dt
1379051 Execute SELECT p.id, p.cid, p.comment, p.dt, p.pt, p.summa, p.uid, p.lm FROM contract_payment AS p WHERE p.cid IN (8787,8788) AND dt>='2017-03-01' AND dt<='2017-03-31' ORDER BY dt
1379051 Close stmt
1379051 Prepare SELECT * FROM contract_payment_types WHERE id IN ( 20 )
1379051 Execute SELECT * FROM contract_payment_types WHERE id IN ( 20 )
1379051 Prepare SELECT t2.title, t1.summa, t1.dt, t1.comment FROM contract_charge AS t1 LEFT JOIN contract_charge_types AS t2 ON t1.pt=t2.id WHERE t1.cid IN ( 8787,8788 ) AND t1.dt>=? AND t1.dt<? ORDER BY t1.dt
1379051 Execute SELECT t2.title, t1.summa, t1.dt, t1.comment FROM contract_charge AS t1 LEFT JOIN contract_charge_types AS t2 ON t1.pt=t2.id WHERE t1.cid IN ( 8787,8788 ) AND t1.dt>='2017-03-01' AND t1.dt<'2017
1379051 Close stmt
1379051 Prepare SELECT t2.title, ROUND(t1.summa,2) FROM contract_account AS t1 LEFT JOIN service AS t2 ON t1.sid=t2.id WHERE cid IN ( 8787,8788 ) AND mm=? AND yy=?
1379051 Execute SELECT t2.title, ROUND(t1.summa,2) FROM contract_account AS t1 LEFT JOIN service AS t2 ON t1.sid=t2.id WHERE cid IN ( 8787,8788 ) AND mm=3 AND yy=2017
1379051 Close stmt
1379051 Prepare SELECT * FROM contract WHERE id=?
1379051 Execute SELECT * FROM contract WHERE id=8787
1379051 Close stmt
1379051 Prepare SELECT * FROM contract WHERE scid=? AND sub_mode=? ORDER BY title
1379051 Execute SELECT * FROM contract WHERE scid=8787 AND sub_mode=1 ORDER BY title
1379051 Close stmt
1379051 Query commit
1379051 Query SELECT 1
1379051 Query rollback
1379051 Query SET autocommit=1
1379051 Close stmt
')
Никакие скрипты здесь не используются.


$this->bbcode_second_pass_code('', '
Клиент: вер. 7.0.858 / 02.12.2016 19:26:46
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_92
Сервер: вер. 7.0.1161 / 02.12.2016 19:25:39
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_102

bill: вер. 7.0.110 / 02.12.2016 19:25:48
card: вер. 7.0.40 / 22.08.2016 16:40:03
dialup: вер. 7.0.319 / 29.08.2016 16:38:40
drweb: вер. 7.0.73 / 08.04.2016 17:52:33
email: вер. 7.0.181 / 02.12.2016 16:05:50
inet: вер. 7.0.707 / 02.12.2016 16:03:16
ipn: вер. 7.0.261 / 24.11.2016 20:04:21
mps: вер. 7.0.205 / 10.11.2016 16:31:26
npay: вер. 7.0.199 / 05.10.2016 13:38:35
phone: вер. 7.0.280 / 24.10.2016 18:05:25
rentsoft: вер. 7.0.66 / 24.11.2016 20:07:12
reports: вер. 7.0.224 / 28.11.2016 16:44:14
rscm: вер. 7.0.183 / 10.11.2016 16:31:29
ru.bitel.bgbilling.plugins.cladr: вер. 7.0.123 / 08.04.2016 17:52:32
trayinfo: вер. 7.0.175 / 10.06.2016 17:00:23
tv: вер. 7.0.239 / 30.11.2016 18:20:31
voiceip: вер. 7.0.190 / 02.12.2016 16:07:44

')
arj57
 
Сообщения: 43
Зарегистрирован: 15 июл 2015, 12:21

Re: Незакрытые preparedStatement (CRM)

Сообщение Phricker » 09 мар 2017, 16:01

Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn
Аватара пользователя
Phricker
Клиент
 
Сообщения: 5775
Зарегистрирован: 29 мар 2010, 23:11

Re: Незакрытые preparedStatement (CRM)

Сообщение arj57 » 10 мар 2017, 09:30

Спасибо! Очень даже помогло.
arj57
 
Сообщения: 43
Зарегистрирован: 15 июл 2015, 12:21

Re: Незакрытые preparedStatement (CRM)

Сообщение dbadm » 25 апр 2017, 15:56

Здравствуйте,

мне сюда с этим?

$this->bbcode_second_pass_code('', '
04-25/03:16:20 ERROR [pool-2-thread-2] DefaultServerSetup - Many statements was open at connection close:
com.mysql.jdbc.ServerPreparedStatement[6] - SELECT tree_id, date1, date2, emid, eid, 1, pos FROM contract_tariff INNER JOIN tariff_plan ON contract_tariff.tpid=tariff_plan.id WHERE cid=4657 AND ((emid=0 AND eid=0) OR (emid=0 AND eid=0)) AND ( isNull(date2) OR date2='0000-00-00' OR date2>='2017-04-25' ) UNION SELECT tree_id, date1, date2, emid, eid, 0, pos FROM contract_tree_link WHERE cid=4657 AND ((emid=0 AND eid=0) OR (emid=0 AND eid=0)) AND (date2 IS NULL OR date2>='2017-04-25') ORDER BY 4 DESC, 5 DESC, 6 ASC, 7 ASC
com.mysql.jdbc.ServerPreparedStatement[10] - SELECT tree_id, date1, date2, emid, eid, 1, pos FROM contract_tariff INNER JOIN tariff_plan ON contract_tariff.tpid=tariff_plan.id WHERE cid=731 AND ((emid=0 AND eid=0) OR (emid=0 AND eid=0)) AND ( isNull(date2) OR date2='0000-00-00' OR date2>='2017-04-25' ) UNION SELECT tree_id, date1, date2, emid, eid, 0, pos FROM contract_tree_link WHERE cid=731 AND ((emid=0 AND eid=0) OR (emid=0 AND eid=0)) AND (date2 IS NULL OR date2>='2017-04-25') ORDER BY 4 DESC, 5 DESC, 6 ASC, 7 ASC
com.mysql.jdbc.ServerPreparedStatement[12] - SELECT tree_id, date1, date2, emid, eid, 1, pos FROM contract_tariff INNER JOIN tariff_plan ON contract_tariff.tpid=tariff_plan.id WHERE cid=4429 AND ((emid=0 AND eid=0) OR (emid=0 AND eid=0)) AND ( isNull(date2) OR date2='0000-00-00' OR date2>='2017-04-25' ) UNION SELECT tree_id, date1, date2, emid, eid, 0, pos FROM contract_tree_link WHERE cid=4429 AND ((emid=0 AND eid=0) OR (emid=0 AND eid=0)) AND (date2 IS NULL OR date2>='2017-04-25') ORDER BY 4 DESC, 5 DESC, 6 ASC, 7 ASC

....

com.mysql.jdbc.ServerPreparedStatement[106] - SELECT tree_id, date1, date2, emid, eid, 1, pos FROM contract_tariff INNER JOIN tariff_plan ON contract_tariff.tpid=tariff_plan.id WHERE cid=3947 AND ((emid=0 AND eid=0) OR (emid=0 AND eid=0)) AND ( isNull(date2) OR date2='0000-00-00' OR date2>='2017-04-25' ) UNION SELECT tree_id, date1, date2, emid, eid, 0, pos FROM contract_tree_link WHERE cid=3947 AND ((emid=0 AND eid=0) OR (emid=0 AND eid=0)) AND (date2 IS NULL OR date2>='2017-04-25') ORDER BY 4 DESC, 5 DESC, 6 ASC, 7 ASC
com.mysql.jdbc.ServerPreparedStatement[107] - SELECT tree_id, date1, date2, emid, eid, 1, pos FROM contract_tariff INNER JOIN tariff_plan ON contract_tariff.tpid=tariff_plan.id WHERE cid=2921 AND ((emid=0 AND eid=0) OR (emid=0 AND eid=0)) AND ( isNull(date2) OR date2='0000-00-00' OR date2>='2017-04-25' ) UNION SELECT tree_id, date1, date2, emid, eid, 0, pos FROM contract_tree_link WHERE cid=2921 AND ((emid=0 AND eid=0) OR (emid=0 AND eid=0)) AND (date2 IS NULL OR date2>='2017-04-25') ORDER BY 4 DESC, 5 DESC, 6 ASC, 7 ASC
com.mysql.jdbc.ServerPreparedStatement[108] - SELECT tree_id, date1, date2, emid, eid, 1, pos FROM contract_tariff INNER JOIN tariff_plan ON contract_tariff.tpid=tariff_plan.id WHERE cid=2921 AND ((emid=0 AND eid=0) OR (emid=0 AND eid=0)) AND ( isNull(date2) OR date2='0000-00-00' OR date2>='2017-04-25' ) UNION SELECT tree_id, date1, date2, emid, eid, 0, pos FROM contract_tree_link WHERE cid=2921 AND ((emid=0 AND eid=0) OR (emid=0 AND eid=0)) AND (date2 IS NULL OR date2>='2017-04-25') ORDER BY 4 DESC, 5 DESC, 6 ASC, 7 ASC
com.mysql.jdbc.ServerPreparedStatement[109] - SELECT tree_id, date1, date2, emid, eid, 1, pos FROM contract_tariff INNER JOIN tariff_plan ON contract_tariff.tpid=tariff_plan.id WHERE cid=694 AND ((emid=0 AND eid=0) OR (emid=0 AND eid=0)) AND ( isNull(date2) OR date2='0000-00-00' OR date2>='2017-04-25' ) UNION SELECT tree_id, date1, date2, emid, eid, 0, pos FROM contract_tree_link WHERE cid=694 AND ((emid=0 AND eid=0) OR (emid=0 AND eid=0)) AND (date2 IS NULL OR date2>='2017-04-25') ORDER BY 4 DESC, 5 DESC, 6 ASC, 7 ASC

java.lang.RuntimeException: http://forum.bitel.ru/viewtopic.php?t=7369
at ru.bitel.bgbilling.server.util.DefaultServerSetup$2$1.close(DefaultServerSetup.java:426)
at ru.bitel.bgbilling.server.util.PoolGuardConnectionWrapper.close(PoolGuardConnectionWrapper.java:48)
at ru.bitel.bgbilling.server.util.ServerUtils.closeConnection(ServerUtils.java:584)
at ru.bitel.bgbilling.modules.cerbercrypt.server.task.Synchronizer.executeTask(Synchronizer.java:132)
at ru.bitel.bgbilling.kernel.task.server.TaskBase.run(TaskBase.java:80)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
04-25/03:16:20 INFO [pool-2-thread-2] Synchronizer - Task finished time=77557 ms.
')
$this->bbcode_second_pass_code('', 'Клиент: вер. 7.0.934 / 07.02.2018 22:14:06
os: Windows 10; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_161
Сервер: вер. 7.0.1322 / 07.02.2018 22:15:37
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_102')
dbadm
 
Сообщения: 74
Зарегистрирован: 26 мар 2009, 12:44

Re: Незакрытые preparedStatement (CRM)

Сообщение dimOn » 25 апр 2017, 22:15

да, версии из about бы ещё, в Synchronizer вроде всё починяли
dimOn
 
Сообщения: 5918
Зарегистрирован: 30 май 2008, 15:51

Re: Незакрытые preparedStatement (CRM)

Сообщение dbadm » 26 апр 2017, 03:13

Пардон,

$this->bbcode_second_pass_code('', '
Информация о версии:

Клиент: вер. 7.0.880 / 10.03.2017 17:18:18
os: Windows 10; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_102
Сервер: вер. 7.0.1211 / 15.03.2017 18:44:15
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_102

cerbercrypt: вер. 7.0.232 / 21.02.2017 21:26:14
mps: вер. 7.0.210 / 01.03.2017 18:28:29
npay: вер. 7.0.206 / 15.03.2017 18:44:23
payonline: вер. 7.0.76 / 08.01.2017 19:08:27
reports: вер. 7.0.231 / 15.03.2017 18:48:01
rscm: вер. 7.0.184 / 10.02.2017 13:51:11
ru.bitel.bgbilling.plugins.cashcheck: вер. 7.0.113 / 15.02.2017 14:41:09
ru.bitel.bgbilling.plugins.crm: вер. 7.0.198 / 07.11.2016 18:45:32
ru.bitel.bgbilling.plugins.dispatch: вер. 7.0.92 / 25.01.2017 17:01:23
sberbank: вер. 7.0.60 / 01.03.2017 18:59:19
trayinfo: вер. 7.0.175 / 10.06.2016 17:00:23

Окружение:

Клиент:
os: Windows 10 amd64, 10.0
java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_102
jre home: C:\Program Files\Java\jre1.8.0_102
memory (use/total/max): 123M/223M/228M
default tz: 26.04.2017 00:09 MSK +0300 (Europe/Moscow)
user tz: 26.04.2017 00:09 MSK +0300 (Europe/Moscow)
locale: ru_RU
Сервер:
os: Linux amd64, 2.6.18-419.el5
java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_102
jre home: /opt/java/jdk1.8.0_102/jre
default tz: 26.04.2017 00:09 MSK +0300 (Europe/Moscow)
memory (use/total/max): 86M/213M/228M
db time: master: 26.04.2017 00:09 MSK
db charset: connection: cp1251(cp1251_general_ci), database: cp1251(cp1251_general_ci)
locale: ru_RU
uptime: Started: 25.04.2017 05:30:51 Uptime: 0 d 18:38:10

Третьи стороны:

Fugue Icons. Copyright © 2011 Yusuke Kamiyamane. All rights reserved.
http://p.yusukekamiyamane.com/
Silk icon set. Copyright © Mark James. All rights reserved.
http://www.famfamfam.com/lab/icons/silk/
')
$this->bbcode_second_pass_code('', 'Клиент: вер. 7.0.934 / 07.02.2018 22:14:06
os: Windows 10; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_161
Сервер: вер. 7.0.1322 / 07.02.2018 22:15:37
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_102')
dbadm
 
Сообщения: 74
Зарегистрирован: 26 мар 2009, 12:44

Re: Незакрытые preparedStatement (CRM)

Сообщение dimOn » 26 апр 2017, 21:30

отправлено на доработку
dimOn
 
Сообщения: 5918
Зарегистрирован: 30 май 2008, 15:51

Re: Незакрытые preparedStatement (CRM)

Сообщение borisk » 30 апр 2017, 15:55

Добрый день!

Тут понадобилось написать свой скрипт деактивации тарифных опций. В логах начали появляться сообщения по теме:
И это точно не мои, в моем скрипте таких запросов нет.
$this->bbcode_second_pass_code('', '
com.mysql.jdbc.ServerPreparedStatement[366] - SELECT * FROM contract_tariff_option
WHERE id=466
com.mysql.jdbc.ServerPreparedStatement[368] - SELECT * FROM tariff_option WHERE id=
3
com.mysql.jdbc.ServerPreparedStatement[370] - SELECT * FROM tariff_option WHERE (da
te1 IS NULL OR date1<=null) AND (date2 IS NULL OR null<=date2) ORDER BY title
com.mysql.jdbc.ServerPreparedStatement[373] - SELECT * FROM contract_tariff_option
WHERE id=467
com.mysql.jdbc.ServerPreparedStatement[374] - SELECT * FROM tariff_option WHERE id=
1
com.mysql.jdbc.ServerPreparedStatement[375] - SELECT * FROM tariff_option WHERE (da
te1 IS NULL OR date1<=null) AND (date2 IS NULL OR null<=date2) ORDER BY title
com.mysql.jdbc.ServerPreparedStatement[376] - SELECT * FROM contract_tariff_option
WHERE id=472
com.mysql.jdbc.ServerPreparedStatement[377] - SELECT * FROM tariff_option WHERE id=
2
com.mysql.jdbc.ServerPreparedStatement[378] - SELECT * FROM tariff_option WHERE (da
te1 IS NULL OR date1<=null) AND (date2 IS NULL OR null<=date2) ORDER BY title
com.mysql.jdbc.ServerPreparedStatement[379] - SELECT * FROM contract_tariff_option
WHERE id=473
com.mysql.jdbc.ServerPreparedStatement[380] - SELECT * FROM tariff_option WHERE id=
2
')

Для деактивации использую код:
$this->bbcode_second_pass_code('', '
context.newService( TariffOptionService.class, 0 ).contractTariffOptionDeactivate( cid, oid );
')
borisk
Клиент
 
Сообщения: 1322
Зарегистрирован: 15 мар 2009, 14:04

Re: Незакрытые preparedStatement (CRM)

Сообщение Cromeshnic » 01 май 2017, 11:34

Я в 5.2 без сервисов делал, уже не помню, почему:

$this->bbcode_second_pass_code('', '

Connection con = connectionSet.getConnection();
ContractTariffOptionActivateManager ctoam = new ContractTariffOptionActivateManager(con);
...
ctoam.deactivateOption(0, cid, contractOptionId);
print("Отключена опция " + option_id + " на договоре "+cid);
Thread.sleep(500);
...
ctoam.recycle();

ServerContext ctx = ThreadContext.get(ServerContext.class);
ctx.commit();
')
Аватара пользователя
Cromeshnic
Клиент
 
Сообщения: 3061
Зарегистрирован: 20 апр 2009, 12:03
Откуда: Иркутск

Re: Незакрытые preparedStatement (CRM)

Сообщение barguzin2 » 02 май 2017, 12:44

уже отправлял, но так и не пофиксили...
вывожу на просмотр все документы и нажимаю кнопку [Разослать на почту]. Версия 7.0

$this->bbcode_second_pass_code('', '
scheduler 05-02/13:25:34 ERROR [pool-1-thread-5] DefaultServerSetup - Many statements was open at connection close:
com.mysql.jdbc.ServerPreparedStatement[404772] - SELECT * FROM contract WHERE id=544
тут пачка таких же строк

java.lang.RuntimeException: http://forum.bitel.ru/viewtopic.php?t=7369
at ru.bitel.bgbilling.server.util.DefaultServerSetup$2$1.close(DefaultServerSetup.java:426)
at ru.bitel.bgbilling.server.util.PoolGuardConnectionWrapper.close(PoolGuardConnectionWrapper.java:48)
at ru.bitel.bgbilling.server.util.ServerUtils.closeConnection(ServerUtils.java:584)
at ru.bitel.bgbilling.server.util.ServerUtils.closeConnection(ServerUtils.java:566)
at bitel.billing.server.bill.BillDocsSenderForAll.executeTask(BillDocsSenderForAll.java:87)
at bitel.billing.server.task.bean.RunTask.run(RunTask.java:47)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

')
barguzin2
Клиент
 
Сообщения: 1080
Зарегистрирован: 09 фев 2011, 15:28

Re: Незакрытые preparedStatement (CRM)

Сообщение dimOn » 02 май 2017, 13:18

для 7.0+ это исправлено
dimOn
 
Сообщения: 5918
Зарегистрирован: 30 май 2008, 15:51

Re: Незакрытые preparedStatement (CRM)

Сообщение stark » 16 май 2017, 16:38

$this->bbcode_second_pass_quote('borisk', '
')
Для деактивации использую код:
$this->bbcode_second_pass_code('', '
context.newService( TariffOptionService.class, 0 ).contractTariffOptionDeactivate( cid, oid );
')


Надо не newService, а getService
stark
Разработчик
 
Сообщения: 8343
Зарегистрирован: 08 ноя 2007, 01:05
Откуда: Уфа
Вернуться к началу

Re: Незакрытые preparedStatement (CRM)

Сообщение spectrum » 01 июн 2017, 14:53

Выполняется следующий код:
$this->bbcode_second_pass_code('', '
public void chargeNpay(Vars vars, ArrayList<Integer> chargingContractsList) {
String email = null;
int serviceSet = 0;
String cids = chargingContractsList.get(0).toString();
//Формируем строку из списка договоров. Количество около 300 шт
if (chargingContractsList.size() > 1) {
for (int i = 1; i < chargingContractsList.size(); i++) {
cids = cids + "," + chargingContractsList.get(i).toString();
}
}
new RunTaskDataManager(vars.con)
.addTask(new Recalculator(NPAY_MID, Calendar.getInstance(), email, serviceSet, cids, ""));
}

')


В логах:
$this->bbcode_second_pass_code('', '
06-01/12:01:11 INFO [Thread-12] RunTaskDataManager - get next tasks: new task id=22483 bitel.billing.server.npay.Recalculator@1f1c8a6
06-01/12:01:11 INFO [Thread-12] TaskRunProcessor - Running Task: bitel.billing.server.npay.Recalculator@1f1c8a6
06-01/12:01:11 INFO [pool-1-thread-8] Recalculator - PaymentRecalculator time: 01.06.2017 23
06-01/12:01:11 INFO [pool-1-thread-8] Calculator - Memory total: 68 157 440; max: 239 075 328; free: 20 726 096
Memory pools:
Non-heap memory[Code Cache]: max: 251 658 240; used: 29 536 704; peek: 29 548 352
Non-heap memory[Metaspace]: max: -1; used: 30 984 232; peek: 30 984 232
Non-heap memory[Compressed Class Space]: max: 1 073 741 824; used: 3 321 064; peek: 3 342 288
Heap memory[PS Eden Space]: max: 84 934 656; used: 3 044 768; peek: 52 953 088
Heap memory[PS Survivor Space]: max: 2 097 152; used: 229 376; peek: 8 646 240
Heap memory[PS Old Gen]: max: 179 306 496; used: 44 157 200; peek: 59 567 016
Thread count: 55
06-01/12:01:13 INFO [pool-2-thread-7] LoggingPrintStream - FractionalChrageNpay end
06-01/12:01:13 ERROR [pool-2-thread-7] DefaultServerSetup - Many statements was open at connection close:
com.mysql.jdbc.ServerPreparedStatement[25] - SELECT * FROM global_script_link WHERE id=8
com.mysql.jdbc.PreparedStatement@3f4858e8: SELECT * FROM contract WHERE id=5118
com.mysql.jdbc.PreparedStatement@195f3364: SELECT * FROM contract WHERE id=4610
com.mysql.jdbc.PreparedStatement@2538e770: SELECT * FROM contract WHERE id=4610
com.mysql.jdbc.PreparedStatement@4916910b: SELECT * FROM contract WHERE id=4610

Плюс много таких строк
.
.
.
java.lang.RuntimeException: http://forum.bitel.ru/viewtopic.php?t=7369
at ru.bitel.bgbilling.server.util.DefaultServerSetup$2$1.close(DefaultServerSetup.java:426)
at ru.bitel.bgbilling.server.util.PoolGuardConnectionWrapper.close(PoolGuardConnectionWrapper.java:48)
at ru.bitel.common.sql.ConnectionSet.recycle(ConnectionSet.java:272)
at ru.bitel.bgbilling.kernel.base.server.DefaultContext.destroy(DefaultContext.java:37)
at ru.bitel.bgbilling.kernel.container.managed.ServerContext.destroy(ServerContext.java:400)
at ru.bitel.common.worker.ThreadContext.pop(ThreadContext.java:54)
at ru.bitel.bgbilling.kernel.task.server.TaskBase.run(TaskBase.java:90)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
06-01/12:01:13 INFO [pool-2-thread-7] GlobalScriptTimer - Task finished time=13181 ms.
06-01/12:01:15 INFO [pool-1-thread-8] Calculator - Setting balances for independ and subs..
06-01/12:01:15 INFO [pool-1-thread-8] Calculator - Selected.
06-01/12:01:21 INFO [pool-1-thread-8] Calculator - Selecting sub account
06-01/12:01:21 INFO [pool-1-thread-8] Calculator - Selected.
06-01/12:01:21 INFO [pool-1-thread-8] Calculator - Setting balance for super..
06-01/12:01:21 INFO [pool-1-thread-8] Calculator - Selected.
06-01/12:01:21 INFO [pool-1-thread-8] Calculator - Task finished time=9818 ms.
06-01/12:01:21 INFO [pool-1-thread-8] Recalculator - RunTask finished time=9818 ms.

')

About:
$this->bbcode_second_pass_code('', '
Информация о версии:

Клиент: вер. 6.2.855 / 20.03.2017 20:56:51
os: Windows 7; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_121
Сервер: вер. 6.2.1169 / 21.03.2017 18:23:05
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_60

bvcom: вер. 6.2.95 / 14.07.2016 14:11:19
card: вер. 6.2.43 / 16.03.2017 23:47:47
enaza: вер. 6.2.60 / 10.03.2017 18:11:30
gorod: вер. 6.2.164 / 01.03.2016 00:18:32
inet: вер. 6.2.714 / 20.03.2017 20:51:11
mps: вер. 6.2.223 / 21.03.2017 16:41:20
npay: вер. 6.2.198 / 03.02.2017 21:00:04
rentsoft: вер. 6.2.63 / 04.10.2016 19:16:26
reports: вер. 6.2.216 / 15.03.2017 19:48:19

Сервер:
os: Linux amd64, 3.10.0-229.11.1.el7.x86_64
java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_60
jre home: /opt/jdk1.8.0_60/jre
default tz: 01.06.2017 14:23 MSK +0300 (Europe/Moscow)
db time: master: 01.06.2017 14:23 MSK
db charset: connection: utf8(utf8_unicode_ci), database: utf8(utf8_unicode_ci)
locale: ru_RU
uptime: Started: 12.05.2017 06:48:24 Uptime: 20 d 07:35:19
')

Чем чревата эта ошибка и как исправить?

UPD: кстати, в SELECT много повторяющихся строк с одним и тем же id. Это и в переведенном отрывке видно.
spectrum
 
Сообщения: 365
Зарегистрирован: 29 янв 2014, 11:32

Пред.След.

Вернуться в Ядро системы

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

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

cron