Skip to content

Commit c3d8ea0

Browse files
committed
fix bug
1 parent 12d5fb8 commit c3d8ea0

File tree

1 file changed

+13
-5
lines changed

1 file changed

+13
-5
lines changed

core/src/main/java/cn/edu/tsinghua/iginx/policy/cloud/EdgeCloudCollaborationFragmentGenerator.java

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public Pair<List<FragmentMeta>, List<StorageUnitMeta>> generateFragmentsAndStora
6161
List<StorageEngineMeta> edgeStorageEngineList = groupedStorageEngineLists.get(edge);
6262
if (edgeStorageEngineList == null) { // 边缘端部署了 iginx,没有部署 iotdb,所有的备份均存储在云端
6363
List<Long> storageEngineIds = selectStorageEngines(storageEngineFragmentCounts, replicaNum);
64-
Pair<FragmentMeta, StorageUnitMeta> pair = generateFragmentAndStorageUnit(edge + '.', edge + (char) ('.' + 1), startTime, storageEngineIds);
64+
Pair<FragmentMeta, StorageUnitMeta> pair = generateFragmentAndStorageUnit(lowerBound(edge), upperBound(edge), startTime, storageEngineIds);
6565
fragmentList.add(pair.k);
6666
storageUnitList.add(pair.v);
6767
} else { // 边缘端部署了 iginx 也部署了 iotdb,每个分片在本地存储一个备份
@@ -86,20 +86,20 @@ public Pair<List<FragmentMeta>, List<StorageUnitMeta>> generateFragmentsAndStora
8686
} else {
8787
// 上空隙
8888
List<Long> storageEngineIds = selectStorageEngines(storageEngineFragmentCounts, replicaNum);
89-
Pair<FragmentMeta, StorageUnitMeta> pair = generateFragmentAndStorageUnit(null, edges.get(0) + '.', startTime, storageEngineIds);
89+
Pair<FragmentMeta, StorageUnitMeta> pair = generateFragmentAndStorageUnit(null, lowerBound(edges.get(0)), startTime, storageEngineIds);
9090
fragmentList.add(pair.k);
9191
storageUnitList.add(pair.v);
9292

9393
// 下空隙
9494
storageEngineIds = selectStorageEngines(storageEngineFragmentCounts, replicaNum);
95-
pair = generateFragmentAndStorageUnit(edges.get(edges.size() - 1) + (char) ('.' + 1), null, startTime, storageEngineIds);
95+
pair = generateFragmentAndStorageUnit(upperBound(edges.get(edges.size() - 1)), null, startTime, storageEngineIds);
9696
fragmentList.add(pair.k);
9797
storageUnitList.add(pair.v);
9898

9999
// 中间的空隙
100100
for (int i = 0; i < edges.size() - 1; i++) {
101101
storageEngineIds = selectStorageEngines(storageEngineFragmentCounts, replicaNum);
102-
pair = generateFragmentAndStorageUnit(edges.get(i) + (char) ('.' + 1), edges.get(i + 1) + '.', startTime, storageEngineIds);
102+
pair = generateFragmentAndStorageUnit(upperBound(edges.get(i)), lowerBound(edges.get(i + 1)), startTime, storageEngineIds);
103103
fragmentList.add(pair.k);
104104
storageUnitList.add(pair.v);
105105
}
@@ -141,7 +141,7 @@ private List<String> partitionWithinEdge(String edge, int partition) {
141141
if (partition < 1) {
142142
return Collections.emptyList();
143143
}
144-
return Arrays.asList(edge + '.', edge + (char) ('.' + 1));
144+
return Arrays.asList(lowerBound(edge), upperBound(edge));
145145
}
146146

147147
// 根据时间和序列区间以及一组 storageEngineList 来生成分片和存储单元
@@ -155,4 +155,12 @@ private Pair<FragmentMeta, StorageUnitMeta> generateFragmentAndStorageUnit(Strin
155155
return new Pair<>(fragment, storageUnit);
156156
}
157157

158+
private static String lowerBound(String string) {
159+
return string + '.' + (char)('A' - 1);
160+
}
161+
162+
private static String upperBound(String string) {
163+
return string + '.' + (char)('z' + 1);
164+
}
165+
158166
}

0 commit comments

Comments
 (0)