|
|
@ -31,6 +31,7 @@ import org.apache.dolphinscheduler.remote.command.log.ViewLogRequestCommand; |
|
|
|
import org.apache.dolphinscheduler.remote.command.log.ViewLogResponseCommand; |
|
|
|
import org.apache.dolphinscheduler.remote.command.log.ViewLogResponseCommand; |
|
|
|
import org.apache.dolphinscheduler.remote.processor.NettyRequestProcessor; |
|
|
|
import org.apache.dolphinscheduler.remote.processor.NettyRequestProcessor; |
|
|
|
import org.apache.dolphinscheduler.remote.utils.Constants; |
|
|
|
import org.apache.dolphinscheduler.remote.utils.Constants; |
|
|
|
|
|
|
|
import org.apache.dolphinscheduler.remote.utils.NamedThreadFactory; |
|
|
|
|
|
|
|
|
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
|
|
|
|
|
|
|
@ -54,6 +55,8 @@ import org.springframework.stereotype.Component; |
|
|
|
|
|
|
|
|
|
|
|
import io.netty.channel.Channel; |
|
|
|
import io.netty.channel.Channel; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import com.google.common.util.concurrent.ThreadFactoryBuilder; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* logger request process logic |
|
|
|
* logger request process logic |
|
|
|
*/ |
|
|
|
*/ |
|
|
@ -65,7 +68,8 @@ public class LoggerRequestProcessor implements NettyRequestProcessor { |
|
|
|
private final ExecutorService executor; |
|
|
|
private final ExecutorService executor; |
|
|
|
|
|
|
|
|
|
|
|
public LoggerRequestProcessor() { |
|
|
|
public LoggerRequestProcessor() { |
|
|
|
this.executor = Executors.newFixedThreadPool(Constants.CPUS * 2 + 1); |
|
|
|
this.executor = Executors.newFixedThreadPool(Constants.CPUS * 2 + 1, |
|
|
|
|
|
|
|
new NamedThreadFactory("Log-Request-Process-Thread")); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
@ -80,7 +84,7 @@ public class LoggerRequestProcessor implements NettyRequestProcessor { |
|
|
|
command.getBody(), GetLogBytesRequestCommand.class); |
|
|
|
command.getBody(), GetLogBytesRequestCommand.class); |
|
|
|
String path = getLogRequest.getPath(); |
|
|
|
String path = getLogRequest.getPath(); |
|
|
|
if (!checkPathSecurity(path)) { |
|
|
|
if (!checkPathSecurity(path)) { |
|
|
|
throw new IllegalArgumentException("Illegal path"); |
|
|
|
throw new IllegalArgumentException("Illegal path: " + path); |
|
|
|
} |
|
|
|
} |
|
|
|
byte[] bytes = getFileContentBytes(path); |
|
|
|
byte[] bytes = getFileContentBytes(path); |
|
|
|
GetLogBytesResponseCommand getLogResponse = new GetLogBytesResponseCommand(bytes); |
|
|
|
GetLogBytesResponseCommand getLogResponse = new GetLogBytesResponseCommand(bytes); |
|
|
@ -91,7 +95,7 @@ public class LoggerRequestProcessor implements NettyRequestProcessor { |
|
|
|
command.getBody(), ViewLogRequestCommand.class); |
|
|
|
command.getBody(), ViewLogRequestCommand.class); |
|
|
|
String viewLogPath = viewLogRequest.getPath(); |
|
|
|
String viewLogPath = viewLogRequest.getPath(); |
|
|
|
if (!checkPathSecurity(viewLogPath)) { |
|
|
|
if (!checkPathSecurity(viewLogPath)) { |
|
|
|
throw new IllegalArgumentException("Illegal path"); |
|
|
|
throw new IllegalArgumentException("Illegal path: " + viewLogPath); |
|
|
|
} |
|
|
|
} |
|
|
|
String msg = LoggerUtils.readWholeFileContent(viewLogPath); |
|
|
|
String msg = LoggerUtils.readWholeFileContent(viewLogPath); |
|
|
|
ViewLogResponseCommand viewLogResponse = new ViewLogResponseCommand(msg); |
|
|
|
ViewLogResponseCommand viewLogResponse = new ViewLogResponseCommand(msg); |
|
|
@ -103,7 +107,7 @@ public class LoggerRequestProcessor implements NettyRequestProcessor { |
|
|
|
|
|
|
|
|
|
|
|
String rollViewLogPath = rollViewLogRequest.getPath(); |
|
|
|
String rollViewLogPath = rollViewLogRequest.getPath(); |
|
|
|
if (!checkPathSecurity(rollViewLogPath)) { |
|
|
|
if (!checkPathSecurity(rollViewLogPath)) { |
|
|
|
throw new IllegalArgumentException("Illegal path"); |
|
|
|
throw new IllegalArgumentException("Illegal path: " + rollViewLogPath); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
List<String> lines = readPartFileContent(rollViewLogPath, |
|
|
|
List<String> lines = readPartFileContent(rollViewLogPath, |
|
|
@ -121,7 +125,7 @@ public class LoggerRequestProcessor implements NettyRequestProcessor { |
|
|
|
|
|
|
|
|
|
|
|
String taskLogPath = removeTaskLogRequest.getPath(); |
|
|
|
String taskLogPath = removeTaskLogRequest.getPath(); |
|
|
|
if (!checkPathSecurity(taskLogPath)) { |
|
|
|
if (!checkPathSecurity(taskLogPath)) { |
|
|
|
throw new IllegalArgumentException("Illegal path"); |
|
|
|
throw new IllegalArgumentException("Illegal path: " + taskLogPath); |
|
|
|
} |
|
|
|
} |
|
|
|
File taskLogFile = new File(taskLogPath); |
|
|
|
File taskLogFile = new File(taskLogPath); |
|
|
|
boolean status = true; |
|
|
|
boolean status = true; |
|
|
@ -137,7 +141,7 @@ public class LoggerRequestProcessor implements NettyRequestProcessor { |
|
|
|
channel.writeAndFlush(removeTaskLogResponse.convert2Command(command.getOpaque())); |
|
|
|
channel.writeAndFlush(removeTaskLogResponse.convert2Command(command.getOpaque())); |
|
|
|
break; |
|
|
|
break; |
|
|
|
default: |
|
|
|
default: |
|
|
|
throw new IllegalArgumentException("unknown commandType"); |
|
|
|
throw new IllegalArgumentException("unknown commandType: " + commandType); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|