BiTel

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

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




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: [BUG] "Lock wait timeout" при переобсчёте Inet
СообщениеДобавлено: 11 янв 2017, 09:48 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Привет.
01.01.2017 запустили в 06:30 переобсчёт сессий модуля Inet за прошлый месяц.
Он успешно отрапортовал в почту, что выполнился, но по факту в обоих аккаунтинг-серверах отвалился по таймауту:

Код:
01-01/06:30:13  INFO [pool-5-thread-1] SessionRecalculateTarifficationManager - starting ru.bitel.bgbilling.modules.inet.accounting.recalculate.SessionRecalculateTarifficationManager
01-01/06:32:05 ERROR [pool-5-thread-1] SessionRecalculateTarifficationManager - java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction
ru.bitel.bgbilling.common.BGException: java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction
        at ru.bitel.bgbilling.modules.inet.accounting.recalculate.SessionRecalculateTarifficationManager.flushSession(SessionRecalculateTarifficationManager.java:902)
        at ru.bitel.bgbilling.modules.inet.accounting.recalculate.SessionRecalculateTarifficationManager.recalculate(SessionRecalculateTarifficationManager.java:338)
        at ru.bitel.bgbilling.modules.inet.accounting.recalculate.SessionRecalculateTarifficationManager.run(SessionRecalculateTarifficationManager.java:175)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
        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)
Caused by: java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2002)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2163)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2624)
        at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2127)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2427)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2345)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2330)
        at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105)
        at ru.bitel.bgbilling.modules.inet.accounting.recalculate.SessionRecalculateTarifficationManager.updateSessionCostAndTime(SessionRecalculateTarifficationManager.java:943)
        at ru.bitel.bgbilling.modules.inet.accounting.recalculate.SessionRecalculateTarifficationManager.flushSession(SessionRecalculateTarifficationManager.java:893)
        ... 8 more

      
01-01/06:33:59 ERROR [pool-16-thread-1] SessionRecalculateTarifficationManager - java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction
ru.bitel.bgbilling.common.BGException: java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction
        at ru.bitel.bgbilling.modules.inet.accounting.recalculate.SessionRecalculateTarifficationManager.flushSession(SessionRecalculateTarifficationManager.java:902)
        at ru.bitel.bgbilling.modules.inet.accounting.recalculate.SessionRecalculateTarifficationManager.recalculate(SessionRecalculateTarifficationManager.java:338)
        at ru.bitel.bgbilling.modules.inet.accounting.recalculate.SessionRecalculateTarifficationManager.run(SessionRecalculateTarifficationManager.java:175)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
        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)
Caused by: java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2002)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2163)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2624)
        at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2127)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2427)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2345)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2330)
        at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105)
        at ru.bitel.bgbilling.modules.inet.accounting.recalculate.SessionRecalculateTarifficationManager.updateSessionCostAndTime(SessionRecalculateTarifficationManager.java:943)
        at ru.bitel.bgbilling.modules.inet.accounting.recalculate.SessionRecalculateTarifficationManager.flushSession(SessionRecalculateTarifficationManager.java:893)
        ... 8 more

---------

01-01/06:33:07  INFO [pool-16-thread-1] InetServRuntimeMap - Removing InetServRuntime: 11587
01-01/06:33:07  INFO [pool-16-thread-1] InetServRuntimeMap - Removing InetServRuntime: 2252
01-01/06:33:08  INFO [pool-16-thread-1] InetServRuntimeMap - Removing InetServRuntime: 887
01-01/06:33:08  INFO [pool-16-thread-1] InetServRuntimeMap - Removing InetServRuntime: 895
01-01/06:33:59 ERROR [pool-16-thread-1] SessionRecalculateTarifficationManager - java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction
ru.bitel.bgbilling.common.BGException: java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction
        at ru.bitel.bgbilling.modules.inet.accounting.recalculate.SessionRecalculateTarifficationManager.flushSession(SessionRecalculateTarifficationManager.java:902)
        at ru.bitel.bgbilling.modules.inet.accounting.recalculate.SessionRecalculateTarifficationManager.recalculate(SessionRecalculateTarifficationManager.java:338)
        at ru.bitel.bgbilling.modules.inet.accounting.recalculate.SessionRecalculateTarifficationManager.run(SessionRecalculateTarifficationManager.java:175)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
        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)
Caused by: java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2002)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2163)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2624)
        at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2127)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2427)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2345)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2330)
        at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105)
        at ru.bitel.bgbilling.modules.inet.accounting.recalculate.SessionRecalculateTarifficationManager.updateSessionCostAndTime(SessionRecalculateTarifficationManager.java:943)
        at ru.bitel.bgbilling.modules.inet.accounting.recalculate.SessionRecalculateTarifficationManager.flushSession(SessionRecalculateTarifficationManager.java:893)
        ... 8 more



