We're updating the issue view to help you get more done. 

updateTestingRollback finished succesfully, but rollback fails

Description

I want to test my update and rollback strategy by using updateTestingRollback.
As the documentation states, it should update, rollback and update.
For this example, I have a changeSet with a sqlFile action.

When running updateTestingRollback:

1 2 Starting Liquibase at Mon, 12 Aug 2019 12:25:07 CEST (version 3.7.0 built at 2019-07-16 02:26:39) Liquibase command 'updateTestingRollback' was executed successfully.

However, when running rollback:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Starting Liquibase at Mon, 12 Aug 2019 12:26:05 CEST (version 3.7.0 built at 2019-07-16 02:26:39) Rolling Back Changeset:update.xml::XXX::XXX Unexpected error running Liquibase: No inverse to liquibase.change.core.SQLFileChange created liquibase.exception.RollbackFailedException: liquibase.exception.RollbackImpossibleException: No inverse to liquibase.change.core.SQLFileChange created at liquibase.changelog.ChangeSet.rollback(ChangeSet.java:725) at liquibase.changelog.visitor.RollbackVisitor.visit(RollbackVisitor.java:40) at liquibase.changelog.ChangeLogIterator.run(ChangeLogIterator.java:83) at liquibase.Liquibase.rollback(Liquibase.java:817) at liquibase.integration.commandline.Main.doMigration(Main.java:1254) at liquibase.integration.commandline.Main.run(Main.java:192) at liquibase.integration.commandline.Main.main(Main.java:130) Caused by: liquibase.exception.RollbackImpossibleException: No inverse to liquibase.change.core.SQLFileChange created at liquibase.change.AbstractChange.generateRollbackStatementsFromInverse(AbstractChange.java:469) at liquibase.change.AbstractChange.generateRollbackStatements(AbstractChange.java:442) at liquibase.database.AbstractJdbcDatabase.executeRollbackStatements(AbstractJdbcDatabase.java:1302) at liquibase.changelog.ChangeSet.rollback(ChangeSet.java:711) ... 6 common frames omitted

rollback fails with an exception and cannot proceed.

expected

I expect the updateTestingRollback to have the same rollback behaviour. So if rollback fails with an exception that the inverse cannot be created, then updateTestingRollback should also fail with the same exception.

Using updateTestingRollback to test the rollback now gives a false security about a working rollback possibility.

Environment

running liquibase on windows.
database is oracle db on linux.

Status

Assignee

Unassigned

Reporter

Simon Peter Haverdings

Labels

None

Components

Affects versions

3.7.0

Priority

Critical