Skip to content

Commit d517c0f

Browse files
authored
merge 202502bp into main
merge 202502bp into main
2 parents 02070aa + 9d4f6f3 commit d517c0f

File tree

49 files changed

+1215
-313
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+1215
-313
lines changed

pom.xml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -782,11 +782,6 @@
782782
<artifactId>commons-compress</artifactId>
783783
<version>${commons-compress.version}</version>
784784
</dependency>
785-
<dependency>
786-
<groupId>commons-codec</groupId>
787-
<artifactId>commons-codec</artifactId>
788-
<version>1.14</version>
789-
</dependency>
790785
<dependency>
791786
<groupId>org.apache.commons</groupId>
792787
<artifactId>commons-collections4</artifactId>

server/odc-common/src/main/java/com/oceanbase/odc/common/task/RouteLogCallable.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
import org.slf4j.MDC;
2323

2424
public abstract class RouteLogCallable<T> implements Callable<T> {
25-
25+
public static final String LOG_PATH_PATTERN = "%s/%s/%s/%s.log";
2626
protected static Logger log = LogManager.getLogger(RouteLogCallable.class);
2727
private final String workSpace;
2828
private final String taskId;

server/odc-core/src/main/java/com/oceanbase/odc/core/alarm/AlarmUtils.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ public final class AlarmUtils {
2727
* Base alarm message names
2828
*/
2929
public static final String CLUSTER_NAME = "Cluster";
30+
public static final String INSTANCE_NAME = "instanceId";
3031
public static final String TENANT_NAME = "Tenant";
3132
public static final String ORGANIZATION_NAME = "OrganizationId";
3233
public static final String MESSAGE_NAME = "Message";
@@ -42,6 +43,7 @@ public final class AlarmUtils {
4243
public static final String RESOURCE_TYPE = "ResourceType";
4344
public static final String TASK_TYPE_NAME = "TaskType";
4445
public static final String SCHEDULE_ID_NAME = "ScheduleId";
46+
public static final String FLOW_INSTANCE_ID_NAME = "FlowInstanceId";
4547
public static final Collection<String> TASK_FRAMEWORK_ALARM_DIGEST_NAMES =
4648
Arrays.asList(CLUSTER_NAME, TENANT_NAME, SCHEDULE_ID_NAME);
4749

server/odc-server/src/main/java/com/oceanbase/odc/server/web/controller/v2/ExportController.java

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
*/
1616
package com.oceanbase.odc.server.web.controller.v2;
1717

18+
import java.util.List;
19+
1820
import org.springframework.beans.factory.annotation.Autowired;
1921
import org.springframework.web.bind.annotation.RequestBody;
2022
import org.springframework.web.bind.annotation.RequestMapping;
@@ -25,7 +27,10 @@
2527
import com.oceanbase.odc.service.common.response.SuccessResponse;
2628
import com.oceanbase.odc.service.schedule.export.ScheduleExportService;
2729
import com.oceanbase.odc.service.schedule.export.model.FileExportResponse;
30+
import com.oceanbase.odc.service.schedule.export.model.ScheduleExportListView;
2831
import com.oceanbase.odc.service.schedule.export.model.ScheduleTaskExportRequest;
32+
import com.oceanbase.odc.service.state.model.StateName;
33+
import com.oceanbase.odc.service.state.model.StatefulRoute;
2934

3035
@RequestMapping("/api/v2/export")
3136
@RestController
@@ -34,8 +39,27 @@ public class ExportController {
3439
@Autowired
3540
private ScheduleExportService scheduleExportService;
3641

37-
@RequestMapping(value = "/exportScheduleTask", method = RequestMethod.POST)
38-
public SuccessResponse<FileExportResponse> exportScheduleTask(@RequestBody ScheduleTaskExportRequest request) {
39-
return Responses.success(scheduleExportService.export(request));
42+
@RequestMapping(value = "getExportListView", method = RequestMethod.POST)
43+
public SuccessResponse<List<ScheduleExportListView>> getExportListView(
44+
@RequestBody ScheduleTaskExportRequest request) {
45+
return Responses.success(scheduleExportService.getExportListView(request));
46+
}
47+
48+
@RequestMapping(value = "/exportSchedule", method = RequestMethod.POST)
49+
public SuccessResponse<String> exportScheduleTask2(@RequestBody ScheduleTaskExportRequest request) {
50+
return Responses.success(scheduleExportService.startExport(request));
51+
}
52+
53+
@RequestMapping(value = "/getExportResult", method = RequestMethod.GET)
54+
@StatefulRoute(stateName = StateName.UUID_STATEFUL_ID, stateIdExpression = "#exportId")
55+
public SuccessResponse<FileExportResponse> exportScheduleTask(String exportId) {
56+
return Responses.success(scheduleExportService.getExportResult(exportId));
57+
}
58+
59+
@RequestMapping(value = "/getExportLog", method = RequestMethod.GET)
60+
@StatefulRoute(stateName = StateName.UUID_STATEFUL_ID, stateIdExpression = "#exportId")
61+
public SuccessResponse<String> getExportLog(String exportId) {
62+
return Responses.success(scheduleExportService.getExportLog(exportId));
4063
}
64+
4165
}

server/odc-server/src/main/java/com/oceanbase/odc/server/web/controller/v2/FlowInstanceController.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package com.oceanbase.odc.server.web.controller.v2;
1717

1818
import java.io.IOException;
19+
import java.util.Collection;
1920
import java.util.Date;
2021
import java.util.List;
2122
import java.util.Map;
@@ -49,6 +50,7 @@
4950
import com.oceanbase.odc.service.common.util.WebResponseUtils;
5051
import com.oceanbase.odc.service.flow.FlowInstanceService;
5152
import com.oceanbase.odc.service.flow.FlowTaskInstanceService;
53+
import com.oceanbase.odc.service.flow.model.BatchTerminateFlowResult;
5254
import com.oceanbase.odc.service.flow.model.BinaryDataResult;
5355
import com.oceanbase.odc.service.flow.model.CreateFlowInstanceReq;
5456
import com.oceanbase.odc.service.flow.model.FlowInstanceApprovalReq;
@@ -61,6 +63,8 @@
6163
import com.oceanbase.odc.service.partitionplan.model.PartitionPlanConfig;
6264
import com.oceanbase.odc.service.schedule.ScheduleService;
6365
import com.oceanbase.odc.service.session.model.SqlExecuteResult;
66+
import com.oceanbase.odc.service.state.model.StateName;
67+
import com.oceanbase.odc.service.state.model.StatefulRoute;
6468
import com.oceanbase.odc.service.task.model.OdcTaskLogLevel;
6569

6670
import io.swagger.annotations.ApiOperation;
@@ -251,4 +255,24 @@ public SuccessResponse<PartitionPlanConfig> getPartitionPlan(@PathVariable Long
251255
return Responses.ok(this.partitionPlanScheduleService.getPartitionPlanByFlowInstanceId(id));
252256
}
253257

258+
@ApiOperation(value = "cancelFlowInstance", notes = "批量终止流程")
259+
@RequestMapping(value = "/asyncCancel", method = RequestMethod.POST)
260+
public SuccessResponse<String> batchCancelFlowInstance(@RequestBody Collection<Long> flowInstanceIds) {
261+
return Responses.single(flowInstanceService.startBatchCancelFlowInstance(flowInstanceIds));
262+
}
263+
264+
@ApiOperation(value = "getBatchCancelResult", notes = "获取批量终止结果")
265+
@RequestMapping(value = "/asyncCancelResult", method = RequestMethod.GET)
266+
@StatefulRoute(stateName = StateName.UUID_STATEFUL_ID, stateIdExpression = "#terminateId")
267+
public SuccessResponse<List<BatchTerminateFlowResult>> getBatchCancelResult(String terminateId) {
268+
return Responses.single(flowInstanceService.getBatchCancelResult(terminateId));
269+
}
270+
271+
@ApiOperation(value = "getBatchCancelLog", notes = "获取批量终止日志")
272+
@RequestMapping(value = "/asyncCancelLog", method = RequestMethod.GET)
273+
@StatefulRoute(stateName = StateName.UUID_STATEFUL_ID, stateIdExpression = "#terminateId")
274+
public SuccessResponse<String> getBatchCancelLog(String terminateId) {
275+
return Responses.single(flowInstanceService.getBatchCancelLog(terminateId));
276+
}
277+
254278
}

server/odc-server/src/main/java/com/oceanbase/odc/server/web/controller/v2/ScheduleController.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@
4141
import com.oceanbase.odc.service.common.util.WebResponseUtils;
4242
import com.oceanbase.odc.service.dlm.model.RateLimitConfiguration;
4343
import com.oceanbase.odc.service.schedule.ScheduleService;
44+
import com.oceanbase.odc.service.schedule.export.model.ScheduleTerminateCmd;
45+
import com.oceanbase.odc.service.schedule.export.model.ScheduleTerminateResult;
4446
import com.oceanbase.odc.service.schedule.model.ChangeScheduleResp;
4547
import com.oceanbase.odc.service.schedule.model.CreateScheduleReq;
4648
import com.oceanbase.odc.service.schedule.model.OperationType;
@@ -59,6 +61,8 @@
5961
import com.oceanbase.odc.service.schedule.model.ScheduleTaskOverview;
6062
import com.oceanbase.odc.service.schedule.model.ScheduleType;
6163
import com.oceanbase.odc.service.schedule.model.UpdateScheduleReq;
64+
import com.oceanbase.odc.service.state.model.StateName;
65+
import com.oceanbase.odc.service.state.model.StatefulRoute;
6266
import com.oceanbase.odc.service.task.executor.logger.LogUtils;
6367
import com.oceanbase.odc.service.task.model.OdcTaskLogLevel;
6468

@@ -286,6 +290,23 @@ public SuccessResponse<RateLimitConfiguration> updateLimiterConfig(@PathVariable
286290
return Responses.single(scheduleService.updateDlmRateLimit(id, limiterConfig));
287291
}
288292

293+
@RequestMapping(value = "/schedules/asyncTerminate", method = RequestMethod.POST)
294+
public SuccessResponse<String> startTerminateScheduleAndTask(@RequestBody ScheduleTerminateCmd cmd) {
295+
return Responses.ok(scheduleService.startTerminateScheduleAndTask(cmd));
296+
}
297+
298+
@RequestMapping(value = "/schedules/asyncTerminateResult", method = RequestMethod.GET)
299+
@StatefulRoute(stateName = StateName.UUID_STATEFUL_ID, stateIdExpression = "#terminateId")
300+
public SuccessResponse<List<ScheduleTerminateResult>> getTerminateScheduleResult(String terminateId) {
301+
return Responses.ok(scheduleService.getTerminateScheduleResult(terminateId));
302+
}
303+
304+
@RequestMapping(value = "/schedules/asyncTerminateLog", method = RequestMethod.GET)
305+
@StatefulRoute(stateName = StateName.UUID_STATEFUL_ID, stateIdExpression = "#terminateId")
306+
public SuccessResponse<String> getTerminateScheduleLog(String terminateId) {
307+
return Responses.ok(scheduleService.getTerminateLog(terminateId));
308+
}
309+
289310
@RequestMapping(value = "/schedules/stats", method = RequestMethod.GET)
290311
public ListResponse<ScheduleStat> getScheduleStats(
291312
@RequestParam(required = false, name = "types") Set<ScheduleType> types,

server/odc-server/src/main/resources/log4j2.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -918,6 +918,10 @@
918918
<AppenderRef ref="RouteLogRunnableAppender"/>
919919
</Logger>
920920

921+
<Logger name="com.oceanbase.odc.service.schedule.ScheduleService" level="INFO" additivity="true">
922+
<AppenderRef ref="RouteLogRunnableAppender"/>
923+
</Logger>
924+
921925
<!-- ODC程序日志输出,输出级别 INFO -->
922926
<Logger name="com.oceanbase.odc" level="INFO" additivity="false">
923927
<AppenderRef ref="OdcFileAppender"/>

server/odc-service/src/main/java/com/oceanbase/odc/config/ScheduleConfiguration.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -311,8 +311,8 @@ public ThreadPoolTaskExecutor queryProfileMonitorExecutor() {
311311
return executor;
312312
}
313313

314-
@Bean(name = "scheduleImportExecutor")
315-
public ThreadPoolTaskExecutor scheduleImportExecutor() {
314+
@Bean(name = "commonAsyncTaskExecutor")
315+
public ThreadPoolTaskExecutor commonAsyncTaskExecutor() {
316316
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
317317
int minPoolSize = Math.max(SystemUtils.availableProcessors(), 4);
318318
executor.setCorePoolSize(minPoolSize);
@@ -324,7 +324,7 @@ public ThreadPoolTaskExecutor scheduleImportExecutor() {
324324
executor.setTaskDecorator(new TraceDecorator<>());
325325
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.AbortPolicy());
326326
executor.initialize();
327-
log.info("scheduleImportExecutor initialized");
327+
log.info("commonAsyncTaskExecutor initialized");
328328
return executor;
329329
}
330330

server/odc-service/src/main/java/com/oceanbase/odc/service/collaboration/project/ProjectService.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@
8585
import com.oceanbase.odc.service.iam.ProjectPermissionValidator;
8686
import com.oceanbase.odc.service.iam.ResourceRoleService;
8787
import com.oceanbase.odc.service.iam.UserOrganizationService;
88+
import com.oceanbase.odc.service.iam.UserService;
8889
import com.oceanbase.odc.service.iam.auth.AuthenticationFacade;
8990
import com.oceanbase.odc.service.iam.auth.AuthorizationFacade;
9091
import com.oceanbase.odc.service.iam.model.User;
@@ -164,7 +165,8 @@ public class ProjectService {
164165
@Autowired
165166
@Lazy
166167
private FlowInstanceService flowInstanceService;
167-
168+
@Autowired
169+
private UserService userService;
168170
@Value("${odc.integration.bastion.enabled:false}")
169171
private boolean bastionEnabled;
170172

@@ -340,7 +342,11 @@ public Page<Project> list(@Valid QueryProjectParams params, @NotNull Pageable pa
340342

341343
@SkipAuthorize("odc internal usage")
342344
public List<Project> listByIds(@NotEmpty Set<Long> ids) {
343-
return repository.findAllById(ids).stream().map(this::entityToModel).collect(Collectors.toList());
345+
List<Project> projects =
346+
repository.findAllById(ids).stream().map(projectMapper::entityToModel).collect(Collectors.toList());
347+
userService.assignInnerUserByCreatorId(projects, c -> c.getCreator().getId(), Project::setCreator);
348+
userService.assignInnerUserByCreatorId(projects, c -> c.getLastModifier().getId(), Project::setCreator);
349+
return projects;
344350
}
345351

346352
private Page<ProjectEntity> innerList(@Valid QueryProjectParams params, @NotNull Pageable pageable,

server/odc-service/src/main/java/com/oceanbase/odc/service/common/FutureCache.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ public class FutureCache {
3232

3333
private final Cache<String, Future<?>> tempId2Future =
3434
Caffeine.newBuilder().expireAfterWrite(30, TimeUnit.MINUTES)
35+
.maximumSize(1000L)
3536
.removalListener((String key, Future<?> future, RemovalCause cause) -> {
3637
if (future != null) {
3738
future.cancel(true);

0 commit comments

Comments
 (0)