diff --git a/api/src/main/java/com/databasir/job/ProjectSyncTaskScheduler.java b/api/src/main/java/com/databasir/job/ProjectSyncTaskScheduler.java index 5586292..b38e6e4 100644 --- a/api/src/main/java/com/databasir/job/ProjectSyncTaskScheduler.java +++ b/api/src/main/java/com/databasir/job/ProjectSyncTaskScheduler.java @@ -54,7 +54,8 @@ public class ProjectSyncTaskScheduler { updateSyncTaskStatus(taskId, ProjectSyncTaskStatus.FINISHED, "ok"); saveOperationLog(projectId, userId, null); } catch (Exception e) { - updateSyncTaskStatus(taskId, ProjectSyncTaskStatus.FAILED, e.getMessage()); + String result = Objects.requireNonNullElse(e.getMessage(), "unknown"); + updateSyncTaskStatus(taskId, ProjectSyncTaskStatus.FAILED, result); saveOperationLog(projectId, userId, e); throw e; } diff --git a/core/src/main/java/com/databasir/core/domain/document/service/DocumentService.java b/core/src/main/java/com/databasir/core/domain/document/service/DocumentService.java index beb6961..a1ffe4c 100644 --- a/core/src/main/java/com/databasir/core/domain/document/service/DocumentService.java +++ b/core/src/main/java/com/databasir/core/domain/document/service/DocumentService.java @@ -143,13 +143,16 @@ public class DocumentService { databasirConfig.setIgnoreTableNameRegex(jsonConverter.fromJson(rule.getIgnoreTableNameRegexArray())); databasirConfig.setIgnoreTableColumnNameRegex(jsonConverter.fromJson(rule.getIgnoreColumnNameRegexArray())); try { + if (jdbcConnection == null) { + throw DomainErrors.CONNECT_DATABASE_FAILED.exception(); + } DatabaseMeta databaseMeta = Databasir.of(databasirConfig) .get(jdbcConnection, dataSource.getDatabaseName(), dataSource.getSchemaName()) .orElseThrow(DomainErrors.DATABASE_META_NOT_FOUND::exception); return databaseMeta; } finally { try { - if (!jdbcConnection.isClosed()) { + if (jdbcConnection != null && !jdbcConnection.isClosed()) { jdbcConnection.close(); } } catch (SQLException e) {