Incompatible sonatype-work database model detected : Unable to downgrade

Hello,

I am currently trying to upgrade Nexus. I managed to upgrade to 3.41 some days ago but some plugins were not compatible with this version, so i’m now trying to downgrade from 3.41 to 3.38.

My problem is that the server fails to start because of an incompatibility in the model.
I managed to downgrade most of the versions that were causing an issue but I’m not able to downgrade the version of elasticsearch.

Here is the message I get when I try to start the server :

The database model for elasticsearch is 1.4, but the latest supported by this version of nexus is 1.3

And then an exception :

2022-09-19 11:48:36,638+0200 ERROR [FelixStartLevel]  *SYSTEM org.sonatype.nexus.extender.NexusContextListener - Failed to start nexus
java.lang.IllegalStateException: Incompatible sonatype-work database model detected. Will result in failure to launch. Shutting down.
        at org.sonatype.nexus.upgrade.internal.orient.UpgradeServiceImpl.validate(UpgradeServiceImpl.java:163)
        at org.sonatype.nexus.upgrade.internal.orient.UpgradeServiceImpl.doStart(UpgradeServiceImpl.java:82)
        at org.sonatype.nexus.common.stateguard.StateGuardLifecycleSupport.start(StateGuardLifecycleSupport.java:69)
        at org.sonatype.nexus.common.stateguard.MethodInvocationAction.run(MethodInvocationAction.java:39)
        at org.sonatype.nexus.common.stateguard.StateGuard$TransitionImpl.run(StateGuard.java:193)
        at org.sonatype.nexus.common.stateguard.TransitionsInterceptor.invoke(TransitionsInterceptor.java:57)
        at org.sonatype.nexus.extender.NexusLifecycleManager.startComponent(NexusLifecycleManager.java:199)
        at org.sonatype.nexus.extender.NexusLifecycleManager.to(NexusLifecycleManager.java:111)
        at org.sonatype.nexus.extender.NexusContextListener.moveToPhase(NexusContextListener.java:319)
        at org.sonatype.nexus.extender.NexusContextListener.frameworkEvent(NexusContextListener.java:216)
        at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1597)
        at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308)
        at java.lang.Thread.run(Thread.java:748)

I’ve edited the config database with the orientdb console and elastic seems to be in the right version (1.3)

orientdb {db=config}> select from upgrade_model_versions

+----+-----+----------------------+---------+-----------+--------+---------+----+----+-----+-----+-----+------+--------+------+-----------------------------------+-------------+
|#   |@RID |@CLASS                |cocoapods|healthcheck|security|component|p2  |pypi|maven|conan|nuget|config|rubygems|docker|OrientBlobReconciliationLogMigrator|elasticsearch|
+----+-----+----------------------+---------+-----------+--------+---------+----+----+-----+-----+-----+------+--------+------+-----------------------------------+-------------+
|0   |#13:0|upgrade_model_versions|1.1      |1.1        |1.3     |1.15     |1.2 |1.2 |1.1  |1.1  |1.1  |1.9   |1.1     |1.1   |1.1                                |1.3          |
+----+-----+----------------------+---------+-----------+--------+---------+----+----+-----+-----+-----+------+--------+------+-----------------------------------+-------------+

I don’t really know what to do in order to resolve this issue.
Does anyone have an idea where to look ?

Regards

It is not possible to downgrade a database to an older version. You can restore from a backup taken from before the upgrade, or you can run 3.41.1 and try to resolve the problems with the plugins.

Rich

1 Like

We are testing a rollback from 3.43.0 to 3.38.0 and are getting this same error.
The database model for elasticsearch is 1.4, but the latest supported by this version of nexus is 1.3

We did manually run the backup job to backup component, config, and security.
We followed the previous steps we had to kill the db folder, and copy the .bak to the restore folder.
Now I am seeing additional steps in the KB to backup the blob, with references to H2 or OrientDB.
I believe we are just using the standard, default blob for file-storage.
How do we backup that? Would backing up that blob and restoring that, in addition to the steps above, enable us to have a restore plan?

Thanks