@Override
    public InlongGroupTopicInfo getBackupTopic(String groupId) {
        // backup topic info saved in the ext table
        InlongGroupExtEntity extEntity = groupExtMapper.selectByUniqueKey(groupId, BACKUP_CLUSTER_TAG);
        if (extEntity == null || StringUtils.isBlank(extEntity.getKeyValue())) {
            LOGGER.warn("not found any backup topic for groupId={}", groupId);
            return null;
        }

        // the group info will not null in get() method
        InlongGroupInfo groupInfo = this.get(groupId);
        InlongGroupOperator groupOperator = groupOperatorFactory.getInstance(groupInfo.getMqType());
        InlongGroupTopicInfo backupTopicInfo = groupOperator.getBackupTopic(groupInfo);

        // set the base params
        backupTopicInfo.setInlongGroupId(groupId);
        String backupClusterTag = extEntity.getKeyValue();
        backupTopicInfo.setInlongClusterTag(backupClusterTag);

        // set backup cluster info
        // assert: each MQ type has a corresponding type of cluster
        List<ClusterInfo> clusterInfos = clusterService.listByTagAndType(backupClusterTag, groupInfo.getMqType());
        backupTopicInfo.setClusterInfos(clusterInfos);

        LOGGER.debug("success to get backup topic for groupId={}, result={}", groupId, backupTopicInfo);
        return backupTopicInfo;
    }
Add constraints to the start and end time of the offline synchronization group.
1. startTime must >= current time
2. endTime must >= startTime
inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupServiceImpl.java