Hanging After Upgrade to Windows Version 2.4.1

It appears I successfully installed the new Ardor Client 2.4.1 on Windows.

I have been running version 2.3.4 without issue.

However, when I start the new client 2.4.1, the icon in the system tray says Loading Databases.

I allowed this process to run twelve hours overnight with no change.

I am unable to start the Desktop Application from the system tray. It just loads a white window. The option to Open Wallet in Browser is grayed out.

I reinstalled version 2.3.4 and I am able to access the desktop client without issue. I restored the copy of the database I backed up before attempting to upgrade to the latest version.

The ardor.0.log just stops after printing this line:

2022-04-13 14:57:45 FINE: main Will apply sql:
ALTER TABLE asset_control_phasing ALTER COLUMN id SET NOT NULL

This screenshot shows the configuration of my node in version 2.3.4.
It is configured to save the entire transaction history of two specific accounts .
I wonder if this is causing the problem for upgrading to version 2.4.1.

Contents of nxt.properties:

nxt.shareMyAddress=false
nxt.trimDerivedTables=false
nxt.maxPrunableLifetime=-1
nxt.ledgerAccounts=ARDOR-HIDDENFORPRIVACY;ARDOR-HIDDENFORPRIVACY
nxt.ledgerTrimKeep=0

Are there any suggestions to troubleshoot this issue?

Thank You

I suspect the disabled trimming nxt.trimDerivedTables=false makes your database really big and slow. How big is the nxt_db folder? You can try increasing the memory java is using with an -Xmx parameter in the script used to start it, in case it silently crashes due to not enough memory, but if it is still running after 12h the problem may just be that the database takes too long to upgrade. Although that asset_control_phasing table shouldn't be that big regardless of trimming.

The sceenshot shows the size of the database:

database-size

Finally managed to download the blockchain without trimming. Here's the actual error which is not printed in the logs:

2022-04-16 10:03:40 FINE: main Will apply sql:
ALTER TABLE asset_control_phasing ALTER COLUMN id SET NOT NULL
java.lang.ExceptionInInitializerError
	at nxt.dbschema.Db.init(Db.java:53)
	at nxt.configuration.SubSystem$3.init(SubSystem.java:120)
	at java.util.Arrays$ArrayList.forEach(Arrays.java:3880)
	at nxt.Nxt$Init.init(Nxt.java:434)
	at nxt.Nxt$Init.access$000(Nxt.java:424)
	at nxt.Nxt.init(Nxt.java:409)
	at nxt.Nxt.init(Nxt.java:400)
	at nxt.Nxt.main(Nxt.java:387)
Caused by: java.lang.RuntimeException: Database error executing ALTER TABLE asset_control_phasing ALTER COLUMN id SET NOT NULL
	at nxt.db.DbVersion.apply(DbVersion.java:113)
	at nxt.dbschema.FxtDbVersion.update(FxtDbVersion.java:618)
	at nxt.db.DbVersion.init(DbVersion.java:86)
	at java.util.ArrayList.forEach(ArrayList.java:1259)
	at nxt.db.BasicDb.init(BasicDb.java:163)
	at nxt.dbschema.Db$Init.<clinit>(Db.java:64)
	... 8 more
Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Column "ID" contains null values; SQL statement:
ALTER TABLE asset_control_phasing ALTER COLUMN id SET NOT NULL [90081-200]
	at org.h2.message.DbException.getJdbcSQLException(DbException.java:576)
	at org.h2.message.DbException.getJdbcSQLException(DbException.java:429)
	at org.h2.message.DbException.get(DbException.java:205)
	at org.h2.message.DbException.get(DbException.java:181)
	at org.h2.command.ddl.AlterTableAlterColumn.checkNoNullValues(AlterTableAlterColumn.java:614)
	at org.h2.command.ddl.AlterTableAlterColumn.update(AlterTableAlterColumn.java:135)
	at org.h2.command.CommandContainer.update(CommandContainer.java:198)
	at org.h2.command.Command.executeUpdate(Command.java:251)
	at org.h2.jdbc.JdbcStatement.executeUpdateInternal(JdbcStatement.java:168)
	at org.h2.jdbc.JdbcStatement.executeUpdate(JdbcStatement.java:126)
	at nxt.db.FilteredStatement.executeUpdate(FilteredStatement.java:45)
	at nxt.db.TransactionalDb$DbStatement.executeUpdate(TransactionalDb.java:381)
	at nxt.db.DbVersion.apply(DbVersion.java:104)
	... 13 more
2022-04-16 10:03:40 INFO: Thread-0 Shutting down...

Need to think how to fix that.

@petko.petkov

Are you saying that I cannot configure my node in this way and upgrade to version 2.4.1?

I was considering a clean install of 2.4.1 using the bootstrap blockchain database downloaded from the jelurida website.

After the download and successful startup with the default node configuration, I was considering using the scan API to rescan the blockchain after updating the node configuration with my desired node configuration.

is there another workaround?

The procedure your described should work

@petko.petkov

It took a couple of days to rescan the blockchain, but everything is working as expected.

I now have my complete Account Ledger going back to 2018 using version 2.4.1.

I hope this problem gets resolved before the next mandatory upgrade.