BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 24 июн 2025, 02:37

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




Начать новую тему Ответить на тему  [ Сообщений: 18 ] 
Автор Сообщение
 Заголовок сообщения: [5.2] Many statements was open at connection close
СообщениеДобавлено: 09 авг 2012, 15:24 
В логах server.error.log выходит периодически
Код:
DefaultServerSetup - Many statements was open at connection close:
com.mysql.jdbc.ServerPreparedStatement[191] - SELECT config FROM module_config WHERE mid=1 AND active=1 LIMIT 1
com.mysql.jdbc.ServerPreparedStatement[193] - SELECT config FROM module_config WHERE mid=1 AND active=1 LIMIT 1
com.mysql.jdbc.ServerPreparedStatement[194] - SELECT config FROM module_config WHERE mid=1 AND active=1 LIMIT 1
com.mysql.jdbc.ServerPreparedStatement[195] - SELECT config FROM module_config WHERE mid=1 AND active=1 LIMIT 1
com.mysql.jdbc.ServerPreparedStatement[196] - SELECT config FROM module_config WHERE mid=1 AND active=1 LIMIT 1
и .т.д
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.container.managed.ServerContext.recycle(ServerContext.java:366)
        at ru.bitel.common.worker.WorkerTask.run(WorkerTask.java:103)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
        at java.lang.Thread.run(Thread.java:619)
        at ru.bitel.common.worker.WorkerThread.run(WorkerThread.java:40)
mq 08-09/00:30:11 ERROR [event-proc-p-2-t-1] DefaultServerSetup - Many statements was open at connection close:

А также в schedule.error.log каждый час после запуска проверки IPN
Код:
scheduler 08-08/10:21:33 ERROR [pool-2-thread-3] DefaultServerSetup - Many statements was open at connection close:
com.mysql.jdbc.ServerPreparedStatement[9] - SELECT config FROM module_config WHERE mid=1 AND active=1 LIMIT 1
com.mysql.jdbc.ServerPreparedStatement[28] -  SELECT vid  FROM ipn_gate_vlan_1 WHERE gid = 2 AND cid = 98
com.mysql.jdbc.ServerPreparedStatement[29] -  SELECT vid  FROM ipn_gate_vlan_1 WHERE gid = 13 AND cid = 76
com.mysql.jdbc.ServerPreparedStatement[30] -  SELECT vid  FROM ipn_gate_vlan_1 WHERE gid = 12 AND cid = 32
com.mysql.jdbc.ServerPreparedStatement[31] -  SELECT vid  FROM ipn_gate_vlan_1 WHERE gid = 20 AND cid = 10
com.mysql.jdbc.ServerPreparedStatement[32] -  SELECT vid  FROM ipn_gate_vlan_1 WHERE gid = 2 AND cid = 30
com.mysql.jdbc.ServerPreparedStatement[33] -  SELECT vid  FROM ipn_gate_vlan_1 WHERE gid = 13 AND cid = 49
com.mysql.jdbc.ServerPreparedStatement[34] -  SELECT vid  FROM ipn_gate_vlan_1 WHERE gid = 12 AND cid = 69
com.mysql.jdbc.ServerPreparedStatement[35] -  SELECT vid  FROM ipn_gate_vlan_1 WHERE gid = 20 AND cid = 15
и куча таких же записей
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.bgbilling.server.util.ServerUtils.closeConnection(ServerUtils.java:568)
        at bitel.billing.server.ipn.IPNTestGates.executeTask(IPNTestGates.java:177)
        at ru.bitel.bgbilling.kernel.task.server.TaskBase.run(TaskBase.java:74)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
        at java.lang.Thread.run(Thread.java:619)


Вернуться к началу
  
 
 Заголовок сообщения: Re: [5.2] Many statements was open at connection close
