Open issues

SqlGeneratorFactory is not thread safe
CORE-3488
3.5.5 migration to 3.6.0 and sup duration problem
CORE-3478
DbChangelog xsd file > 3.6 is not available
CORE-3472
Shaded MANIFEST.MF without Bundle-Version/Build-Time entries leads to NPE in LiquibaseUtil
CORE-3471
ChangeLogParseException with Spring Boot
CORE-3459
Invalid XML character during changelog snapshot
CORE-3432
Error: Unable to initialize main class liquibase.integration.commandline.Main Caused by: java.lang.NoClassDefFoundError: ch/qos/logback/core/filter/Filter
CORE-3408
generateChangeLog seems to die after 131 tables
CORE-3397
Unable to generate Change Log for our smallest database
CORE-3396
Informix Indexes should not use default names
CORE-3395
INTERVAL data type not handled correctly
CORE-3394
Informix constraints should not use default names
CORE-3392
Informix BYTE datatype should not have (LENGTH)
CORE-3391
OSGiPackageScanClassResolver doesn't catch NoClassDefFoundErrors
CORE-3368
YAML serializer generates wrong changesets
CORE-3340
XML serializer generates wrong changesets
CORE-3336
Liquibase Sql format does not support rollback to another changeset
CORE-3333
SnapshotGeneratorFactory returns null Table(s)
CORE-3329
generateChangeLog for mssql server will only generate empty changelog file
CORE-3323
ShouldRunChangeSetFilter initialization behavior update from 3.5.0 breaks custom task
CORE-3299
NPE in MissingTableChangeGenerator.fixMissing when running liquibase:generateChangeLog
CORE-3297
createIndex refactoring includes schema name on postgres
CORE-3288
ORA-00933 exception when timestamp doesn't have milliseconds on oracle 12c
CORE-3282
Number Format Exception When Importing CSV File
CORE-3265
Liquibase 3.6.1 not working for MaxDB
CORE-3264
fails with mssql 2005 because of using true/false (instead of 0/1 in older versions) while working with bit fields
CORE-3217
File path issue with maven-plugin
CORE-3210
GenerateChangeLog does not create AddPrimaryKey changesets
CORE-3207
java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Date during lockService.listLocks() [SQLite]
CORE-3197
Snapshot versions in liquibase-debian & liquibase-rpm
CORE-3183
Cannot find the object "[object]" because it does not exist or you do not have permissions.
CORE-3169
Liquibase applying change log for different schema
CORE-3161
Liquibase Sybase should support loadData identityInsertEnabled
CORE-3152
Using Liquibase Teradata gives error conencting to database.
CORE-3146
3.5.2 : Error: ORA-00933 when inside string last character is a backslash
CORE-3096
objectQuotingStrategy="QUOTE_ALL_OBJECTS" not works correctly in H2, HSQLDB
CORE-3073
generateChangelog does not order views correctly based on usage
CORE-3070
Incompatible change -- bool is mapped to BIT(1) instead of BOOL
CORE-3012
XML Schema does not support descending on columns in index
CORE-2968
Not able to apply filter diffIncludeObjects in diff command
CORE-2897
SqlPlus syntax support
CORE-2866
String with the word null in it gets converted into NULL on import
CORE-2783
db2 Raw sql file having "CONNECT TO DB" while executing it throwing error
CORE-2762
Quote with inside comment and default value make update failed
CORE-2710
NumberFormatException with default values of type 'real' in postgresql
CORE-2662
includeAll includes just first xml
CORE-2592
loadUpdateData doesn't update data
CORE-2582
Issue with file charset
CORE-2444
Change formatted SQL stripComments default from "true" to "false"
CORE-2383
NoClassDefFoundError in ServiceLocator
CORE-2372
issue 1 of 1196

SqlGeneratorFactory is not thread safe

Description

On our project we are running liquibase in multi thread mode (each schema in database update in parallel) and as result I have got error:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 java.lang.NullPointerException at liquibase.sqlgenerator.SqlGeneratorFactory.getGenerators(SqlGeneratorFactory.java:125) at liquibase.sqlgenerator.SqlGeneratorFactory.createGeneratorChain(SqlGeneratorFactory.java:187) at liquibase.sqlgenerator.SqlGeneratorFactory.generateSql(SqlGeneratorFactory.java:218) at liquibase.executor.AbstractExecutor.applyVisitors(AbstractExecutor.java:25) at liquibase.executor.jvm.JdbcExecutor.access$800(JdbcExecutor.java:40) at liquibase.executor.jvm.JdbcExecutor$QueryStatementCallback.doInStatement(JdbcExecutor.java:458) at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:59) at liquibase.executor.jvm.JdbcExecutor.query(JdbcExecutor.java:145) at liquibase.executor.jvm.JdbcExecutor.query(JdbcExecutor.java:153) at liquibase.executor.jvm.JdbcExecutor.queryForObject(JdbcExecutor.java:161) at liquibase.executor.jvm.JdbcExecutor.queryForObject(JdbcExecutor.java:176) at liquibase.executor.jvm.JdbcExecutor.queryForLong(JdbcExecutor.java:186) at liquibase.executor.jvm.JdbcExecutor.queryForLong(JdbcExecutor.java:181)

I think, it happens, because in time of calling method getGenerators in SqlGeneratorFactory class, we are using not thread safe structures for fields like: 'genericInterfacesCache', 'genericSuperClassCache', 'generatorsByKey'.

Please, help to resolve this issue.
Thank you in advance!

Environment

OS: Linux
Java 1.8
Liquibase 3.8.0

Status

Assignee

Unassigned

Reporter

Yauheni Sauko

Labels

None

Fix versions

Affects versions

3.8.0

Priority

Blocker
Configure