From aa02c578e1cb4341ce693d082031e8dce73ebdbc Mon Sep 17 00:00:00 2001 From: Guoliang Sun Date: Fri, 25 Oct 2024 10:48:44 +0800 Subject: [PATCH] KE-43831 Integrated Spring session cleanup in Kylin to prevent MySQL deadlock alerts --- gradle.properties | 2 +- .../web/http/JdbcHttpSessionConfiguration.java | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 2dfe8b668..2fb333b42 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 org.gradle.parallel=true -version=2.6.1-kylin-r4 +version=2.6.1-kylin-r5 group_id=org.springframework.session artifact_id=spring-session-core diff --git a/spring-session-jdbc/src/main/java/org/springframework/session/jdbc/config/annotation/web/http/JdbcHttpSessionConfiguration.java b/spring-session-jdbc/src/main/java/org/springframework/session/jdbc/config/annotation/web/http/JdbcHttpSessionConfiguration.java index 4d7c1a3cc..69de13538 100644 --- a/spring-session-jdbc/src/main/java/org/springframework/session/jdbc/config/annotation/web/http/JdbcHttpSessionConfiguration.java +++ b/spring-session-jdbc/src/main/java/org/springframework/session/jdbc/config/annotation/web/http/JdbcHttpSessionConfiguration.java @@ -42,6 +42,7 @@ import org.springframework.jdbc.support.lob.DefaultLobHandler; import org.springframework.jdbc.support.lob.LobHandler; import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.SchedulingConfigurer; import org.springframework.scheduling.config.ScheduledTaskRegistrar; import org.springframework.session.FlushMode; @@ -296,6 +297,14 @@ public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { JdbcHttpSessionConfiguration.this.cleanupCron); } + @Scheduled(cron = "${spring.session.jdbc.cleanup-cron-task:0 * * * * *}") + protected void cleanupSpringSession() { + String cleanFlag = System.getProperty("spring.session.jdbc.cleanup-flag"); + if (Boolean.parseBoolean(cleanFlag)) { + this.sessionRepository.cleanUpExpiredSessions(); + } + } + } }