This is an automated email from the ASF dual-hosted git repository.
dockerzhang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/inlong.git
The following commit(s) were added to refs/heads/master by this push:
new 150fd4cf4f [INLONG-10754][Manager] Add start and end time check for
schedule info (#10755)
150fd4cf4f is described below
commit 150fd4cf4f9a199387914c49b867197e5c9b04a7
Author: AloysZhang <[email protected]>
AuthorDate: Wed Aug 7 20:50:44 2024 +0800
[INLONG-10754][Manager] Add start and end time check for schedule info
(#10755)
Co-authored-by: Aloys Zhang <[email protected]>
---
.../service/group/InlongGroupServiceImpl.java | 26 ++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupServiceImpl.java
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupServiceImpl.java
index 6431cd9e48..99fae2bf86 100644
---
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupServiceImpl.java
+++
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupServiceImpl.java
@@ -104,6 +104,7 @@ import
org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
+import java.sql.Timestamp;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Arrays;
@@ -221,6 +222,7 @@ public class InlongGroupServiceImpl implements
InlongGroupService {
// save schedule info for offline group
if (DATASYNC_OFFLINE_MODE.equals(request.getInlongGroupMode())) {
+ constrainStartAndEndTime(request);
scheduleOperator.saveOpt(CommonBeanUtils.copyProperties(request,
ScheduleInfoRequest::new), operator);
}
@@ -228,6 +230,29 @@ public class InlongGroupServiceImpl implements
InlongGroupService {
return groupId;
}
+ /**
+ * Add constraints to the start and end time of the offline
synchronization group.
+ * 1. startTime must >= current time
+ * 2. endTime must >= startTime
+ * */
+ private void constrainStartAndEndTime(InlongGroupRequest request) {
+ Timestamp startTime = request.getStartTime();
+ Timestamp endTime = request.getEndTime();
+ Preconditions.expectTrue(startTime != null && endTime != null, "start
time or end time cannot be empty");
+ long currentTime = System.currentTimeMillis();
+ if (startTime.getTime() < currentTime) {
+ Timestamp newStartTime = new Timestamp(currentTime);
+ request.setStartTime(newStartTime);
+ LOGGER.warn("start time is less than current time, re-set to
current time for groupId={}, "
+ + "startTime={}, newStartTime={}",
request.getInlongGroupId(), startTime, newStartTime);
+ }
+ if (request.getStartTime().getTime() > endTime.getTime()) {
+ request.setEndTime(request.getStartTime());
+ LOGGER.warn("end time is less than start time, re-set end time to
start time for groupId={}, "
+ + "endTime={}, newEndTime={}", request.getInlongGroupId(),
endTime, request.getEndTime());
+ }
+ }
+
@Override
@Transactional(rollbackFor = Throwable.class)
public List<BatchResult> batchSave(List<InlongGroupRequest>
groupRequestList, String operator) {
@@ -498,6 +523,7 @@ public class InlongGroupServiceImpl implements
InlongGroupService {
// save schedule info for offline group
if (DATASYNC_OFFLINE_MODE.equals(request.getInlongGroupMode())) {
+ constrainStartAndEndTime(request);
scheduleOperator.updateAndRegister(CommonBeanUtils.copyProperties(request,
ScheduleInfoRequest::new),
operator);
}