СообщениеДобавлено: 09 авг 2012, 17:49 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Это не совсем ошибка , это средство диагностики незакрытия ресурсов БД , которое выливается в повешенное потребление памяти приложением.
Исправили , выложили обновление . Если появятся такие ошибки еще - пишите , исправим .


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [5.2] Many statements was open at connection close
СообщениеДобавлено: 10 авг 2012, 21:51 
Вот еще появилась
scheduler 08-10/06:00:06 ERROR [pool-2-thread-2] DefaultServerSetup - Many statements was open at connection close:
com.mysql.jdbc.ServerPreparedStatement[39] - SELECT * FROM contract WHERE id=37
com.mysql.jdbc.ServerPreparedStatement[46] - SELECT * FROM contract WHERE id=86
com.mysql.jdbc.ServerPreparedStatement[47] - SELECT * FROM contract WHERE id=92
com.mysql.jdbc.ServerPreparedStatement[48] - SELECT * FROM contract WHERE id=40
com.mysql.jdbc.ServerPreparedStatement[49] - SELECT * FROM contract WHERE id=59
com.mysql.jdbc.ServerPreparedStatement[50] - SELECT * FROM contract WHERE id=39
com.mysql.jdbc.ServerPreparedStatement[51] - select count(*) from contract_parameter_type_1_log where cid=39 and date(now())-interval 3 day<= date(dt_change) and user_id=0 and pid=32;
com.mysql.jdbc.ServerPreparedStatement[52] - SELECT * FROM contract WHERE id=67


Вернуться к началу
  
 
 Заголовок сообщения: Re: [5.2] Many statements was open at connection close
СообщениеДобавлено: 14 авг 2012, 15:05 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
madmax писал(а):
Вот еще появилась
scheduler 08-10/06:00:06 ERROR [pool-2-thread-2] DefaultServerSetup - Many statements was open at connection close:
com.mysql.jdbc.ServerPreparedStatement[39] - SELECT * FROM contract WHERE id=37
com.mysql.jdbc.ServerPreparedStatement[46] - SELECT * FROM contract WHERE id=86
com.mysql.jdbc.ServerPreparedStatement[47] - SELECT * FROM contract WHERE id=92
com.mysql.jdbc.ServerPreparedStatement[48] - SELECT * FROM contract WHERE id=40
com.mysql.jdbc.ServerPreparedStatement[49] - SELECT * FROM contract WHERE id=59
com.mysql.jdbc.ServerPreparedStatement[50] - SELECT * FROM contract WHERE id=39
com.mysql.jdbc.ServerPreparedStatement[51] - select count(*) from contract_parameter_type_1_log where cid=39 and date(now())-interval 3 day<= date(dt_change) and user_id=0 and pid=32;
com.mysql.jdbc.ServerPreparedStatement[52] - SELECT * FROM contract WHERE id=67


и Excеption опять можно ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [5.2] Many statements was open at connection close
СообщениеДобавлено: 14 авг 2012, 22:23 
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.bgbilling.server.util.ServerUtils.closeConnection(ServerUtils.java:568)
at bitel.billing.server.script.global.bean.GlobalScriptMachine.runScript(GlobalScriptMachine.java:113)
at bitel.billing.server.script.global.bean.GlobalScriptManager.executeGlobalScript(GlobalScriptManager.java:39)
at bitel.billing.server.script.global.bean.GlobalScriptTimer.executeBsh(GlobalScriptTimer.java:73)
at bitel.billing.server.script.global.bean.GlobalScriptTimer.executeTask(GlobalScriptTimer.java:53)
at ru.bitel.bgbilling.kernel.task.server.TaskBase.run(TaskBase.java:74)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
at java.lang.Thread.run(Thread.java:619)


Вернуться к началу
  
 
 Заголовок сообщения: Re: [5.2] Many statements was open at connection close
СообщениеДобавлено: 16 авг 2012, 12:35 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
madmax писал(а):
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.bgbilling.server.util.ServerUtils.closeConnection(ServerUtils.java:568)
at bitel.billing.server.script.global.bean.GlobalScriptMachine.runScript(GlobalScriptMachine.java:113)
at bitel.billing.server.script.global.bean.GlobalScriptManager.executeGlobalScript(GlobalScriptManager.java:39)
at bitel.billing.server.script.global.bean.GlobalScriptTimer.executeBsh(GlobalScriptTimer.java:73)
at bitel.billing.server.script.global.bean.GlobalScriptTimer.executeTask(GlobalScriptTimer.java:53)
at ru.bitel.bgbilling.kernel.task.server.TaskBase.run(TaskBase.java:74)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
at java.lang.Thread.run(Thread.java:619)


