This is an automated email from the ASF dual-hosted git repository. xxyu pushed a commit to branch kylin5 in repository https://gitbox.apache.org/repos/asf/kylin.git
commit 45855c08828e7e422b5e5557a0b2e029acb450b4 Author: Shuai li <loney...@live.cn> AuthorDate: Mon Oct 17 14:50:35 2022 +0800 Add second storage index lock check --- .../io/kyligence/kap/secondstorage/SecondStorageIndexTest.java | 7 +++---- .../kap/secondstorage/management/SecondStorageService.java | 8 ++++++-- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/second-storage/clickhouse-it/src/test/java/io/kyligence/kap/secondstorage/SecondStorageIndexTest.java b/src/second-storage/clickhouse-it/src/test/java/io/kyligence/kap/secondstorage/SecondStorageIndexTest.java index b467c9e29e..0a8ad1b714 100644 --- a/src/second-storage/clickhouse-it/src/test/java/io/kyligence/kap/secondstorage/SecondStorageIndexTest.java +++ b/src/second-storage/clickhouse-it/src/test/java/io/kyligence/kap/secondstorage/SecondStorageIndexTest.java @@ -28,7 +28,6 @@ import java.io.File; import java.io.IOException; import java.util.HashSet; import java.util.List; -import java.util.Locale; import java.util.Set; import java.util.stream.Collectors; @@ -349,8 +348,8 @@ public class SecondStorageIndexTest implements JobWaiter { String jobId = updatePrimaryIndexAndSecondaryIndex(modelName, null, Sets.newHashSet()); waitJobEnd(getProject(), jobId); - assertThrows(String.format(Locale.ROOT, MsgPicker.getMsg().getSecondStorageConcurrentOperate(), getProject()), - KylinException.class, () -> updatePrimaryIndexAndSecondaryIndex(modelName, null, secondaryIndex)); + assertThrows(MsgPicker.getMsg().getSecondStorageConcurrentOperate(), KylinException.class, + () -> updatePrimaryIndexAndSecondaryIndex(modelName, null, secondaryIndex)); clickhouse[0].start(); ClickHouseUtils.internalConfigClickHouse(clickhouse, replica); @@ -505,7 +504,7 @@ public class SecondStorageIndexTest implements JobWaiter { assertEquals(SecondStorageIndexLoadStatus.ALL, r.getPrimaryIndexStatus()); assertEquals(SecondStorageIndexLoadStatus.ALL, r.getSecondaryIndexStatus()); }); - + secondStorageService.triggerSegmentsClean(getProject(), modelId, getDataFlow(modelId).getSegments().stream().map(NDataSegment::getId).collect(Collectors.toSet())); waitAllJoEnd(); diff --git a/src/second-storage/core-ui/src/main/java/io/kyligence/kap/secondstorage/management/SecondStorageService.java b/src/second-storage/core-ui/src/main/java/io/kyligence/kap/secondstorage/management/SecondStorageService.java index ade320fa8d..c10c6c36ea 100644 --- a/src/second-storage/core-ui/src/main/java/io/kyligence/kap/secondstorage/management/SecondStorageService.java +++ b/src/second-storage/core-ui/src/main/java/io/kyligence/kap/secondstorage/management/SecondStorageService.java @@ -1159,13 +1159,17 @@ public class SecondStorageService extends BasicService implements SecondStorageU List<AbstractExecutable> jobs = getRelationJobsWithoutFinish(project, modelId); if (!jobs.isEmpty()) { throw new KylinException(JobErrorCode.SECOND_STORAGE_JOB_EXISTS, - String.format(Locale.ROOT, MsgPicker.getMsg().getSecondStorageConcurrentOperate(), project)); + MsgPicker.getMsg().getSecondStorageConcurrentOperate()); } jobs = getJobs(project, modelId, Sets.newHashSet(ExecutableState.ERROR), Sets.newHashSet(JobTypeEnum.SECOND_STORAGE_REFRESH_SECONDARY_INDEXES)); if (!jobs.isEmpty()) { throw new KylinException(JobErrorCode.SECOND_STORAGE_JOB_EXISTS, - String.format(Locale.ROOT, MsgPicker.getMsg().getSecondStorageConcurrentOperate(), project)); + MsgPicker.getMsg().getSecondStorageConcurrentOperate()); + } + if (SecondStorageLockUtils.containsKey(modelId)) { + throw new KylinException(JobErrorCode.SECOND_STORAGE_JOB_EXISTS, + MsgPicker.getMsg().getSecondStorageConcurrentOperate()); } }