Skip to content

Commit b162a64

Browse files
authored
fix: 18844: HDHM repair mechanism should not be enabled for snapshots (#18859)
Fixes: #18844 Reviewed-by: Anthony Petrov <[email protected]>, Ivan Malygin <[email protected]> Signed-off-by: Artem Ananev <[email protected]>
1 parent 3230d9d commit b162a64

File tree

2 files changed

+12
-9
lines changed

2 files changed

+12
-9
lines changed

platform-sdk/swirlds-merkledb/src/main/java/com/swirlds/merkledb/MerkleDb.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -443,7 +443,7 @@ private MerkleDbDataSource getDataSource(
443443
final int tableId,
444444
final String tableName,
445445
final boolean dbCompactionEnabled,
446-
final boolean useDiskIndices)
446+
final boolean offlineUse)
447447
throws IOException {
448448
final MerkleDbTableConfig tableConfig = getTableConfig(tableId);
449449
if (tableConfig == null) {
@@ -456,7 +456,7 @@ private MerkleDbDataSource getDataSource(
456456
}
457457
try {
458458
return new MerkleDbDataSource(
459-
this, config, tableName, tableId, tableConfig, dbCompactionEnabled, useDiskIndices);
459+
this, config, tableName, tableId, tableConfig, dbCompactionEnabled, offlineUse);
460460
} catch (final IOException z) {
461461
rethrowIO.set(z);
462462
return null;

platform-sdk/swirlds-merkledb/src/main/java/com/swirlds/merkledb/MerkleDbDataSource.java

+10-7
Original file line numberDiff line numberDiff line change
@@ -176,13 +176,13 @@ public MerkleDbDataSource(
176176
final int tableId,
177177
final MerkleDbTableConfig tableConfig,
178178
final boolean compactionEnabled,
179-
final boolean preferDiskBasedIndices)
179+
final boolean offlineUse)
180180
throws IOException {
181181
this.database = database;
182182
this.tableName = tableName;
183183
this.tableId = tableId;
184184
this.tableConfig = tableConfig;
185-
this.preferDiskBasedIndices = preferDiskBasedIndices;
185+
this.preferDiskBasedIndices = offlineUse;
186186

187187
final MerkleDbConfig merkleDbConfig = config.getConfigData(MerkleDbConfig.class);
188188

@@ -348,11 +348,14 @@ public MerkleDbDataSource(
348348
tableName + ":objectKeyToPath",
349349
preferDiskBasedIndices);
350350
keyToPath.printStats();
351-
final String tablesToRepairHdhmConfig = merkleDbConfig.tablesToRepairHdhm();
352-
if (tablesToRepairHdhmConfig != null) {
353-
final String[] tableNames = tablesToRepairHdhmConfig.split(",");
354-
if (Arrays.stream(tableNames).filter(s -> !s.isBlank()).anyMatch(tableName::equals)) {
355-
keyToPath.repair(getFirstLeafPath(), getLastLeafPath(), pathToKeyValue);
351+
// Repair keyToPath based on pathToKeyValue data, if requested and not offlineUse
352+
if (!offlineUse) {
353+
final String tablesToRepairHdhmConfig = merkleDbConfig.tablesToRepairHdhm();
354+
if (tablesToRepairHdhmConfig != null) {
355+
final String[] tableNames = tablesToRepairHdhmConfig.split(",");
356+
if (Arrays.stream(tableNames).filter(s -> !s.isBlank()).anyMatch(tableName::equals)) {
357+
keyToPath.repair(getFirstLeafPath(), getLastLeafPath(), pathToKeyValue);
358+
}
356359
}
357360
}
358361

0 commit comments

Comments
 (0)