И ниже еще есть что-нибудь типа cause? . Это ошибка одного из ваших глобальных скриптов, запускаемых по таймеру . Там либо создается PreparedStatement и не закрывается либо создается ContractManager много раз . Покажите скрипт - скажу как исправить .


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [5.2] Many statements was open at connection close
СообщениеДобавлено: 17 авг 2012, 12:07 
Вот скрипт для отправки СМС
Код:
import bitel.billing.common.TimeUtils;
import bitel.billing.server.service.bean.ModuleAndServiceUtils;
import bitel.billing.server.admin.errorlog.bean.PeriodicErrorManager;
import bitel.billing.server.contract.bean.BalanceUtils;
import bitel.billing.server.contract.bean.Contract;
import bitel.billing.server.contract.bean.ContractStatus;
import bitel.billing.server.contract.bean.ContractStatusManager;
import bitel.billing.server.contract.bean.ContractManager;
import bitel.billing.server.contract.bean.ServiceCostCache;
import bitel.billing.server.service.bean.ModuleAndServiceManager;
import bitel.billing.server.contract.bean.ContractParameterManager;
import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Calendar;
import java.util.Date;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import org.apache.log4j.Logger;
import ru.bitel.bgbilling.kernel.task.server.TaskBase;
import ru.bitel.bgbilling.modules.npay.server.Calculator;
import ru.bitel.bgbilling.modules.npay.server.bean.DebetStatusManageConfig;
import ru.bitel.bgbilling.server.util.ModuleSetup;
import ru.bitel.bgbilling.server.util.ServerUtils;
import ru.bitel.bgbilling.server.util.Setup;
import ru.bitel.common.Preferences;
import ru.bitel.common.Utils;
import javax.jms.Connection;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory;
import java.text.SimpleDateFormat;
import ru.bitel.bgbilling.kernel.module.server.ModuleCache;
 
