@@ -61,7 +61,7 @@ public Pair<List<FragmentMeta>, List<StorageUnitMeta>> generateFragmentsAndStora
61
61
List <StorageEngineMeta > edgeStorageEngineList = groupedStorageEngineLists .get (edge );
62
62
if (edgeStorageEngineList == null ) { // 边缘端部署了 iginx,没有部署 iotdb,所有的备份均存储在云端
63
63
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 );
65
65
fragmentList .add (pair .k );
66
66
storageUnitList .add (pair .v );
67
67
} else { // 边缘端部署了 iginx 也部署了 iotdb,每个分片在本地存储一个备份
@@ -86,20 +86,20 @@ public Pair<List<FragmentMeta>, List<StorageUnitMeta>> generateFragmentsAndStora
86
86
} else {
87
87
// 上空隙
88
88
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 );
90
90
fragmentList .add (pair .k );
91
91
storageUnitList .add (pair .v );
92
92
93
93
// 下空隙
94
94
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 );
96
96
fragmentList .add (pair .k );
97
97
storageUnitList .add (pair .v );
98
98
99
99
// 中间的空隙
100
100
for (int i = 0 ; i < edges .size () - 1 ; i ++) {
101
101
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 );
103
103
fragmentList .add (pair .k );
104
104
storageUnitList .add (pair .v );
105
105
}
@@ -141,7 +141,7 @@ private List<String> partitionWithinEdge(String edge, int partition) {
141
141
if (partition < 1 ) {
142
142
return Collections .emptyList ();
143
143
}
144
- return Arrays .asList (edge + '.' , edge + ( char ) ( '.' + 1 ));
144
+ return Arrays .asList (lowerBound ( edge ), upperBound ( edge ));
145
145
}
146
146
147
147
// 根据时间和序列区间以及一组 storageEngineList 来生成分片和存储单元
@@ -155,4 +155,12 @@ private Pair<FragmentMeta, StorageUnitMeta> generateFragmentAndStorageUnit(Strin
155
155
return new Pair <>(fragment , storageUnit );
156
156
}
157
157
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
+
158
166
}
0 commit comments