You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@linkis.apache.org by ca...@apache.org on 2022/10/16 05:36:39 UTC
[incubator-linkis] branch dev-1.3.1-errorcode updated: [ISSUE-3414][linkis-metadata-query]module errorcode optimization and documentation (#3557)
This is an automated email from the ASF dual-hosted git repository.
casion pushed a commit to branch dev-1.3.1-errorcode
in repository https://gitbox.apache.org/repos/asf/incubator-linkis.git
The following commit(s) were added to refs/heads/dev-1.3.1-errorcode by this push:
new 620ceb4db [ISSUE-3414][linkis-metadata-query]module errorcode optimization and documentation (#3557)
620ceb4db is described below
commit 620ceb4dbb2def6c1b71f45dee6cf6b69cd1358e
Author: 成彬彬 <10...@users.noreply.github.com>
AuthorDate: Sun Oct 16 13:36:34 2022 +0800
[ISSUE-3414][linkis-metadata-query]module errorcode optimization and documentation (#3557)
---
docs/errorcode/linkis-metadata-query-errorcode.md | 21 +++++
.../core/dao/DataSourceVersionDaoTest.java | 4 +-
.../LinkisMetadataQueryErrorCodeSummary.java | 101 +++++++++++++++++++++
.../common/exception/MetaRuntimeException.java | 7 +-
.../query/common/service/AbstractMetaService.java | 4 +-
.../server/loader/MetaClassLoaderManager.java | 7 +-
.../service/impl/MetadataQueryServiceImpl.java | 9 +-
.../metadata/query/server/utils/MetadataUtils.java | 12 +--
.../metadata/query/service/HiveMetaService.java | 11 ++-
.../metadata/query/service/KafkaMetaService.java | 4 +-
10 files changed, 160 insertions(+), 20 deletions(-)
diff --git a/docs/errorcode/linkis-metadata-query-errorcode.md b/docs/errorcode/linkis-metadata-query-errorcode.md
new file mode 100644
index 000000000..c38552263
--- /dev/null
+++ b/docs/errorcode/linkis-metadata-query-errorcode.md
@@ -0,0 +1,21 @@
+## linkis-metadata-query errorcode
+
+| module name(模块名) | error code(错误码) | describe(描述) |enumeration name(枚举)| Exception Class(类名)|
+| -------- | -------- | ----- |-----|-----|
+|linkis-metadata-query |199604|Invoke method {} fail,message:{}(调用方法 {} 失败,信息:{})|INVOKE_METHOD_FAIL|LinkisMetadataQueryErrorCodeSummary|
+|linkis-metadata-query |199611|Failed to load metadata service(加载元数据服务失败)|FAILED_METADATA_SERVICE|LinkisMetadataQueryErrorCodeSummary|
+|linkis-metadata-query |99900|Fail to close connection(关闭连接失败)|FAIL_CLOSE_CONNECTION|LinkisMetadataQueryErrorCodeSummary|
+|linkis-metadata-query |99900|Error in creating classloader of type(创建类型的类加载器时出错)|ERROR_IN_CREATING|LinkisMetadataQueryErrorCodeSummary|
+|linkis-metadata-query |99900|Fail to init and load meta service class for type (无法为以下类型初始化和加载元服务类)|INIT_META_SERVICE|LinkisMetadataQueryErrorCodeSummary|
+|linkis-metadata-query |99900|No public constructor in meta service class (元服务类中没有公共构造函数)|NO_CONSTRUCTOR_SERVICE|LinkisMetadataQueryErrorCodeSummary|
+|linkis-metadata-query |99900|Unable to construct meta service class(无法构建元服务类)|UNABLE_META_SERVICE|LinkisMetadataQueryErrorCodeSummary|
+|linkis-metadata-query |99900|Illegal arguments in constructor of meta service class(元服务类的构造函数中的非法参数)|ILLEGAL_META_SERVICE|LinkisMetadataQueryErrorCodeSummary|
+|linkis-metadata-query |99900|Fail to download resource (无法下载资源 )|FAIL_DOWNLOAD_RESOURCE|LinkisMetadataQueryErrorCodeSummary|
+|linkis-metadata-query |99900|Cannot find the keytab file in connect parameters(在连接参数中找不到密钥表文件)|CANNOT_KEYTAB_PARAMETERS|LinkisMetadataQueryErrorCodeSummary|
+|linkis-metadata-query |99900|Cannot parse the param(无法解析参数)|CANNOT_PARSE_PARAM|LinkisMetadataQueryErrorCodeSummary|
+
+
+
+
+
+
diff --git a/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/server/src/test/java/org/apache/linkis/datasourcemanager/core/dao/DataSourceVersionDaoTest.java b/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/server/src/test/java/org/apache/linkis/datasourcemanager/core/dao/DataSourceVersionDaoTest.java
index 973ffdb0e..a29b380c5 100644
--- a/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/server/src/test/java/org/apache/linkis/datasourcemanager/core/dao/DataSourceVersionDaoTest.java
+++ b/linkis-public-enhancements/linkis-datasource/linkis-datasource-manager/server/src/test/java/org/apache/linkis/datasourcemanager/core/dao/DataSourceVersionDaoTest.java
@@ -80,9 +80,9 @@ class DataSourceVersionDaoTest extends BaseDaoTest {
@Disabled
@Test
void testSelectOneVersion() {
- insertOne();
+ /*insertOne();
String param = dataSourceVersionDao.selectOneVersion(1l, 2l);
- assertTrue("a:b".equals(param));
+ assertTrue("a:b".equals(param));*/
}
@Test
diff --git a/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/common/src/main/java/org/apache/linkis/metadata/query/common/errorcode/LinkisMetadataQueryErrorCodeSummary.java b/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/common/src/main/java/org/apache/linkis/metadata/query/common/errorcode/LinkisMetadataQueryErrorCodeSummary.java
new file mode 100644
index 000000000..304933d1a
--- /dev/null
+++ b/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/common/src/main/java/org/apache/linkis/metadata/query/common/errorcode/LinkisMetadataQueryErrorCodeSummary.java
@@ -0,0 +1,101 @@
+/*
+ * 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.metadata.query.common.errorcode;
+
+public enum LinkisMetadataQueryErrorCodeSummary {
+ INVOKE_METHOD_FAIL(
+ 199604,
+ "Invoke method {} fail,message:{}(调用方法 {} 失败,信息:{})",
+ "Invoke method {} fail,message:{}(调用方法 {} 失败,信息:{})"),
+ FAILED_METADATA_SERVICE(
+ 199611,
+ "Failed to load metadata service(加载元数据服务失败)",
+ "Failed to load metadata service(加载元数据服务失败)"),
+ METARUNTIME_EXCEPTION_ID(99900, "", ""),
+ FAIL_CLOSE_CONNECTION(
+ 99900, "Fail to close connection(关闭连接失败),", "Fail to close connection(关闭连接失败),"),
+ ERROR_IN_CREATING(
+ 99900,
+ "Error in creating classloader of type(创建类型的类加载器时出错):",
+ "Error in creating classloader of type(创建类型的类加载器时出错):"),
+ INIT_META_SERVICE(
+ 99900,
+ "Fail to init and load meta service class for type (无法为以下类型初始化和加载元服务类):",
+ "Fail to init and load meta service class for type (无法为以下类型初始化和加载元服务类):"),
+ NO_CONSTRUCTOR_SERVICE(
+ 99900,
+ "No public constructor in meta service class (元服务类中没有公共构造函数):",
+ "No public constructor in meta service class (元服务类中没有公共构造函数):"),
+ UNABLE_META_SERVICE(
+ 99900,
+ "Unable to construct meta service class(无法构建元服务类):",
+ "Unable to construct meta service class(无法构建元服务类):"),
+ ILLEGAL_META_SERVICE(
+ 99900,
+ "Illegal arguments in constructor of meta service class(元服务类的构造函数中的非法参数):",
+ "Illegal arguments in constructor of meta service class(元服务类的构造函数中的非法参数):"),
+ FAIL_DOWNLOAD_RESOURCE(
+ 99900, "Fail to download resource (无法下载资源 )", "Fail to download resource (无法下载资源 )"),
+ CANNOT_KEYTAB_PARAMETERS(
+ 99900,
+ "Cannot find the keytab file in connect parameters(在连接参数中找不到密钥表文件)",
+ "Cannot find the keytab file in connect parameters(在连接参数中找不到密钥表文件)"),
+ CANNOT_PARSE_PARAM(99900, "Cannot parse the param(无法解析参数):", "Cannot parse the param(无法解析参数):");
+
+ /** (errorCode)错误码 */
+ private int errorCode;
+ /** (errorDesc)错误描述 */
+ private String errorDesc;
+ /** Possible reasons for the error(错误可能出现的原因) */
+ private String comment;
+
+ LinkisMetadataQueryErrorCodeSummary(int errorCode, String errorDesc, String comment) {
+ this.errorCode = errorCode;
+ this.errorDesc = errorDesc;
+ this.comment = comment;
+ }
+
+ public int getErrorCode() {
+ return errorCode;
+ }
+
+ public void setErrorCode(int errorCode) {
+ this.errorCode = errorCode;
+ }
+
+ public String getErrorDesc() {
+ return errorDesc;
+ }
+
+ public void setErrorDesc(String errorDesc) {
+ this.errorDesc = errorDesc;
+ }
+
+ public String getComment() {
+ return comment;
+ }
+
+ public void setComment(String comment) {
+ this.comment = comment;
+ }
+
+ @Override
+ public String toString() {
+ return "errorCode: " + this.errorCode + ", errorDesc:" + this.errorDesc;
+ }
+}
diff --git a/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/common/src/main/java/org/apache/linkis/metadata/query/common/exception/MetaRuntimeException.java b/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/common/src/main/java/org/apache/linkis/metadata/query/common/exception/MetaRuntimeException.java
index 35b489d4e..26991b447 100644
--- a/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/common/src/main/java/org/apache/linkis/metadata/query/common/exception/MetaRuntimeException.java
+++ b/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/common/src/main/java/org/apache/linkis/metadata/query/common/exception/MetaRuntimeException.java
@@ -19,15 +19,16 @@ package org.apache.linkis.metadata.query.common.exception;
import org.apache.linkis.common.exception.WarnException;
+import static org.apache.linkis.metadata.query.common.errorcode.LinkisMetadataQueryErrorCodeSummary.METARUNTIME_EXCEPTION_ID;
+
public class MetaRuntimeException extends WarnException {
- private static final int ERROR_CODE = 99900;
public MetaRuntimeException(String desc, Throwable t) {
- super(ERROR_CODE, desc);
+ super(METARUNTIME_EXCEPTION_ID.getErrorCode(), desc);
super.initCause(t);
}
public MetaRuntimeException(String desc, String ip, int port, String serviceKind) {
- super(ERROR_CODE, desc, ip, port, serviceKind);
+ super(METARUNTIME_EXCEPTION_ID.getErrorCode(), desc, ip, port, serviceKind);
}
}
diff --git a/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/common/src/main/java/org/apache/linkis/metadata/query/common/service/AbstractMetaService.java b/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/common/src/main/java/org/apache/linkis/metadata/query/common/service/AbstractMetaService.java
index bde919771..ad1d1e6c0 100644
--- a/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/common/src/main/java/org/apache/linkis/metadata/query/common/service/AbstractMetaService.java
+++ b/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/common/src/main/java/org/apache/linkis/metadata/query/common/service/AbstractMetaService.java
@@ -45,6 +45,8 @@ import com.google.common.cache.Cache;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import static org.apache.linkis.metadata.query.common.errorcode.LinkisMetadataQueryErrorCodeSummary.FAIL_CLOSE_CONNECTION;
+
public abstract class AbstractMetaService<C extends Closeable> implements MetadataService {
private static final Logger LOG = LoggerFactory.getLogger(AbstractMetaService.class);
private static final String CONN_CACHE_REQ = "_STORED";
@@ -203,7 +205,7 @@ public abstract class AbstractMetaService<C extends Closeable> implements Metada
connection.close();
} catch (IOException e) {
throw new MetaRuntimeException(
- "Fail to close connection[关闭连接失败], [" + e.getMessage() + "]", e);
+ FAIL_CLOSE_CONNECTION.getErrorDesc() + "[" + e.getMessage() + "]", e);
}
}
diff --git a/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/server/src/main/java/org/apache/linkis/metadata/query/server/loader/MetaClassLoaderManager.java b/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/server/src/main/java/org/apache/linkis/metadata/query/server/loader/MetaClassLoaderManager.java
index 6a8bc2042..fa5c20483 100644
--- a/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/server/src/main/java/org/apache/linkis/metadata/query/server/loader/MetaClassLoaderManager.java
+++ b/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/server/src/main/java/org/apache/linkis/metadata/query/server/loader/MetaClassLoaderManager.java
@@ -43,6 +43,9 @@ import java.util.stream.Collectors;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import static org.apache.linkis.metadata.query.common.errorcode.LinkisMetadataQueryErrorCodeSummary.ERROR_IN_CREATING;
+import static org.apache.linkis.metadata.query.common.errorcode.LinkisMetadataQueryErrorCodeSummary.INIT_META_SERVICE;
+
/** Class Loader for metaClass // TODO used interface class */
public class MetaClassLoaderManager {
@@ -120,7 +123,7 @@ public class MetaClassLoaderManager {
});
if (Objects.isNull(metaClassLoader)) {
throw new MetaRuntimeException(
- "Error in creating classloader of type: [" + dsType + "]", null);
+ ERROR_IN_CREATING.getErrorDesc() + "[" + dsType + "]", null);
}
String expectClassName = null;
if (dsType.length() > 0) {
@@ -131,7 +134,7 @@ public class MetaClassLoaderManager {
searchForLoadMetaServiceClass(metaClassLoader, expectClassName, true);
if (Objects.isNull(metaServiceClass)) {
throw new MetaRuntimeException(
- "Fail to init and load meta service class for type: [" + dsType + "]", null);
+ INIT_META_SERVICE.getErrorDesc() + "[" + dsType + "]", null);
}
MetadataService metadataService =
MetadataUtils.loadMetaService(metaServiceClass, metaClassLoader);
diff --git a/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/server/src/main/java/org/apache/linkis/metadata/query/server/service/impl/MetadataQueryServiceImpl.java b/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/server/src/main/java/org/apache/linkis/metadata/query/server/service/impl/MetadataQueryServiceImpl.java
index a4e0a81db..506805ae2 100644
--- a/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/server/src/main/java/org/apache/linkis/metadata/query/server/service/impl/MetadataQueryServiceImpl.java
+++ b/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/server/src/main/java/org/apache/linkis/metadata/query/server/service/impl/MetadataQueryServiceImpl.java
@@ -45,6 +45,9 @@ import java.util.function.BiFunction;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import static org.apache.linkis.metadata.query.common.errorcode.LinkisMetadataQueryErrorCodeSummary.FAILED_METADATA_SERVICE;
+import static org.apache.linkis.metadata.query.common.errorcode.LinkisMetadataQueryErrorCodeSummary.INVOKE_METHOD_FAIL;
+
@Service
public class MetadataQueryServiceImpl implements MetadataQueryService {
private Sender dataSourceRpcSender;
@@ -374,7 +377,9 @@ public class MetadataQueryServiceImpl implements MetadataQueryService {
} catch (Exception e) {
// TODO ERROR CODE
throw new MetaMethodInvokeException(
- -1, "Load meta service for " + dsType + " fail 加载 [" + dsType + "] 元数据服务失败", e);
+ FAILED_METADATA_SERVICE.getErrorCode(),
+ "Load meta service for " + dsType + " fail 加载 [" + dsType + "] 元数据服务失败",
+ e);
}
if (Objects.nonNull(invoker)) {
try {
@@ -390,7 +395,7 @@ public class MetadataQueryServiceImpl implements MetadataQueryService {
throw new MetaMethodInvokeException(
method,
methodArgs,
- -1,
+ INVOKE_METHOD_FAIL.getErrorCode(),
"Invoke method [" + method + "] fail, message:[" + e.getMessage() + "]",
e);
}
diff --git a/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/server/src/main/java/org/apache/linkis/metadata/query/server/utils/MetadataUtils.java b/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/server/src/main/java/org/apache/linkis/metadata/query/server/utils/MetadataUtils.java
index fefd29236..c91d61bf4 100644
--- a/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/server/src/main/java/org/apache/linkis/metadata/query/server/utils/MetadataUtils.java
+++ b/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/server/src/main/java/org/apache/linkis/metadata/query/server/utils/MetadataUtils.java
@@ -38,6 +38,8 @@ import java.util.stream.Collectors;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import static org.apache.linkis.metadata.query.common.errorcode.LinkisMetadataQueryErrorCodeSummary.*;
+
/** Metadata Utils */
public class MetadataUtils {
@@ -55,8 +57,7 @@ public class MetadataUtils {
final Constructor<?>[] constructors = metaServiceClass.getConstructors();
if (constructors.length <= 0) {
throw new MetaRuntimeException(
- "No public constructor in meta service class: [" + metaServiceClass.getName() + "]",
- null);
+ NO_CONSTRUCTOR_SERVICE.getErrorDesc() + "[" + metaServiceClass.getName() + "]", null);
}
List<Constructor<?>> acceptConstructor =
Arrays.stream(constructors)
@@ -69,14 +70,11 @@ public class MetadataUtils {
return (MetadataService) constructor.newInstance();
} catch (Exception e) {
throw new MetaRuntimeException(
- "Unable to construct meta service class: [" + metaServiceClass.getName() + "]", e);
+ UNABLE_META_SERVICE.getErrorDesc() + "[" + metaServiceClass.getName() + "]", e);
}
} else {
throw new MetaRuntimeException(
- "Illegal arguments in constructor of meta service class: ["
- + metaServiceClass.getName()
- + "]",
- null);
+ ILLEGAL_META_SERVICE.getErrorDesc() + "[" + metaServiceClass.getName() + "]", null);
}
} finally {
Thread.currentThread().setContextClassLoader(storeClassLoader);
diff --git a/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/service/hive/src/main/java/org/apache/linkis/metadata/query/service/HiveMetaService.java b/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/service/hive/src/main/java/org/apache/linkis/metadata/query/service/HiveMetaService.java
index 5a506373f..d66da24f4 100644
--- a/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/service/hive/src/main/java/org/apache/linkis/metadata/query/service/HiveMetaService.java
+++ b/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/service/hive/src/main/java/org/apache/linkis/metadata/query/service/HiveMetaService.java
@@ -46,6 +46,9 @@ import java.util.stream.Collectors;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import static org.apache.linkis.metadata.query.common.errorcode.LinkisMetadataQueryErrorCodeSummary.CANNOT_KEYTAB_PARAMETERS;
+import static org.apache.linkis.metadata.query.common.errorcode.LinkisMetadataQueryErrorCodeSummary.CANNOT_PARSE_PARAM;
+
public class HiveMetaService extends AbstractMetaService<HiveConnection> {
private static final Logger LOG = LoggerFactory.getLogger(HiveMetaService.class);
@@ -89,7 +92,7 @@ public class HiveMetaService extends AbstractMetaService<HiveConnection> {
}
conn = new HiveConnection(uris, principle, keytabFilePath, getExtraHadoopConf(params));
} else {
- throw new MetaRuntimeException("Cannot find the keytab file in connect parameters", null);
+ throw new MetaRuntimeException(CANNOT_KEYTAB_PARAMETERS.getErrorDesc(), null);
}
} else {
conn = new HiveConnection(uris, getExtraHadoopConf(params));
@@ -274,7 +277,11 @@ public class HiveMetaService extends AbstractMetaService<HiveConnection> {
}
} catch (Exception e) {
throw new MetaRuntimeException(
- "Cannot parse the param:[" + HiveParamsMapper.PARAM_HADOOP_CONF.getValue() + "]", e);
+ CANNOT_PARSE_PARAM.getErrorDesc()
+ + "["
+ + HiveParamsMapper.PARAM_HADOOP_CONF.getValue()
+ + "]",
+ e);
}
}
return extraHadoopConf;
diff --git a/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/service/kafka/src/main/java/org/apache/linkis/metadata/query/service/KafkaMetaService.java b/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/service/kafka/src/main/java/org/apache/linkis/metadata/query/service/KafkaMetaService.java
index a282ecb61..dbd2edee5 100644
--- a/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/service/kafka/src/main/java/org/apache/linkis/metadata/query/service/KafkaMetaService.java
+++ b/linkis-public-enhancements/linkis-datasource/linkis-metadata-query/service/kafka/src/main/java/org/apache/linkis/metadata/query/service/KafkaMetaService.java
@@ -44,6 +44,8 @@ import java.util.stream.Collectors;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import static org.apache.linkis.metadata.query.common.errorcode.LinkisMetadataQueryErrorCodeSummary.CANNOT_KEYTAB_PARAMETERS;
+
public class KafkaMetaService extends AbstractMetaService<KafkaConnection> {
private static final Logger LOG = LoggerFactory.getLogger(KafkaMetaService.class);
@@ -84,7 +86,7 @@ public class KafkaMetaService extends AbstractMetaService<KafkaConnection> {
}
conn = new KafkaConnection(brokers, principle, keytabFilePath);
} else {
- throw new MetaRuntimeException("Cannot find the keytab file in connect parameters", null);
+ throw new MetaRuntimeException(CANNOT_KEYTAB_PARAMETERS.getErrorDesc(), null);
}
} else {
conn = new KafkaConnection(brokers);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@linkis.apache.org
For additional commands, e-mail: commits-help@linkis.apache.org