Rollback to tag name is also incorrectly rolling back the specified tag

Description

As of 3.5.2, the rollback to a tag name incorrectly rolls back the specified tag.

We haven't used the context attribute(s) anywhere in any or our change logs. I run a test using a single context and it was the same behavior.

Using the main changelog file: liquibaseTest-changelog-v4.xml
and logging with:
database.getRanChangeSetList().forEach((ranChangeSet) -> {
log.info("\tRanChangeSet {}, TAG: {}", ranChangeSet, ranChangeSet.getTag());
});

Versions 3.4.2, 3.5.0, and 3.5.1 work correctly in H2 (only 3.4.2 worked with MSSQL due to other errors with 3.5.0 and 3.5.1):
Liquibase.update((Contexts) null);
INFO [main]: RanChangeSet liquibaseTest-1.0.0::v1::1.0.0_1, TAG: null
INFO [main]: RanChangeSet liquibaseTest-1.0.0::v1-tag::1.0.0_2, TAG: 1.0.0
INFO [main]: RanChangeSet liquibaseTest-2.0.0::v2::2.0.0_1, TAG: null
INFO [main]: RanChangeSet liquibaseTest-2.0.0::v2-tag::2.0.0_2, TAG: 2.0.0
INFO [main]: RanChangeSet liquibaseTest-3.0.0::v3::3.0.0_1, TAG: null
INFO [main]: RanChangeSet liquibaseTest-3.0.0::v3-tag::3.0.0_2, TAG: 3.0.0
INFO [main]: RanChangeSet liquibaseTest-4.0.0::v4::4.0.0_1, TAG: null
INFO [main]: RanChangeSet liquibaseTest-4.0.0::v4-tag::4.0.0_2, TAG: 4.0.0

Liquibase.rollback("3.0.0", (Contexts) null);
INFO [main]: RanChangeSet liquibaseTest-1.0.0::v1::1.0.0_1, TAG: null
INFO [main]: RanChangeSet liquibaseTest-1.0.0::v1-tag::1.0.0_2, TAG: 1.0.0
INFO [main]: RanChangeSet liquibaseTest-2.0.0::v2::2.0.0_1, TAG: null
INFO [main]: RanChangeSet liquibaseTest-2.0.0::v2-tag::2.0.0_2, TAG: 2.0.0
INFO [main]: RanChangeSet liquibaseTest-3.0.0::v3::3.0.0_1, TAG: null
INFO [main]: RanChangeSet liquibaseTest-3.0.0::v3-tag::3.0.0_2, TAG: 3.0.0

Liquibase.rollback("2.0.0", (Contexts) null);
INFO [main]: RanChangeSet liquibaseTest-1.0.0::v1::1.0.0_1, TAG: null
INFO [main]: RanChangeSet liquibaseTest-1.0.0::v1-tag::1.0.0_2, TAG: 1.0.0
INFO [main]: RanChangeSet liquibaseTest-2.0.0::v2::2.0.0_1, TAG: null
INFO [main]: RanChangeSet liquibaseTest-2.0.0::v2-tag::2.0.0_2, TAG: 2.0.0

Liquibase.rollback("1.0.0", (Contexts) null);
INFO [main]: RanChangeSet liquibaseTest-1.0.0::v1::1.0.0_1, TAG: null
INFO [main]: RanChangeSet liquibaseTest-1.0.0::v1-tag::1.0.0_2, TAG: 1.0.0

Versions 3.5.2 and 3.5.3 don't work with H2 or MSSQL:
Liquibase.update((Contexts) null);
INFO [main]: RanChangeSet liquibaseTest-1.0.0::v1::1.0.0_1, TAG: null
INFO [main]: RanChangeSet liquibaseTest-1.0.0::v1-tag::1.0.0_2, TAG: 1.0.0
INFO [main]: RanChangeSet liquibaseTest-2.0.0::v2::2.0.0_1, TAG: null
INFO [main]: RanChangeSet liquibaseTest-2.0.0::v2-tag::2.0.0_2, TAG: 2.0.0
INFO [main]: RanChangeSet liquibaseTest-3.0.0::v3::3.0.0_1, TAG: null
INFO [main]: RanChangeSet liquibaseTest-3.0.0::v3-tag::3.0.0_2, TAG: 3.0.0
INFO [main]: RanChangeSet liquibaseTest-4.0.0::v4::4.0.0_1, TAG: null
INFO [main]: RanChangeSet liquibaseTest-4.0.0::v4-tag::4.0.0_2, TAG: 4.0.0

Liquibase.rollback("3.0.0", (Contexts) null);
INFO [main]: RanChangeSet liquibaseTest-1.0.0::v1::1.0.0_1, TAG: null
INFO [main]: RanChangeSet liquibaseTest-1.0.0::v1-tag::1.0.0_2, TAG: 1.0.0
INFO [main]: RanChangeSet liquibaseTest-2.0.0::v2::2.0.0_1, TAG: null
INFO [main]: RanChangeSet liquibaseTest-2.0.0::v2-tag::2.0.0_2, TAG: 2.0.0
INFO [main]: RanChangeSet liquibaseTest-3.0.0::v3::3.0.0_1, TAG: null
missing TAG: 3.0.0

Liquibase.rollback("2.0.0", (Contexts) null);
INFO [main]: RanChangeSet liquibaseTest-1.0.0::v1::1.0.0_1, TAG: null
INFO [main]: RanChangeSet liquibaseTest-1.0.0::v1-tag::1.0.0_2, TAG: 1.0.0
INFO [main]: RanChangeSet liquibaseTest-2.0.0::v2::2.0.0_1, TAG: null
missing TAG: 2.0.0

Liquibase.rollback("1.0.0", (Contexts) null);
INFO [main]: RanChangeSet liquibaseTest-1.0.0::v1::1.0.0_1, TAG: null
missing TAG: 1.0.0

Environment

Windows, H2, MSSQL via JTDS

Attachments

1

Activity

Show:

Greg Haase December 4, 2017 at 5:28 PM

Nathan Niesen July 26, 2017 at 7:13 PM

One workaround is after rolling back to a tag follow it up with an upgrade to the same tag. That requires adding code that should be removed later.

Details

Reporter

Components

Affects versions

Priority

Created July 26, 2017 at 7:07 PM
Updated September 6, 2018 at 2:32 PM