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