Skip to content

Commit 7f82ac7

Browse files
guojn1githubgxll
authored andcommitted
[fix][dingo-store-proxy] Optimize the GC region deletion process
1 parent f7e1c4a commit 7f82ac7

1 file changed

Lines changed: 27 additions & 8 deletions

File tree

  • dingo-store-proxy/src/main/java/io/dingodb/store/proxy/common

dingo-store-proxy/src/main/java/io/dingodb/store/proxy/common/Gc.java

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import io.dingodb.common.log.LogUtils;
2323
import io.dingodb.common.meta.Tenant;
2424
import io.dingodb.common.mysql.scope.ScopeVariables;
25+
import io.dingodb.common.parser.CharTypes;
2526
import io.dingodb.common.session.Session;
2627
import io.dingodb.common.session.SessionUtil;
2728
import io.dingodb.common.tenant.TenantConstant;
@@ -41,6 +42,7 @@
4142
import io.dingodb.sdk.service.entity.coordinator.GetGCSafePointRequest;
4243
import io.dingodb.sdk.service.entity.coordinator.GetGCSafePointResponse;
4344
import io.dingodb.sdk.service.entity.coordinator.GetRegionMapRequest;
45+
import io.dingodb.sdk.service.entity.coordinator.ScanRegionInfo;
4446
import io.dingodb.sdk.service.entity.coordinator.UpdateGCSafePointRequest;
4547
import io.dingodb.sdk.service.entity.meta.DeleteAutoIncrementRequest;
4648
import io.dingodb.sdk.service.entity.meta.DingoCommonId;
@@ -849,20 +851,37 @@ private static void gcDeleteRange(long startTs) {
849851
LogUtils.info(log, "gc schema meta, schemaId:{}", eleId);
850852
return;
851853
}
854+
852855
try {
853-
coordinatorService.dropRegion(
854-
tso(),
855-
DropRegionRequest.builder().regionId(regionId).build()
856-
);
857-
LogUtils.info(log, "gcDeleteRange success, regionId:{}", regionId);
858-
long jobId = (long) objects[3];
859-
long ts = (long) objects[4];
860856
String startKey = objects[1].toString();
861857
String endKey = objects[2].toString();
858+
List<Object> regionList = InfoSchemaService.root()
859+
.scanRegions(CharTypes.hexToBytes(startKey), CharTypes.hexToBytes(endKey));
860+
if (regionList.size() > 1) {
861+
regionList
862+
.forEach(object -> {
863+
ScanRegionInfo scanRegionInfo = (ScanRegionInfo) object;
864+
coordinatorService.dropRegion(
865+
tso(),
866+
DropRegionRequest.builder().regionId(scanRegionInfo.getRegionId()).build()
867+
);
868+
LogUtils.info(log, "multi region drop success, regionId:{}",
869+
scanRegionInfo.getRegionId());
870+
});
871+
} else {
872+
coordinatorService.dropRegion(
873+
tso(),
874+
DropRegionRequest.builder().regionId(regionId).build()
875+
);
876+
LogUtils.info(log, "single region drop success, regionId:{}", regionId);
877+
}
878+
long jobId = (long) objects[3];
879+
long ts = (long) objects[4];
862880
String eleId = (String) objects[5];
863881
dropTableMeta(eleId, jobId, session, eleType);
864882
if (!gcDeleteDone(jobId, ts, regionId, startKey, endKey, eleId, eleType, true)) {
865-
LogUtils.error(log, "remove gcDeleteTask failed, jobId:{}, eleId:{}, eleType:{}", jobId, eleId, eleType);
883+
LogUtils.error(log, "remove gcDeleteTask failed, jobId:{}, eleId:{}, eleType:{}",
884+
jobId, eleId, eleType);
866885
} else {
867886
delDone.incrementAndGet();
868887
}

0 commit comments

Comments
 (0)