public void main( setup, con, conSlave )
{
 
   int LOG_PARAM_ID = 32; // id строкового параметра договора с включенным логом, где будем вести историю отправки по клиенту
   int mid=3; //id модуля абонплат
    String TABLE_GROUPED_SUB_ACCOUNT = " _npay_precalc_sub_account_" + this.mid + " ";
    String TABLE_GROUPED_SUPER_AND_INDEPEND_ACCOUNT = " _npay_precalc_sub_and_independ_account_" + this.mid + " ";
 
   now = (new SimpleDateFormat("yyyy/MM/dd HH:mm:ss")).format(new Date());
   cpm = new ContractParameterManager(con);
   
 
    startMonth = TimeUtils.getStartMonth(Calendar.getInstance());
   Calendar toDate = Calendar.getInstance();
   toDate.add(Calendar.DAY_OF_MONTH,3);
    String moduleServices = ModuleCache.getInstance().getModuleServicesString(mid);
    Date currentDate = new Date();
 
    try
    {
      conSlave.createStatement().executeUpdate("DROP TEMPORARY TABLE IF EXISTS " + TABLE_GROUPED_SUB_ACCOUNT);
      conSlave.createStatement().executeUpdate("DROP TEMPORARY TABLE IF EXISTS " + TABLE_GROUPED_SUPER_AND_INDEPEND_ACCOUNT);
 
      BalanceUtils bu = new BalanceUtils(conSlave);
 
      Calculator calculator = new Calculator();
      calculator.setExecutingTime(toDate);
      calculator.initTask(setup, 0, "mid=" + mid + "\nservice.set=0");
      calculator.setPreCalc();
      calculator.startTask();
      Map planAccountMap = calculator.getCostCache().getContractAccounts();
 
      Set cidsForClose = new HashSet();
 
      String query =
        "CREATE TEMPORARY TABLE " + TABLE_GROUPED_SUB_ACCOUNT +
        "SELECT contract.scid AS scid, SUM(ROUND(account.summa,2)) AS summa " +
        "FROM contract_account AS account " +
        "INNER JOIN contract ON account.cid=contract.id " +
        "WHERE account.yy=? AND account.mm=? AND account.sid IN (" + moduleServices + ") AND " +
        "contract.sub_mode=0 AND contract.scid>0 " +
        "GROUP BY contract.scid";
      PreparedStatement psCreateTempTable = conSlave.prepareStatement(query);
      psCreateTempTable.setInt(1, startMonth.get(1));
      psCreateTempTable.setInt(2, startMonth.get(2) + 1);
      psCreateTempTable.executeUpdate();
      psCreateTempTable.close();
 
      query =
        "CREATE TEMPORARY TABLE " + TABLE_GROUPED_SUPER_AND_INDEPEND_ACCOUNT +
        "SELECT contract.id AS cid, SUM(ROUND(account.summa,2)) AS summa " +
        "FROM contract_account AS account " +
        "INNER JOIN contract ON account.cid=contract.id " +
        "WHERE account.yy=? AND account.mm=? AND account.sid IN (" + moduleServices + ") AND " +
        "( contract.scid<=0 OR (contract.sub_mode=1) )" +
        "GROUP BY contract.id";
      psCreateTempTable = conSlave.prepareStatement(query);
      psCreateTempTable.setInt(1, startMonth.get(1));
      psCreateTempTable.setInt(2, startMonth.get(2) + 1);
      psCreateTempTable.executeUpdate();
      psCreateTempTable.close();
 
      query =
 "SELECT contract.id, contract.scid, contract.sub_list, contract.sub_mode, contract.closesumma, contract.title, contract.gr, account.summa, sub_account.summa, contract.fc, contract_parameter_type_phone_item.phone FROM contract INNER JOIN contract_module ON contract.id=contract_module.cid AND contract_module.mid=? LEFT JOIN " +
        TABLE_GROUPED_SUPER_AND_INDEPEND_ACCOUNT + " AS account ON contract.id=account.cid " +
        "LEFT JOIN " + TABLE_GROUPED_SUB_ACCOUNT + " AS sub_account ON contract.id=sub_account.scid " +
      "LEFT JOIN contract_parameter_type_phone_item ON contract_parameter_type_phone_item.cid=contract.id AND contract_parameter_type_phone_item.pid=30 AND contract_parameter_type_phone_item.n=3 " +   
        "WHERE contract.mode=1 AND contract.status=0 AND (contract.scid<=0 OR contract.sub_mode=1) " +
        "AND (contract.date2 IS NULL OR ?<=contract.date2) AND contract.gr&(1<<0)=1 AND contract.fc=0 AND contract_parameter_type_phone_item.phone IS not NULL";
      PreparedStatement psSelect = conSlave.prepareStatement(query);
      psSelect.setInt(1, mid);
      psSelect.setDate(2, TimeUtils.convertDateToSqlDate(currentDate));
      ResultSet rs = psSelect.executeQuery();
      String subList;
      while (rs.next())
      {
        int contractId = rs.getInt(1);
        int superId = rs.getInt(2);
        subList = rs.getString(3);
        int subMode = rs.getInt(4);
        BigDecimal limit = Utils.maskNull(rs.getBigDecimal(5));
        String title = rs.getString(6);
        long gr = rs.getLong(7);
        BigDecimal accountSumma = rs.getBigDecimal(8);
      BigDecimal subSumma = rs.getBigDecimal(9);
        int fc = rs.getInt( 10 );
       String phone = rs.getString( 11 );
      contract = new ContractManager(con).getContractById(contractId);
      contract_groups = contract.getGroups();
      if(accountSumma==null){accountSumma=new BigDecimal(0);}
      if(subSumma==null){subSumma=new BigDecimal(0);}
        accountSumma = accountSumma.add(subSumma);
 
        BigDecimal planAccount = (BigDecimal)planAccountMap.get(Integer.valueOf(contractId));
      if(planAccount==null){planAccount=new BigDecimal(0);}
        if (superId == -1)
        {
          for (Integer dependSub : Utils.toIntegerList(subList))
          {
            BigDecimal subAccount = (BigDecimal)planAccountMap.get(dependSub);
         if(subAccount==null){subAccount=new BigDecimal(0);}
            planAccount = planAccount.add(subAccount);
          }
 
        }

        if (planAccount.compareTo(accountSumma) <= 0)
          continue;
        Contract contract = new Contract();
        contract.setId(contractId);
        contract.setSuperId(superId);
        contract.setGroups(gr);
        contract.setDependSubList(subList);
        contract.setSubMode(subMode);
 
        BigDecimal diff = planAccount.subtract(accountSumma);
        BigDecimal balance = bu.getBalance(currentDate, contract);
 

        if (balance.subtract(diff).compareTo(limit) >= 0)
          continue;

      //Сколько уведомлений было отправлено в последние 2 дня для группы?
      ps1 = con.prepareStatement("select count(*) from contract_parameter_type_1_log where cid=? and date(now())-interval 3 day<= date(dt_change) and user_id=0 and pid=?;");
      ps1.setInt(1,contractId);
      ps1.setInt(2,LOG_PARAM_ID);
      rs1 = ps1.executeQuery();
      notificationCount = 0;

      if(rs1.next()){notificationCount = rs1.getInt(1);}

      if(notificationCount>=1) {
         print("skip:  contract " + title +
            " balance: " + Utils.formatBigDecimalSumm(balance) +
            "; currentAccount: " + Utils.formatBigDecimalSumm(accountSumma) +
            "; planAccount: " + Utils.formatBigDecimalSumm(planAccount) +
         "; phone: " + phone);
         continue;
      }
if (phone.startsWith ("79") && balance.floatValue() >=0 ) {
        print("sent:  contract " + title +
            " balance: " + Utils.formatBigDecimalSumm(balance) +
            "; currentAccount: " + Utils.formatBigDecimalSumm(accountSumma) +
            "; planAccount: " + Utils.formatBigDecimalSumm(planAccount) +
          "; phone: " + phone);

text = "Ваш баланс "+Utils.formatBigDecimalSumm(balance)+" возможно отключение услуг через 3 дня.";
         

               String q = "insert into sms_informer (cid,phone_number,message_text,source_addr,create_dt) values(?,?,?,?,NOW())";
               PreparedStatement ps = con.prepareStatement( q );
               ps.setInt(1,contractId);
               ps.setString(2,phone);
               ps.setString(3,text);
               ps.setString(4,from);
               ps.executeUpdate();
             ps.close();
 
      cpm.updateTextParam(contractId, LOG_PARAM_ID, now + " : balance= " + balance+", limit= "+limit+", currentAccount= " + Utils.formatBigDecimalSumm(accountSumma) +", planAccount= " + Utils.formatBigDecimalSumm(planAccount), 0);
                     }
      }
 
      psSelect.close();
    }
    catch (Exception e)
    {
     error(e.getMessage());
    }
    finally
    {
      try
      {
       conSlave.createStatement().executeUpdate("DROP TEMPORARY TABLE IF EXISTS " + TABLE_GROUPED_SUB_ACCOUNT);
       conSlave.createStatement().executeUpdate("DROP TEMPORARY TABLE IF EXISTS " + TABLE_GROUPED_SUPER_AND_INDEPEND_ACCOUNT);
      }
      catch (Exception e)
      {
            error(e.getMessage());
      }
 
    }
}


