forum.bitel.ru
http://forum.bitel.ru/

[BUG] "Lock wait timeout" при переобсчёте Inet (CRM)
http://forum.bitel.ru/viewtopic.php?f=44&t=12202
Страница 1 из 1

Автор:  Cromeshnic [ 11 янв 2017, 09:48 ]
Заголовок сообщения:  [BUG] "Lock wait timeout" при переобсчёте Inet

Привет.
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

Автор:  stark [ 11 янв 2017, 17:58 ]
Заголовок сообщения:  Re: [BUG] "Lock wait timeout" при переобсчёте Inet (CRM)

Пожалуйста создайте тему в helpdesk. Доступ так так то есть вроде, смотрю. Но нет доступа для клиента биллинга.

Автор:  Cromeshnic [ 11 янв 2017, 18:01 ]
Заголовок сообщения:  Re: [BUG] "Lock wait timeout" при переобсчёте Inet (CRM)

Ок, завтра сделаю. И по предыдущей тоже.

Автор:  stark [ 11 янв 2017, 20:24 ]
Заголовок сообщения:  Re: [BUG] "Lock wait timeout" при переобсчёте Inet (CRM)

Исправил так, чтобы если происходит ошибка, то в сообщении на email будут об этом сообщать. Пока не выкладывали, возможно будут еще какие-то исправления.

Автор:  stark [ 11 янв 2017, 20:50 ]
Заголовок сообщения:  Re: [BUG] "Lock wait timeout" при переобсчёте Inet (CRM)

Там у вас оба модуля упали. Ситуация там такая:

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.

Автор:  stark [ 12 янв 2017, 17:04 ]
Заголовок сообщения:  Re: [BUG] "Lock wait timeout" при переобсчёте Inet (CRM)

Обновление выложено, сейчас как минимум сообщение об ошибке будет в письме.

Автор:  stark [ 12 янв 2017, 17:55 ]
Заголовок сообщения:  Re: [BUG] "Lock wait timeout" при переобсчёте Inet (CRM)

Если в следующий раз подобное повториться, то лучше снять и сохранить
Код:
SHOW ENGINE INNODB STATUS\G

Автор:  Cromeshnic [ 01 мар 2017, 10:02 ]
Заголовок сообщения:  Re: [BUG] "Lock wait timeout" при переобсчёте Inet (CRM)

Сделал тему в HD: 6645

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/