You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@linkis.apache.org by pe...@apache.org on 2023/05/19 04:10:34 UTC
[linkis] branch dev-1.4.0 updated: [Gateway]All backend caches should be cleared when the user logs out (#4548)
This is an automated email from the ASF dual-hosted git repository.
peacewong pushed a commit to branch dev-1.4.0
in repository https://gitbox.apache.org/repos/asf/linkis.git
The following commit(s) were added to refs/heads/dev-1.4.0 by this push:
new e4de7c992 [Gateway]All backend caches should be cleared when the user logs out (#4548)
e4de7c992 is described below
commit e4de7c992888ee9ea7fd32c4d6915eadbd8c1795
Author: peacewong <wp...@gmail.com>
AuthorDate: Fri May 19 12:10:27 2023 +0800
[Gateway]All backend caches should be cleared when the user logs out (#4548)
* Fix log out cookie not to clear
* Task progress exceeding 1 will give fake progress
---
.../linkis/governance/common/conf/GovernanceCommonConf.scala | 2 ++
.../executor/service/TaskExecutionServiceImpl.scala | 8 +++-----
.../linkis/entrance/persistence/QueryPersistenceManager.java | 6 ++++++
.../spark/executor/SparkEngineConnExecutor.scala | 4 +++-
.../org/apache/linkis/gateway/security/GatewaySSOUtils.scala | 12 +++++++++++-
.../org/apache/linkis/gateway/security/UserRestful.scala | 10 +++++++---
6 files changed, 32 insertions(+), 10 deletions(-)
diff --git a/linkis-computation-governance/linkis-computation-governance-common/src/main/scala/org/apache/linkis/governance/common/conf/GovernanceCommonConf.scala b/linkis-computation-governance/linkis-computation-governance-common/src/main/scala/org/apache/linkis/governance/common/conf/GovernanceCommonConf.scala
index 7d34e9d40..bed2d3c0c 100644
--- a/linkis-computation-governance/linkis-computation-governance-common/src/main/scala/org/apache/linkis/governance/common/conf/GovernanceCommonConf.scala
+++ b/linkis-computation-governance/linkis-computation-governance-common/src/main/scala/org/apache/linkis/governance/common/conf/GovernanceCommonConf.scala
@@ -75,6 +75,8 @@ object GovernanceCommonConf {
val ERROR_CODE_DESC_LEN =
CommonVars("linkis.error.code.desc.len", 512, "Error code description maximum length").getValue
+ val FAKE_PROGRESS: Float = CommonVars[Float]("linkis.job.fake.progress", 0.99f).getValue
+
def getEngineEnvValue(envKey: String): String = {
CommonVars(envKey, "").getValue
}
diff --git a/linkis-computation-governance/linkis-engineconn/linkis-computation-engineconn/src/main/scala/org/apache/linkis/engineconn/computation/executor/service/TaskExecutionServiceImpl.scala b/linkis-computation-governance/linkis-engineconn/linkis-computation-engineconn/src/main/scala/org/apache/linkis/engineconn/computation/executor/service/TaskExecutionServiceImpl.scala
index a02ec3daf..80903ef57 100644
--- a/linkis-computation-governance/linkis-engineconn/linkis-computation-engineconn/src/main/scala/org/apache/linkis/engineconn/computation/executor/service/TaskExecutionServiceImpl.scala
+++ b/linkis-computation-governance/linkis-engineconn/linkis-computation-engineconn/src/main/scala/org/apache/linkis/engineconn/computation/executor/service/TaskExecutionServiceImpl.scala
@@ -501,12 +501,10 @@ class TaskExecutionServiceImpl
if (ExecutionNodeStatus.isCompleted(task.getStatus)) {
response = ResponseTaskProgress(taskID, 1.0f, null)
} else {
+ val progress = executor.progress(taskID)
+ logger.info("The latest progress {} of the task id {} is:", progress, taskID)
response = Utils.tryQuietly(
- ResponseTaskProgress(
- taskID,
- executor.progress(taskID),
- executor.getProgressInfo(taskID)
- )
+ ResponseTaskProgress(taskID, progress, executor.getProgressInfo(taskID))
)
}
} else {
diff --git a/linkis-computation-governance/linkis-entrance/src/main/java/org/apache/linkis/entrance/persistence/QueryPersistenceManager.java b/linkis-computation-governance/linkis-entrance/src/main/java/org/apache/linkis/entrance/persistence/QueryPersistenceManager.java
index 39964fdad..44966fc1f 100644
--- a/linkis-computation-governance/linkis-entrance/src/main/java/org/apache/linkis/entrance/persistence/QueryPersistenceManager.java
+++ b/linkis-computation-governance/linkis-entrance/src/main/java/org/apache/linkis/entrance/persistence/QueryPersistenceManager.java
@@ -23,6 +23,7 @@ import org.apache.linkis.entrance.cli.heartbeat.CliHeartbeatMonitor;
import org.apache.linkis.entrance.cs.CSEntranceHelper;
import org.apache.linkis.entrance.execute.EntranceJob;
import org.apache.linkis.entrance.log.FlexibleErrorCodeManager;
+import org.apache.linkis.governance.common.conf.GovernanceCommonConf;
import org.apache.linkis.governance.common.entity.job.JobRequest;
import org.apache.linkis.protocol.engine.JobProgressInfo;
import org.apache.linkis.scheduler.executer.OutputExecuteResponse;
@@ -169,6 +170,11 @@ public class QueryPersistenceManager extends PersistenceManager {
JobRequest jobRequest = null;
if (job.isCompleted()) {
job.setProgress(1);
+ } else if (job.getProgress() >= 1 && job instanceof EntranceJob) {
+ job.setProgress(GovernanceCommonConf.FAKE_PROGRESS());
+ ((EntranceJob) job)
+ .getJobRequest()
+ .setProgress(String.valueOf(GovernanceCommonConf.FAKE_PROGRESS()));
}
try {
jobRequest = this.entranceContext.getOrCreateEntranceParser().parseToJobRequest(job);
diff --git a/linkis-engineconn-plugins/spark/src/main/scala/org/apache/linkis/engineplugin/spark/executor/SparkEngineConnExecutor.scala b/linkis-engineconn-plugins/spark/src/main/scala/org/apache/linkis/engineplugin/spark/executor/SparkEngineConnExecutor.scala
index 4c4a7204f..2264db61f 100644
--- a/linkis-engineconn-plugins/spark/src/main/scala/org/apache/linkis/engineplugin/spark/executor/SparkEngineConnExecutor.scala
+++ b/linkis-engineconn-plugins/spark/src/main/scala/org/apache/linkis/engineplugin/spark/executor/SparkEngineConnExecutor.scala
@@ -33,6 +33,7 @@ import org.apache.linkis.engineplugin.spark.extension.{
SparkPreExecutionHook
}
import org.apache.linkis.engineplugin.spark.utils.JobProgressUtil
+import org.apache.linkis.governance.common.conf.GovernanceCommonConf
import org.apache.linkis.governance.common.exception.LinkisJobRetryException
import org.apache.linkis.governance.common.utils.JobUtils
import org.apache.linkis.manager.common.entity.enumeration.NodeStatus
@@ -169,7 +170,8 @@ abstract class SparkEngineConnExecutor(val sc: SparkContext, id: Long)
val newProgress =
(engineExecutionContext.getCurrentParagraph * 1f - 1f) / engineExecutionContext.getTotalParagraph + JobProgressUtil
.progress(sc, jobGroup) / engineExecutionContext.getTotalParagraph
- val normalizedProgress = if (newProgress >= 1) newProgress - 0.1f else newProgress
+ val normalizedProgress =
+ if (newProgress >= 1) GovernanceCommonConf.FAKE_PROGRESS else newProgress
val oldProgress = ProgressUtils.getOldProgress(this.engineExecutionContext)
if (normalizedProgress < oldProgress) oldProgress
else {
diff --git a/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-core/src/main/scala/org/apache/linkis/gateway/security/GatewaySSOUtils.scala b/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-core/src/main/scala/org/apache/linkis/gateway/security/GatewaySSOUtils.scala
index 675944013..2d696d841 100644
--- a/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-core/src/main/scala/org/apache/linkis/gateway/security/GatewaySSOUtils.scala
+++ b/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-core/src/main/scala/org/apache/linkis/gateway/security/GatewaySSOUtils.scala
@@ -113,7 +113,17 @@ object GatewaySSOUtils extends Logging {
def removeLoginUser(gatewayContext: GatewayContext): Unit = {
SSOUtils.removeLoginUser(gatewayContext.getRequest.getCookies.asScala.flatMap(_._2).toArray)
- SSOUtils.removeLoginUserByAddCookie(c => gatewayContext.getResponse.addCookie(c))
+ SSOUtils.removeLoginUserByAddCookie(c => {
+ if (cookieDomainSetupSwitch) {
+ val host = gatewayContext.getRequest.getHeaders.get("Host")
+ if (host != null && host.nonEmpty) {
+ c.setDomain(
+ getCookieDomain(host.head, GatewayConfiguration.GATEWAY_DOMAIN_LEVEL.getValue)
+ )
+ }
+ }
+ gatewayContext.getResponse.addCookie(c)
+ })
}
def updateLastAccessTime(gatewayContext: GatewayContext): Unit =
diff --git a/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-core/src/main/scala/org/apache/linkis/gateway/security/UserRestful.scala b/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-core/src/main/scala/org/apache/linkis/gateway/security/UserRestful.scala
index 6e3aca6c9..b0f42f9ad 100644
--- a/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-core/src/main/scala/org/apache/linkis/gateway/security/UserRestful.scala
+++ b/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-core/src/main/scala/org/apache/linkis/gateway/security/UserRestful.scala
@@ -238,9 +238,13 @@ abstract class UserPwdAbstractUserRestful extends AbstractUserRestful with Loggi
def clearExpireCookie(gatewayContext: GatewayContext): Unit = {
val cookies =
gatewayContext.getRequest.getCookies.values().asScala.flatMap(cookie => cookie).toArray
- val expireCookies = cookies.filter(cookie =>
- cookie.getName.equals(ServerConfiguration.LINKIS_SERVER_SESSION_TICKETID_KEY.getValue)
- )
+ val expireCookies = cookies.filter { cookie =>
+ cookie.getName.equals(
+ ServerConfiguration.LINKIS_SERVER_SESSION_TICKETID_KEY.getValue
+ ) || cookie.getName.equals(
+ ServerConfiguration.LINKIS_SERVER_SESSION_PROXY_TICKETID_KEY.getValue
+ )
+ }
val host = gatewayContext.getRequest.getHeaders.get("Host")
if (host != null && host.nonEmpty) {
val maxDomainLevel = host.head.split("\\.").length
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@linkis.apache.org
For additional commands, e-mail: commits-help@linkis.apache.org