Нашли что нужно тут добавить
Код:
   if(rs1.next()){notificationCount = rs1.getInt(1);}
       ps1.close();

Но вот все равно выходит другая ошибка
Код:
om.mysql.jdbc.ServerPreparedStatement[105] - SELECT * FROM contract WHERE id=43779

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.bgbilling.server.util.ServerUtils.closeConnection(ServerUtils.java:568)
        at bitel.billing.server.script.global.bean.GlobalScriptMachine.runScript(GlobalScriptMachine.java:113)
        at bitel.billing.server.script.global.bean.GlobalScriptManager.executeGlobalScript(GlobalScriptManager.java:39)
        at bitel.billing.server.script.global.bean.GlobalScriptTimer.executeBsh(GlobalScriptTimer.java:73)
        at bitel.billing.server.script.global.bean.GlobalScriptTimer.executeTask(GlobalScriptTimer.java:53)
        at ru.bitel.bgbilling.kernel.task.server.TaskBase.run(TaskBase.java:74)
        at ru.bitel.bgbilling.kernel.task.server.TaskBase.startTask(TaskBase.java:135)
        at bitel.billing.server.task.TaskBaseRunner.executeTask(TaskBaseRunner.java:72)
        at bitel.billing.server.task.bean.RunTask.run(RunTask.java:41)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
        at java.lang.Thread.run(Thread.java:636)


