Re-scan Library causes Lock wait timeout exceeded - purgeDisallowedFormats deadlocks book_file table during rescan (v3.0.3) #1158
Replies: 2 comments 1 reply
|
removing the library and adding a new one seemed to solve the issue, but lost my audiobook progress for each book in the process. the existing library was originally created with booklore |
|
Confirming this on newer builds. Not fixed yet. I reproduced the exact same deadlock on v3.2.4 ( Root cause: the full rescan writes audio metadata to
The title's Does NOT work around it:
Side effects confirmed: a deadlocked rescan wedges the scan flag ( Trigger for reference: Suggested fix: run the Environment: Grimmory 3.2.4 + nightly-20260725, Spring Boot 4.1, JDK 25, MariaDB 11.4.5, Docker. |
Uh oh!
There was an error while loading. Please reload this page.
What went wrong?
When triggering a "Re-scan Library" on an audiobook library, the scan consistently fails with a database lock timeout error. The scan never completes, newly added audiobooks do not get picked up, and existing audiobooks stop being playable after the failed scan until the container is restarted.
How can we reproduce it?
What Build of Grimmory are you on?
Stable
Your setup
Grimmory version: v3.0.3
How you're running it: Docker (docker compose)
Browser: Chrome
Operating system: Ubuntu
Screenshots or error messages (optional)
docker logs grimmory -f
Picked up JAVA_TOOL_OPTIONS: -XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=compact -XX:+UseCompactObjectHeaders -XX:MaxRAMPercentage=60.0 -XX:InitialRAMPercentage=8.0 -XX:+ExitOnOutOfMemoryError -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/heapdump.hprof -XX:MaxMetaspaceSize=256m -XX:ReservedCodeCacheSize=48m -Xss512k -XX:CICompilerCount=2 -XX:+UnlockExperimentalVMOptions -XX:+UseStringDeduplication -XX:ShenandoahUncommitDelay=5000 -XX:ShenandoahGuaranteedGCInterval=30000 -XX:MaxDirectMemorySize=256m
_, __, _ _, _ , _ , __, , _
/ _ |) | |/| |/| / \ |) \ |
\ / | \ | | | | | \ / | \ |
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ )
~'
2026-05-06T02:06:14.521-07:00 INFO 1 --- [booklore-api] [ main] org.booklore.BookloreApplication : Starting BookloreApplication vv3.0.3 using Java 25.0.3 with PID 1 (/app/app.jar started by booklore in /)
2026-05-06T02:06:14.533-07:00 INFO 1 --- [booklore-api] [ main] org.booklore.BookloreApplication : No active profile set, falling back to 1 default profile: "default"
2026-05-06T02:06:18.065-07:00 INFO 1 --- [booklore-api] [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2026-05-06T02:06:18.591-07:00 INFO 1 --- [booklore-api] [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 508 ms. Found 64 JPA repository interfaces.
2026-05-06T02:06:20.708-07:00 INFO 1 --- [booklore-api] [ main] o.s.boot.tomcat.TomcatWebServer : Tomcat initialized with port 6060 (http)
2026-05-06T02:06:20.730-07:00 INFO 1 --- [booklore-api] [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2026-05-06T02:06:20.731-07:00 INFO 1 --- [booklore-api] [ main] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/11.0.21]
2026-05-06T02:06:20.782-07:00 INFO 1 --- [booklore-api] [ main] b.w.c.s.WebApplicationContextInitializer : Root WebApplicationContext: initialization completed in 6121 ms
2026-05-06T02:06:21.843-07:00 INFO 1 --- [booklore-api] [ main] com.zaxxer.hikari.HikariDataSource : BookloreHikariPool - Starting...
2026-05-06T02:06:22.003-07:00 INFO 1 --- [booklore-api] [ main] com.zaxxer.hikari.pool.HikariPool : BookloreHikariPool - Added connection org.mariadb.jdbc.Connection@206e5183
2026-05-06T02:06:22.006-07:00 INFO 1 --- [booklore-api] [ main] com.zaxxer.hikari.HikariDataSource : BookloreHikariPool - Start completed.
2026-05-06T02:06:22.062-07:00 INFO 1 --- [booklore-api] [ main] org.flywaydb.core.FlywayExecutor : Database: jdbc:mariadb://mariadb/booklore?user=booklore&password=******** (MariaDB 11.4)
2026-05-06T02:06:22.214-07:00 INFO 1 --- [booklore-api] [ main] o.f.core.internal.command.DbValidate : Successfully validated 138 migrations (execution time 00:00.111s)
2026-05-06T02:06:22.230-07:00 INFO 1 --- [booklore-api] [ main] o.f.core.internal.command.DbMigrate : Current version of schema
booklore: 1402026-05-06T02:06:22.236-07:00 INFO 1 --- [booklore-api] [ main] o.f.core.internal.command.DbMigrate : Schema
bookloreis up to date. No migration necessary.2026-05-06T02:06:22.494-07:00 INFO 1 --- [booklore-api] [ main] org.hibernate.orm.jpa : HHH008540: Processing PersistenceUnitInfo [name: default]
2026-05-06T02:06:22.616-07:00 INFO 1 --- [booklore-api] [ main] org.hibernate.orm.core : HHH000001: Hibernate ORM core version 7.3.2.Final
2026-05-06T02:06:23.654-07:00 INFO 1 --- [booklore-api] [ main] o.s.o.j.p.SpringPersistenceUnitInfo : No LoadTimeWeaver setup: ignoring JPA class transformer
2026-05-06T02:06:26.765-07:00 INFO 1 --- [booklore-api] [ main] org.hibernate.orm.core : HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration)
2026-05-06T02:06:26.772-07:00 INFO 1 --- [booklore-api] [ main] org.hibernate.orm.jdbc.batch : HHH100501: Automatic JDBC statement batching enabled (maximum batch size 100)
2026-05-06T02:06:26.781-07:00 INFO 1 --- [booklore-api] [ main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2026-05-06T02:06:26.931-07:00 INFO 1 --- [booklore-api] [ main] o.s.d.j.r.query.QueryEnhancerFactories : Hibernate is in classpath; If applicable, HQL parser will be used.
2026-05-06T02:06:28.725-07:00 INFO 1 --- [booklore-api] [ main] o.s.boot.web.servlet.RegistrationBean : Filter authenticationCheckFilter was not registered (disabled)
2026-05-06T02:06:28.725-07:00 INFO 1 --- [booklore-api] [ main] o.s.boot.web.servlet.RegistrationBean : Filter jwtAuthenticationFilter was not registered (disabled)
2026-05-06T02:06:28.726-07:00 INFO 1 --- [booklore-api] [ main] o.s.boot.web.servlet.RegistrationBean : Filter koboAuthFilter was not registered (disabled)
2026-05-06T02:06:28.726-07:00 INFO 1 --- [booklore-api] [ main] o.s.boot.web.servlet.RegistrationBean : Filter koreaderAuthFilter was not registered (disabled)
2026-05-06T02:06:28.726-07:00 INFO 1 --- [booklore-api] [ main] o.s.boot.web.servlet.RegistrationBean : Filter queryParameterJwtFilter was not registered (disabled)
2026-05-06T02:06:34.086-07:00 INFO 1 --- [booklore-api] [ main] c.github.gotson.nightcompress.Archive : Loaded libarchive 3.8.5 zlib/1.3.2 liblzma/5.8.3 bz2lib/1.0.8 liblz4/1.10.0 libzstd/1.5.7 expat/expat_2.7.5 openssl/3.5.4 libb2/bundled libacl/2.3.2 libattr/2.3.2
2026-05-06T02:06:34.127-07:00 INFO 1 --- [booklore-api] [ main] org.booklore.nativelib.NativeLibraries : Native libraries, PDFium: loaded, libarchive: loaded, epub4j-native: loaded
2026-05-06T02:06:34.698-07:00 INFO 1 --- [booklore-api] [ main] o.b.s.f.BookFileProcessorRegistry : Initialized BookFileProcessorRegistry with 7 processors for 7 types
2026-05-06T02:06:37.810-07:00 WARN 1 --- [booklore-api] [ main] org.booklore.config.WebSocketConfig : WebSocket endpoint is configured to allow all origins (). This is the default for backward compatibility, but it's recommended to set 'app.cors.allowed-origins' to an explicit list.
2026-05-06T02:06:38.793-07:00 WARN 1 --- [booklore-api] [ main] o.b.config.security.SecurityConfig : CORS is configured to allow all origins () because 'app.cors.allowed-origins' is '*'. This maintains backward compatibility, but it's recommended to set it to an explicit origin list.
2026-05-06T02:06:39.264-07:00 INFO 1 --- [booklore-api] [ main] o.s.b.w.a.WelcomePageHandlerMapping : Adding welcome page: class path resource [static/index.html]
2026-05-06T02:06:40.036-07:00 WARN 1 --- [booklore-api] [ main] i.m.c.i.b.cache.CaffeineCacheMetrics : The cache 'appSettings' is not recording statistics. No meters except 'cache.size' will be registered. Call 'Caffeine#recordStats()' prior to building the cache for metrics to be recorded.
2026-05-06T02:06:40.040-07:00 WARN 1 --- [booklore-api] [ main] i.m.c.i.b.cache.CaffeineCacheMetrics : The cache 'publicSettings' is not recording statistics. No meters except 'cache.size' will be registered. Call 'Caffeine#recordStats()' prior to building the cache for metrics to be recorded.
2026-05-06T02:06:40.357-07:00 INFO 1 --- [booklore-api] [ main] o.s.b.a.e.web.EndpointLinksResolver : Exposing 1 endpoint beneath base path '/actuator'
2026-05-06T02:06:40.503-07:00 INFO 1 --- [booklore-api] [ main] o.s.m.s.b.SimpleBrokerMessageHandler : Starting...
2026-05-06T02:06:40.505-07:00 INFO 1 --- [booklore-api] [ main] o.s.m.s.b.SimpleBrokerMessageHandler : BrokerAvailabilityEvent[available=true, SimpleBrokerMessageHandler [org.springframework.messaging.simp.broker.DefaultSubscriptionRegistry@49abcbf7]]
2026-05-06T02:06:40.506-07:00 INFO 1 --- [booklore-api] [ main] o.s.m.s.b.SimpleBrokerMessageHandler : Started.
2026-05-06T02:06:40.513-07:00 INFO 1 --- [booklore-api] [ main] o.b.s.b.BookdropMonitoringService : Starting bookdrop folder monitor: /bookdrop
2026-05-06T02:06:40.513-07:00 INFO 1 --- [booklore-api] [event-processor] o.b.s.watcher.LibraryFileEventProcessor : LibraryFileEventProcessor virtual thread started.
2026-05-06T02:06:40.534-07:00 INFO 1 --- [booklore-api] [ main] o.s.boot.tomcat.TomcatWebServer : Tomcat started on port 6060 (http) with context path '/'
2026-05-06T02:06:40.557-07:00 INFO 1 --- [booklore-api] [ main] org.booklore.BookloreApplication : Started BookloreApplication in 27.276 seconds (process running for 28.449)
2026-05-06T02:06:40.644-07:00 INFO 1 --- [booklore-api] [omcat-handler-0] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2026-05-06T02:06:40.644-07:00 INFO 1 --- [booklore-api] [omcat-handler-0] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2026-05-06T02:06:40.647-07:00 INFO 1 --- [booklore-api] [omcat-handler-0] o.s.web.servlet.DispatcherServlet : Completed initialization in 3 ms
2026-05-06T02:06:40.713-07:00 INFO 1 --- [booklore-api] [ main] o.booklore.config.TaskSchedulerConfig : Application ready, initializing scheduled tasks
2026-05-06T02:06:40.760-07:00 INFO 1 --- [booklore-api] [ main] org.booklore.service.task.TaskService : Initializing 4 scheduled tasks
2026-05-06T02:06:40.769-07:00 INFO 1 --- [booklore-api] [ main] org.booklore.service.task.TaskService : Scheduled task CLEANUP_DELETED_BOOKS with cron expression: 0 40 0 * * 1
2026-05-06T02:06:40.769-07:00 INFO 1 --- [booklore-api] [ main] org.booklore.service.task.TaskService : Scheduled task CLEANUP_TEMP_METADATA with cron expression: 0 45 0 * * 1
2026-05-06T02:06:40.770-07:00 INFO 1 --- [booklore-api] [ main] org.booklore.service.task.TaskService : Scheduled task SYNC_LIBRARY_FILES with cron expression: 0 0 1 * * *
2026-05-06T02:06:40.770-07:00 INFO 1 --- [booklore-api] [ main] org.booklore.service.task.TaskService : Scheduled task UPDATE_BOOK_RECOMMENDATIONS with cron expression: 0 30 1 * * *
2026-05-06T02:06:40.780-07:00 INFO 1 --- [booklore-api] [MessageBroker-1] o.s.w.s.c.WebSocketMessageBrokerStats : WebSocketSession[0 current WS(0)-HttpStream(0)-HttpPoll(0), 0 total, 0 closed abnormally (0 connect failure, 0 send limit, 0 transport error)], stompSubProtocol[processed CONNECT(0)-CONNECTED(0)-DISCONNECT(0)], stompBrokerRelay[null], inboundChannel[pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 0], outboundChannel[pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 0], sockJsScheduler[pool size = 2, active threads = 1, queued tasks = 0, completed tasks = 0]
2026-05-06T02:06:41.534-07:00 INFO 1 --- [booklore-api] [ main] o.b.s.monitoring.LibraryWatchService : Registered 161 folders for library 'Audiobooks'
2026-05-06T02:06:41.534-07:00 INFO 1 --- [booklore-api] [ main] o.b.s.monitoring.LibraryWatchService : Registered 2 libraries for monitoring
2026-05-06T02:06:41.534-07:00 INFO 1 --- [booklore-api] [ main] o.b.service.library.LibraryService : Monitoring initialized with 2 libraries
2026-05-06T02:06:47.765-07:00 INFO 1 --- [booklore-api] [ async-3] o.b.service.library.LibraryFileHelper : Detected folder-based audiobook: The Expanse 05 Nemesis Games (53 audio files)
2026-05-06T02:06:47.770-07:00 INFO 1 --- [booklore-api] [ async-3] o.b.service.library.LibraryFileHelper : Detected folder-based audiobook: The Expanse 05.5 The Vital Abyss (9 audio files)
2026-05-06T02:06:47.808-07:00 INFO 1 --- [booklore-api] [ async-3] o.b.service.library.LibraryFileHelper : Detected folder-based audiobook: The Expanse 06 Babylons Ashes (55 audio files)
2026-05-06T02:06:47.838-07:00 INFO 1 --- [booklore-api] [ async-3] o.b.service.library.LibraryFileHelper : Detected folder-based audiobook: The Expanse 02 Caliban's War (56 audio files)
2026-05-06T02:06:47.865-07:00 INFO 1 --- [booklore-api] [ async-3] o.b.service.library.LibraryFileHelper : Detected folder-based audiobook: The Expanse 01 Leviathan Wakes (57 audio files)
2026-05-06T02:06:47.887-07:00 INFO 1 --- [booklore-api] [ async-3] o.b.service.library.LibraryFileHelper : Detected folder-based audiobook: The Expanse 00 The Churn (5 audio files)
2026-05-06T02:06:47.889-07:00 INFO 1 --- [booklore-api] [ async-3] o.b.service.library.LibraryFileHelper : Detected folder-based audiobook: The Expanse 02.5 Gods of Risk (3 audio files)
2026-05-06T02:06:47.907-07:00 INFO 1 --- [booklore-api] [ async-3] o.b.service.library.LibraryFileHelper : Detected folder-based audiobook: The Expanse 03 Abaddon's gate (55 audio files)
2026-05-06T02:06:47.945-07:00 INFO 1 --- [booklore-api] [ async-3] o.b.service.library.LibraryFileHelper : Detected folder-based audiobook: The Expanse 04 Cibola Burn (64 audio files)
2026-05-06T02:10:08.111-07:00 WARN 1 --- [booklore-api] [ async-3] o.m.jdbc.message.server.ErrorPacket : Error: 1205-HY000: Lock wait timeout exceeded; try restarting transaction
2026-05-06T02:13:28.110-07:00 WARN 1 --- [booklore-api] [ async-3] o.m.jdbc.message.server.ErrorPacket : Error: 1205-HY000: Lock wait timeout exceeded; try restarting transaction
2026-05-06T02:16:48.110-07:00 WARN 1 --- [booklore-api] [ async-3] o.m.jdbc.message.server.ErrorPacket : Error: 1205-HY000: Lock wait timeout exceeded; try restarting transaction
2026-05-06T02:16:48.127-07:00 INFO 1 --- [booklore-api] [ async-3] org.hibernate.orm.jdbc.batch : HHH100503: JDBC batch still contained JDBC statements on release
2026-05-06T02:16:48.133-07:00 WARN 1 --- [booklore-api] [ async-3] org.hibernate.orm.jdbc.error : HHH000247: ErrorCode: 1205, SQLState: HY000
2026-05-06T02:16:48.133-07:00 WARN 1 --- [booklore-api] [ async-3] org.hibernate.orm.jdbc.error : (conn=10) Lock wait timeout exceeded; try restarting transaction
2026-05-06T02:16:48.150-07:00 WARN 1 --- [booklore-api] [ async-3] com.zaxxer.hikari.pool.ProxyConnection : BookloreHikariPool - Connection org.mariadb.jdbc.Connection@1ad362ba marked as broken because of SQLSTATE(08000), ErrorCode(-1)
java.sql.SQLNonTransientConnectionException: (conn=11) Socket error
at org.mariadb.jdbc.export.ExceptionFactory.createException(ExceptionFactory.java:320) ~[mariadb-java-client-3.5.8.jar!/:na]
at org.mariadb.jdbc.export.ExceptionFactory.create(ExceptionFactory.java:390) ~[mariadb-java-client-3.5.8.jar!/:na]
at org.mariadb.jdbc.client.impl.StandardClient.sendQuery(StandardClient.java:1047) ~[mariadb-java-client-3.5.8.jar!/:na]
at org.mariadb.jdbc.client.impl.StandardClient.execute(StandardClient.java:1194) ~[mariadb-java-client-3.5.8.jar!/:na]
at org.mariadb.jdbc.client.impl.StandardClient.execute(StandardClient.java:1052) ~[mariadb-java-client-3.5.8.jar!/:na]
at org.mariadb.jdbc.Connection.rollback(Connection.java:233) ~[mariadb-java-client-3.5.8.jar!/:na]
at com.zaxxer.hikari.pool.ProxyConnection.rollback(ProxyConnection.java:386) ~[HikariCP-7.0.2.jar!/:na]
at com.zaxxer.hikari.pool.HikariProxyConnection.rollback(HikariProxyConnection.java) ~[HikariCP-7.0.2.jar!/:na]
at org.hibernate.resource.jdbc.internal.AbstractLogicalConnectionImplementor.rollback(AbstractLogicalConnectionImplementor.java:123) ~[hibernate-core-7.3.2.Final.jar!/:7.3.2.Final]
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.rollback(JdbcResourceLocalTransactionCoordinatorImpl.java:284) ~[hibernate-core-7.3.2.Final.jar!/:7.3.2.Final]
at org.hibernate.engine.transaction.internal.TransactionImpl.rollback(TransactionImpl.java:123) ~[hibernate-core-7.3.2.Final.jar!/:7.3.2.Final]
at org.springframework.orm.jpa.JpaTransactionManager.doRollback(JpaTransactionManager.java:580) ~[spring-orm-7.0.7.jar!/:7.0.7]
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processRollback(AbstractPlatformTransactionManager.java:896) ~[spring-tx-7.0.7.jar!/:7.0.7]
at org.springframework.transaction.support.AbstractPlatformTransactionManager.rollback(AbstractPlatformTransactionManager.java:865) ~[spring-tx-7.0.7.jar!/:7.0.7]
at org.springframework.transaction.interceptor.TransactionAspectSupport.completeTransactionAfterThrowing(TransactionAspectSupport.java:708) ~[spring-tx-7.0.7.jar!/:7.0.7]
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:375) ~[spring-tx-7.0.7.jar!/:7.0.7]
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:130) ~[spring-tx-7.0.7.jar!/:7.0.7]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-7.0.7.jar!/:7.0.7]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719) ~[spring-aop-7.0.7.jar!/:7.0.7]
at org.booklore.service.library.LibraryProcessingService$$SpringCGLIB$$0.rescanLibrary() ~[!/:v3.0.3]
at org.booklore.service.library.LibraryService.lambda$rescanLibrary$1(LibraryService.java:214) ~[!/:v3.0.3]
at org.springframework.security.concurrent.DelegatingSecurityContextRunnable.run(DelegatingSecurityContextRunnable.java:96) ~[spring-security-core-7.0.5.jar!/:7.0.5]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[na:na]
at java.base/java.lang.Thread.run(Unknown Source) ~[na:na]
Caused by: java.net.SocketException: Connection reset by peer
at java.base/sun.nio.ch.SocketDispatcher.write0(Native Method) ~[na:na]
at java.base/sun.nio.ch.SocketDispatcher.write(Unknown Source) ~[na:na]
at java.base/sun.nio.ch.NioSocketImpl.tryWrite(Unknown Source) ~[na:na]
at java.base/sun.nio.ch.NioSocketImpl.implWrite(Unknown Source) ~[na:na]
at java.base/sun.nio.ch.NioSocketImpl.write(Unknown Source) ~[na:na]
at java.base/sun.nio.ch.NioSocketImpl$2.write(Unknown Source) ~[na:na]
at java.base/java.net.Socket$SocketOutputStream.implWrite(Unknown Source) ~[na:na]
at java.base/java.net.Socket$SocketOutputStream.write(Unknown Source) ~[na:na]
at org.mariadb.jdbc.client.socket.Writer.writeSocket(Writer.java:855) ~[mariadb-java-client-3.5.8.jar!/:na]
at org.mariadb.jdbc.client.socket.Writer.flush(Writer.java:709) ~[mariadb-java-client-3.5.8.jar!/:na]
at org.mariadb.jdbc.message.client.QueryPacket.encode(QueryPacket.java:50) ~[mariadb-java-client-3.5.8.jar!/:na]
at org.mariadb.jdbc.client.impl.StandardClient.sendQuery(StandardClient.java:1028) ~[mariadb-java-client-3.5.8.jar!/:na]
... 22 common frames omitted
2026-05-06T02:16:48.163-07:00 ERROR 1 --- [booklore-api] [ async-3] o.s.t.i.TransactionInterceptor : Application exception overridden by rollback exception
org.springframework.dao.CannotAcquireLockException: could not execute batch [(conn=10) Lock wait timeout exceeded; try restarting transaction] [update book_file set added_on=?,archive_type=?,bitrate=?,book_id=?,book_type=?,channels=?,chapter_count=?,chapters_json=?,codec=?,current_hash=?,description=?,duration_seconds=?,file_name=?,file_size_kb=?,file_sub_path=?,is_folder_based=?,initial_hash=?,is_book=?,is_fixed_layout=?,sample_rate=? where id=?]; SQL [update book_file set added_on=?,archive_type=?,bitrate=?,book_id=?,book_type=?,channels=?,chapter_count=?,chapters_json=?,codec=?,current_hash=?,description=?,duration_seconds=?,file_name=?,file_size_kb=?,file_sub_path=?,is_folder_based=?,initial_hash=?,is_book=?,is_fixed_layout=?,sample_rate=? where id=?]
at org.springframework.orm.jpa.hibernate.HibernateExceptionTranslator.convertHibernateAccessException(HibernateExceptionTranslator.java:162) ~[spring-orm-7.0.7.jar!/:7.0.7]
at org.springframework.orm.jpa.hibernate.HibernateExceptionTranslator.convertHibernateAccessException(HibernateExceptionTranslator.java:131) ~[spring-orm-7.0.7.jar!/:7.0.7]
at org.springframework.orm.jpa.hibernate.HibernateExceptionTranslator.translateExceptionIfPossible(HibernateExceptionTranslator.java:109) ~[spring-orm-7.0.7.jar!/:7.0.7]
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:223) ~[spring-orm-7.0.7.jar!/:7.0.7]
at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:557) ~[spring-orm-7.0.7.jar!/:7.0.7]
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:794) ~[spring-tx-7.0.7.jar!/:7.0.7]
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:757) ~[spring-tx-7.0.7.jar!/:7.0.7]
at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:687) ~[spring-tx-7.0.7.jar!/:7.0.7]
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:408) ~[spring-tx-7.0.7.jar!/:7.0.7]
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:130) ~[spring-tx-7.0.7.jar!/:7.0.7]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-7.0.7.jar!/:7.0.7]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719) ~[spring-aop-7.0.7.jar!/:7.0.7]
at org.booklore.service.library.BookDeletionService$$SpringCGLIB$$0.purgeDisallowedFormats() ~[!/:v3.0.3]
at org.booklore.service.library.LibraryProcessingService.rescanLibrary(LibraryProcessingService.java:114) ~[!/:v3.0.3]
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Unknown Source) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Unknown Source) ~[na:na]
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359) ~[spring-aop-7.0.7.jar!/:7.0.7]
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190) ~[spring-aop-7.0.7.jar!/:7.0.7]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:158) ~[spring-aop-7.0.7.jar!/:7.0.7]
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:133) ~[spring-tx-7.0.7.jar!/:7.0.7]
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:371) ~[spring-tx-7.0.7.jar!/:7.0.7]
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:130) ~[spring-tx-7.0.7.jar!/:7.0.7]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) ~[spring-aop-7.0.7.jar!/:7.0.7]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719) ~[spring-aop-7.0.7.jar!/:7.0.7]
at org.booklore.service.library.LibraryProcessingService$$SpringCGLIB$$0.rescanLibrary() ~[!/:v3.0.3]
at org.booklore.service.library.LibraryService.lambda$rescanLibrary$1(LibraryService.java:214) ~[!/:v3.0.3]
at org.springframework.security.concurrent.DelegatingSecurityContextRunnable.run(DelegatingSecurityContextRunnable.java:96) ~[spring-security-core-7.0.5.jar!/:7.0.5]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[na:na]
at java.base/java.lang.Thread.run(Unknown Source) ~[na:na]
Caused by: org.hibernate.exception.LockTimeoutException: could not execute batch [(conn=10) Lock wait timeout exceeded; try restarting transaction] [update book_file set added_on=?,archive_type=?,bitrate=?,book_id=?,book_type=?,channels=?,chapter_count=?,chapters_json=?,codec=?,current_hash=?,description=?,duration_seconds=?,file_name=?,file_size_kb=?,file_sub_path=?,is_folder_based=?,initial_hash=?,is_book=?,is_fixed_layout=?,sample_rate=? where id=?]
at org.hibernate.dialect.MariaDBDialect.lambda$buildSQLExceptionConversionDelegate$0(MariaDBDialect.java:355) ~[hibernate-core-7.3.2.Final.jar!/:7.3.2.Final]
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:34) ~[hibernate-core-7.3.2.Final.jar!/:7.3.2.Final]
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:115) ~[hibernate-core-7.3.2.Final.jar!/:7.3.2.Final]
at org.hibernate.engine.jdbc.batch.internal.BatchImpl.lambda$performExecution$0(BatchImpl.java:276) ~[hibernate-core-7.3.2.Final.jar!/:7.3.2.Final]
at org.hibernate.engine.jdbc.mutation.internal.PreparedStatementGroupSingleTable.forEachStatement(PreparedStatementGroupSingleTable.java:63) ~[hibernate-core-7.3.2.Final.jar!/:7.3.2.Final]
at org.hibernate.engine.jdbc.batch.internal.BatchImpl.performExecution(BatchImpl.java:247) ~[hibernate-core-7.3.2.Final.jar!/:7.3.2.Final]
at org.hibernate.engine.jdbc.batch.internal.BatchImpl.execute(BatchImpl.java:226) ~[hibernate-core-7.3.2.Final.jar!/:7.3.2.Final]
at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.executeBatch(JdbcCoordinatorImpl.java:194) ~[hibernate-core-7.3.2.Final.jar!/:7.3.2.Final]
at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:658) ~[hibernate-core-7.3.2.Final.jar!/:7.3.2.Final]
at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:505) ~[hibernate-core-7.3.2.Final.jar!/:7.3.2.Final]
at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:381) ~[hibernate-core-7.3.2.Final.jar!/:7.3.2.Final]
at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:40) ~[hibernate-core-7.3.2.Final.jar!/:7.3.2.Final]
at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:138) ~[hibernate-core-7.3.2.Final.jar!/:7.3.2.Final]
at org.hibernate.internal.SessionImpl.fireFlush(SessionImpl.java:1453) ~[hibernate-core-7.3.2.Final.jar!/:7.3.2.Final]
at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:484) ~[hibernate-core-7.3.2.Final.jar!/:7.3.2.Final]
at org.hibernate.internal.SessionImpl.flushBeforeTransactionCompletion(SessionImpl.java:2080) ~[hibernate-core-7.3.2.Final.jar!/:7.3.2.Final]
at org.hibernate.internal.SessionImpl.beforeTransactionCompletion(SessionImpl.java:2002) ~[hibernate-core-7.3.2.Final.jar!/:7.3.2.Final]
at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.beforeTransactionCompletion(JdbcCoordinatorImpl.java:426) ~[hibernate-core-7.3.2.Final.jar!/:7.3.2.Final]
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.beforeCompletionCallback(JdbcResourceLocalTransactionCoordinatorImpl.java:166) ~[hibernate-core-7.3.2.Final.jar!/:7.3.2.Final]
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.commitNoRollbackOnly(JdbcResourceLocalTransactionCoordinatorImpl.java:251) ~[hibernate-core-7.3.2.Final.jar!/:7.3.2.Final]
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.commit(JdbcResourceLocalTransactionCoordinatorImpl.java:241) ~[hibernate-core-7.3.2.Final.jar!/:7.3.2.Final]
at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:89) ~[hibernate-core-7.3.2.Final.jar!/:7.3.2.Final]
at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:553) ~[spring-orm-7.0.7.jar!/:7.0.7]
... 25 common frames omitted
Caused by: java.sql.BatchUpdateException: (conn=10) Lock wait timeout exceeded; try restarting transaction
at org.mariadb.jdbc.export.ExceptionFactory.createBatchUpdate(ExceptionFactory.java:233) ~[mariadb-java-client-3.5.8.jar!/:na]
at org.mariadb.jdbc.client.impl.StandardClient.executePipeline(StandardClient.java:1179) ~[mariadb-java-client-3.5.8.jar!/:na]
at org.mariadb.jdbc.ClientPreparedStatement.executeBatchPipeline(ClientPreparedStatement.java:173) ~[mariadb-java-client-3.5.8.jar!/:na]
at org.mariadb.jdbc.ClientPreparedStatement.executeInternalPreparedBatch(ClientPreparedStatement.java:153) ~[mariadb-java-client-3.5.8.jar!/:na]
at org.mariadb.jdbc.BasePreparedStatement.executeBatchInternal(BasePreparedStatement.java:1700) ~[mariadb-java-client-3.5.8.jar!/:na]
at org.mariadb.jdbc.BasePreparedStatement.executeBatch(BasePreparedStatement.java:1680) ~[mariadb-java-client-3.5.8.jar!/:na]
at com.zaxxer.hikari.pool.ProxyStatement.executeBatch(ProxyStatement.java:128) ~[HikariCP-7.0.2.jar!/:na]
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeBatch(HikariProxyPreparedStatement.java) ~[HikariCP-7.0.2.jar!/:na]
at org.hibernate.engine.jdbc.batch.internal.BatchImpl.lambda$performExecution$0(BatchImpl.java:258) ~[hibernate-core-7.3.2.Final.jar!/:7.3.2.Final]
... 44 common frames omitted
Caused by: java.sql.SQLException: (conn=10) Lock wait timeout exceeded; try restarting transaction
at org.mariadb.jdbc.export.ExceptionFactory.createException(ExceptionFactory.java:329) ~[mariadb-java-client-3.5.8.jar!/:na]
at org.mariadb.jdbc.export.ExceptionFactory.create(ExceptionFactory.java:402) ~[mariadb-java-client-3.5.8.jar!/:na]
at org.mariadb.jdbc.message.ClientMessage.readPacket(ClientMessage.java:195) ~[mariadb-java-client-3.5.8.jar!/:na]
at org.mariadb.jdbc.client.impl.StandardClient.readPacket(StandardClient.java:1414) ~[mariadb-java-client-3.5.8.jar!/:na]
at org.mariadb.jdbc.client.impl.StandardClient.readResults(StandardClient.java:1353) ~[mariadb-java-client-3.5.8.jar!/:na]
at org.mariadb.jdbc.client.impl.StandardClient.readResponse(StandardClient.java:1272) ~[mariadb-java-client-3.5.8.jar!/:na]
at org.mariadb.jdbc.client.impl.StandardClient.executePipeline(StandardClient.java:1112) ~[mariadb-java-client-3.5.8.jar!/:na]
... 51 common frames omitted
Exception in thread "async-3" org.springframework.dao.DataAccessResourceFailureException: Hibernate transaction: Unable to rollback against JDBC Connection; (conn=11) Socket error
at org.springframework.jdbc.support.SQLExceptionSubclassTranslator.doTranslate(SQLExceptionSubclassTranslator.java:97)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:102)
at org.springframework.orm.jpa.hibernate.HibernateExceptionTranslator.convertHibernateAccessException(HibernateExceptionTranslator.java:144)
at org.springframework.orm.jpa.hibernate.HibernateExceptionTranslator.convertHibernateAccessException(HibernateExceptionTranslator.java:131)
at org.springframework.orm.jpa.hibernate.HibernateExceptionTranslator.translateExceptionIfPossible(HibernateExceptionTranslator.java:105)
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:223)
at org.springframework.orm.jpa.JpaTransactionManager.doRollback(JpaTransactionManager.java:584)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processRollback(AbstractPlatformTransactionManager.java:896)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.rollback(AbstractPlatformTransactionManager.java:865)
at org.springframework.transaction.interceptor.TransactionAspectSupport.completeTransactionAfterThrowing(TransactionAspectSupport.java:708)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:375)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:130)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:719)
at org.booklore.service.library.LibraryProcessingService$$SpringCGLIB$$0.rescanLibrary()
at org.booklore.service.library.LibraryService.lambda$rescanLibrary$1(LibraryService.java:214)
at org.springframework.security.concurrent.DelegatingSecurityContextRunnable.run(DelegatingSecurityContextRunnable.java:96)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.sql.SQLNonTransientConnectionException: (conn=11) Socket error
at org.mariadb.jdbc.export.ExceptionFactory.createException(ExceptionFactory.java:320)
at org.mariadb.jdbc.export.ExceptionFactory.create(ExceptionFactory.java:390)
at org.mariadb.jdbc.client.impl.StandardClient.sendQuery(StandardClient.java:1047)
at org.mariadb.jdbc.client.impl.StandardClient.execute(StandardClient.java:1194)
at org.mariadb.jdbc.client.impl.StandardClient.execute(StandardClient.java:1052)
at org.mariadb.jdbc.Connection.rollback(Connection.java:233)
at com.zaxxer.hikari.pool.ProxyConnection.rollback(ProxyConnection.java:386)
at com.zaxxer.hikari.pool.HikariProxyConnection.rollback(HikariProxyConnection.java)
at org.hibernate.resource.jdbc.internal.AbstractLogicalConnectionImplementor.rollback(AbstractLogicalConnectionImplementor.java:123)
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.rollback(JdbcResourceLocalTransactionCoordinatorImpl.java:284)
at org.hibernate.engine.transaction.internal.TransactionImpl.rollback(TransactionImpl.java:123)
at org.springframework.orm.jpa.JpaTransactionManager.doRollback(JpaTransactionManager.java:580)
... 13 more
Caused by: java.net.SocketException: Connection reset by peer
at java.base/sun.nio.ch.SocketDispatcher.write0(Native Method)
at java.base/sun.nio.ch.SocketDispatcher.write(Unknown Source)
at java.base/sun.nio.ch.NioSocketImpl.tryWrite(Unknown Source)
at java.base/sun.nio.ch.NioSocketImpl.implWrite(Unknown Source)
at java.base/sun.nio.ch.NioSocketImpl.write(Unknown Source)
at java.base/sun.nio.ch.NioSocketImpl$2.write(Unknown Source)
at java.base/java.net.Socket$SocketOutputStream.implWrite(Unknown Source)
at java.base/java.net.Socket$SocketOutputStream.write(Unknown Source)
at org.mariadb.jdbc.client.socket.Writer.writeSocket(Writer.java:855)
at org.mariadb.jdbc.client.socket.Writer.flush(Writer.java:709)
at org.mariadb.jdbc.message.client.QueryPacket.encode(QueryPacket.java:50)
at org.mariadb.jdbc.client.impl.StandardClient.sendQuery(StandardClient.java:1028)
... 22 more
Before submitting
All reactions