Skip to content

Commit 5bc907e

Browse files
authored
chore: do not update file 102 during the first transaction after a freeze upgrade when DAB is disabled (#15467)
Signed-off-by: Iris Simon <[email protected]>
1 parent 49cee4f commit 5bc907e

File tree

2 files changed

+10
-45
lines changed

2 files changed

+10
-45
lines changed

hedera-node/hedera-app/src/main/java/com/hedera/node/app/workflows/handle/record/SystemSetup.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
import com.hedera.node.config.data.FilesConfig;
5454
import com.hedera.node.config.data.HederaConfig;
5555
import com.hedera.node.config.data.NetworkAdminConfig;
56+
import com.hedera.node.config.data.NodesConfig;
5657
import com.hedera.pbj.runtime.io.buffer.Bytes;
5758
import com.swirlds.config.api.Configuration;
5859
import com.swirlds.platform.system.InitTrigger;
@@ -133,15 +134,18 @@ public void doGenesisSetup(@NonNull final Dispatch dispatch) {
133134
*/
134135
public void doPostUpgradeSetup(@NonNull final Dispatch dispatch) {
135136
final var systemContext = systemContextFor(dispatch);
137+
final var config = dispatch.config();
136138

137139
// We update the node details file from the address book that resulted from all pre-upgrade HAPI node changes
138-
final var nodeStore = dispatch.handleContext().storeFactory().readableStore(ReadableNodeStore.class);
139-
fileService.updateNodeDetailsAfterFreeze(systemContext, nodeStore);
140-
dispatch.stack().commitFullStack();
140+
final var nodesConfig = config.getConfigData(NodesConfig.class);
141+
if (nodesConfig.enableDAB()) {
142+
final var nodeStore = dispatch.handleContext().storeFactory().readableStore(ReadableNodeStore.class);
143+
fileService.updateNodeDetailsAfterFreeze(systemContext, nodeStore);
144+
dispatch.stack().commitFullStack();
145+
}
141146

142147
// And then we update the system files for fees schedules, throttles, override properties, and override
143148
// permissions from any upgrade files that are present in the configured directory
144-
final var config = dispatch.config();
145149
final var filesConfig = config.getConfigData(FilesConfig.class);
146150
final var adminConfig = config.getConfigData(NetworkAdminConfig.class);
147151
final List<AutoSysFileUpdate> autoUpdates = List.of(

hedera-node/hedera-app/src/test/java/com/hedera/node/app/workflows/handle/steps/SystemSetupTest.java

Lines changed: 2 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@
5353
import com.hedera.node.app.spi.fixtures.util.LoggingTarget;
5454
import com.hedera.node.app.spi.store.StoreFactory;
5555
import com.hedera.node.app.spi.workflows.HandleContext;
56-
import com.hedera.node.app.spi.workflows.SystemContext;
5756
import com.hedera.node.app.spi.workflows.record.StreamBuilder;
5857
import com.hedera.node.app.workflows.handle.Dispatch;
5958
import com.hedera.node.app.workflows.handle.record.SystemSetup;
@@ -169,37 +168,29 @@ void successfulAutoUpdatesAreDispatchedWithFilesAvailable() throws IOException {
169168
given(dispatch.config()).willReturn(config);
170169
given(dispatch.consensusNow()).willReturn(CONSENSUS_NOW);
171170
given(dispatch.handleContext()).willReturn(handleContext);
172-
given(handleContext.storeFactory()).willReturn(storeFactory);
173-
given(storeFactory.readableStore(ReadableNodeStore.class)).willReturn(readableNodeStore);
174171
given(handleContext.dispatchPrecedingTransaction(any(), any(), any(), any()))
175172
.willReturn(streamBuilder);
176173

177174
subject.doPostUpgradeSetup(dispatch);
178175

179176
final var filesConfig = config.getConfigData(FilesConfig.class);
180-
verify(fileService).updateNodeDetailsAfterFreeze(any(SystemContext.class), eq(readableNodeStore));
181177
verifyUpdateDispatch(filesConfig.networkProperties(), serializedPropertyOverrides());
182178
verifyUpdateDispatch(filesConfig.hapiPermissions(), serializedPermissionOverrides());
183179
verifyUpdateDispatch(filesConfig.throttleDefinitions(), serializedThrottleOverrides());
184180
verifyUpdateDispatch(filesConfig.feeSchedules(), serializedFeeSchedules());
185-
verify(stack, times(5)).commitFullStack();
181+
verify(stack, times(4)).commitFullStack();
186182
}
187183

188184
@Test
189185
void onlyNodeDetailsAutoUpdateIsDispatchedWithNoFilesAvailable() {
190186
final var config = HederaTestConfigBuilder.create()
191187
.withValue("networkAdmin.upgradeSysFilesLoc", tempDir.toString())
192188
.getOrCreateConfig();
193-
given(dispatch.stack()).willReturn(stack);
194189
given(dispatch.config()).willReturn(config);
195-
given(dispatch.handleContext()).willReturn(handleContext);
196-
given(handleContext.storeFactory()).willReturn(storeFactory);
197-
given(storeFactory.readableStore(ReadableNodeStore.class)).willReturn(readableNodeStore);
198190

199191
subject.doPostUpgradeSetup(dispatch);
200192

201-
verify(fileService).updateNodeDetailsAfterFreeze(any(SystemContext.class), eq(readableNodeStore));
202-
verify(stack, times(1)).commitFullStack();
193+
verify(stack, times(0)).commitFullStack();
203194

204195
final var infoLogs = logCaptor.infoLogs();
205196
assertThat(infoLogs.size()).isEqualTo(4);
@@ -209,36 +200,6 @@ void onlyNodeDetailsAutoUpdateIsDispatchedWithNoFilesAvailable() {
209200
assertThat(infoLogs.getLast()).startsWith("No post-upgrade file for api-permission-override.properties");
210201
}
211202

212-
@Test
213-
void onlyNodeDetailsAutoUpdateIsDispatchedWithInvalidFilesAvailable() throws IOException {
214-
final var config = HederaTestConfigBuilder.create()
215-
.withValue("networkAdmin.upgradeSysFilesLoc", tempDir.toString())
216-
.getOrCreateConfig();
217-
final var adminConfig = config.getConfigData(NetworkAdminConfig.class);
218-
Files.writeString(tempDir.resolve(adminConfig.upgradePropertyOverridesFile()), invalidPropertyOverrides());
219-
Files.writeString(tempDir.resolve(adminConfig.upgradePermissionOverridesFile()), invalidPermissionOverrides());
220-
Files.writeString(tempDir.resolve(adminConfig.upgradeThrottlesFile()), invalidThrottleOverrides());
221-
Files.writeString(tempDir.resolve(adminConfig.upgradeFeeSchedulesFile()), invalidFeeScheduleOverrides());
222-
given(dispatch.stack()).willReturn(stack);
223-
given(dispatch.config()).willReturn(config);
224-
given(dispatch.handleContext()).willReturn(handleContext);
225-
given(handleContext.storeFactory()).willReturn(storeFactory);
226-
given(storeFactory.readableStore(ReadableNodeStore.class)).willReturn(readableNodeStore);
227-
228-
subject.doPostUpgradeSetup(dispatch);
229-
230-
verify(fileService).updateNodeDetailsAfterFreeze(any(SystemContext.class), eq(readableNodeStore));
231-
verify(stack, times(1)).commitFullStack();
232-
233-
final var errorLogs = logCaptor.errorLogs();
234-
assertThat(errorLogs.size()).isEqualTo(4);
235-
assertThat(errorLogs.getFirst()).startsWith("Failed to parse upgrade file for feeSchedules.json");
236-
assertThat(errorLogs.get(1)).startsWith("Failed to parse upgrade file for throttles.json");
237-
assertThat(errorLogs.get(2)).startsWith("Failed to parse upgrade file for application-override.properties");
238-
assertThat(errorLogs.getLast())
239-
.startsWith("Failed to parse upgrade file for api-permission-override.properties");
240-
}
241-
242203
@Test
243204
@SuppressWarnings("unchecked")
244205
void externalizeInitSideEffectsCreatesAllRecords() {

0 commit comments

Comments
 (0)