You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@linkis.apache.org by GitBox <gi...@apache.org> on 2022/08/08 14:05:20 UTC

[GitHub] [incubator-linkis] ws00428637 opened a new pull request, #2639: Add an engineconn-plugin for Trino

ws00428637 opened a new pull request, #2639:
URL: https://github.com/apache/incubator-linkis/pull/2639

   <!--
   Thank you for sending the PR! We appreciate you spending the time to work on these changes.
   You can learn more about contributing to Apache Linkis here: https://linkis.apache.org/community/how-to-contribute
   Happy contributing!
   -->
   
   ### What is the purpose of the change
   
   Add an engineconn-plugin for Trino.
   
   ### Related issues/PRs
   
   Related issues: #2409
   
   
   ### Brief change log
   
   - Define an engineconn-plugin for Trino.
   
   
   ### Checklist
   
   - [x] I have read the [Contributing Guidelines on pull requests](https://github.com/facebook/docusaurus/blob/main/CONTRIBUTING.md#pull-requests).
   - [x] I have explained the need for this PR and the problem it solves
   - [x] I have explained the changes or the new features added to this PR
   - [x] I have added tests corresponding to this change
   - [x] I have updated the documentation to reflect this change
   - [x] I have verified that this change is backward compatible (If not, please discuss on the [Linkis mailing list](https://linkis.apache.org/community/how-to-subscribe) first)
   - [] **If this is a code change**: I have written unit tests to fully verify the new behavior.
   
   
   
   <!--
   
   Note
   
   1. Mark the PR title as `[WIP] title` until it's ready to be reviewed.
      如果PR还未准备好被review,请在标题上添加[WIP]标识(WIP work in progress)
   
   2. Always add/update tests for any changes unless you have a good reason.
      除非您有充分的理由,否则任何修改都需要添加/更新测试
      
   3. Always update the documentation to reflect the changes made in the PR.
      始终更新文档以反映 PR 中所做的更改  
      
   4. After the PR is submitted, please pay attention to the execution result of git action check. 
      If there is any failure, please adjust it in time
      PR提交后,请关注git action check 执行结果,关键的check失败时,请及时修正
      
   5. Before the pr is merged, if the commit is missing, you can continue to commit the code
       在未合并前,如果提交有遗漏,您可以继续提交代码 
   
   6. After you submit PR, you can add assistant WeChat, the WeChat QR code is 
      https://user-images.githubusercontent.com/7869972/176336986-d6b9be8f-d1d3-45f1-aa45-8e6adf5dd244.png 
      您提交pr后,可以添加助手微信,微信二维码为
      https://user-images.githubusercontent.com/7869972/176336986-d6b9be8f-d1d3-45f1-aa45-8e6adf5dd244.png
   
   -->
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@linkis.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@linkis.apache.org
For additional commands, e-mail: notifications-help@linkis.apache.org


[GitHub] [incubator-linkis] casionone commented on a diff in pull request #2639: Add an engineconn-plugin for Trino

Posted by GitBox <gi...@apache.org>.
casionone commented on code in PR #2639:
URL: https://github.com/apache/incubator-linkis/pull/2639#discussion_r942055443


##########
linkis-engineconn-plugins/trino/src/main/scala/org/apache/linkis/engineplugin/trino/conf/TrinoConfiguration.scala:
##########
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.linkis.engineplugin.trino.conf
+
+import org.apache.linkis.common.conf.{ByteType, CommonVars}
+
+import java.lang
+
+object TrinoConfiguration {
+
+  val ENGINE_CONCURRENT_LIMIT = CommonVars[Int]("wds.linkis.engineconn.concurrent.limit", 100)
+
+  val ENTRANCE_MAX_JOB_INSTANCE = CommonVars[Int]("wds.linkis.entrance.max.job.instance", 100)
+  val ENTRANCE_PROTECTED_JOB_INSTANCE = CommonVars[Int]("wds.linkis.entrance.protected.job.instance", 0)
+  val ENTRANCE_RESULTS_MAX_CACHE = CommonVars("wds.linkis.trino.resultSet.cache.max", new ByteType("512k"))
+
+  val DEFAULT_LIMIT = CommonVars[Int]("wds.linkis.trino.default.limit", 5000)
+
+  val TRINO_HTTP_CONNECT_TIME_OUT = CommonVars[java.lang.Long]("wds.linkis.trino.http.connectTimeout", new lang.Long(60)) //seconds
+  val TRINO_HTTP_READ_TIME_OUT = CommonVars[java.lang.Long]("wds.linkis.trino.http.readTimeout", new lang.Long(60))
+
+  val TRINO_URL = CommonVars[String]("wds.linkis.trino.url", "http://127.0.0.1:8080")
+  val TRINO_USER = CommonVars[String]("wds.linkis.trino.user", null)
+  val TRINO_PASSWORD = CommonVars[String]("wds.linkis.trino.password", null)
+  val TRINO_PASSWORD_CMD = CommonVars[String]("wds.linkis.trino.passwordCmd", null)
+  val TRINO_CATALOG = CommonVars[String]("wds.linkis.trino.catalog", "system")
+  val TRINO_SCHEMA = CommonVars[String]("wds.linkis.trino.schema", "")
+  val TRINO_SOURCE = CommonVars[String]("wds.linkis.trino.source", "global")
+
+  val TRINO_SSL_INSECURED = CommonVars[Boolean]("wds.linkis.trino.ssl.insecured", false)
+  val TRINO_SSL_KEYSTORE = CommonVars[String]("wds.linkis.trino.ssl.keystore", null)
+  val TRINO_SSL_KEYSTORE_TYPE = CommonVars[String]("wds.linkis.trino.ssl.keystore.type", null)
+  val TRINO_SSL_KEYSTORE_PASSWORD = CommonVars[String]("wds.linkis.trino.ssl.keystore.password", null)
+  val TRINO_SSL_TRUSTSTORE = CommonVars[String]("wds.linkis.trino.ssl.truststore", null)
+  val TRINO_SSL_TRUSTSTORE_TYPE = CommonVars[String]("wds.linkis.trino.ssl.truststore.type", null)
+  val TRINO_SSL_TRUSTSTORE_PASSWORD = CommonVars[String]("wds.linkis.trino.ssl.truststore.password", null)
+
+  val TRINO_FORBID_GRANT = CommonVars[Boolean]("wds.linkis.trino.forbid.grant", false)
+  val TRINO_FORBID_MODIFY_SCHEMA = CommonVars[Boolean]("wds.linkis.trino.forbid.modifySchema", false)

Review Comment:
   default value recommend true, not allow?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@linkis.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@linkis.apache.org
For additional commands, e-mail: notifications-help@linkis.apache.org


[GitHub] [incubator-linkis] casionone commented on a diff in pull request #2639: Add an engineconn-plugin for Trino

Posted by GitBox <gi...@apache.org>.
casionone commented on code in PR #2639:
URL: https://github.com/apache/incubator-linkis/pull/2639#discussion_r940844778


##########
linkis-engineconn-plugins/trino/src/main/scala/org/apache/linkis/engineplugin/trino/executor/TrinoEngineConnExecutor.scala:
##########
@@ -0,0 +1,406 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.linkis.engineplugin.trino.executor
+
+import com.google.common.cache.{Cache, CacheBuilder}
+import io.trino.client._
+import okhttp3.OkHttpClient
+import org.apache.commons.io.IOUtils
+import org.apache.commons.lang.exception.ExceptionUtils
+import org.apache.commons.lang3.StringUtils
+import org.apache.linkis.common.log.LogUtils
+import org.apache.linkis.common.utils.{OverloadUtils, Utils}
+import org.apache.linkis.engineconn.common.conf.{EngineConnConf, EngineConnConstant}
+import org.apache.linkis.engineconn.computation.executor.entity.EngineConnTask
+import org.apache.linkis.engineconn.computation.executor.execute.{ConcurrentComputationExecutor, EngineExecutionContext}
+import org.apache.linkis.engineconn.core.EngineConnObject
+import org.apache.linkis.engineplugin.trino.conf.TrinoConfiguration._
+import org.apache.linkis.engineplugin.trino.conf.TrinoEngineConfig
+import org.apache.linkis.engineplugin.trino.exception.{TrinoClientException, TrinoGrantmaException, TrinoModifySchemaException, TrinoStateInvalidException}
+import org.apache.linkis.engineplugin.trino.interceptor.PasswordInterceptor
+import org.apache.linkis.engineplugin.trino.password.{CommandPasswordCallback, StaticPasswordCallback}
+import org.apache.linkis.engineplugin.trino.socket.SocketChannelSocketFactory
+import org.apache.linkis.engineplugin.trino.utils.SqlCodeParser
+import org.apache.linkis.governance.common.paser.SQLCodeParser
+import org.apache.linkis.manager.common.entity.resource.{CommonNodeResource, LoadResource, NodeResource}
+import org.apache.linkis.manager.engineplugin.common.conf.EngineConnPluginConf
+import org.apache.linkis.manager.label.entity.Label
+import org.apache.linkis.manager.label.entity.engine.{EngineTypeLabel, UserCreatorLabel}
+import org.apache.linkis.protocol.engine.JobProgressInfo
+import org.apache.linkis.rpc.Sender
+import org.apache.linkis.scheduler.executer.{ErrorExecuteResponse, ExecuteResponse, SuccessExecuteResponse}
+import org.apache.linkis.storage.domain.Column
+import org.apache.linkis.storage.resultset.ResultSetFactory
+import org.apache.linkis.storage.resultset.table.{TableMetaData, TableRecord}
+import org.springframework.util.CollectionUtils
+
+import java.net.URI
+import java.util
+import java.util.concurrent.{ConcurrentHashMap, TimeUnit}
+import java.util._
+import java.util.function.Supplier
+import javax.security.auth.callback.PasswordCallback
+import scala.collection.JavaConverters._
+
+class TrinoEngineConnExecutor(override val outputPrintLimit: Int, val id: Int) extends ConcurrentComputationExecutor(outputPrintLimit) {
+
+  private val executorLabels: util.List[Label[_]] = new util.ArrayList[Label[_]](2)
+
+  private val okHttpClientCache: util.Map[String, OkHttpClient] = new ConcurrentHashMap[String, OkHttpClient]()
+
+  private val statementClientCache: util.Map[String, StatementClient] = new ConcurrentHashMap[String, StatementClient]()
+
+  private val clientSessionCache: Cache[String, ClientSession] = CacheBuilder.newBuilder()
+    .expireAfterAccess(EngineConnConf.ENGINE_TASK_EXPIRE_TIME.getValue, TimeUnit.MILLISECONDS)
+    .maximumSize(EngineConnConstant.MAX_TASK_NUM).build()
+
+  private val buildOkHttpClient = new util.function.Function[String, OkHttpClient] {
+    override def apply(user: String): OkHttpClient = {
+      val builder = new OkHttpClient.Builder()
+        .socketFactory(new SocketChannelSocketFactory)
+        .connectTimeout(TRINO_HTTP_CONNECT_TIME_OUT.getValue, TimeUnit.SECONDS)
+        .readTimeout(TRINO_HTTP_READ_TIME_OUT.getValue, TimeUnit.SECONDS)
+
+      /* create password interceptor */
+      val password = TRINO_PASSWORD.getValue
+      val passwordCmd = TRINO_PASSWORD_CMD.getValue
+      if (StringUtils.isNotBlank(user)) {
+        var passwordCallback: PasswordCallback = null
+        if (StringUtils.isNotBlank(passwordCmd)) {
+          passwordCallback = new CommandPasswordCallback(passwordCmd);
+        } else if (StringUtils.isNotBlank(password)) {
+          passwordCallback = new StaticPasswordCallback(password);
+        }
+
+        if (passwordCallback != null) {
+          builder.addInterceptor(new PasswordInterceptor(user, passwordCallback))
+        }
+      }
+
+      /* setup ssl */
+      if (TRINO_SSL_INSECURED.getValue) {
+        OkHttpUtil.setupInsecureSsl(builder)
+      } else {
+        OkHttpUtil.setupSsl(builder,
+          Optional.ofNullable(TRINO_SSL_KEYSTORE.getValue),
+          Optional.ofNullable(TRINO_SSL_KEYSTORE_PASSWORD.getValue),
+          Optional.ofNullable(TRINO_SSL_KEYSTORE_TYPE.getValue),
+          Optional.ofNullable(TRINO_SSL_TRUSTSTORE.getValue),
+          Optional.ofNullable(TRINO_SSL_TRUSTSTORE_PASSWORD.getValue),
+          Optional.ofNullable(TRINO_SSL_TRUSTSTORE_TYPE.getValue))
+      }
+      builder.build()
+    }
+  }
+
+  override def init: Unit = {
+    setCodeParser(new SQLCodeParser)
+    super.init
+  }
+
+  override def execute(engineConnTask: EngineConnTask): ExecuteResponse = {
+    val user = getCurrentUser(engineConnTask.getLables)
+    val userCreatorLabel = engineConnTask.getLables.find(_.isInstanceOf[UserCreatorLabel]).get
+    val engineTypeLabel = engineConnTask.getLables.find(_.isInstanceOf[EngineTypeLabel]).get
+    var configMap: util.Map[String, String] = null
+    if (userCreatorLabel != null && engineTypeLabel != null) {
+      configMap = TrinoEngineConfig.getCacheMap((userCreatorLabel.asInstanceOf[UserCreatorLabel], engineTypeLabel.asInstanceOf[EngineTypeLabel]))
+    }
+    clientSessionCache.put(engineConnTask.getTaskId, getClientSession(user, engineConnTask.getProperties, configMap))
+    super.execute(engineConnTask)
+  }
+
+  override def executeLine(engineExecutorContext: EngineExecutionContext, code: String): ExecuteResponse = {
+    val realCode = SqlCodeParser.parse(code.trim)
+    if (SqlCodeParser.checkModifySchema(realCode)) {

Review Comment:
   It is recommended to use configuration items to control whether to enable 
   such as  "wds.linkis.trino.modify.schema.enable"
   



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@linkis.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@linkis.apache.org
For additional commands, e-mail: notifications-help@linkis.apache.org


[GitHub] [incubator-linkis] casionone commented on pull request #2639: Add an engineconn-plugin for Trino

Posted by GitBox <gi...@apache.org>.
casionone commented on PR #2639:
URL: https://github.com/apache/incubator-linkis/pull/2639#issuecomment-1208850487

   `linkis-engineconn-plugins/trino/src/main/scala/org/apache/linkis/engineplugin/trino/utils/SqlCodeParser.scala ` 
   recommand to use common sql code parser 
   `linkis-computation-governance/linkis-computation-governance-common/src/main/scala/org/apache/linkis/governance/common/paser/CodeParser.scala` 


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@linkis.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@linkis.apache.org
For additional commands, e-mail: notifications-help@linkis.apache.org


[GitHub] [incubator-linkis] casionone merged pull request #2639: Add an engineconn-plugin for Trino

Posted by GitBox <gi...@apache.org>.
casionone merged PR #2639:
URL: https://github.com/apache/incubator-linkis/pull/2639


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@linkis.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@linkis.apache.org
For additional commands, e-mail: notifications-help@linkis.apache.org


[GitHub] [incubator-linkis] codecov[bot] commented on pull request #2639: Add an engineconn-plugin for Trino

Posted by GitBox <gi...@apache.org>.
codecov[bot] commented on PR #2639:
URL: https://github.com/apache/incubator-linkis/pull/2639#issuecomment-1208842733

   # [Codecov](https://codecov.io/gh/apache/incubator-linkis/pull/2639?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation) Report
   > Merging [#2639](https://codecov.io/gh/apache/incubator-linkis/pull/2639?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation) (22879d4) into [dev-1.2.1](https://codecov.io/gh/apache/incubator-linkis/commit/70fc6ccffe425de02b2b41a143acbc8d39ddbe17?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation) (70fc6cc) will **increase** coverage by `0.86%`.
   > The diff coverage is `n/a`.
   
   ```diff
   @@               Coverage Diff               @@
   ##             dev-1.2.1    #2639      +/-   ##
   ===============================================
   + Coverage        15.78%   16.64%   +0.86%     
   - Complexity        1105     1222     +117     
   ===============================================
     Files              668      668              
     Lines            20632    20629       -3     
     Branches          2941     2941              
   ===============================================
   + Hits              3257     3434     +177     
   + Misses           16938    16758     -180     
     Partials           437      437              
   ```
   
   
   | [Impacted Files](https://codecov.io/gh/apache/incubator-linkis/pull/2639?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation) | Coverage Δ | |
   |---|---|---|
   | [...cala/org/apache/linkis/rpc/RPCReceiveRestful.scala](https://codecov.io/gh/apache/incubator-linkis/pull/2639/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation#diff-bGlua2lzLWNvbW1vbnMvbGlua2lzLXJwYy9zcmMvbWFpbi9zY2FsYS9vcmcvYXBhY2hlL2xpbmtpcy9ycGMvUlBDUmVjZWl2ZVJlc3RmdWwuc2NhbGE=) | `0.00% <0.00%> (ø)` | |
   | [.../scala/org/apache/linkis/common/log/LogUtils.scala](https://codecov.io/gh/apache/incubator-linkis/pull/2639/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation#diff-bGlua2lzLWNvbW1vbnMvbGlua2lzLWNvbW1vbi9zcmMvbWFpbi9zY2FsYS9vcmcvYXBhY2hlL2xpbmtpcy9jb21tb24vbG9nL0xvZ1V0aWxzLnNjYWxh) | `0.00% <0.00%> (ø)` | |
   | [...ala/org/apache/linkis/rpc/RPCSpringBeanCache.scala](https://codecov.io/gh/apache/incubator-linkis/pull/2639/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation#diff-bGlua2lzLWNvbW1vbnMvbGlua2lzLXJwYy9zcmMvbWFpbi9zY2FsYS9vcmcvYXBhY2hlL2xpbmtpcy9ycGMvUlBDU3ByaW5nQmVhbkNhY2hlLnNjYWxh) | `0.00% <0.00%> (ø)` | |
   | [...ala/org/apache/linkis/common/utils/JsonUtils.scala](https://codecov.io/gh/apache/incubator-linkis/pull/2639/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation#diff-bGlua2lzLWNvbW1vbnMvbGlua2lzLWNvbW1vbi9zcmMvbWFpbi9zY2FsYS9vcmcvYXBhY2hlL2xpbmtpcy9jb21tb24vdXRpbHMvSnNvblV0aWxzLnNjYWxh) | `100.00% <0.00%> (ø)` | |
   | [.../scala/org/apache/linkis/scheduler/queue/Job.scala](https://codecov.io/gh/apache/incubator-linkis/pull/2639/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation#diff-bGlua2lzLWNvbW1vbnMvbGlua2lzLXNjaGVkdWxlci9zcmMvbWFpbi9zY2FsYS9vcmcvYXBhY2hlL2xpbmtpcy9zY2hlZHVsZXIvcXVldWUvSm9iLnNjYWxh) | `15.73% <0.00%> (ø)` | |
   | [...he/linkis/bml/service/impl/VersionServiceImpl.java](https://codecov.io/gh/apache/incubator-linkis/pull/2639/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation#diff-bGlua2lzLXB1YmxpYy1lbmhhbmNlbWVudHMvbGlua2lzLWJtbC9saW5raXMtYm1sLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvbGlua2lzL2JtbC9zZXJ2aWNlL2ltcGwvVmVyc2lvblNlcnZpY2VJbXBsLmphdmE=) | `0.00% <0.00%> (ø)` | |
   | [...e/linkis/bml/service/impl/ResourceServiceImpl.java](https://codecov.io/gh/apache/incubator-linkis/pull/2639/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation#diff-bGlua2lzLXB1YmxpYy1lbmhhbmNlbWVudHMvbGlua2lzLWJtbC9saW5raXMtYm1sLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvbGlua2lzL2JtbC9zZXJ2aWNlL2ltcGwvUmVzb3VyY2VTZXJ2aWNlSW1wbC5qYXZh) | `0.00% <0.00%> (ø)` | |
   | [...tory/service/impl/JobHistoryQueryServiceImpl.scala](https://codecov.io/gh/apache/incubator-linkis/pull/2639/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation#diff-bGlua2lzLXB1YmxpYy1lbmhhbmNlbWVudHMvbGlua2lzLXB1YmxpY3NlcnZpY2UvbGlua2lzLWpvYmhpc3Rvcnkvc3JjL21haW4vc2NhbGEvb3JnL2FwYWNoZS9saW5raXMvam9iaGlzdG9yeS9zZXJ2aWNlL2ltcGwvSm9iSGlzdG9yeVF1ZXJ5U2VydmljZUltcGwuc2NhbGE=) | `3.59% <0.00%> (ø)` | |
   | [...ava/org/apache/linkis/bml/entity/ResourceTask.java](https://codecov.io/gh/apache/incubator-linkis/pull/2639/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation#diff-bGlua2lzLXB1YmxpYy1lbmhhbmNlbWVudHMvbGlua2lzLWJtbC9saW5raXMtYm1sLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvbGlua2lzL2JtbC9lbnRpdHkvUmVzb3VyY2VUYXNrLmphdmE=) | `29.57% <0.00%> (+29.57%)` | :arrow_up: |
   | [...in/java/org/apache/linkis/bml/entity/Resource.java](https://codecov.io/gh/apache/incubator-linkis/pull/2639/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation#diff-bGlua2lzLXB1YmxpYy1lbmhhbmNlbWVudHMvbGlua2lzLWJtbC9saW5raXMtYm1sLXNlcnZlci9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvbGlua2lzL2JtbC9lbnRpdHkvUmVzb3VyY2UuamF2YQ==) | `44.44% <0.00%> (+44.44%)` | :arrow_up: |
   | ... and [4 more](https://codecov.io/gh/apache/incubator-linkis/pull/2639/diff?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation) | |
   
   :mega: Codecov can now indicate which changes are the most critical in Pull Requests. [Learn more](https://about.codecov.io/product/feature/runtime-insights/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation)
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@linkis.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@linkis.apache.org
For additional commands, e-mail: notifications-help@linkis.apache.org