More context in this linear task with bug description.
This diff checks if updating version was performed successfully.
Note: I am a little bit worried about how we handle errors on migration fails, right now if an error occurs code logs error info, stops the migration process, and keeps working. I am afraid it's a little bit unsafe, app still might crash later on because there is something missing in DB and maybe unexpected behaviors like those discovered by Max may happen. As an alternative we can throw eg. std::runtime_error and reload app which I think will start failed migration again but I am not sure why a decision like this was made so I will appreciate any thoughts on this.