AbstractResourceAccessor generates path in a unpredictable way


We have servers in more than 50 countries.
We switched to Liquibase 3.2.2 because with this version the checksums are less sensible to machine locale.

Unfortunately, switching to 3.2.2 proven to be difficult because the path resolution was slightly different every time we tried to upgrade to 3.2.2 a new country.

  1. Liquibase is sensible to how rootPath are terminated (with slash or not)

  2. Liquibase includeAll relative resolution can generate unexpected absolute paths

  3. Liquibase iterates over rootPaths in a way that is not deterministic given the command line. This can cause production of different paths depending on the name of the folders including chagesets. the same log.xml put in /opt/sa/ can produce different paths if put in /opt/ar/

After a lot of experimentation with the command line I was not able to work around all the cases.

I then decided to debug the code and found 3 problems in class AbstractResourceAccessor.
I created Unit tests and fix for them and I'm submitting a pull request: https://github.com/liquibase/liquibase/pull/299

Please review and merge if all is OK.


Found on Centos 6.x servers.
Replicated via unit tests.


valentino miazzo


Fix versions

Affects versions