Вернуться к началу
  
 
 Заголовок сообщения: Re: [5.2] Many statements was open at connection close
СообщениеДобавлено: 17 авг 2012, 14:12 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Цитата:
contract = new ContractManager(con).getContractById(contractId);
ContractManager лучше создать один раз выше цикла.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [5.2] Many statements was open at connection close
СообщениеДобавлено: 17 авг 2012, 15:02 
А как его создать выше цикла если в цикле идет поиск договора
int contractId = rs.getInt(1);


Вернуться к началу
  
 
 Заголовок сообщения: Re: [5.2] Many statements was open at connection close
СообщениеДобавлено: 17 авг 2012, 15:03 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Т.е.
Код:
ContractManager cm = new ContractManager( con );
...
while(rs.next())
{
...
contract = cm.getContractById(contractId);
...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [5.2] Many statements was open at connection close
СообщениеДобавлено: 17 авг 2012, 15:12 
Да сорри не на тот цикл воткнул.
Сейчас ошибка исчезла.
Теперь понятно как закрывать соединения.


Вернуться к началу
  
 
 Заголовок сообщения: Re: [5.2] Many statements was open at connection close
СообщениеДобавлено: 10 окт 2012, 15:31 
Еще появилась ошибка такого же типа
Код:
com.mysql.jdbc.ServerPreparedStatement[7283] - SELECT * FROM contract WHERE id=17
com.mysql.jdbc.ServerPreparedStatement[7284] - SELECT t1.id, IF(t2.title IS NULL, '<?????>', t2.title), comment, dt, summa, t2.flag, t1.uid, t1.lm FROM contract_charge AS t1 LEFT JOIN contract_char
com.mysql.jdbc.ServerPreparedStatement[7285] - SELECT * FROM contract WHERE id=17
com.mysql.jdbc.ServerPreparedStatement[7286] - SELECT t1.id, IF(t2.title IS NULL, '<?????>', t2.title), comment, dt, summa, t2.flag, t1.uid, t1.lm FROM contract_payment AS t1 LEFT JOIN contract_pay
com.mysql.jdbc.ServerPreparedStatement[7287] - SELECT * FROM contract WHERE id=17
com.mysql.jdbc.ServerPreparedStatement[7288] - SELECT mm, yy, summa1, summa2, summa3, summa4, summa1 + summa2 - summa3 - summa4 FROM contract_balance WHERE cid=38817 AND ( ( yy>2012 AND yy<2012 ) O
com.mysql.jdbc.ServerPreparedStatement[7289] - SELECT id, title, mid FROM service
com.mysql.jdbc.ServerPreparedStatement[7290] - SELECT yy, mm, sid, ROUND(summa,2), sid FROM contract_account WHERE cid=17 AND yy*12+mm>=24154 AND yy*12+mm<=24154 ORDER BY yy, mm, sid

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 bitel.billing.server.ActionBase.freeConnection(ActionBase.java:181)
        at bitel.billing.server.Executer.doModule(Unknown Source)
        at bitel.billing.server.Executer$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:396)
        at bitel.billing.server.Executer.doPost(Unknown Source)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at bitel.billing.server.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:48)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:403)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:301)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:162)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:140)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
        at java.lang.Thread.run(Thread.java:619)


