This is an automated email from the ASF dual-hosted git repository.
caishunfeng pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git
The following commit(s) were added to refs/heads/dev by this push:
new 84f2cfe [Feature][Server] Custom timezone - Add timezone handler
unified (#8477)
84f2cfe is described below
commit 84f2cfec3989a2b41085d0b1f67a6d16d9a15e6e
Author: caishunfeng <[email protected]>
AuthorDate: Thu Feb 24 18:20:34 2022 +0800
[Feature][Server] Custom timezone - Add timezone handler unified (#8477)
* date convert of timezone
* remove @JsonFormat
* add unit test
* fix time preview in scheduler
* optimization & add env config
Co-authored-by: caishunfeng <[email protected]>
---
.../apache/dolphinscheduler/alert/AlertServer.java | 10 +++
.../src/main/resources/application.yaml | 3 +
.../dolphinscheduler/api/ApiApplicationServer.java | 13 ++++
.../apache/dolphinscheduler/api/dto/AuditDto.java | 3 -
.../dolphinscheduler/api/dto/ScheduleParam.java | 2 -
.../dolphinscheduler/api/dto/gantt/Task.java | 3 -
.../api/dto/treeview/Instance.java | 2 -
.../api/interceptor/LoginHandlerInterceptor.java | 8 ++-
.../api/service/impl/SchedulerServiceImpl.java | 4 +-
.../common/model/DateInterval.java | 2 -
.../dolphinscheduler/common/model/Server.java | 2 -
.../common/model/WorkerServerModel.java | 2 -
.../common/thread/ThreadLocalContext.java | 20 +++---
.../dolphinscheduler/common/utils/DateUtils.java | 84 ++++++++++++++++++----
.../dolphinscheduler/common/utils/JSONUtils.java | 6 +-
.../dolphinscheduler/common/utils/LoggerUtils.java | 6 +-
.../common/utils/ParameterUtils.java | 2 +-
.../utils/placeholder/BusinessTimeUtils.java | 6 +-
.../utils/placeholder/TimePlaceholderUtils.java | 6 +-
.../common/utils/DateUtilsTest.java | 21 +++++-
.../common/utils/JSONUtilsTest.java | 25 ++++++-
.../placeholder/TimePlaceholderUtilsTest.java | 2 +-
.../dolphinscheduler/dao/entity/AuditLog.java | 2 -
.../dao/entity/CycleDependency.java | 2 -
.../dolphinscheduler/dao/entity/DataSource.java | 2 -
.../dao/entity/DqComparisonType.java | 3 -
.../dao/entity/DqExecuteResult.java | 2 -
.../dao/entity/DqRuleExecuteSql.java | 3 -
.../dao/entity/DqRuleInputEntry.java | 3 -
.../dao/entity/DqTaskStatisticsValue.java | 4 --
.../dolphinscheduler/dao/entity/Environment.java | 2 -
.../dao/entity/EnvironmentWorkerGroupRelation.java | 2 -
.../dolphinscheduler/dao/entity/ErrorCommand.java | 3 -
.../dolphinscheduler/dao/entity/MonitorRecord.java | 1 -
.../dao/entity/ProcessAlertContent.java | 4 --
.../dao/entity/ProcessDefinition.java | 2 -
.../dao/entity/ProcessDefinitionLog.java | 1 -
.../dao/entity/ProcessInstance.java | 5 --
.../dao/entity/ProcessTaskRelation.java | 3 -
.../dao/entity/ProcessTaskRelationLog.java | 1 -
.../apache/dolphinscheduler/dao/entity/Queue.java | 2 -
.../dolphinscheduler/dao/entity/Resource.java | 2 -
.../dolphinscheduler/dao/entity/ResourcesUser.java | 2 -
.../dolphinscheduler/dao/entity/Schedule.java | 4 --
.../dolphinscheduler/dao/entity/Session.java | 1 -
.../dao/entity/TaskAlertContent.java | 2 -
.../dao/entity/TaskDefinition.java | 3 -
.../dao/entity/TaskDefinitionLog.java | 1 -
.../dolphinscheduler/dao/entity/TaskGroup.java | 3 -
.../dao/entity/TaskGroupQueue.java | 2 -
.../dolphinscheduler/dao/entity/TaskInstance.java | 7 --
.../dolphinscheduler/dao/entity/TaskMainInfo.java | 2 -
.../dolphinscheduler/dao/entity/TaskRecord.java | 2 -
.../apache/dolphinscheduler/dao/entity/Tenant.java | 2 -
.../dolphinscheduler/dao/entity/UDFUser.java | 2 -
.../dolphinscheduler/dao/entity/UdfFunc.java | 2 -
.../apache/dolphinscheduler/dao/entity/User.java | 2 -
.../dolphinscheduler/dao/entity/WorkerGroup.java | 2 -
.../dolphinscheduler/dao/entity/WorkerServer.java | 2 -
.../dolphinscheduler/data/quality/Constants.java | 5 ++
.../data/quality/utils/JsonUtils.java | 6 +-
.../server/master/MasterServer.java | 8 +++
.../master/processor/queue/TaskResponseEvent.java | 2 -
.../master/runner/WorkflowExecuteThread.java | 2 +-
.../master/runner/task/DependentTaskProcessor.java | 2 -
.../src/main/resources/application.yaml | 3 +
.../server/PythonGatewayServer.java | 10 +++
.../remote/command/TaskExecuteAckCommand.java | 1 -
.../remote/command/TaskExecuteResponseCommand.java | 3 -
.../dolphinscheduler/server/utils/LogUtils.java | 2 +-
.../server/utils/LogUtilsTest.java | 2 +-
.../service/json/DateJsonSerializer.java | 27 +++----
.../service/queue/entity/TaskExecutionContext.java | 3 -
.../spi/task/request/TaskRequest.java | 5 --
.../spi/task/request/UdfFuncRequest.java | 2 -
.../dolphinscheduler/spi/utils/JSONUtils.java | 4 +-
.../apache/dolphinscheduler/StandaloneServer.java | 15 ++++
.../src/main/resources/application.yaml | 5 +-
.../task/dq/rule/entity/DqRuleExecuteSql.java | 2 -
.../task/dq/rule/entity/DqRuleInputEntry.java | 4 --
.../pages/definition/pages/list/_source/timing.vue | 3 +-
.../server/worker/WorkerServer.java | 7 ++
.../server/worker/runner/TaskExecuteThread.java | 2 +-
.../src/main/resources/application.yaml | 3 +
script/env/dolphinscheduler_env.sh | 1 +
85 files changed, 259 insertions(+), 192 deletions(-)
diff --git
a/dolphinscheduler-alert/dolphinscheduler-alert-server/src/main/java/org/apache/dolphinscheduler/alert/AlertServer.java
b/dolphinscheduler-alert/dolphinscheduler-alert-server/src/main/java/org/apache/dolphinscheduler/alert/AlertServer.java
index f8324ac..f776be5 100644
---
a/dolphinscheduler-alert/dolphinscheduler-alert-server/src/main/java/org/apache/dolphinscheduler/alert/AlertServer.java
+++
b/dolphinscheduler-alert/dolphinscheduler-alert-server/src/main/java/org/apache/dolphinscheduler/alert/AlertServer.java
@@ -27,6 +27,7 @@ import
org.apache.dolphinscheduler.remote.config.NettyServerConfig;
import java.io.Closeable;
import java.util.List;
+import java.util.TimeZone;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
@@ -36,6 +37,7 @@ import javax.annotation.PreDestroy;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.event.ApplicationReadyEvent;
@@ -58,6 +60,9 @@ public class AlertServer implements Closeable {
@Autowired
private AlertConfig config;
+ @Value("${spring.jackson.time-zone:UTC}")
+ private String timezone;
+
public AlertServer(PluginDao pluginDao, AlertDao alertDao,
AlertPluginManager alertPluginManager, AlertSender alertSender,
AlertRequestProcessor alertRequestProcessor) {
this.pluginDao = pluginDao;
this.alertDao = alertDao;
@@ -70,6 +75,11 @@ public class AlertServer implements Closeable {
SpringApplication.run(AlertServer.class, args);
}
+ @PostConstruct
+ public void init() {
+ TimeZone.setDefault(TimeZone.getTimeZone(timezone));
+ }
+
@EventListener
public void start(ApplicationReadyEvent readyEvent) {
logger.info("Starting Alert server");
diff --git
a/dolphinscheduler-alert/dolphinscheduler-alert-server/src/main/resources/application.yaml
b/dolphinscheduler-alert/dolphinscheduler-alert-server/src/main/resources/application.yaml
index f68d1b8..1de6b9f 100644
---
a/dolphinscheduler-alert/dolphinscheduler-alert-server/src/main/resources/application.yaml
+++
b/dolphinscheduler-alert/dolphinscheduler-alert-server/src/main/resources/application.yaml
@@ -18,6 +18,9 @@
spring:
application:
name: alert-server
+ jackson:
+ time-zone: UTC
+ date-format: "yyyy-MM-dd HH:mm:ss"
main:
banner-mode: off
datasource:
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/ApiApplicationServer.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/ApiApplicationServer.java
index 7981f8a..020ee02 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/ApiApplicationServer.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/ApiApplicationServer.java
@@ -17,6 +17,12 @@
package org.apache.dolphinscheduler.api;
+import java.util.TimeZone;
+
+import javax.annotation.PostConstruct;
+
+import org.quartz.SchedulerException;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
@@ -27,8 +33,15 @@ import org.springframework.context.annotation.ComponentScan;
@ComponentScan("org.apache.dolphinscheduler")
public class ApiApplicationServer {
+ @Value("${spring.jackson.time-zone:UTC}")
+ private String timezone;
+
public static void main(String[] args) {
SpringApplication.run(ApiApplicationServer.class);
}
+ @PostConstruct
+ public void run() {
+ TimeZone.setDefault(TimeZone.getTimeZone(timezone));
+ }
}
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/dto/AuditDto.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/dto/AuditDto.java
index c89079b..437a2f8 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/dto/AuditDto.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/dto/AuditDto.java
@@ -19,8 +19,6 @@ package org.apache.dolphinscheduler.api.dto;
import java.util.Date;
-import com.fasterxml.jackson.annotation.JsonFormat;
-
public class AuditDto {
private String userName;
@@ -29,7 +27,6 @@ public class AuditDto {
private String operation;
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date time;
private String resourceName;
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/dto/ScheduleParam.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/dto/ScheduleParam.java
index 6d957bf..7e71a77 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/dto/ScheduleParam.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/dto/ScheduleParam.java
@@ -26,9 +26,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
*/
public class ScheduleParam {
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date startTime;
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date endTime;
private String crontab;
private String timezoneId;
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/dto/gantt/Task.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/dto/gantt/Task.java
index ec3a436..ece9ad2 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/dto/gantt/Task.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/dto/gantt/Task.java
@@ -43,19 +43,16 @@ public class Task {
/**
* task execution date
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date executionDate;
/**
* task iso start
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date isoStart;
/**
* task iso end
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date isoEnd;
/**
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/dto/treeview/Instance.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/dto/treeview/Instance.java
index c39ece8..52b0c95 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/dto/treeview/Instance.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/dto/treeview/Instance.java
@@ -51,13 +51,11 @@ public class Instance {
/**
* node start time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date startTime;
/**
* node end time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date endTime;
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/interceptor/LoginHandlerInterceptor.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/interceptor/LoginHandlerInterceptor.java
index ec56db3..efa658f 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/interceptor/LoginHandlerInterceptor.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/interceptor/LoginHandlerInterceptor.java
@@ -21,6 +21,7 @@ import org.apache.dolphinscheduler.api.enums.Status;
import org.apache.dolphinscheduler.api.security.Authenticator;
import org.apache.dolphinscheduler.common.Constants;
import org.apache.dolphinscheduler.common.enums.Flag;
+import org.apache.dolphinscheduler.common.thread.ThreadLocalContext;
import org.apache.dolphinscheduler.dao.entity.User;
import org.apache.dolphinscheduler.dao.mapper.UserMapper;
@@ -34,6 +35,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.servlet.HandlerInterceptor;
+import org.springframework.web.servlet.ModelAndView;
/**
* login interceptor, must log in first
@@ -84,9 +86,13 @@ public class LoginHandlerInterceptor implements
HandlerInterceptor {
logger.info(Status.USER_DISABLED.getMsg());
return false;
}
-
request.setAttribute(Constants.SESSION_USER, user);
+ ThreadLocalContext.getTimezoneThreadLocal().set(user.getTimeZone());
return true;
}
+ @Override
+ public void postHandle(HttpServletRequest request, HttpServletResponse
response, Object handler, ModelAndView modelAndView) throws Exception {
+ ThreadLocalContext.getTimezoneThreadLocal().remove();
+ }
}
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/SchedulerServiceImpl.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/SchedulerServiceImpl.java
index 1a0bef0..268d89e 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/SchedulerServiceImpl.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/SchedulerServiceImpl.java
@@ -562,7 +562,9 @@ public class SchedulerServiceImpl extends BaseServiceImpl
implements SchedulerSe
return result;
}
List<Date> selfFireDateList = CronUtils.getSelfFireDateList(startTime,
endTime, cronExpression, Constants.PREVIEW_SCHEDULE_EXECUTE_COUNT);
- result.put(Constants.DATA_LIST,
selfFireDateList.stream().map(DateUtils::dateToString));
+ List<String> previewDateList = new ArrayList<>();
+ selfFireDateList.forEach(date ->
previewDateList.add(DateUtils.dateToString(date,
scheduleParam.getTimezoneId())));
+ result.put(Constants.DATA_LIST, previewDateList);
putMsg(result, Status.SUCCESS);
return result;
}
diff --git
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/model/DateInterval.java
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/model/DateInterval.java
index 81adcd7..98b4ccd 100644
---
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/model/DateInterval.java
+++
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/model/DateInterval.java
@@ -26,9 +26,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
* date interval class
*/
public class DateInterval {
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date startTime;
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date endTime;
public DateInterval(Date beginTime, Date endTime) {
diff --git
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/model/Server.java
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/model/Server.java
index d0d1394..83dc64b 100644
---
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/model/Server.java
+++
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/model/Server.java
@@ -54,13 +54,11 @@ public class Server {
/**
* create time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date createTime;
/**
* laster heart beat time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date lastHeartbeatTime;
public int getId() {
diff --git
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/model/WorkerServerModel.java
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/model/WorkerServerModel.java
index 0c2ab2f..869c05a 100644
---
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/model/WorkerServerModel.java
+++
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/model/WorkerServerModel.java
@@ -55,13 +55,11 @@ public class WorkerServerModel {
/**
* create time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
/**
* last heart beat time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date lastHeartbeatTime;
public int getId() {
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/ApiApplicationServer.java
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/thread/ThreadLocalContext.java
similarity index 61%
copy from
dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/ApiApplicationServer.java
copy to
dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/thread/ThreadLocalContext.java
index 7981f8a..9d523d8 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/ApiApplicationServer.java
+++
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/thread/ThreadLocalContext.java
@@ -15,20 +15,16 @@
* limitations under the License.
*/
-package org.apache.dolphinscheduler.api;
+package org.apache.dolphinscheduler.common.thread;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.web.servlet.ServletComponentScan;
-import org.springframework.context.annotation.ComponentScan;
+/**
+ * thread local context
+ */
+public class ThreadLocalContext {
-@ServletComponentScan
-@SpringBootApplication
-@ComponentScan("org.apache.dolphinscheduler")
-public class ApiApplicationServer {
+ public static final ThreadLocal<String> timezoneThreadLocal = new
ThreadLocal<>();
- public static void main(String[] args) {
- SpringApplication.run(ApiApplicationServer.class);
+ public static ThreadLocal<String> getTimezoneThreadLocal() {
+ return timezoneThreadLocal;
}
-
}
diff --git
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/DateUtils.java
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/DateUtils.java
index 6ed252f..83f50d4 100644
---
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/DateUtils.java
+++
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/DateUtils.java
@@ -18,6 +18,7 @@
package org.apache.dolphinscheduler.common.utils;
import org.apache.dolphinscheduler.common.Constants;
+import org.apache.dolphinscheduler.common.thread.ThreadLocalContext;
import org.apache.commons.lang.StringUtils;
@@ -56,7 +57,23 @@ public final class DateUtils {
* @return local datetime
*/
private static LocalDateTime date2LocalDateTime(Date date) {
- return LocalDateTime.ofInstant(date.toInstant(),
ZoneId.systemDefault());
+ String timezone = ThreadLocalContext.getTimezoneThreadLocal().get();
+ ZoneId zoneId = ZoneId.systemDefault();
+ if (StringUtils.isNotEmpty(timezone)) {
+ zoneId = ZoneId.of(timezone);
+ }
+ return date2LocalDateTime(date, zoneId);
+ }
+
+ /**
+ * date to local datetime
+ *
+ * @param date date
+ * @param zoneId zoneId
+ * @return local datetime
+ */
+ private static LocalDateTime date2LocalDateTime(Date date, ZoneId zoneId) {
+ return LocalDateTime.ofInstant(date.toInstant(), zoneId);
}
/**
@@ -66,7 +83,22 @@ public final class DateUtils {
* @return date
*/
private static Date localDateTime2Date(LocalDateTime localDateTime) {
- Instant instant =
localDateTime.atZone(ZoneId.systemDefault()).toInstant();
+ String timezone = ThreadLocalContext.getTimezoneThreadLocal().get();
+ ZoneId zoneId = ZoneId.systemDefault();
+ if (StringUtils.isNotEmpty(timezone)) {
+ zoneId = ZoneId.of(timezone);
+ }
+ return localDateTime2Date(localDateTime, zoneId);
+ }
+
+ /**
+ * local datetime to date
+ *
+ * @param localDateTime local datetime
+ * @return date
+ */
+ private static Date localDateTime2Date(LocalDateTime localDateTime, ZoneId
zoneId) {
+ Instant instant = localDateTime.atZone(zoneId).toInstant();
return Date.from(instant);
}
@@ -96,8 +128,11 @@ public final class DateUtils {
* @param format e.g. yyyy-MM-dd HH:mm:ss
* @return date string
*/
- public static String format(Date date, String format) {
- return format(date2LocalDateTime(date), format);
+ public static String format(Date date, String format, String timezone) {
+ if (StringUtils.isEmpty(timezone)) {
+ return format(date2LocalDateTime(date), format);
+ }
+ return format(date2LocalDateTime(date, ZoneId.of(timezone)), format);
}
/**
@@ -118,7 +153,18 @@ public final class DateUtils {
* @return date string
*/
public static String dateToString(Date date) {
- return format(date, Constants.YYYY_MM_DD_HH_MM_SS);
+ return format(date, Constants.YYYY_MM_DD_HH_MM_SS, null);
+ }
+
+ /**
+ * convert time to yyyy-MM-dd HH:mm:ss format
+ *
+ * @param date date
+ * @param timezone timezone
+ * @return date string
+ */
+ public static String dateToString(Date date, String timezone) {
+ return format(date, Constants.YYYY_MM_DD_HH_MM_SS, timezone);
}
/**
@@ -126,12 +172,16 @@ public final class DateUtils {
*
* @param date date
* @param format format
+ * @param timezone timezone, if null, use system default timezone
* @return date
*/
- public static Date parse(String date, String format) {
+ public static Date parse(String date, String format, String timezone) {
try {
LocalDateTime ldt = LocalDateTime.parse(date,
DateTimeFormatter.ofPattern(format));
- return localDateTime2Date(ldt);
+ if (StringUtils.isEmpty(timezone)) {
+ return localDateTime2Date(ldt);
+ }
+ return localDateTime2Date(ldt, ZoneId.of(timezone));
} catch (Exception e) {
logger.error("error while parse date:" + date, e);
}
@@ -141,11 +191,22 @@ public final class DateUtils {
/**
* convert date str to yyyy-MM-dd HH:mm:ss format
*
- * @param str date string
+ * @param date date string
+ * @return yyyy-MM-dd HH:mm:ss format
+ */
+ public static Date stringToDate(String date) {
+ return parse(date, Constants.YYYY_MM_DD_HH_MM_SS, null);
+ }
+
+ /**
+ * convert date str to yyyy-MM-dd HH:mm:ss format
+ *
+ * @param date date string
+ * @param timezone
* @return yyyy-MM-dd HH:mm:ss format
*/
- public static Date stringToDate(String str) {
- return parse(str, Constants.YYYY_MM_DD_HH_MM_SS);
+ public static Date stringToDate(String date, String timezone) {
+ return parse(date, Constants.YYYY_MM_DD_HH_MM_SS, timezone);
}
/**
@@ -431,8 +492,7 @@ public final class DateUtils {
* @return current date
*/
public static Date getCurrentDate() {
- return DateUtils.parse(DateUtils.getCurrentTime(),
- Constants.YYYY_MM_DD_HH_MM_SS);
+ return new Date();
}
/**
diff --git
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/JSONUtils.java
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/JSONUtils.java
index d2a3e30..23d0f44 100644
---
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/JSONUtils.java
+++
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/JSONUtils.java
@@ -24,9 +24,12 @@ import static
com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKN
import static
com.fasterxml.jackson.databind.DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL;
import static
com.fasterxml.jackson.databind.MapperFeature.REQUIRE_SETTERS_FOR_GETTERS;
+import org.apache.dolphinscheduler.common.Constants;
import org.apache.dolphinscheduler.spi.utils.StringUtils;
import java.io.IOException;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -69,7 +72,8 @@ public class JSONUtils {
.configure(ACCEPT_EMPTY_ARRAY_AS_NULL_OBJECT, true)
.configure(READ_UNKNOWN_ENUM_VALUES_AS_NULL, true)
.configure(REQUIRE_SETTERS_FOR_GETTERS, true)
- .setTimeZone(TimeZone.getDefault());
+ .setTimeZone(TimeZone.getDefault())
+ .setDateFormat(new
SimpleDateFormat(Constants.YYYY_MM_DD_HH_MM_SS));
private JSONUtils() {
throw new UnsupportedOperationException("Construct JSONUtils");
diff --git
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/LoggerUtils.java
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/LoggerUtils.java
index add5767..0d7055e 100644
---
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/LoggerUtils.java
+++
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/LoggerUtils.java
@@ -51,6 +51,7 @@ public class LoggerUtils {
/**
* build job id
+ *
* @return task id format
*/
public static String buildTaskId(Date firstSubmitTime,
@@ -59,8 +60,9 @@ public class LoggerUtils {
int processInstId,
int taskId) {
// like TaskAppId=TASK-20211107-798_1-4084-15210
- String firstSubmitTimeStr = DateUtils.format(firstSubmitTime,
Constants.YYYYMMDD);
- return String.format("%s=%s-%s-%s_%s-%s-%s",
TaskConstants.TASK_APPID_LOG_FORMAT, TaskConstants.TASK_LOGGER_INFO_PREFIX,
firstSubmitTimeStr, processDefineCode, processDefineVersion, processInstId,
taskId);
+ String firstSubmitTimeStr = DateUtils.format(firstSubmitTime,
Constants.YYYYMMDD, null);
+ return String.format("%s=%s-%s-%s_%s-%s-%s",
+ TaskConstants.TASK_APPID_LOG_FORMAT,
TaskConstants.TASK_LOGGER_INFO_PREFIX, firstSubmitTimeStr, processDefineCode,
processDefineVersion, processInstId, taskId);
}
/**
diff --git
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/ParameterUtils.java
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/ParameterUtils.java
index f247aa0..ed109f7 100644
---
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/ParameterUtils.java
+++
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/ParameterUtils.java
@@ -66,7 +66,7 @@ public class ParameterUtils {
if (parameterMap != null && null !=
parameterMap.get(Constants.PARAMETER_DATETIME)) {
//Get current time, schedule execute time
String cronTimeStr =
parameterMap.get(Constants.PARAMETER_DATETIME);
- cronTime = DateUtils.parse(cronTimeStr,
Constants.PARAMETER_FORMAT_TIME);
+ cronTime = DateUtils.parse(cronTimeStr,
Constants.PARAMETER_FORMAT_TIME, null);
} else {
cronTime = new Date();
}
diff --git
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/placeholder/BusinessTimeUtils.java
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/placeholder/BusinessTimeUtils.java
index 7c2d231..dc2c8cf 100644
---
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/placeholder/BusinessTimeUtils.java
+++
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/placeholder/BusinessTimeUtils.java
@@ -71,9 +71,9 @@ public class BusinessTimeUtils {
break;
}
Date businessCurrentDate = addDays(businessDate, 1);
- result.put(Constants.PARAMETER_CURRENT_DATE,
format(businessCurrentDate, PARAMETER_FORMAT_DATE));
- result.put(Constants.PARAMETER_BUSINESS_DATE, format(businessDate,
PARAMETER_FORMAT_DATE));
- result.put(Constants.PARAMETER_DATETIME, format(businessCurrentDate,
PARAMETER_FORMAT_TIME));
+ result.put(Constants.PARAMETER_CURRENT_DATE,
format(businessCurrentDate, PARAMETER_FORMAT_DATE, null));
+ result.put(Constants.PARAMETER_BUSINESS_DATE, format(businessDate,
PARAMETER_FORMAT_DATE, null));
+ result.put(Constants.PARAMETER_DATETIME, format(businessCurrentDate,
PARAMETER_FORMAT_TIME, null));
return result;
}
}
diff --git
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/placeholder/TimePlaceholderUtils.java
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/placeholder/TimePlaceholderUtils.java
index 1974460..fcadbe9 100644
---
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/placeholder/TimePlaceholderUtils.java
+++
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/placeholder/TimePlaceholderUtils.java
@@ -337,14 +337,14 @@ public class TimePlaceholderUtils {
Map.Entry<Date, String> entry =
calcTimeExpression(timeExpression, date);
- String dateStr = DateUtils.format(entry.getKey(),
entry.getValue());
+ String dateStr = DateUtils.format(entry.getKey(),
entry.getValue(), null);
- Date timestamp = DateUtils.parse(dateStr,
Constants.PARAMETER_FORMAT_TIME);
+ Date timestamp = DateUtils.parse(dateStr,
Constants.PARAMETER_FORMAT_TIME, null);
value = String.valueOf(timestamp.getTime() / 1000);
} else {
Map.Entry<Date, String> entry = calcTimeExpression(expression,
date);
- value = DateUtils.format(entry.getKey(), entry.getValue());
+ value = DateUtils.format(entry.getKey(), entry.getValue(),
null);
}
} catch (Exception e) {
logger.error(e.getMessage(), e);
diff --git
a/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/DateUtilsTest.java
b/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/DateUtilsTest.java
index 2cddfbb..3fb1065 100644
---
a/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/DateUtilsTest.java
+++
b/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/DateUtilsTest.java
@@ -17,12 +17,15 @@
package org.apache.dolphinscheduler.common.utils;
+import org.apache.dolphinscheduler.common.thread.ThreadLocalContext;
+
import java.text.ParseException;
import java.text.SimpleDateFormat;
-import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.TimeZone;
+import javax.management.timer.Timer;
+
import org.junit.Assert;
import org.junit.Test;
@@ -206,4 +209,20 @@ public class DateUtilsTest {
Assert.assertNull(DateUtils.getTimezone(null));
Assert.assertEquals(TimeZone.getTimeZone("MST"),
DateUtils.getTimezone("MST"));
}
+
+ @Test
+ public void testTimezone() {
+ String time = "2019-01-28 00:00:00";
+ ThreadLocalContext.timezoneThreadLocal.set("UTC");
+ Date utcDate = DateUtils.stringToDate(time);
+
+ Assert.assertEquals(time, DateUtils.dateToString(utcDate));
+
+ ThreadLocalContext.timezoneThreadLocal.set("Asia/Shanghai");
+ Date shanghaiDate = DateUtils.stringToDate(time);
+
+ Assert.assertEquals(time, DateUtils.dateToString(shanghaiDate));
+
+ Assert.assertEquals(Timer.ONE_HOUR * 8, utcDate.getTime() -
shanghaiDate.getTime());
+ }
}
diff --git
a/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/JSONUtilsTest.java
b/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/JSONUtilsTest.java
index 955a7e9..1135442 100644
---
a/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/JSONUtilsTest.java
+++
b/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/JSONUtilsTest.java
@@ -23,6 +23,7 @@ import org.apache.dolphinscheduler.common.model.TaskNode;
import org.apache.dolphinscheduler.common.process.Property;
import java.util.ArrayList;
+import java.util.Date;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
@@ -80,8 +81,8 @@ public class JSONUtilsTest {
String jsonStr = "{\"a\":\"b\",\"b\":\"d\"}";
ObjectNode objectNode = JSONUtils.createObjectNode();
- objectNode.put("a","b");
- objectNode.put("b","d");
+ objectNode.put("a", "b");
+ objectNode.put("b", "d");
String s = JSONUtils.toJsonString(objectNode);
Assert.assertEquals(s, jsonStr);
}
@@ -155,7 +156,7 @@ public class JSONUtilsTest {
Assert.assertEquals("[1,2,3]", JSONUtils.getNodeString("{\"bar\":
[1,2,3]}", "bar"));
Assert.assertEquals("{\"1\":\"2\",\"2\":3}",
JSONUtils.getNodeString("{\"bar\": {\"1\":\"2\",\"2\":3}}", "bar"));
}
-
+
@Test
public void testJsonByteArray() {
String str = "foo";
@@ -258,4 +259,22 @@ public class JSONUtilsTest {
Assert.assertTrue(true);
}
+ @Test
+ public void dateToString() {
+ String time = "2022-02-22 13:38:24";
+ Date date = DateUtils.stringToDate(time);
+ String json = JSONUtils.toJsonString(date);
+ Assert.assertEquals(json, "\"" + time + "\"");
+
+ String errorFormatTime = "Tue Feb 22 03:50:00 UTC 2022";
+ Assert.assertNull(DateUtils.stringToDate(errorFormatTime));
+ }
+
+ @Test
+ public void stringToDate() {
+ String json = "\"2022-02-22 13:38:24\"";
+ Date date = JSONUtils.parseObject(json, Date.class);
+ Assert.assertEquals(date, DateUtils.stringToDate("2022-02-22
13:38:24"));
+ }
+
}
diff --git
a/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/placeholder/TimePlaceholderUtilsTest.java
b/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/placeholder/TimePlaceholderUtilsTest.java
index 59b61fd..3bd10f7 100644
---
a/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/placeholder/TimePlaceholderUtilsTest.java
+++
b/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/placeholder/TimePlaceholderUtilsTest.java
@@ -38,7 +38,7 @@ public class TimePlaceholderUtilsTest {
@Before
public void init() {
- date = DateUtils.parse("20170101010101", "yyyyMMddHHmmss");
+ date = DateUtils.parse("20170101010101", "yyyyMMddHHmmss", null);
}
@Test
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/AuditLog.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/AuditLog.java
index 0705b1b..6cb9821 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/AuditLog.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/AuditLog.java
@@ -23,7 +23,6 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.annotation.JsonFormat;
@TableName("t_ds_audit_log")
public class AuditLog {
@@ -63,7 +62,6 @@ public class AuditLog {
/**
* operation time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date time;
public Integer getUserId() {
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/CycleDependency.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/CycleDependency.java
index 89a57aa..115f9c5 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/CycleDependency.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/CycleDependency.java
@@ -32,12 +32,10 @@ public class CycleDependency {
/**
* last schedule time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date lastScheduleTime;
/**
* expiration time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date expirationTime;
/**
* cycle enum
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/DataSource.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/DataSource.java
index b15d0ef..6bd010c 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/DataSource.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/DataSource.java
@@ -68,13 +68,11 @@ public class DataSource {
/**
* create time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date createTime;
/**
* update time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date updateTime;
public DataSource() {
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/DqComparisonType.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/DqComparisonType.java
index 396d3e3..cf35342 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/DqComparisonType.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/DqComparisonType.java
@@ -24,7 +24,6 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.annotation.JsonFormat;
@TableName("t_ds_dq_comparison_type")
public class DqComparisonType implements Serializable {
@@ -62,13 +61,11 @@ public class DqComparisonType implements Serializable {
* create_time
*/
@TableField(value = "create_time")
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
/**
* update_time
*/
@TableField(value = "update_time")
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime;
public int getId() {
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/DqExecuteResult.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/DqExecuteResult.java
index 4ee6947..7611ce4 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/DqExecuteResult.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/DqExecuteResult.java
@@ -147,13 +147,11 @@ public class DqExecuteResult implements Serializable {
* create_time
*/
@TableField(value = "create_time")
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
/**
* update_time
*/
@TableField(value = "update_time")
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime;
public int getId() {
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/DqRuleExecuteSql.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/DqRuleExecuteSql.java
index 4ce1d4a..dfffe09 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/DqRuleExecuteSql.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/DqRuleExecuteSql.java
@@ -26,7 +26,6 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.annotation.JsonFormat;
/**
* RuleExecuteSql
@@ -67,13 +66,11 @@ public class DqRuleExecuteSql implements Serializable {
* create_time
*/
@TableField(value = "create_time")
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
/**
* update_time
*/
@TableField(value = "update_time")
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime;
public int getId() {
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/DqRuleInputEntry.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/DqRuleInputEntry.java
index d27e6fa..5e7c259 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/DqRuleInputEntry.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/DqRuleInputEntry.java
@@ -28,7 +28,6 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.annotation.JsonFormat;
/**
* RuleInputEntry
@@ -121,13 +120,11 @@ public class DqRuleInputEntry implements Serializable {
* create_time
*/
@TableField(value = "create_time")
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
/**
* update_time
*/
@TableField(value = "update_time")
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime;
public int getId() {
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/DqTaskStatisticsValue.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/DqTaskStatisticsValue.java
index 924aec8..f76b97f 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/DqTaskStatisticsValue.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/DqTaskStatisticsValue.java
@@ -24,7 +24,6 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.annotation.JsonFormat;
@TableName("t_ds_dq_task_statistics_value")
public class DqTaskStatisticsValue implements Serializable {
@@ -82,19 +81,16 @@ public class DqTaskStatisticsValue implements Serializable {
* data time
*/
@TableField(value = "data_time")
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date dataTime;
/**
* create time
*/
@TableField(value = "create_time")
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
/**
* update time
*/
@TableField(value = "update_time")
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime;
public int getId() {
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Environment.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Environment.java
index ad0f714..a06700e 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Environment.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Environment.java
@@ -55,10 +55,8 @@ public class Environment {
*/
private Integer operator;
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime;
public int getId() {
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/EnvironmentWorkerGroupRelation.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/EnvironmentWorkerGroupRelation.java
index d1ac972..68e4d46 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/EnvironmentWorkerGroupRelation.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/EnvironmentWorkerGroupRelation.java
@@ -48,10 +48,8 @@ public class EnvironmentWorkerGroupRelation {
*/
private Integer operator;
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime;
public int getId() {
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ErrorCommand.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ErrorCommand.java
index 20df39b..a57000b 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ErrorCommand.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ErrorCommand.java
@@ -85,13 +85,11 @@ public class ErrorCommand {
/**
* schedule time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date scheduleTime;
/**
* start time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date startTime;
/**
@@ -102,7 +100,6 @@ public class ErrorCommand {
/**
* update time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date updateTime;
/**
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/MonitorRecord.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/MonitorRecord.java
index 1d6ebe0..f460d96 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/MonitorRecord.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/MonitorRecord.java
@@ -58,7 +58,6 @@ public class MonitorRecord {
/**
* start date
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date date;
public Flag getState() {
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessAlertContent.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessAlertContent.java
index e39d3f7..349e64d 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessAlertContent.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessAlertContent.java
@@ -56,10 +56,8 @@ public class ProcessAlertContent implements Serializable {
private Flag recovery;
@JsonProperty("runTimes")
private Integer runTimes;
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@JsonProperty("processStartTime")
private Date processStartTime;
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@JsonProperty("processEndTime")
private Date processEndTime;
@JsonProperty("processHost")
@@ -78,10 +76,8 @@ public class ProcessAlertContent implements Serializable {
private Integer retryTimes;
@JsonProperty("taskState")
private ExecutionStatus taskState;
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@JsonProperty("taskStartTime")
private Date taskStartTime;
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@JsonProperty("taskEndTime")
private Date taskEndTime;
@JsonProperty("taskHost")
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessDefinition.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessDefinition.java
index 5718b5b..c31bded 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessDefinition.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessDefinition.java
@@ -100,13 +100,11 @@ public class ProcessDefinition {
/**
* create time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
/**
* update time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime;
/**
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessDefinitionLog.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessDefinitionLog.java
index 9a20af3..0e18e1c 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessDefinitionLog.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessDefinitionLog.java
@@ -36,7 +36,6 @@ public class ProcessDefinitionLog extends ProcessDefinition {
/**
* operateTime
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date operateTime;
public ProcessDefinitionLog() {
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessInstance.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessInstance.java
index 71c466b..8685e5b 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessInstance.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessInstance.java
@@ -70,13 +70,11 @@ public class ProcessInstance {
/**
* start time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date startTime;
/**
* end time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date endTime;
/**
@@ -137,13 +135,11 @@ public class ProcessInstance {
/**
* schedule time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date scheduleTime;
/**
* command start time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date commandStartTime;
/**
@@ -252,7 +248,6 @@ public class ProcessInstance {
/**
* re-start time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date restartTime;
public ProcessInstance() {
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessTaskRelation.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessTaskRelation.java
index 06f7cd0..4f999b6 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessTaskRelation.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessTaskRelation.java
@@ -26,7 +26,6 @@ import java.util.Objects;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
@@ -97,13 +96,11 @@ public class ProcessTaskRelation {
/**
* create time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
/**
* update time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime;
public ProcessTaskRelation() {
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessTaskRelationLog.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessTaskRelationLog.java
index 28e89e5..711d016 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessTaskRelationLog.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessTaskRelationLog.java
@@ -36,7 +36,6 @@ public class ProcessTaskRelationLog extends
ProcessTaskRelation {
/**
* operate time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date operateTime;
public ProcessTaskRelationLog() {
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Queue.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Queue.java
index 9c89167..44ab9ae 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Queue.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Queue.java
@@ -46,12 +46,10 @@ public class Queue {
/**
* create time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date createTime;
/**
* update time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date updateTime;
public int getId() {
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Resource.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Resource.java
index 7475bf7..4e913f7 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Resource.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Resource.java
@@ -82,13 +82,11 @@ public class Resource {
/**
* create time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
/**
* update time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime;
public Resource() {
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ResourcesUser.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ResourcesUser.java
index ea8bd6c..c0dbd8d 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ResourcesUser.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ResourcesUser.java
@@ -53,13 +53,11 @@ public class ResourcesUser {
/**
* create time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date createTime;
/**
* update time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date updateTime;
public int getId() {
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Schedule.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Schedule.java
index 0d2ea9e..34776e4 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Schedule.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Schedule.java
@@ -66,13 +66,11 @@ public class Schedule {
/**
* schedule start time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date startTime;
/**
* schedule end time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date endTime;
/**
@@ -99,13 +97,11 @@ public class Schedule {
/**
* create time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date createTime;
/**
* update time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date updateTime;
/**
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Session.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Session.java
index 060d882..59e9612 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Session.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Session.java
@@ -43,7 +43,6 @@ public class Session {
/**
* last login time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date lastLoginTime;
/**
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/TaskAlertContent.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/TaskAlertContent.java
index ab37bf2..c0cb3b5 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/TaskAlertContent.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/TaskAlertContent.java
@@ -45,10 +45,8 @@ public class TaskAlertContent implements Serializable {
private String processInstanceName;
@JsonProperty("state")
private ExecutionStatus state;
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@JsonProperty("startTime")
private Date startTime;
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@JsonProperty("endTime")
private Date endTime;
@JsonProperty("host")
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/TaskDefinition.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/TaskDefinition.java
index 4d31e23..d78c46a 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/TaskDefinition.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/TaskDefinition.java
@@ -38,7 +38,6 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
@@ -180,13 +179,11 @@ public class TaskDefinition {
/**
* create time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
/**
* update time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime;
/**
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/TaskDefinitionLog.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/TaskDefinitionLog.java
index 55b8bfb..af6782b 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/TaskDefinitionLog.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/TaskDefinitionLog.java
@@ -36,7 +36,6 @@ public class TaskDefinitionLog extends TaskDefinition {
/**
* operate time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date operateTime;
public TaskDefinitionLog() {
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/TaskGroup.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/TaskGroup.java
index 7994f6c..2ec6d3b 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/TaskGroup.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/TaskGroup.java
@@ -23,7 +23,6 @@ import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.annotation.JsonFormat;
/**
* Task Group
@@ -60,12 +59,10 @@ public class TaskGroup implements Serializable {
/**
* create time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
/**
* update time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime;
/**
* project Id
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/TaskGroupQueue.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/TaskGroupQueue.java
index 6ab97ae..ae6bee7 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/TaskGroupQueue.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/TaskGroupQueue.java
@@ -89,12 +89,10 @@ public class TaskGroupQueue implements Serializable {
/**
* create time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
/**
* update time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime;
public TaskGroupQueue() {
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/TaskInstance.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/TaskInstance.java
index b4e52c0..8b18195 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/TaskInstance.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/TaskInstance.java
@@ -29,8 +29,6 @@ import
org.apache.dolphinscheduler.common.task.switchtask.SwitchParameters;
import org.apache.dolphinscheduler.common.utils.DateUtils;
import org.apache.dolphinscheduler.common.utils.JSONUtils;
-import org.apache.commons.lang3.SerializationUtils;
-
import java.io.Serializable;
import java.util.Date;
import java.util.Map;
@@ -39,7 +37,6 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.core.type.TypeReference;
/**
@@ -100,25 +97,21 @@ public class TaskInstance implements Serializable {
/**
* task first submit time.
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date firstSubmitTime;
/**
* task submit time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date submitTime;
/**
* task start time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date startTime;
/**
* task end time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date endTime;
/**
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/TaskMainInfo.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/TaskMainInfo.java
index e17392f..35c9a3b 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/TaskMainInfo.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/TaskMainInfo.java
@@ -52,13 +52,11 @@ public class TaskMainInfo {
/**
* create time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date taskCreateTime;
/**
* update time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date taskUpdateTime;
/**
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/TaskRecord.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/TaskRecord.java
index b267dff..5b849b5 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/TaskRecord.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/TaskRecord.java
@@ -48,13 +48,11 @@ public class TaskRecord {
/**
* start date
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date startTime;
/**
* end date
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date endTime;
/**
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Tenant.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Tenant.java
index 87674fe..c143f91 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Tenant.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Tenant.java
@@ -67,12 +67,10 @@ public class Tenant {
/**
* create time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date createTime;
/**
* update time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date updateTime;
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/UDFUser.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/UDFUser.java
index fa3fbc2..ee8a568 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/UDFUser.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/UDFUser.java
@@ -53,13 +53,11 @@ public class UDFUser {
/**
* create time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date createTime;
/**
* update time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date updateTime;
public int getId() {
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/UdfFunc.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/UdfFunc.java
index d76436b..6e3e546 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/UdfFunc.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/UdfFunc.java
@@ -90,13 +90,11 @@ public class UdfFunc {
/**
* create time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date createTime;
/**
* update time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date updateTime;
public int getId() {
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/User.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/User.java
index a7445ed..9650778 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/User.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/User.java
@@ -104,13 +104,11 @@ public class User {
/**
* create time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date createTime;
/**
* update time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date updateTime;
public int getId() {
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/WorkerGroup.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/WorkerGroup.java
index b6dc13a..164c764 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/WorkerGroup.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/WorkerGroup.java
@@ -38,10 +38,8 @@ public class WorkerGroup {
private String addrList;
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime;
@TableField(exist = false)
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/WorkerServer.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/WorkerServer.java
index 58bf2d2..c6aadf4 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/WorkerServer.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/WorkerServer.java
@@ -51,13 +51,11 @@ public class WorkerServer {
/**
* create time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date createTime;
/**
* last heart beat time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date lastHeartbeatTime;
public int getId() {
diff --git
a/dolphinscheduler-data-quality/src/main/java/org/apache/dolphinscheduler/data/quality/Constants.java
b/dolphinscheduler-data-quality/src/main/java/org/apache/dolphinscheduler/data/quality/Constants.java
index 87d1994..3d2cc31 100644
---
a/dolphinscheduler-data-quality/src/main/java/org/apache/dolphinscheduler/data/quality/Constants.java
+++
b/dolphinscheduler-data-quality/src/main/java/org/apache/dolphinscheduler/data/quality/Constants.java
@@ -59,4 +59,9 @@ public final class Constants {
public static final String APPEND = "append";
public static final String SPARK_APP_NAME = "spark.app.name";
+
+ /**
+ * date format of yyyy-MM-dd HH:mm:ss
+ */
+ public static final String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
}
diff --git
a/dolphinscheduler-data-quality/src/main/java/org/apache/dolphinscheduler/data/quality/utils/JsonUtils.java
b/dolphinscheduler-data-quality/src/main/java/org/apache/dolphinscheduler/data/quality/utils/JsonUtils.java
index 1f006bd..e35eeaa 100644
---
a/dolphinscheduler-data-quality/src/main/java/org/apache/dolphinscheduler/data/quality/utils/JsonUtils.java
+++
b/dolphinscheduler-data-quality/src/main/java/org/apache/dolphinscheduler/data/quality/utils/JsonUtils.java
@@ -24,6 +24,9 @@ import static
com.fasterxml.jackson.databind.DeserializationFeature.READ_UNKNOWN
import static
com.fasterxml.jackson.databind.MapperFeature.REQUIRE_SETTERS_FOR_GETTERS;
import static
com.fasterxml.jackson.databind.SerializationFeature.FAIL_ON_EMPTY_BEANS;
+import org.apache.dolphinscheduler.data.quality.Constants;
+
+import java.text.SimpleDateFormat;
import java.util.TimeZone;
import org.slf4j.Logger;
@@ -49,7 +52,8 @@ public class JsonUtils {
.configure(READ_UNKNOWN_ENUM_VALUES_AS_NULL, true)
.configure(REQUIRE_SETTERS_FOR_GETTERS, true)
.configure(FAIL_ON_EMPTY_BEANS,false)
- .setTimeZone(TimeZone.getDefault());
+ .setTimeZone(TimeZone.getDefault())
+ .setDateFormat(new
SimpleDateFormat(Constants.YYYY_MM_DD_HH_MM_SS));
private JsonUtils() {
throw new UnsupportedOperationException("Construct JSONUtils");
diff --git
a/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/MasterServer.java
b/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/MasterServer.java
index 22b4a69..92eb973 100644
---
a/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/MasterServer.java
+++
b/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/MasterServer.java
@@ -37,6 +37,8 @@ import
org.apache.dolphinscheduler.server.master.runner.FailoverExecuteThread;
import org.apache.dolphinscheduler.server.master.runner.MasterSchedulerService;
import org.apache.dolphinscheduler.service.bean.SpringApplicationContext;
+import java.util.TimeZone;
+
import javax.annotation.PostConstruct;
import org.quartz.Scheduler;
@@ -44,6 +46,7 @@ import org.quartz.SchedulerException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
@@ -101,6 +104,9 @@ public class MasterServer implements IStoppable {
@Autowired
private LoggerRequestProcessor loggerRequestProcessor;
+ @Value("${spring.jackson.time-zone:UTC}")
+ private String timezone;
+
public static void main(String[] args) {
Thread.currentThread().setName(Constants.THREAD_NAME_MASTER_SERVER);
SpringApplication.run(MasterServer.class);
@@ -111,6 +117,8 @@ public class MasterServer implements IStoppable {
*/
@PostConstruct
public void run() throws SchedulerException {
+ TimeZone.setDefault(TimeZone.getTimeZone(timezone));
+
// init remoting server
NettyServerConfig serverConfig = new NettyServerConfig();
serverConfig.setListenPort(masterConfig.getListenPort());
diff --git
a/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/processor/queue/TaskResponseEvent.java
b/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/processor/queue/TaskResponseEvent.java
index 224a617..2378ca0 100644
---
a/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/processor/queue/TaskResponseEvent.java
+++
b/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/processor/queue/TaskResponseEvent.java
@@ -49,13 +49,11 @@ public class TaskResponseEvent {
/**
* start time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date startTime;
/**
* end time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date endTime;
/**
diff --git
a/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/runner/WorkflowExecuteThread.java
b/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/runner/WorkflowExecuteThread.java
index c8c15ae..59deb39 100644
---
a/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/runner/WorkflowExecuteThread.java
+++
b/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/runner/WorkflowExecuteThread.java
@@ -706,7 +706,7 @@ public class WorkflowExecuteThread {
if
(cmdParam.containsKey(Constants.CMD_PARAM_RECOVERY_START_NODE_STRING)) {
cmdParam.remove(Constants.CMD_PARAM_RECOVERY_START_NODE_STRING);
}
- cmdParam.replace(CMDPARAM_COMPLEMENT_DATA_START_DATE,
DateUtils.format(scheduleDate, "yyyy-MM-dd HH:mm:ss"));
+ cmdParam.replace(CMDPARAM_COMPLEMENT_DATA_START_DATE,
DateUtils.format(scheduleDate, "yyyy-MM-dd HH:mm:ss", null));
command.setCommandParam(JSONUtils.toJsonString(cmdParam));
command.setTaskDependType(processInstance.getTaskDependType());
command.setFailureStrategy(processInstance.getFailureStrategy());
diff --git
a/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/runner/task/DependentTaskProcessor.java
b/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/runner/task/DependentTaskProcessor.java
index a2bbae7..aaeaa97 100644
---
a/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/runner/task/DependentTaskProcessor.java
+++
b/dolphinscheduler-master/src/main/java/org/apache/dolphinscheduler/server/master/runner/task/DependentTaskProcessor.java
@@ -36,7 +36,6 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import com.fasterxml.jackson.annotation.JsonFormat;
import com.google.auto.service.AutoService;
/**
@@ -61,7 +60,6 @@ public class DependentTaskProcessor extends BaseTaskProcessor
{
/**
* dependent date
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date dependentDate;
DependResult result;
diff --git a/dolphinscheduler-master/src/main/resources/application.yaml
b/dolphinscheduler-master/src/main/resources/application.yaml
index beefc22..0065ce3 100644
--- a/dolphinscheduler-master/src/main/resources/application.yaml
+++ b/dolphinscheduler-master/src/main/resources/application.yaml
@@ -19,6 +19,9 @@ spring:
banner-mode: off
application:
name: master-server
+ jackson:
+ time-zone: UTC
+ date-format: "yyyy-MM-dd HH:mm:ss"
cache:
# default enable cache, you can disable by `type: none`
type: none
diff --git
a/dolphinscheduler-python/src/main/java/org/apache/dolphinscheduler/server/PythonGatewayServer.java
b/dolphinscheduler-python/src/main/java/org/apache/dolphinscheduler/server/PythonGatewayServer.java
index ae97a9d..cea26c7 100644
---
a/dolphinscheduler-python/src/main/java/org/apache/dolphinscheduler/server/PythonGatewayServer.java
+++
b/dolphinscheduler-python/src/main/java/org/apache/dolphinscheduler/server/PythonGatewayServer.java
@@ -62,6 +62,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
+import java.util.TimeZone;
import java.util.stream.Collectors;
import javax.annotation.PostConstruct;
@@ -69,6 +70,7 @@ import javax.annotation.PostConstruct;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import
org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@@ -138,6 +140,14 @@ public class PythonGatewayServer extends
SpringBootServletInitializer {
@Autowired
private PythonGatewayConfig pythonGatewayConfig;
+ @Value("${spring.jackson.time-zone:UTC}")
+ private String timezone;
+
+ @PostConstruct
+ public void init() {
+ TimeZone.setDefault(TimeZone.getTimeZone(timezone));
+ }
+
// TODO replace this user to build in admin user if we make sure build in
one could not be change
private final User dummyAdminUser = new User() {
{
diff --git
a/dolphinscheduler-remote/src/main/java/org/apache/dolphinscheduler/remote/command/TaskExecuteAckCommand.java
b/dolphinscheduler-remote/src/main/java/org/apache/dolphinscheduler/remote/command/TaskExecuteAckCommand.java
index 96f15ad..17a77e7 100644
---
a/dolphinscheduler-remote/src/main/java/org/apache/dolphinscheduler/remote/command/TaskExecuteAckCommand.java
+++
b/dolphinscheduler-remote/src/main/java/org/apache/dolphinscheduler/remote/command/TaskExecuteAckCommand.java
@@ -42,7 +42,6 @@ public class TaskExecuteAckCommand implements Serializable {
/**
* startTime
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date startTime;
/**
diff --git
a/dolphinscheduler-remote/src/main/java/org/apache/dolphinscheduler/remote/command/TaskExecuteResponseCommand.java
b/dolphinscheduler-remote/src/main/java/org/apache/dolphinscheduler/remote/command/TaskExecuteResponseCommand.java
index f114a3f..eafb803 100644
---
a/dolphinscheduler-remote/src/main/java/org/apache/dolphinscheduler/remote/command/TaskExecuteResponseCommand.java
+++
b/dolphinscheduler-remote/src/main/java/org/apache/dolphinscheduler/remote/command/TaskExecuteResponseCommand.java
@@ -22,8 +22,6 @@ import org.apache.dolphinscheduler.common.utils.JSONUtils;
import java.io.Serializable;
import java.util.Date;
-import com.fasterxml.jackson.annotation.JsonFormat;
-
/**
* execute task response command
*/
@@ -56,7 +54,6 @@ public class TaskExecuteResponseCommand implements
Serializable {
/**
* end time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date endTime;
diff --git
a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/utils/LogUtils.java
b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/utils/LogUtils.java
index 6c6c2f2..503d4af 100644
---
a/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/utils/LogUtils.java
+++
b/dolphinscheduler-server/src/main/java/org/apache/dolphinscheduler/server/utils/LogUtils.java
@@ -63,7 +63,7 @@ public class LogUtils {
.map(TaskLogDiscriminator::getLogBase)
.map(e -> Paths.get(e)
.toAbsolutePath()
- .resolve(DateUtils.format(firstSubmitTime,Constants.YYYYMMDD))
+ .resolve(DateUtils.format(firstSubmitTime,Constants.YYYYMMDD,
null))
.resolve(taskLogFileName))
.map(Path::toString)
.orElse("");
diff --git
a/dolphinscheduler-server/src/test/java/org/apache/dolphinscheduler/server/utils/LogUtilsTest.java
b/dolphinscheduler-server/src/test/java/org/apache/dolphinscheduler/server/utils/LogUtilsTest.java
index 06aba92..456ada5 100644
---
a/dolphinscheduler-server/src/test/java/org/apache/dolphinscheduler/server/utils/LogUtilsTest.java
+++
b/dolphinscheduler-server/src/test/java/org/apache/dolphinscheduler/server/utils/LogUtilsTest.java
@@ -65,7 +65,7 @@ public class LogUtilsTest {
Path logPath = Paths.get(".").toAbsolutePath().getParent()
.resolve(logBase)
- .resolve(DateUtils.format(firstSubmitTime, Constants.YYYYMMDD))
+ .resolve(DateUtils.format(firstSubmitTime, Constants.YYYYMMDD,
null))
.resolve("1_1-100-1000.log");
Assert.assertEquals(logPath.toString(),
LogUtils.getTaskLogPath(taskExecutionContext));
}
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/ApiApplicationServer.java
b/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/json/DateJsonSerializer.java
similarity index 56%
copy from
dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/ApiApplicationServer.java
copy to
dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/json/DateJsonSerializer.java
index 7981f8a..c45665a 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/ApiApplicationServer.java
+++
b/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/json/DateJsonSerializer.java
@@ -15,20 +15,23 @@
* limitations under the License.
*/
-package org.apache.dolphinscheduler.api;
+package org.apache.dolphinscheduler.service.json;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.web.servlet.ServletComponentScan;
-import org.springframework.context.annotation.ComponentScan;
+import org.apache.dolphinscheduler.common.utils.DateUtils;
-@ServletComponentScan
-@SpringBootApplication
-@ComponentScan("org.apache.dolphinscheduler")
-public class ApiApplicationServer {
+import java.io.IOException;
+import java.util.Date;
- public static void main(String[] args) {
- SpringApplication.run(ApiApplicationServer.class);
- }
+import org.springframework.boot.jackson.JsonComponent;
+
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.databind.JsonSerializer;
+import com.fasterxml.jackson.databind.SerializerProvider;
+@JsonComponent
+public class DateJsonSerializer extends JsonSerializer<Date> {
+ @Override
+ public void serialize(Date value, JsonGenerator gen, SerializerProvider
serializers) throws IOException {
+ gen.writeString(DateUtils.dateToString(value));
+ }
}
diff --git
a/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/queue/entity/TaskExecutionContext.java
b/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/queue/entity/TaskExecutionContext.java
index 1fede5f..63acf27 100644
---
a/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/queue/entity/TaskExecutionContext.java
+++
b/dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/queue/entity/TaskExecutionContext.java
@@ -53,13 +53,11 @@ public class TaskExecutionContext implements Serializable {
/**
* task first submit time.
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date firstSubmitTime;
/**
* task start time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date startTime;
/**
@@ -116,7 +114,6 @@ public class TaskExecutionContext implements Serializable {
/**
* process instance schedule time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date scheduleTime;
/**
diff --git
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/request/TaskRequest.java
b/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/request/TaskRequest.java
index ab7bea3..df0aa7f 100644
---
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/request/TaskRequest.java
+++
b/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/request/TaskRequest.java
@@ -23,8 +23,6 @@ import org.apache.dolphinscheduler.spi.task.Property;
import java.util.Date;
import java.util.Map;
-import com.fasterxml.jackson.annotation.JsonFormat;
-
/**
* to master/worker task transport
*/
@@ -43,13 +41,11 @@ public class TaskRequest {
/**
* task first submit time.
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date firstSubmitTime;
/**
* task start time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date startTime;
/**
@@ -96,7 +92,6 @@ public class TaskRequest {
/**
* process instance schedule time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date scheduleTime;
/**
diff --git
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/request/UdfFuncRequest.java
b/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/request/UdfFuncRequest.java
index cbbd9e2..67228d6 100644
---
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/request/UdfFuncRequest.java
+++
b/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/task/request/UdfFuncRequest.java
@@ -83,13 +83,11 @@ public class UdfFuncRequest {
/**
* create time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
/**
* update time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime;
public int getId() {
diff --git
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/utils/JSONUtils.java
b/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/utils/JSONUtils.java
index 070e62f..5183a16 100644
---
a/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/utils/JSONUtils.java
+++
b/dolphinscheduler-spi/src/main/java/org/apache/dolphinscheduler/spi/utils/JSONUtils.java
@@ -25,6 +25,7 @@ import static
com.fasterxml.jackson.databind.DeserializationFeature.READ_UNKNOWN
import static
com.fasterxml.jackson.databind.MapperFeature.REQUIRE_SETTERS_FOR_GETTERS;
import java.io.IOException;
+import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -62,7 +63,8 @@ public class JSONUtils {
.configure(ACCEPT_EMPTY_ARRAY_AS_NULL_OBJECT, true)
.configure(READ_UNKNOWN_ENUM_VALUES_AS_NULL, true)
.configure(REQUIRE_SETTERS_FOR_GETTERS, true)
- .setTimeZone(TimeZone.getDefault());
+ .setTimeZone(TimeZone.getDefault())
+ .setDateFormat(new
SimpleDateFormat(Constants.YYYY_MM_DD_HH_MM_SS));
private JSONUtils() {
throw new UnsupportedOperationException("Construct JSONUtils");
diff --git
a/dolphinscheduler-standalone-server/src/main/java/org/apache/dolphinscheduler/StandaloneServer.java
b/dolphinscheduler-standalone-server/src/main/java/org/apache/dolphinscheduler/StandaloneServer.java
index 9272103..9120521 100644
---
a/dolphinscheduler-standalone-server/src/main/java/org/apache/dolphinscheduler/StandaloneServer.java
+++
b/dolphinscheduler-standalone-server/src/main/java/org/apache/dolphinscheduler/StandaloneServer.java
@@ -19,14 +19,29 @@ package org.apache.dolphinscheduler;
import org.apache.curator.test.TestingServer;
+import java.util.TimeZone;
+
+import javax.annotation.PostConstruct;
+
+import org.quartz.SchedulerException;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class StandaloneServer {
+
+ @Value("${spring.jackson.time-zone:UTC}")
+ private String timezone;
+
public static void main(String[] args) throws Exception {
final TestingServer server = new TestingServer(true);
System.setProperty("registry.zookeeper.connect-string",
server.getConnectString());
SpringApplication.run(StandaloneServer.class, args);
}
+
+ @PostConstruct
+ public void run() {
+ TimeZone.setDefault(TimeZone.getTimeZone(timezone));
+ }
}
diff --git
a/dolphinscheduler-standalone-server/src/main/resources/application.yaml
b/dolphinscheduler-standalone-server/src/main/resources/application.yaml
index afd3f5d..0598820 100644
--- a/dolphinscheduler-standalone-server/src/main/resources/application.yaml
+++ b/dolphinscheduler-standalone-server/src/main/resources/application.yaml
@@ -18,6 +18,9 @@
spring:
application:
name: standalone-server
+ jackson:
+ time-zone: UTC
+ date-format: "yyyy-MM-dd HH:mm:ss"
main:
banner-mode: off
cache:
@@ -59,8 +62,6 @@ spring:
org.quartz.scheduler.makeSchedulerThreadDaemon: true
org.quartz.jobStore.driverDelegateClass:
org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.clusterCheckinInterval: 5000
- jackson:
- time-zone: GMT+8
servlet:
multipart:
max-file-size: 1024MB
diff --git
a/dolphinscheduler-task-plugin/dolphinscheduler-task-dataquality/src/main/java/org/apache/dolphinscheduler/plugin/task/dq/rule/entity/DqRuleExecuteSql.java
b/dolphinscheduler-task-plugin/dolphinscheduler-task-dataquality/src/main/java/org/apache/dolphinscheduler/plugin/task/dq/rule/entity/DqRuleExecuteSql.java
index a2bfbcf..3d1cd4a 100644
---
a/dolphinscheduler-task-plugin/dolphinscheduler-task-dataquality/src/main/java/org/apache/dolphinscheduler/plugin/task/dq/rule/entity/DqRuleExecuteSql.java
+++
b/dolphinscheduler-task-plugin/dolphinscheduler-task-dataquality/src/main/java/org/apache/dolphinscheduler/plugin/task/dq/rule/entity/DqRuleExecuteSql.java
@@ -55,12 +55,10 @@ public class DqRuleExecuteSql implements Serializable {
/**
* create_time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
/**
* update_time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime;
public int getId() {
diff --git
a/dolphinscheduler-task-plugin/dolphinscheduler-task-dataquality/src/main/java/org/apache/dolphinscheduler/plugin/task/dq/rule/entity/DqRuleInputEntry.java
b/dolphinscheduler-task-plugin/dolphinscheduler-task-dataquality/src/main/java/org/apache/dolphinscheduler/plugin/task/dq/rule/entity/DqRuleInputEntry.java
index 6a9d853..0f08b63 100644
---
a/dolphinscheduler-task-plugin/dolphinscheduler-task-dataquality/src/main/java/org/apache/dolphinscheduler/plugin/task/dq/rule/entity/DqRuleInputEntry.java
+++
b/dolphinscheduler-task-plugin/dolphinscheduler-task-dataquality/src/main/java/org/apache/dolphinscheduler/plugin/task/dq/rule/entity/DqRuleInputEntry.java
@@ -24,8 +24,6 @@ import
org.apache.dolphinscheduler.spi.task.dq.enums.ValueType;
import java.io.Serializable;
import java.util.Date;
-import com.fasterxml.jackson.annotation.JsonFormat;
-
/**
* RuleInputEntry
*/
@@ -98,12 +96,10 @@ public class DqRuleInputEntry implements Serializable {
/**
* create_time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
/**
* update_time
*/
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime;
public int getId() {
diff --git
a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/timing.vue
b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/timing.vue
index 068ef58..0430cfa 100644
---
a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/timing.vue
+++
b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/timing.vue
@@ -274,7 +274,8 @@
schedule: JSON.stringify({
startTime: this.scheduleTime[0],
endTime: this.scheduleTime[1],
- crontab: this.crontab
+ crontab: this.crontab,
+ timezoneId: this.timezoneId
})
}
diff --git
a/dolphinscheduler-worker/src/main/java/org/apache/dolphinscheduler/server/worker/WorkerServer.java
b/dolphinscheduler-worker/src/main/java/org/apache/dolphinscheduler/server/worker/WorkerServer.java
index e51f1d2..592a418 100644
---
a/dolphinscheduler-worker/src/main/java/org/apache/dolphinscheduler/server/worker/WorkerServer.java
+++
b/dolphinscheduler-worker/src/main/java/org/apache/dolphinscheduler/server/worker/WorkerServer.java
@@ -44,12 +44,14 @@ import org.apache.commons.collections4.CollectionUtils;
import java.util.Collection;
import java.util.Set;
+import java.util.TimeZone;
import javax.annotation.PostConstruct;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
@@ -122,6 +124,9 @@ public class WorkerServer implements IStoppable {
@Autowired
private LoggerRequestProcessor loggerRequestProcessor;
+ @Value("${spring.jackson.time-zone:UTC}")
+ private String timezone;
+
/**
* worker server startup, not use web service
*
@@ -137,6 +142,8 @@ public class WorkerServer implements IStoppable {
*/
@PostConstruct
public void run() {
+ TimeZone.setDefault(TimeZone.getTimeZone(timezone));
+
// init remoting server
NettyServerConfig serverConfig = new NettyServerConfig();
serverConfig.setListenPort(workerConfig.getListenPort());
diff --git
a/dolphinscheduler-worker/src/main/java/org/apache/dolphinscheduler/server/worker/runner/TaskExecuteThread.java
b/dolphinscheduler-worker/src/main/java/org/apache/dolphinscheduler/server/worker/runner/TaskExecuteThread.java
index 4e03ba8..dfe411b 100644
---
a/dolphinscheduler-worker/src/main/java/org/apache/dolphinscheduler/server/worker/runner/TaskExecuteThread.java
+++
b/dolphinscheduler-worker/src/main/java/org/apache/dolphinscheduler/server/worker/runner/TaskExecuteThread.java
@@ -378,7 +378,7 @@ public class TaskExecuteThread implements Runnable, Delayed
{
// replace variable TIME with $[YYYYmmddd...] in shell file when
history run job and batch complement job
if (taskExecutionContext.getScheduleTime() != null) {
Date date = taskExecutionContext.getScheduleTime();
- String dateTime = DateUtils.format(date,
Constants.PARAMETER_FORMAT_TIME);
+ String dateTime = DateUtils.format(date,
Constants.PARAMETER_FORMAT_TIME, null);
Property p = new Property();
p.setValue(dateTime);
p.setProp(Constants.PARAMETER_DATETIME);
diff --git a/dolphinscheduler-worker/src/main/resources/application.yaml
b/dolphinscheduler-worker/src/main/resources/application.yaml
index 3f79a32..77c539f 100644
--- a/dolphinscheduler-worker/src/main/resources/application.yaml
+++ b/dolphinscheduler-worker/src/main/resources/application.yaml
@@ -19,6 +19,9 @@ spring:
banner-mode: off
application:
name: worker-server
+ jackson:
+ time-zone: UTC
+ date-format: "yyyy-MM-dd HH:mm:ss"
datasource:
driver-class-name: org.postgresql.Driver
url: jdbc:postgresql://127.0.0.1:5432/dolphinscheduler
diff --git a/script/env/dolphinscheduler_env.sh
b/script/env/dolphinscheduler_env.sh
index 0e656d0..5e07aab 100755
--- a/script/env/dolphinscheduler_env.sh
+++ b/script/env/dolphinscheduler_env.sh
@@ -27,6 +27,7 @@ export DATAX_HOME=${DATAX_HOME:-/opt/soft/datax}
export
PATH=$HADOOP_HOME/bin:$SPARK_HOME1/bin:$SPARK_HOME2/bin:$PYTHON_HOME/bin:$JAVA_HOME/bin:$HIVE_HOME/bin:$FLINK_HOME/bin:$DATAX_HOME/bin:$PATH
+export SPRING_JACKSON_TIME_ZONE=${SPRING_JACKSON_TIME_ZONE:-UTC}
export DATABASE=${DATABASE:-postgresql}
export SPRING_PROFILES_ACTIVE=${DATABASE}
export SPRING_DATASOURCE_DRIVER_CLASS_NAME