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/12/13 04:11:55 UTC
(linkis) branch master updated: Fix repl get task result bug (#5036)
This is an automated email from the ASF dual-hosted git repository.
peacewong pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/linkis.git
The following commit(s) were added to refs/heads/master by this push:
new 7766933ea Fix repl get task result bug (#5036)
7766933ea is described below
commit 7766933eacc255de0084abae6cd9954809fe414b
Author: ChengJie1053 <18...@163.com>
AuthorDate: Wed Dec 13 12:11:50 2023 +0800
Fix repl get task result bug (#5036)
* Fix repl get task result bug
* Fix repl get task result bug
---
.../repl/executor/ReplEngineConnExecutor.java | 30 ++++++++++++++++++
.../repl/executor/javarepl/JavaReplCompiler.java | 2 +-
.../repl/src/main/resources/repl-ec.md | 37 ++++++++++++++++++++++
3 files changed, 68 insertions(+), 1 deletion(-)
diff --git a/linkis-engineconn-plugins/repl/src/main/java/org/apache/linkis/engineplugin/repl/executor/ReplEngineConnExecutor.java b/linkis-engineconn-plugins/repl/src/main/java/org/apache/linkis/engineplugin/repl/executor/ReplEngineConnExecutor.java
index bf7201cb6..81f014e03 100644
--- a/linkis-engineconn-plugins/repl/src/main/java/org/apache/linkis/engineplugin/repl/executor/ReplEngineConnExecutor.java
+++ b/linkis-engineconn-plugins/repl/src/main/java/org/apache/linkis/engineplugin/repl/executor/ReplEngineConnExecutor.java
@@ -17,6 +17,9 @@
package org.apache.linkis.engineplugin.repl.executor;
+import org.apache.linkis.common.io.MetaData;
+import org.apache.linkis.common.io.Record;
+import org.apache.linkis.common.io.resultset.ResultSetWriter;
import org.apache.linkis.common.log.LogUtils;
import org.apache.linkis.common.utils.OverloadUtils;
import org.apache.linkis.engineconn.computation.executor.entity.EngineConnTask;
@@ -36,15 +39,23 @@ import org.apache.linkis.manager.label.entity.engine.EngineTypeLabel;
import org.apache.linkis.manager.label.entity.engine.UserCreatorLabel;
import org.apache.linkis.protocol.engine.JobProgressInfo;
import org.apache.linkis.rpc.Sender;
+import org.apache.linkis.scheduler.executer.ErrorExecuteResponse;
import org.apache.linkis.scheduler.executer.ExecuteResponse;
import org.apache.linkis.scheduler.executer.SuccessExecuteResponse;
+import org.apache.linkis.storage.LineMetaData;
+import org.apache.linkis.storage.LineRecord;
+import org.apache.linkis.storage.resultset.ResultSetFactory;
import org.apache.commons.collections4.MapUtils;
+import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.springframework.util.CollectionUtils;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.PrintStream;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
@@ -132,14 +143,33 @@ public class ReplEngineConnExecutor extends ConcurrentComputationExecutor {
threadCache.put(taskId, Thread.currentThread());
+ ByteArrayOutputStream outputStream = new ByteArrayOutputStream(1024);
+ PrintStream cacheStream = new PrintStream(outputStream);
+ PrintStream oldStream = System.out;
+ System.setOut(cacheStream);
+
try {
replAdapter.executorCode(realCode, classpathDir, methodName);
} catch (Exception e) {
String errorMessage = ExceptionUtils.getStackTrace(e);
logger.error("Repl engine execute failed : {}", errorMessage);
engineExecutorContext.appendStdout(LogUtils.generateERROR(errorMessage));
+ return new ErrorExecuteResponse(errorMessage, null);
}
+ String message = outputStream.toString();
+ System.setOut(oldStream);
+ engineExecutorContext.appendStdout(message);
+ ResultSetWriter<? extends MetaData, ? extends Record> resultSetWriter =
+ engineExecutorContext.createResultSetWriter(ResultSetFactory.TEXT_TYPE);
+ try {
+ resultSetWriter.addMetaData(new LineMetaData());
+ resultSetWriter.addRecord(new LineRecord(message));
+ } catch (IOException e) {
+ logger.error("Failed to get the task result");
+ } finally {
+ IOUtils.closeQuietly(resultSetWriter);
+ }
return new SuccessExecuteResponse();
}
diff --git a/linkis-engineconn-plugins/repl/src/main/java/org/apache/linkis/engineplugin/repl/executor/javarepl/JavaReplCompiler.java b/linkis-engineconn-plugins/repl/src/main/java/org/apache/linkis/engineplugin/repl/executor/javarepl/JavaReplCompiler.java
index 7be436973..9878ed502 100644
--- a/linkis-engineconn-plugins/repl/src/main/java/org/apache/linkis/engineplugin/repl/executor/javarepl/JavaReplCompiler.java
+++ b/linkis-engineconn-plugins/repl/src/main/java/org/apache/linkis/engineplugin/repl/executor/javarepl/JavaReplCompiler.java
@@ -54,7 +54,7 @@ public class JavaReplCompiler {
Pattern.compile("\\s+implements\\s+([\\w\\.]+)\\s*\\{\n");
private static final Pattern METHODS_PATTERN =
- Pattern.compile("\n(private|public|protected)\\s+");
+ Pattern.compile("(?<=\\})\\s+(private|public|protected)\\s+");
private static final Pattern FIELD_PATTERN = Pattern.compile("[^\n]+=[^\n]+;");
diff --git a/linkis-engineconn-plugins/repl/src/main/resources/repl-ec.md b/linkis-engineconn-plugins/repl/src/main/resources/repl-ec.md
index 5eb8c6c1b..e04aec5d2 100644
--- a/linkis-engineconn-plugins/repl/src/main/resources/repl-ec.md
+++ b/linkis-engineconn-plugins/repl/src/main/resources/repl-ec.md
@@ -71,6 +71,43 @@ import org.apache.commons.lang3.StringUtils;
}
```
+#### 1.3. Multiple methods
+
+```text
+import org.apache.commons.lang3.StringUtils;
+
+ public void sayHello() {
+ System.out.println("hello");
+ System.out.println(StringUtils.isEmpty("hello"));
+ }
+ public void sayHi() {
+ System.out.println("hi");
+ System.out.println(StringUtils.isEmpty("hi"));
+ }
+```
+
+```json
+{
+ "executionContent":{
+ "code":"import org.apache.commons.lang3.StringUtils;\n\n public void sayHello() {\n System.out.println(\"hello\");\n System.out.println(StringUtils.isEmpty(\"hello\"));\n }\n public void sayHi() {\n System.out.println(\"hi\");\n System.out.println(StringUtils.isEmpty(\"hi\"));\n }",
+ "runType":"repl"
+ },
+ "params":{
+ "configuration":{
+ "runtime":{
+ "linkis.repl.type":"java",
+ "linkis.repl.method.name":"sayHi"
+ }
+ }
+ },
+ "labels":{
+ "engineType":"repl-1",
+ "userCreator":"linkis-IDE"
+ }
+}
+```
+
+
### 2. Submitting scala tasks with Restful API
```text
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@linkis.apache.org
For additional commands, e-mail: commits-help@linkis.apache.org