В результате VPN не пересчитался и некоторым клиентам приходится перевыставлять счета (кому в конце месяца меняли тарифы с трафиковых на безлимитные задним числом).

Сервер: вер. 5.2 сборка 1645 от 16.08.2016 17:11:56
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.6.0_26

inet вер. 5.2 сборка 1382 от 25.05.2016 12:23:23


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 11 янв 2017, 17:58 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Пожалуйста создайте тему в helpdesk. Доступ так так то есть вроде, смотрю. Но нет доступа для клиента биллинга.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 11 янв 2017, 18:01 
Не в сети
Клиент
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 11 янв 2017, 20:24 
Не в сети
Разработчик

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 11 янв 2017, 20:50 
Не в сети
Разработчик

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

1) Запустили переобсчет в модуле с id 30.
Его делали 5-ий и 6-ой accounting-сервера.
Код:
01-01/06:29:48  INFO [pool-1-thread-4] InetRecalculator - init application ids: 5,6
01-01/06:29:49  INFO [pool-1-thread-4] InetRecalculator - available application ids: 5,6
01-01/06:29:49  INFO [pool-1-thread-4] InetRecalculator - real calculate application ids: 5,6
01-01/06:29:49  INFO [pool-1-thread-4] InetRecalculator - executing calulatePastMonth
01-01/06:32:05  INFO [event-proc-p-2-t-1] InetRecalculateResponseEventProcessor - get respone from applicationId=5, requestIndex = 261
01-01/06:33:59  INFO [event-proc-p-2-t-1] InetRecalculateResponseEventProcessor - get respone from applicationId=6, requestIndex = 262
01-01/06:33:59  INFO [pool-1-thread-4] InetRecalculator - calulatePastMonth end
01-01/06:34:00  INFO [pool-1-thread-4] InetRecalculator - RunTask finished time=251136 ms.
При этом 5-ый как видно из вашего лога упал как раз в 06:32:05, а 6-ой в 06:33:59.



2) Запустили переобсчет в модуле с id 28.
Его делали 3-ий и 8-ой accounting-сервера.
Код:
01-01/06:34:00  INFO [pool-1-thread-4] InetRecalculator - init application ids: 3,8
01-01/06:34:00  INFO [pool-1-thread-4] InetRecalculator - available application ids: 3,8
01-01/06:34:00  INFO [pool-1-thread-4] InetRecalculator - real calculate application ids: 3,8
01-01/06:34:00  INFO [pool-1-thread-4] InetRecalculator - executing calulatePastMonth
01-01/06:37:35  INFO [event-proc-p-2-t-1] InetRecalculateResponseEventProcessor - get respone from applicationId=8, requestIndex = 264
01-01/06:37:36  INFO [event-proc-p-2-t-1] InetRecalculateResponseEventProcessor - get respone from applicationId=3, requestIndex = 263
01-01/06:37:36  INFO [pool-1-thread-4] InetRecalculator - calulatePastMonth end
01-01/06:37:36  INFO [pool-1-thread-4] InetRecalculator - RunTask finished time=216383 ms.


При этом 8-ой упал в

Код:
recalculate 01-01/06:37:35 ERROR [pool-9-thread-1] SessionRecalculateTarifficationManager - java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction
ru.bitel.bgbilling.common.BGException: java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction
        at ru.bitel.bgbilling.modules.inet.accounting.recalculate.SessionRecalculateTarifficationManager.flushSession(SessionRecalculateTarifficationManager.java:902)
        at ru.bitel.bgbilling.modules.inet.accounting.recalculate.SessionRecalculateTarifficationManager.recalculate(SessionRecalculateTarifficationManager.java:338)
        at ru.bitel.bgbilling.modules.inet.accounting.recalculate.SessionRecalculateTarifficationManager.run(SessionRecalculateTarifficationManager.java:175)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
        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)
Caused by: java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2002)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2163)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2624)
        at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2127)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2427)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2345)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2330)
        at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105)
        at ru.bitel.bgbilling.modules.inet.accounting.recalculate.SessionRecalculateTarifficationManager.updateSessionCostAndTime(SessionRecalculateTarifficationManager.java:943)
        at ru.bitel.bgbilling.modules.inet.accounting.recalculate.SessionRecalculateTarifficationManager.flushSession(SessionRecalculateTarifficationManager.java:893)
        ... 8 more


А 3-тий вроде как не падал и судя по логу и закончил в 06:37:36.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 12 янв 2017, 17:04 
Не в сети
Разработчик

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 12 янв 2017, 17:55 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Если в следующий раз подобное повториться, то лучше снять и сохранить
Код:
SHOW ENGINE INNODB STATUS\G


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 01 мар 2017, 10:02 
Не в сети
Клиент
Аватара пользователя

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


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

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


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

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


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

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