This is an automated email from the ASF dual-hosted git repository.

peacewong pushed a commit to branch dev-1.3.2
in repository https://gitbox.apache.org/repos/asf/incubator-linkis.git


The following commit(s) were added to refs/heads/dev-1.3.2 by this push:
     new 44676701d Dev 1.3.2 fix cs remove by prefix (#4052)
44676701d is described below

commit 44676701d5476cc5643159240809af1b4157efc0
Author: Alexyang <[email protected]>
AuthorDate: Wed Dec 28 17:22:34 2022 +0800

    Dev 1.3.2 fix cs remove by prefix (#4052)
    
    * 1. cs-client - fix bug in initNodeCSInfo.
    2. cs-client - add method removeValueByKeyAndContextType.
    3. cs-server - add restful method 'removeAllValueByKeyAndContextType'.
    
    * context-service - remove method 'removeValueByKey' because there are 
already a method 'remove' with same function
    
    * linkis-gateway-server-support - fix backupInstance in ContextIdParserImpl
    
    * linkis-cs-server - remove duplicated method
    
    * linkis-cs-server - remove duplicated method
    
    * format code
---
 .../org/apache/linkis/cs/client/ContextClient.java | 12 ++++++++
 .../linkis/cs/client/http/HttpContextClient.java   | 14 +++++++++
 .../cs/client/service/CSNodeServiceImpl.java       |  2 +-
 .../cs/client/utils/ContextServerHttpConf.scala    |  3 ++
 .../org/apache/linkis/cs/client/test/Test.java     | 11 +++++++
 .../cs/contextcache/ContextCacheService.java       |  2 ++
 .../contextcache/DefaultContextCacheService.java   | 17 +++++++++++
 .../cache/cskey/ContextKeyValueContext.java        |  2 ++
 .../cache/cskey/ContextValueMapSet.java            |  4 +++
 .../cache/cskey/impl/ContextValueMapSetImpl.java   | 35 ++++++++++++++++++++++
 .../cskey/impl/DefaultContextKeyValueContext.java  | 11 +++++++
 .../cs/persistence/dao/ContextMapMapper.java       |  5 ++++
 .../cs/persistence/dao/impl/contextMapMapper.xml   |  9 ++++++
 .../persistence/ContextMapPersistence.java         |  2 ++
 .../impl/ContextMapPersistenceImpl.java            |  5 ++++
 .../cs/server/enumeration/ServiceMethod.java       |  1 +
 .../cs/server/restful/ContextRestfulApi.java       | 26 ++++++++++++++++
 .../linkis/cs/server/service/ContextService.java   |  3 ++
 .../cs/server/service/impl/ContextServiceImpl.java | 11 +++++++
 .../route/contextservice/ContextIdParserImpl.scala |  2 +-
 20 files changed, 175 insertions(+), 2 deletions(-)

diff --git 
a/linkis-public-enhancements/linkis-context-service/linkis-cs-client/src/main/java/org/apache/linkis/cs/client/ContextClient.java
 
b/linkis-public-enhancements/linkis-context-service/linkis-cs-client/src/main/java/org/apache/linkis/cs/client/ContextClient.java
index 735b18664..276df180e 100644
--- 
a/linkis-public-enhancements/linkis-context-service/linkis-cs-client/src/main/java/org/apache/linkis/cs/client/ContextClient.java
+++ 
b/linkis-public-enhancements/linkis-context-service/linkis-cs-client/src/main/java/org/apache/linkis/cs/client/ContextClient.java
@@ -136,11 +136,23 @@ public interface ContextClient extends Closeable {
 
   List<ContextHistory> searchHistory(ContextID contextID, String... keywords) 
throws ErrorException;
 
+  /**
+   * If you want to remove some type of key starting with keyPrefix, please 
make sure the keyPrefix
+   * is end up with '.'. In this way, you will not remove the value by mistake 
those node name
+   * contains your node name. eg : Suppose you hava a workflow with node1 and 
node1_xxx , you want
+   * to clear values of the type 'METADATA' and prefix 'node.node1', but this 
will also clear values
+   * of node1_xxx . So you can use the prefix 'node.node1.', which is safe.
+   *
+   * @throws ErrorException
+   */
   void removeAllValueByKeyPrefixAndContextType(
       ContextID contextID, ContextType contextType, String keyPrefix) throws 
ErrorException;
 
   void removeAllValueByKeyPrefix(ContextID contextID, String keyPrefix) throws 
ErrorException;
 
+  void removeAllValueByKeyAndContextType(
+      ContextID contextID, ContextType contextType, String keyStr) throws 
ErrorException;
+
   List<String> searchHAIDByTime(
       String createTimeStart,
       String createTimeEnd,
diff --git 
a/linkis-public-enhancements/linkis-context-service/linkis-cs-client/src/main/java/org/apache/linkis/cs/client/http/HttpContextClient.java
 
b/linkis-public-enhancements/linkis-context-service/linkis-cs-client/src/main/java/org/apache/linkis/cs/client/http/HttpContextClient.java
index bae8bd51a..f32bad39e 100644
--- 
a/linkis-public-enhancements/linkis-context-service/linkis-cs-client/src/main/java/org/apache/linkis/cs/client/http/HttpContextClient.java
+++ 
b/linkis-public-enhancements/linkis-context-service/linkis-cs-client/src/main/java/org/apache/linkis/cs/client/http/HttpContextClient.java
@@ -712,6 +712,20 @@ public class HttpContextClient extends 
AbstractContextClient {
     checkDWSResult(execute(action));
   }
 
+  @Override
+  public void removeAllValueByKeyAndContextType(
+      ContextID contextID, ContextType contextType, String key) throws 
ErrorException {
+    String contextIDStr = SerializeHelper.serializeContextID(contextID);
+    DefaultContextPostAction action =
+        
ContextPostActionBuilder.of(ContextServerHttpConf.removeAllValueByKeyAndContextTypeURL())
+            .with(ContextHTTPConstant.CONTEXT_ID_STR, contextIDStr)
+            .with(ContextHTTPConstant.CONTEXT_KEY_TYPE_STR, 
contextType.toString())
+            .with(ContextHTTPConstant.CONTEXT_KEY_STR, key)
+            .addHeader(ContextHTTPConstant.CONTEXT_ID_STR, contextIDStr)
+            .build();
+    checkDWSResult(execute(action));
+  }
+
   @Override
   public void removeAllValueByKeyPrefix(ContextID contextID, String keyPrefix)
       throws ErrorException {
diff --git 
a/linkis-public-enhancements/linkis-context-service/linkis-cs-client/src/main/java/org/apache/linkis/cs/client/service/CSNodeServiceImpl.java
 
b/linkis-public-enhancements/linkis-context-service/linkis-cs-client/src/main/java/org/apache/linkis/cs/client/service/CSNodeServiceImpl.java
index dd71168df..3f79011e0 100644
--- 
a/linkis-public-enhancements/linkis-context-service/linkis-cs-client/src/main/java/org/apache/linkis/cs/client/service/CSNodeServiceImpl.java
+++ 
b/linkis-public-enhancements/linkis-context-service/linkis-cs-client/src/main/java/org/apache/linkis/cs/client/service/CSNodeServiceImpl.java
@@ -55,7 +55,7 @@ public class CSNodeServiceImpl implements CSNodeService {
       ContextClient contextClient = 
ContextClientFactory.getOrCreateContextClient();
       ContextID contextID = SerializeHelper.deserializeContextID(contextIDStr);
       contextClient.removeAllValueByKeyPrefixAndContextType(
-          contextID, ContextType.METADATA, CSCommonUtils.NODE_PREFIX + 
ndeName);
+          contextID, ContextType.METADATA, CSCommonUtils.NODE_PREFIX + ndeName 
+ ".");
       logger.info("contextIDStr: {} and  nodeName: {} init cs info", 
contextIDStr, ndeName);
     } catch (Exception e) {
       logger.error("Failed to init node cs Info", e);
diff --git 
a/linkis-public-enhancements/linkis-context-service/linkis-cs-client/src/main/scala/org/apache/linkis/cs/client/utils/ContextServerHttpConf.scala
 
b/linkis-public-enhancements/linkis-context-service/linkis-cs-client/src/main/scala/org/apache/linkis/cs/client/utils/ContextServerHttpConf.scala
index e85a2980b..7aa3f0383 100644
--- 
a/linkis-public-enhancements/linkis-context-service/linkis-cs-client/src/main/scala/org/apache/linkis/cs/client/utils/ContextServerHttpConf.scala
+++ 
b/linkis-public-enhancements/linkis-context-service/linkis-cs-client/src/main/scala/org/apache/linkis/cs/client/utils/ContextServerHttpConf.scala
@@ -64,6 +64,9 @@ object ContextServerHttpConf {
   val removeAllValueByKeyPrefixAndContextTypeURL: String =
     urlPrefix + "/removeAllValueByKeyPrefixAndContextType"
 
+  val removeAllValueByKeyAndContextTypeURL: String =
+    urlPrefix + "/removeAllValueByKeyAndContextType"
+
   val removeAllValueByKeyPrefixURL: String = urlPrefix + 
"/removeAllValueByKeyPrefix"
 
   val searchContextIDByTime: String = urlPrefix + "/searchContextIDByTime"
diff --git 
a/linkis-public-enhancements/linkis-context-service/linkis-cs-client/src/test/java/org/apache/linkis/cs/client/test/Test.java
 
b/linkis-public-enhancements/linkis-context-service/linkis-cs-client/src/test/java/org/apache/linkis/cs/client/test/Test.java
index 257d2a4e6..b86ffbb9a 100644
--- 
a/linkis-public-enhancements/linkis-context-service/linkis-cs-client/src/test/java/org/apache/linkis/cs/client/test/Test.java
+++ 
b/linkis-public-enhancements/linkis-context-service/linkis-cs-client/src/test/java/org/apache/linkis/cs/client/test/Test.java
@@ -114,6 +114,17 @@ public class Test {
     context.setContextKeyAndValue(contextKeyValue);
     ContextValue myValue = context.getContextValue(contextKey);
     
System.out.println(SerializeHelper.serializeContextID(context.getContextID()));
+    contextClient.removeAllValueByKeyAndContextType(
+        context.getContextID(), contextKey.getContextType(), 
contextKey.getKey());
+    ContextValue delValue = context.getContextValue(contextKey);
+    if (null != delValue) {
+      System.err.println(
+          "contextValue : "
+              + myValue.getValue()
+              + " with key : "
+              + contextKey.getKey()
+              + " was not deleted.");
+    }
 
     List<String> idList = new ArrayList<>();
     idList.add(csid);
diff --git 
a/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/contextcache/ContextCacheService.java
 
b/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/contextcache/ContextCacheService.java
index ca2eed4d6..a37f1d3e1 100644
--- 
a/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/contextcache/ContextCacheService.java
+++ 
b/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/contextcache/ContextCacheService.java
@@ -55,4 +55,6 @@ public interface ContextCacheService {
   void removeByKeyPrefix(ContextID contextID, String preFix);
 
   void removeByKeyPrefix(ContextID contextID, String preFix, ContextType 
csType);
+
+  void removeByKey(ContextID contextID, String preFix, ContextType csType);
 }
diff --git 
a/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/contextcache/DefaultContextCacheService.java
 
b/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/contextcache/DefaultContextCacheService.java
index 5333b046d..f9227aef8 100644
--- 
a/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/contextcache/DefaultContextCacheService.java
+++ 
b/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/contextcache/DefaultContextCacheService.java
@@ -290,4 +290,21 @@ public class DefaultContextCacheService implements 
ContextCacheService {
           e);
     }
   }
+
+  @Override
+  public void removeByKey(ContextID contextID, String keyStr, ContextType 
csType) {
+    if (null == contextID || StringUtils.isBlank(keyStr) || null == csType) {
+      return;
+    }
+    try {
+      ContextIDValue contextIDValue = 
contextCache.getContextIDValue(contextID);
+      contextIDValue.getContextKeyValueContext().removeByKey(keyStr, csType);
+    } catch (Exception e) {
+      logger.error(
+          String.format(
+              "Failed to removeByKey contextID(%s) of key keyStr(%s) and 
csyTye(%s)",
+              contextID.getContextId(), keyStr, csType.name()),
+          e);
+    }
+  }
 }
diff --git 
a/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/contextcache/cache/cskey/ContextKeyValueContext.java
 
b/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/contextcache/cache/cskey/ContextKeyValueContext.java
index eadada79d..0c8080341 100644
--- 
a/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/contextcache/cache/cskey/ContextKeyValueContext.java
+++ 
b/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/contextcache/cache/cskey/ContextKeyValueContext.java
@@ -63,4 +63,6 @@ public interface ContextKeyValueContext {
   void removeByKeyPrefix(String preFix);
 
   void removeByKeyPrefix(String preFix, ContextType csType);
+
+  void removeByKey(String keyStr, ContextType csType);
 }
diff --git 
a/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/contextcache/cache/cskey/ContextValueMapSet.java
 
b/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/contextcache/cache/cskey/ContextValueMapSet.java
index 107cd772d..682430c88 100644
--- 
a/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/contextcache/cache/cskey/ContextValueMapSet.java
+++ 
b/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/contextcache/cache/cskey/ContextValueMapSet.java
@@ -48,5 +48,9 @@ public interface ContextValueMapSet {
 
   List<ContextKey> findByKeyPrefix(String preFix);
 
+  List<ContextKey> findByKey(String keyStr);
+
   List<ContextKey> findByKeyPrefix(String preFix, ContextType csType);
+
+  List<ContextKey> findByKey(String keyStr, ContextType csType);
 }
diff --git 
a/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/contextcache/cache/cskey/impl/ContextValueMapSetImpl.java
 
b/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/contextcache/cache/cskey/impl/ContextValueMapSetImpl.java
index 897274eb0..7ddb75dca 100644
--- 
a/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/contextcache/cache/cskey/impl/ContextValueMapSetImpl.java
+++ 
b/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/contextcache/cache/cskey/impl/ContextValueMapSetImpl.java
@@ -166,6 +166,24 @@ public class ContextValueMapSetImpl implements 
ContextValueMapSet {
     return contextKeyValueList;
   }
 
+  @Override
+  public List<ContextKey> findByKey(String keyStr) {
+    if (StringUtils.isBlank(keyStr)) {
+      return null;
+    }
+    List<ContextKey> contextKeyValueList = new ArrayList<>();
+    for (Map<String, ContextKeyValue> contextKeyValueMap : 
contextValueMapSet.values()) {
+      Iterator<String> iterator = contextKeyValueMap.keySet().iterator();
+      while (iterator.hasNext()) {
+        String key = iterator.next();
+        if (key.equals(keyStr)) {
+          contextKeyValueList.add(contextKeyValueMap.get(key).getContextKey());
+        }
+      }
+    }
+    return contextKeyValueList;
+  }
+
   @Override
   public List<ContextKey> findByKeyPrefix(String preFix, ContextType csType) {
     if (StringUtils.isBlank(preFix)) {
@@ -182,4 +200,21 @@ public class ContextValueMapSetImpl implements 
ContextValueMapSet {
     }
     return contextKeyValueList;
   }
+
+  @Override
+  public List<ContextKey> findByKey(String keyStr, ContextType csType) {
+    if (StringUtils.isBlank(keyStr)) {
+      return null;
+    }
+    Map<String, ContextKeyValue> contextValueMap = getContextValueMap(csType);
+    List<ContextKey> contextKeyValueList = new ArrayList<>();
+    Iterator<String> iterator = contextValueMap.keySet().iterator();
+    while (iterator.hasNext()) {
+      String key = iterator.next();
+      if (key.equals(keyStr)) {
+        contextKeyValueList.add(contextValueMap.get(key).getContextKey());
+      }
+    }
+    return contextKeyValueList;
+  }
 }
diff --git 
a/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/contextcache/cache/cskey/impl/DefaultContextKeyValueContext.java
 
b/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/contextcache/cache/cskey/impl/DefaultContextKeyValueContext.java
index 1924cea91..a3481d829 100644
--- 
a/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/contextcache/cache/cskey/impl/DefaultContextKeyValueContext.java
+++ 
b/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/contextcache/cache/cskey/impl/DefaultContextKeyValueContext.java
@@ -222,4 +222,15 @@ public class DefaultContextKeyValueContext implements 
ContextKeyValueContext {
       logger.warn("Remove keyValue by key preFix{} and csType{} ", preFix, 
csType);
     }
   }
+
+  @Override
+  public void removeByKey(String keyStr, ContextType csType) {
+    List<ContextKey> removeKeys = getContextValueMapSet().findByKey(keyStr, 
csType);
+    if (CollectionUtils.isNotEmpty(removeKeys)) {
+      for (ContextKey key : removeKeys) {
+        remove(key);
+      }
+      logger.warn("Remove keyValue by keyStr {} and csType{} ", keyStr, 
csType);
+    }
+  }
 }
diff --git 
a/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/persistence/dao/ContextMapMapper.java
 
b/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/persistence/dao/ContextMapMapper.java
index 9dfdaed23..515ba8759 100644
--- 
a/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/persistence/dao/ContextMapMapper.java
+++ 
b/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/persistence/dao/ContextMapMapper.java
@@ -74,6 +74,11 @@ public interface ContextMapMapper {
       @Param("contextType") ContextType contextType,
       @Param("keyPrefix") String keyPrefix);
 
+  void removeByKeyAndContextType(
+      @Param("contextID") ContextID contextID,
+      @Param("contextType") ContextType contextType,
+      @Param("keyStr") String keyStr);
+
   void removeByKeyPrefix(
       @Param("contextID") ContextID contextID, @Param("keyPrefix") String 
keyPrefix);
 }
diff --git 
a/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/persistence/dao/impl/contextMapMapper.xml
 
b/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/persistence/dao/impl/contextMapMapper.xml
index 489ca3230..603765d8e 100644
--- 
a/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/persistence/dao/impl/contextMapMapper.xml
+++ 
b/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/persistence/dao/impl/contextMapMapper.xml
@@ -156,4 +156,13 @@
         </where>
     </delete>
 
+    <delete id="removeByKeyAndContextType">
+        delete from linkis_ps_cs_context_map
+        <where>
+            <if test="#{contextID.contextId} !=null">context_id = 
#{contextID.contextId} and </if>
+            <if test="#{contextType} !=null">context_type = #{contextType} and 
</if>
+            <if test="#{keyStr} !=null">`key` = #{keyStr}</if>
+        </where>
+    </delete>
+
 </mapper>
\ No newline at end of file
diff --git 
a/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/persistence/persistence/ContextMapPersistence.java
 
b/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/persistence/persistence/ContextMapPersistence.java
index c2115d040..1adb15fa4 100644
--- 
a/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/persistence/persistence/ContextMapPersistence.java
+++ 
b/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/persistence/persistence/ContextMapPersistence.java
@@ -59,6 +59,8 @@ public interface ContextMapPersistence {
 
   void removeByKeyPrefix(ContextID contextID, ContextType contextType, String 
keyPrefix);
 
+  void removeByKey(ContextID contextID, ContextType contextType, String 
keyPrefix);
+
   List<ContextKeyValue> searchContextIDByTime(
       Date createTimeStart,
       Date createTimeEnd,
diff --git 
a/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/persistence/persistence/impl/ContextMapPersistenceImpl.java
 
b/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/persistence/persistence/impl/ContextMapPersistenceImpl.java
index c42ffe9f7..63f7007e8 100644
--- 
a/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/persistence/persistence/impl/ContextMapPersistenceImpl.java
+++ 
b/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/persistence/persistence/impl/ContextMapPersistenceImpl.java
@@ -234,6 +234,11 @@ public class ContextMapPersistenceImpl implements 
ContextMapPersistence {
     contextMapMapper.removeByKeyPrefixAndContextType(contextID, contextType, 
keyPrefix);
   }
 
+  @Override
+  public void removeByKey(ContextID contextID, ContextType contextType, String 
keyStr) {
+    contextMapMapper.removeByKeyAndContextType(contextID, contextType, keyStr);
+  }
+
   @Override
   public List<ContextKeyValue> searchContextIDByTime(
       Date createTimeStart,
diff --git 
a/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/server/enumeration/ServiceMethod.java
 
b/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/server/enumeration/ServiceMethod.java
index ad5e82e05..9faaf1a03 100644
--- 
a/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/server/enumeration/ServiceMethod.java
+++ 
b/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/server/enumeration/ServiceMethod.java
@@ -24,6 +24,7 @@ public enum ServiceMethod {
   SEARCH,
   REMOVE,
   REMOVEALL,
+  REMOVEVALUEBYKEY,
   UPDATE,
   RESET,
   SET,
diff --git 
a/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/server/restful/ContextRestfulApi.java
 
b/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/server/restful/ContextRestfulApi.java
index 62f9548c9..6573596d4 100644
--- 
a/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/server/restful/ContextRestfulApi.java
+++ 
b/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/server/restful/ContextRestfulApi.java
@@ -245,6 +245,32 @@ public class ContextRestfulApi implements CsRestfulParent {
     return generateResponse(answerJob, "");
   }
 
+  @ApiOperation(
+      value = "removeAllValueByKeyAndContextType",
+      notes = "remove all value by key and context type",
+      response = Message.class)
+  @ApiImplicitParams({
+    @ApiImplicitParam(name = "contextKeyType", required = true, dataType = 
"String"),
+    @ApiImplicitParam(name = "contextKey", required = true, dataType = 
"String")
+  })
+  @ApiOperationSupport(ignoreParameters = {"jsonNode"})
+  @RequestMapping(path = "removeAllValueByKeyAndContextType", method = 
RequestMethod.POST)
+  public Message removeAllValueByKeyAndContextType(
+      HttpServletRequest req, @RequestBody JsonNode jsonNode)
+      throws InterruptedException, CSErrorException, IOException, 
ClassNotFoundException {
+    ContextID contextID = getContextIDFromJsonNode(jsonNode);
+    String contextType = 
jsonNode.get(ContextHTTPConstant.CONTEXT_KEY_TYPE_STR).textValue();
+    String keyStr = 
jsonNode.get(ContextHTTPConstant.CONTEXT_KEY_STR).textValue();
+    HttpAnswerJob answerJob =
+        submitRestJob(
+            req,
+            ServiceMethod.REMOVEVALUEBYKEY,
+            contextID,
+            ContextType.valueOf(contextType),
+            keyStr);
+    return generateResponse(answerJob, "");
+  }
+
   @ApiOperation(
       value = "removeAllValueByKeyPrefix",
       notes = "remove all value by key prefix",
diff --git 
a/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/server/service/ContextService.java
 
b/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/server/service/ContextService.java
index 4dce58d81..d5bfd8954 100644
--- 
a/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/server/service/ContextService.java
+++ 
b/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/server/service/ContextService.java
@@ -59,6 +59,9 @@ public abstract class ContextService extends AbstractService {
   public abstract void removeAllValueByKeyPrefixAndContextType(
       ContextID contextID, ContextType contextType, String keyPrefix) throws 
CSErrorException;
 
+  public abstract void removeValueByKeyAndContextType(
+      ContextID contextID, ContextType contextType, String keyPrefix) throws 
CSErrorException;
+
   public abstract void removeAllValueByKeyPrefix(ContextID contextID, String 
keyPrefix)
       throws CSErrorException;
 
diff --git 
a/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/server/service/impl/ContextServiceImpl.java
 
b/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/server/service/impl/ContextServiceImpl.java
index 74b00b51e..27b44d2d3 100644
--- 
a/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/server/service/impl/ContextServiceImpl.java
+++ 
b/linkis-public-enhancements/linkis-context-service/linkis-cs-server/src/main/java/org/apache/linkis/cs/server/service/impl/ContextServiceImpl.java
@@ -255,6 +255,17 @@ public class ContextServiceImpl extends ContextService {
             contextID.getContextId(), contextType, keyPrefix));
   }
 
+  @Override
+  public void removeValueByKeyAndContextType(
+      ContextID contextID, ContextType contextType, String keyStr) throws 
CSErrorException {
+    contextCacheService.removeByKey(contextID, keyStr, contextType);
+    getPersistence().removeByKey(contextID, contextType, keyStr);
+    logger.info(
+        String.format(
+            "removeAllValueByKeyAndContextType, csId:%s,csType:%s,keyStr:%s",
+            contextID.getContextId(), contextType, keyStr));
+  }
+
   @Override
   public void removeAllValueByKeyPrefix(ContextID contextID, String keyPrefix)
       throws CSErrorException {
diff --git 
a/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-server-support/src/main/scala/org/apache/linkis/gateway/ujes/route/contextservice/ContextIdParserImpl.scala
 
b/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-server-support/src/main/scala/org/apache/linkis/gateway/ujes/route/contextservice/ContextIdParserImpl.scala
index 02f4a7132..ea53808cc 100644
--- 
a/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-server-support/src/main/scala/org/apache/linkis/gateway/ujes/route/contextservice/ContextIdParserImpl.scala
+++ 
b/linkis-spring-cloud-services/linkis-service-gateway/linkis-gateway-server-support/src/main/scala/org/apache/linkis/gateway/ujes/route/contextservice/ContextIdParserImpl.scala
@@ -56,7 +56,7 @@ class ContextIdParserImpl extends ContextIDParser with 
Logging {
       } else {
         logger.error(s"parse HAID instance invalid. haIDKey : " + contextId)
       }
-      val backupInstance = getInstanceByAlias(haContextID.getInstance())
+      val backupInstance = getInstanceByAlias(haContextID.getBackupInstance())
       if (null != backupInstance) {
         instances.add(backupInstance.getInstance)
       } else {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to