Testing-Game-SAD-2023 / A13

Versione migliorativa sviluppata a partire dal progetto A10-2024 con integrazione del repository A7
0 stars 1 forks source link

Perdita di connessione con il database degli utenti #8

Open PorfirioTramontana opened 3 months ago

PorfirioTramontana commented 3 months ago

In alcune occasioni il database degli utenti autenticati (t23-g1-db) riceve uno Shutdown e viene chiuso. Il problema è sistematico ma non sono stato ancora in grado di riprodurre la causa specifica che lo innesca.

A seguito di questa chiusura le API del container t23-g1-app-1 non riescono più a stabilirvi una connessione, nemmeno dopo un riavvio del database o del servizio. In seguito ad ogni tentativo di riavvio del servizio, esso va in crash per java.sql.SQLSyntaxErrorException: Unknown database 'STUDENTSREPO'. Al contrario il db riesce a riavviarsi senza problemi.

Log t23-g1-db-1 (Log del database dopo un riavvio) 2024-05-24 11:35:53 2024-05-24T09:35:53.452308Z 0 [System] [MY-015015] [Server] MySQL Server - start. 2024-05-24 11:35:53 2024-05-24T09:35:53.644273Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.4.0) starting as process 1 2024-05-24 11:35:53 2024-05-24T09:35:53.650836Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. 2024-05-24 11:35:53 2024-05-24T09:35:53.831085Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended. 2024-05-24 11:35:54 2024-05-24T09:35:54.088325Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed. 2024-05-24 11:35:54 2024-05-24T09:35:54.088358Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel. 2024-05-24 11:35:54 2024-05-24T09:35:54.094164Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory. 2024-05-24 11:35:54 2024-05-24T09:35:54.122790Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.4.0' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server - GPL. 2024-05-24 11:35:54 2024-05-24T09:35:54.378003Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock

Log t23-g1-app-1 (Log del servizio che non riesce a trovare la connessione del database e cade)

2024-05-24 11:27:06 2024-05-24 09:27:06.436 WARN 1 --- [nio-8080-exec-5] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 0, SQLState: 42000 2024-05-24 11:27:06 2024-05-24 09:27:06.436 ERROR 1 --- [nio-8080-exec-5] o.h.engine.jdbc.spi.SqlExceptionHelper : HikariPool-1 - Connection is not available, request timed out after 30001ms. 2024-05-24 11:27:06 2024-05-24 09:27:06.436 WARN 1 --- [nio-8080-exec-5] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 1049, SQLState: 42000 2024-05-24 11:27:06 2024-05-24 09:27:06.436 ERROR 1 --- [nio-8080-exec-5] o.h.engine.jdbc.spi.SqlExceptionHelper : Unknown database 'STUDENTSREPO' 2024-05-24 11:27:06 2024-05-24 09:27:06.443 ERROR 1 --- [nio-8080-exec-5] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.DataAccessResourceFailureException: Unable to acquire JDBC Connection; nested exception is org.hibernate.exception.JDBCConnectionException: Unable to acquire JDBC Connection] with root cause 2024-05-24 11:27:06 2024-05-24 11:27:06 java.sql.SQLSyntaxErrorException: Unknown database 'STUDENTSREPO' 2024-05-24 11:27:06 at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120) ~[mysql-connector-j-8.0.31.jar!/:8.0.31] 2024-05-24 11:27:06 at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) ~[mysql-connector-j-8.0.31.jar!/:8.0.31] 2024-05-24 11:27:06 at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:828) ~[mysql-connector-j-8.0.31.jar!/:8.0.31] 2024-05-24 11:27:06 at com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:448) ~[mysql-connector-j-8.0.31.jar!/:8.0.31] 2024-05-24 11:27:06 at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:241) ~[mysql-connector-j-8.0.31.jar!/:8.0.31] 2024-05-24 11:27:06 at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198) ~[mysql-connector-j-8.0.31.jar!/:8.0.31] 2024-05-24 11:27:06 at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138) ~[HikariCP-4.0.3.jar!/:na] 2024-05-24 11:27:06 at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:364) ~[HikariCP-4.0.3.jar!/:na] 2024-05-24 11:27:06 at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206) ~[HikariCP-4.0.3.jar!/:na] 2024-05-24 11:27:06 at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:476) ~[HikariCP-4.0.3.jar!/:na] 2024-05-24 11:27:06 at com.zaxxer.hikari.pool.HikariPool.access$100(HikariPool.java:71) ~[HikariCP-4.0.3.jar!/:na] 2024-05-24 11:27:06 at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:726) ~[HikariCP-4.0.3.jar!/:na] 2024-05-24 11:27:06 at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:712) ~[HikariCP-4.0.3.jar!/:na] 2024-05-24 11:27:06 at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na] 2024-05-24 11:27:06 at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[na:na] 2024-05-24 11:27:06 at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[na:na] 2024-05-24 11:27:06 at java.base/java.lang.Thread.run(Thread.java:840) ~[na:na] 2024-05-24 11:27:06

docker-compose.yml (contiene già una clausola di riavvio automatico del db)

version: '3.1'

services: app: build: . expose:

networks: global-network: external: true

PorfirioTramontana commented 3 months ago

Una reinstallazione manuale del solo container 23 consente di rimettere in piedi il sistema, ma con la perdita di tutto il database degli utenti: Il problema è quindi confinato a questi container.

cd "./T23-G1" call mvn package docker compose up -d --build