Вернуться к началу
  
 
 Заголовок сообщения: Re: [5.2] Many statements was open at connection close
СообщениеДобавлено: 10 окт 2012, 16:46 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
http://wiki.bgbilling.ru/index.php/SMS_ ... %D0%B2_5.2

_________________
Код:
  Клиент: вер. 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: [5.2] Many statements was open at connection close
СообщениеДобавлено: 10 окт 2012, 19:29 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
madmax писал(а):
Еще появилась ошибка такого же типа
Код:
com.mysql.jdbc.ServerPreparedStatement[7283] - SELECT * FROM contract WHERE id=17
com.mysql.jdbc.ServerPreparedStatement[7284] - SELECT t1.id, IF(t2.title IS NULL, '<?????>', t2.title), comment, dt, summa, t2.flag, t1.uid, t1.lm FROM contract_charge AS t1 LEFT JOIN contract_char
com.mysql.jdbc.ServerPreparedStatement[7285] - SELECT * FROM contract WHERE id=17
com.mysql.jdbc.ServerPreparedStatement[7286] - SELECT t1.id, IF(t2.title IS NULL, '<?????>', t2.title), comment, dt, summa, t2.flag, t1.uid, t1.lm FROM contract_payment AS t1 LEFT JOIN contract_pay
com.mysql.jdbc.ServerPreparedStatement[7287] - SELECT * FROM contract WHERE id=17
com.mysql.jdbc.ServerPreparedStatement[7288] - SELECT mm, yy, summa1, summa2, summa3, summa4, summa1 + summa2 - summa3 - summa4 FROM contract_balance WHERE cid=38817 AND ( ( yy>2012 AND yy<2012 ) O
com.mysql.jdbc.ServerPreparedStatement[7289] - SELECT id, title, mid FROM service
com.mysql.jdbc.ServerPreparedStatement[7290] - SELECT yy, mm, sid, ROUND(summa,2), sid FROM contract_account WHERE cid=17 AND yy*12+mm>=24154 AND yy*12+mm<=24154 ORDER BY yy, mm, sid

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 bitel.billing.server.ActionBase.freeConnection(ActionBase.java:181)
        at bitel.billing.server.Executer.doModule(Unknown Source)
        at bitel.billing.server.Executer$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:396)
        at bitel.billing.server.Executer.doPost(Unknown Source)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at bitel.billing.server.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:48)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:403)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:301)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:162)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:140)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
        at java.lang.Thread.run(Thread.java:619)


Обновление выложено.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [5.2] Many statements was open at connection close
СообщениеДобавлено: 10 окт 2012, 19:29 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
skyb писал(а):
http://wiki.bgbilling.ru/index.php/SMS_%D1%80%D0%B0%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B0_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_SMPP_%D0%BF%D0%BE_%D1%81%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B2%D0%B0%D0%BC_%D0%B4%D0%B8%D0%BD_%D0%BA%D0%BE%D0%B4%D0%B0_%D0%B2_5.2

Не понял. при чем тут этот скрипт ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [5.2] Many statements was open at connection close
СообщениеДобавлено: 10 окт 2012, 19:31 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
stark писал(а):
Не понял. при чем тут этот скрипт ?

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [5.2] Many statements was open at connection close
СообщениеДобавлено: 10 окт 2012, 20:30 
Не в сети
Клиент
Аватара пользователя

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

скинул который проще и который работает =)
что то пропустил? =)

_________________
Код:
  Клиент: вер. 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: [5.2] Many statements was open at connection close
СообщениеДобавлено: 12 окт 2012, 11:50 
Не в сети
Разработчик

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

скинул который проще и который работает =)
что то пропустил? =)


Здесь тема для тех, у кого в логах "Many statements was open at connection close". Этот скрипт вообще к базе не обращается


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 18 ] 

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


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

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


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

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