提交 e7d0818b 编写于 作者: S Serge Rider

#6972 Native tool running: error log reading + settings handle fixes

上级 567ea5bd
......@@ -39,8 +39,14 @@ public abstract class MySQLNativeToolHandler<SETTINGS extends AbstractNativeTool
if (!CommonUtils.isEmpty(connectionInfo.getHostPort())) {
cmd.add("--port=" + connectionInfo.getHostPort());
}
cmd.add("-u");
cmd.add(settings.getToolUserName());
String toolUserName = settings.getToolUserName();
if (CommonUtils.isEmpty(toolUserName)) {
toolUserName = settings.getDataSourceContainer().getActualConnectionConfiguration().getUserName();
}
if (!CommonUtils.isEmpty(toolUserName)) {
cmd.add("-u");
cmd.add(toolUserName);
}
// Password is passed in env variable (#1004)
// if (!CommonUtils.isEmpty(toolWizard.getToolUserPassword())) {
// cmd.add("--password=" + toolWizard.getToolUserPassword());
......
......@@ -24,10 +24,8 @@ import org.jkiss.dbeaver.bundle.ModelActivator;
import org.jkiss.dbeaver.utils.GeneralUtils;
import org.jkiss.utils.ArrayUtils;
import java.io.OutputStream;
import java.io.PrintStream;
import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;
import java.io.PrintWriter;
import java.io.Writer;
import java.text.SimpleDateFormat;
import java.util.Date;
......@@ -53,8 +51,9 @@ public class Log
}
private final String name;
private static ThreadLocal<PrintStream> logWriter = new ThreadLocal<>();
private static ThreadLocal<PrintWriter> logWriter = new ThreadLocal<>();
private static boolean quietMode;
private static final PrintWriter DEFAULT_DEBUG_WRITER = new PrintWriter(System.err);;
public static Log getLog(Class<?> forClass) {
return new Log(forClass.getName());
......@@ -64,20 +63,15 @@ public class Log
return quietMode;
}
public static PrintStream getLogWriter() {
public static PrintWriter getLogWriter() {
return logWriter.get();
}
public static void setLogWriter(OutputStream logWriter) {
public static void setLogWriter(Writer logWriter) {
if (logWriter == null) {
Log.logWriter.remove();
} else {
PrintStream printStream;
try {
printStream = new PrintStream(logWriter, true, StandardCharsets.UTF_8.toString());
} catch (UnsupportedEncodingException e) {
printStream = new PrintStream(logWriter, true);
}
PrintWriter printStream = new PrintWriter(logWriter, true);
Log.logWriter.set(printStream);
}
}
......@@ -116,7 +110,7 @@ public class Log
}
public void flush() {
PrintStream logStream = logWriter.get();
PrintWriter logStream = logWriter.get();
if (logStream != null) {
logStream.flush();
}
......@@ -180,8 +174,8 @@ public class Log
}
private void debugMessage(Object message, Throwable t) {
PrintStream logStream = logWriter.get();
PrintStream debugWriter = logStream != null ? logStream : (quietMode ? null : System.err);
PrintWriter logStream = logWriter.get();
PrintWriter debugWriter = logStream != null ? logStream : (quietMode ? null : DEFAULT_DEBUG_WRITER);
if (debugWriter == null) {
return;
}
......
......@@ -31,6 +31,7 @@ import org.jkiss.utils.StandardConstants;
import java.io.*;
import java.lang.reflect.InvocationTargetException;
import java.nio.charset.StandardCharsets;
import java.util.Date;
import java.util.Locale;
import java.util.concurrent.atomic.AtomicInteger;
......@@ -79,7 +80,7 @@ public class TaskRunJob extends AbstractJob implements DBRRunnableContext {
task.getTaskStatsFolder(true);
File logFile = task.getRunLog(taskRun);
try (OutputStream logStream = new FileOutputStream(logFile)) {
try (Writer logStream = new OutputStreamWriter(new FileOutputStream(logFile), StandardCharsets.UTF_8)) {
taskLog = Log.getLog(TaskRunJob.class);
Log.setLogWriter(logStream);
try {
......
......@@ -52,10 +52,13 @@ public abstract class AbstractNativeToolHandler<SETTINGS extends AbstractNativeT
monitor.beginTask(task.getType().getName(), 1);
monitor.subTask(task.getType().getName());
Log.setLogWriter(logStream);
try {
doExecute(monitor, task, settings, log);
} catch (Exception e) {
throw new InvocationTargetException(e);
} finally {
Log.setLogWriter(null);
}
monitor.worked(1);
......@@ -173,7 +176,8 @@ public abstract class AbstractNativeToolHandler<SETTINGS extends AbstractNativeT
try {
final int exitCode = process.exitValue();
if (exitCode != 0) {
throw new IOException("Process error code: " + exitCode);
log.error("Process exit code: " + exitCode);
return false;
}
} catch (IllegalThreadStateException e) {
// Still running
......
......@@ -115,9 +115,13 @@ public abstract class AbstractNativeToolSettings<BASE_OBJECT extends DBSObject>
}
if (!CommonUtils.isEmpty(toolUserName)) {
preferenceStore.setValue("toolUserName", toolUserName);
} else {
preferenceStore.setToDefault("toolUserName");
}
if (!CommonUtils.isEmpty(toolUserPassword)) {
preferenceStore.setValue("toolUserPassword", toolUserPassword);
} else {
preferenceStore.setToDefault("toolUserPassword");
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册