This is an automated email from the ASF dual-hosted git repository. xxyu pushed a commit to branch kylin5 in repository https://gitbox.apache.org/repos/asf/kylin.git
commit ea2efd9e7342affeb8db7729e5c6006c5833e8ef Author: cli2 <ss_leec...@pku.edu.cn> AuthorDate: Thu Dec 1 10:53:13 2022 +0800 [KYLIN-5310] fix spring session timeout config not work issue when the session store-type is jdbc --- .../java/org/apache/kylin/common/KylinConfigBase.java | 5 +++++ .../apache/kylin/rest/controller/NUserController.java | 16 ++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/src/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java b/src/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java index dec30004b8..c1a6e84bb3 100644 --- a/src/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java +++ b/src/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java @@ -2931,6 +2931,11 @@ public abstract class KylinConfigBase implements Serializable { return getOptional("spring.session.store-type", ""); } + + public int getJdbcSessionMaxInactiveInterval() { + return Integer.parseInt(getOptional("spring.session.timeout", "3600")); + } + public int getCapacitySampleRows() { return Integer.parseInt(getOptional("kylin.capacity.sample-rows", "1000")); } diff --git a/src/metadata-server/src/main/java/org/apache/kylin/rest/controller/NUserController.java b/src/metadata-server/src/main/java/org/apache/kylin/rest/controller/NUserController.java index 5321112578..4dee368683 100644 --- a/src/metadata-server/src/main/java/org/apache/kylin/rest/controller/NUserController.java +++ b/src/metadata-server/src/main/java/org/apache/kylin/rest/controller/NUserController.java @@ -105,6 +105,10 @@ import com.google.common.collect.Sets; import io.swagger.annotations.ApiOperation; import lombok.SneakyThrows; import lombok.val; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpServletRequest; @Controller @RequestMapping(value = "/api/user", produces = { HTTP_VND_APACHE_KYLIN_JSON }) @@ -475,6 +479,7 @@ public class NUserController extends NBasicController implements ApplicationList @ResponseBody public EnvelopeResponse<UserDetails> authenticate() { EnvelopeResponse<UserDetails> response = authenticatedUser(); + checkSessionStoreType(KylinConfig.getInstanceFromEnv()); logger.debug("User login: {}", response.getData()); return response; } @@ -633,4 +638,15 @@ public class NUserController extends NBasicController implements ApplicationList throw new KylinException(REPEATED_PARAMETER, "authorities"); } } + + private void checkSessionStoreType(KylinConfig env) { + String type = env.getSpringStoreType(); + HttpServletRequest request = + ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())) + .getRequest(); + //todo other session store-type + if (type.equals("jbdc")) { + request.getSession().setMaxInactiveInterval(env.getJdbcSessionMaxInactiveInterval()); + } + } }