Merge branch 'v1.9' into dev

This commit is contained in:
taojinlong 2022-04-05 17:55:50 +08:00
commit 00c3d57288
7 changed files with 43 additions and 26 deletions

View File

@ -43,8 +43,8 @@ public class KettleController {
@ApiIgnore @ApiIgnore
@PostMapping("validate") @PostMapping("validate")
public void validate(@RequestBody KettleDTO kettleDTO) throws Exception{ public ResultHolder validate(@RequestBody KettleDTO kettleDTO) throws Exception{
kettleService.validate(kettleDTO); return kettleService.validate(kettleDTO);
} }
@RequiresPermissions("sysparam:read") @RequiresPermissions("sysparam:read")

View File

@ -19,8 +19,7 @@ public class DataSourceInitStartListener implements ApplicationListener<Applicat
@Override @Override
public void onApplicationEvent(ApplicationReadyEvent applicationReadyEvent) { public void onApplicationEvent(ApplicationReadyEvent applicationReadyEvent) {
datasourceService.initAllDataSourceConnectionPool(); datasourceService.initAllDataSourceConnectionPool();
dataSetTableService.updateDatasetTableStatus(); // dataSetTableService.updateDatasetTableStatus();
} }

View File

@ -2220,10 +2220,11 @@ public class DataSetTableService {
.filter(qrtzSchedulerState -> qrtzSchedulerState.getLastCheckinTime() .filter(qrtzSchedulerState -> qrtzSchedulerState.getLastCheckinTime()
+ qrtzSchedulerState.getCheckinInterval() + 1000 > utilMapper.currentTimestamp()) + qrtzSchedulerState.getCheckinInterval() + 1000 > utilMapper.currentTimestamp())
.map(QrtzSchedulerStateKey::getInstanceName).collect(Collectors.toList()); .map(QrtzSchedulerStateKey::getInstanceName).collect(Collectors.toList());
List<DatasetTable> jobStoppeddDatasetTables = new ArrayList<>();
DatasetTableExample example = new DatasetTableExample(); DatasetTableExample example = new DatasetTableExample();
example.createCriteria().andSyncStatusEqualTo(JobStatus.Underway.name()); example.createCriteria().andSyncStatusEqualTo(JobStatus.Underway.name());
List<DatasetTable> jobStoppeddDatasetTables = new ArrayList<>();
datasetTableMapper.selectByExample(example).forEach(datasetTable -> { datasetTableMapper.selectByExample(example).forEach(datasetTable -> {
if (StringUtils.isEmpty(datasetTable.getQrtzInstance()) || !activeQrtzInstances.contains( if (StringUtils.isEmpty(datasetTable.getQrtzInstance()) || !activeQrtzInstances.contains(
datasetTable.getQrtzInstance().substring(0, datasetTable.getQrtzInstance().length() - 13))) { datasetTable.getQrtzInstance().substring(0, datasetTable.getQrtzInstance().length() - 13))) {
@ -2235,21 +2236,25 @@ public class DataSetTableService {
return; return;
} }
//Task
DatasetTableTaskExample datasetTableTaskExample = new DatasetTableTaskExample();
DatasetTableTaskExample.Criteria criteria = datasetTableTaskExample.createCriteria();
criteria.andTableIdIn(jobStoppeddDatasetTables.stream().map(DatasetTable::getId).collect(Collectors.toList())).andLastExecStatusEqualTo(JobStatus.Underway.name());
List<DatasetTableTask> datasetTableTasks = dataSetTableTaskService.list(datasetTableTaskExample);
if (CollectionUtils.isEmpty(datasetTableTasks)) {
return;
}
dataSetTableTaskService.updateTaskStatus(datasetTableTasks, JobStatus.Error);
//DatasetTable //DatasetTable
DatasetTable record = new DatasetTable(); DatasetTable record = new DatasetTable();
record.setSyncStatus(JobStatus.Error.name()); record.setSyncStatus(JobStatus.Error.name());
example.clear(); example.clear();
example.createCriteria().andSyncStatusEqualTo(JobStatus.Underway.name()) example.createCriteria().andSyncStatusEqualTo(JobStatus.Underway.name())
.andIdIn(jobStoppeddDatasetTables.stream().map(DatasetTable::getId).collect(Collectors.toList())); .andIdIn(datasetTableTasks.stream().map(DatasetTableTask::getTableId).collect(Collectors.toList()));
datasetTableMapper.updateByExampleSelective(record, example); datasetTableMapper.updateByExampleSelective(record, example);
//Task
DatasetTableTaskExample datasetTableTaskExample = new DatasetTableTaskExample();
DatasetTableTaskExample.Criteria criteria = datasetTableTaskExample.createCriteria();
criteria.andTableIdIn(jobStoppeddDatasetTables.stream().map(DatasetTable::getId).collect(Collectors.toList())).andStatusEqualTo(JobStatus.Underway.name());
List<DatasetTableTask> datasetTableTasks = dataSetTableTaskService.list(datasetTableTaskExample);
dataSetTableTaskService.updateTaskStatus(datasetTableTasks, JobStatus.Error);
//TaskLog //TaskLog
DatasetTableTaskLog datasetTableTaskLog = new DatasetTableTaskLog(); DatasetTableTaskLog datasetTableTaskLog = new DatasetTableTaskLog();
datasetTableTaskLog.setStatus(JobStatus.Error.name()); datasetTableTaskLog.setStatus(JobStatus.Error.name());
@ -2257,13 +2262,13 @@ public class DataSetTableService {
DatasetTableTaskLogExample datasetTableTaskLogExample = new DatasetTableTaskLogExample(); DatasetTableTaskLogExample datasetTableTaskLogExample = new DatasetTableTaskLogExample();
datasetTableTaskLogExample.createCriteria().andStatusEqualTo(JobStatus.Underway.name()) datasetTableTaskLogExample.createCriteria().andStatusEqualTo(JobStatus.Underway.name())
.andTableIdIn(jobStoppeddDatasetTables.stream().map(DatasetTable::getId).collect(Collectors.toList())); .andTableIdIn(datasetTableTasks.stream().map(DatasetTableTask::getTableId).collect(Collectors.toList()));
datasetTableTaskLogMapper.updateByExampleSelective(datasetTableTaskLog, datasetTableTaskLogExample); datasetTableTaskLogMapper.updateByExampleSelective(datasetTableTaskLog, datasetTableTaskLogExample);
for (DatasetTable jobStoppeddDatasetTable : jobStoppeddDatasetTables) { for (DatasetTableTask datasetTableTask : datasetTableTasks) {
extractDataService.deleteFile("all_scope", jobStoppeddDatasetTable.getId()); extractDataService.deleteFile("all_scope", datasetTableTask.getTableId());
extractDataService.deleteFile("incremental_add", jobStoppeddDatasetTable.getId()); extractDataService.deleteFile("incremental_add", datasetTableTask.getTableId());
extractDataService.deleteFile("incremental_delete", jobStoppeddDatasetTable.getId()); extractDataService.deleteFile("incremental_delete", datasetTableTask.getTableId());
} }
} }

View File

@ -60,12 +60,18 @@ public class KettleService {
deEngineMapper.deleteByPrimaryKey(id); deEngineMapper.deleteByPrimaryKey(id);
} }
public void validate(KettleDTO kettleDTO) throws Exception { public ResultHolder validate(KettleDTO kettleDTO) throws Exception {
HttpClientConfig httpClientConfig = new HttpClientConfig(); HttpClientConfig httpClientConfig = new HttpClientConfig();
String authValue = "Basic " + Base64.getUrlEncoder().encodeToString((kettleDTO.getUser() String authValue = "Basic " + Base64.getUrlEncoder().encodeToString((kettleDTO.getUser()
+ ":" + kettleDTO.getPasswd()).getBytes()); + ":" + kettleDTO.getPasswd()).getBytes());
httpClientConfig.addHeader("Authorization", authValue); httpClientConfig.addHeader("Authorization", authValue);
try {
String response = HttpClientUtil.get("http://" + kettleDTO.getCarte() + ":" + kettleDTO.getPort() + "/kettle/status/", httpClientConfig); String response = HttpClientUtil.get("http://" + kettleDTO.getCarte() + ":" + kettleDTO.getPort() + "/kettle/status/", httpClientConfig);
return ResultHolder.error("Kettle is valid.");
}catch (Exception e){
return ResultHolder.error("Kettle is invalid: " + e.getMessage());
}
} }
public ResultHolder validate(String id) { public ResultHolder validate(String id) {
@ -116,7 +122,7 @@ public class KettleService {
remoteSlaveServer.setHostname(kettleDTO.getCarte()); remoteSlaveServer.setHostname(kettleDTO.getCarte());
remoteSlaveServer.setPort(kettleDTO.getPort()); remoteSlaveServer.setPort(kettleDTO.getPort());
remoteSlaveServer.setUsername(kettleDTO.getUser()); remoteSlaveServer.setUsername(kettleDTO.getUser());
remoteSlaveServer.setPort(kettleDTO.getPasswd()); remoteSlaveServer.setPassword(kettleDTO.getPasswd());
} }
return remoteSlaveServer; return remoteSlaveServer;
} }

View File

@ -31,7 +31,7 @@ export function save(data) {
export function deleteKettle(id) { export function deleteKettle(id) {
return request({ return request({
url: '/delete/' + id, url: '/kettle/delete/' + id,
method: 'delete', method: 'delete',
loading: true loading: true
}) })

View File

@ -46,7 +46,7 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col> <el-col>
<el-form-item :label="$t('datasource.http_port')" prop="configuration.port"> <el-form-item :label="$t('datasource.http_port')" prop="configuration.httpPort">
<el-input v-model="form.configuration.httpPort" autocomplete="off" type="number" min="0"/> <el-input v-model="form.configuration.httpPort" autocomplete="off" type="number" min="0"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -156,6 +156,13 @@ export default {
trigger: ['change', 'blur'] trigger: ['change', 'blur']
} }
], ],
'configuration.httpPort': [
{
required: true,
message: this.$t('datasource.please_input_port'),
trigger: ['change', 'blur']
}
],
'configuration.dataBase': [ 'configuration.dataBase': [
{ {
required: true, required: true,
@ -212,7 +219,7 @@ export default {
this.show = false this.show = false
}, },
save() { save() {
if (this.form.configuration.dataSourceType === 'jdbc' && this.form.configuration.port <= 0) { if (this.form.configuration.dataSourceType === 'jdbc' && (this.form.configuration.port <= 0 || this.form.configuration.httpPort <= 0)) {
this.$message.error(i18n.t('datasource.port_no_less_then_0')) this.$message.error(i18n.t('datasource.port_no_less_then_0'))
return return
} }
@ -256,7 +263,7 @@ export default {
this.$message.error(i18n.t('datasource.please_choose_schema')) this.$message.error(i18n.t('datasource.please_choose_schema'))
return return
} }
if (this.form.configuration.dataSourceType === 'jdbc' && this.form.configuration.port <= 0) { if (this.form.configuration.dataSourceType === 'jdbc' && (this.form.configuration.port <= 0 || this.form.configuration.httpPort <= 0)) {
this.$message.error(i18n.t('datasource.port_no_less_then_0')) this.$message.error(i18n.t('datasource.port_no_less_then_0'))
return return
} }

View File

@ -118,7 +118,7 @@ export default {
}], }],
'configuration.passwd': [{ 'configuration.passwd': [{
required: true, required: true,
message: this.$t('dcommons.required'), message: this.$t('commons.required'),
trigger: 'blur' trigger: 'blur'
}] }]
} }