Giter VIP home page Giter VIP logo

liquibase-mongodb's Introduction

Liquibase MongoDB Extension

Build Status

Table of contents

  1. Introduction
  2. Release Notes
  3. Implemented Changes
  4. Connection String Formats
  5. Getting Started
  6. Running tests
  7. Integration
  8. Contributing
  9. License

Introduction

This is a Liquibase extension for MongoDB support.

It resulted as an alternative to existing MongoDB evolution tools.
Majority of them are basically wrappers over db.eval shell method that is deprecated staring from MongoDB 4.2.

In order to call specific mongo-java-driver specific methods, Liquibase turned to be the most feasible tool to extend as it allows to define change sets to fit driver methods arguments.

Implemented Changes:

A couple of Changes were implemented until identified that majority of the operations can be achieved using db.runCommand() and db.adminCommand()

Connection String Formats

mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]] mongodb://mongodb1.example.com:27317,mongodb2.example.com:27017/?replicaSet=mySet&authSource=authDB

mongodb+srv://[username:password@]host[/[database][?options]] mongodb+srv://server.example.com/ mongodb+srv://:@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.

Prerequisites

  • Dependencies that have to be available in classpath if run via Liquibase CLI
mongodb-driver-sync:4.2.0
snakeyaml:1.27
jackson-annotations:2.11.3
jackson-core:2.11.3
jackson-databind:2.11.3

Installing

  • Clone the project
git clone https://github.com/liquibase/liquibase-mongodb

Running tests

Adjust connection string

Connection url can be adjusted here: url Connection String Format Run Integration tests by enabling run-its profile

Run integration tests

mvn clean install -Prun-its

Run integration test driver backward compatibility

  1. Produce test containing jar
mvn clean install -Ptest-jar
  1. Go to test-project
cd test-project
  1. Run backward compatibility test with provided 3x driver
mvn clean install -Prun-its,mongo-3x

Quick Start Examples

Quick start Application for NoSql liquibase extensions

Integration

Add dependency:

<dependency>
    <groupId>org.liquibase.ext</groupId>
    <artifactId>liquibase-mongodb</artifactId>
    <version>${liquibase-mongodb.version}</version>
</dependency>

Java call:

public class Application {
    public static void main(String[] args) {
        MongoLiquibaseDatabase database = (MongoLiquibaseDatabase) DatabaseFactory.getInstance().openDatabase(url, null, null, null, null);
        Liquibase liquibase = new Liquibase("liquibase/ext/changelog.generic.test.xml", new ClassLoaderResourceAccessor(), database);
        liquibase.update("");
    }
}

Contributing

Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.

License

This project is licensed under the Apache License Version 2.0 - see the LICENSE.md file for details

liquibase-mongodb's People

Contributors

alexandru-slobodcicov avatar dependabot-preview[bot] avatar dependabot[bot] avatar filipelautert avatar gobozov avatar gsmet avatar jandroav avatar jgarec avatar jnewton03 avatar jonasjschreiber avatar jsonking avatar kristyldatical avatar kushnirykoleh avatar liquibot avatar loicmathieu avatar mcred avatar molivasdat avatar nvoxland avatar pavlotytarchuk avatar r2-lf avatar sayalim0412 avatar snyk-bot avatar szandany avatar tabuckner avatar vitaliimak avatar wermerb avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

liquibase-mongodb's Issues

Liquibase throws exception on `update()` after migration to Spring Boot 2.6.1

After migration to Spring Boot 2.6.1 the following piece of code

var database = (MongoLiquibaseDatabase) DatabaseFactory.getInstance().openDatabase(url, null, null, null, null);
var liquibase = new Liquibase(liquibaseProperties.getChangeLog(), new ClassLoaderResourceAccessor(), database);
liquibase.update("");

throws exception

org.bson.codecs.configuration.CodecConfigurationException: Can't find a codec for interface java.util.List.
liquibase.exception.LockException: org.bson.codecs.configuration.CodecConfigurationException: Can't find a codec for interface java.util.List.
	at app//liquibase.nosql.lockservice.AbstractNoSqlLockService.acquireLock(AbstractNoSqlLockService.java:183)
	at app//liquibase.nosql.lockservice.AbstractNoSqlLockService.waitForLock(AbstractNoSqlLockService.java:119)
	at app//liquibase.Liquibase.lambda$update$1(Liquibase.java:214)
	at app//liquibase.Scope.lambda$child$0(Scope.java:177)
	at app//liquibase.Scope.child(Scope.java:186)
	at app//liquibase.Scope.child(Scope.java:176)
	at app//liquibase.Scope.child(Scope.java:155)
	at app//liquibase.Liquibase.runInScope(Liquibase.java:2404)
	at app//liquibase.Liquibase.update(Liquibase.java:211)
	at app//liquibase.Liquibase.update(Liquibase.java:197)
	at app//liquibase.Liquibase.update(Liquibase.java:193)
	at app//liquibase.Liquibase.update(Liquibase.java:185)
        ...
Caused by: org.bson.codecs.configuration.CodecConfigurationException: Can't find a codec for interface java.util.List.
	at app//org.bson.codecs.BsonTypeCodecMap.get(BsonTypeCodecMap.java:68)
	at app//org.bson.codecs.ContainerCodecHelper.readValue(ContainerCodecHelper.java:41)
	at app//org.bson.codecs.DocumentCodec.decode(DocumentCodec.java:177)
	at app//org.bson.codecs.DocumentCodec.decode(DocumentCodec.java:44)
	at app//org.bson.internal.LazyCodec.decode(LazyCodec.java:48)
	at app//org.bson.codecs.ContainerCodecHelper.readValue(ContainerCodecHelper.java:61)
	at app//org.bson.codecs.DocumentCodec.decode(DocumentCodec.java:177)
	at app//org.bson.codecs.DocumentCodec.decode(DocumentCodec.java:44)
	at app//org.bson.codecs.ContainerCodecHelper.readValue(ContainerCodecHelper.java:61)
	at app//org.bson.codecs.DocumentCodec.decode(DocumentCodec.java:177)
	at app//org.bson.codecs.DocumentCodec.decode(DocumentCodec.java:44)
	at app//org.bson.Document.parse(Document.java:126)
	at app//liquibase.ext.mongodb.statement.BsonUtils.lambda$orEmptyDocument$0(BsonUtils.java:69)
	at [email protected]/java.util.Optional.map(Optional.java:260)
	at app//liquibase.ext.mongodb.statement.BsonUtils.orEmptyDocument(BsonUtils.java:69)
	at app//liquibase.ext.mongodb.statement.RunCommandStatement.<init>(RunCommandStatement.java:30)
	at app//liquibase.ext.mongodb.lockservice.AdjustChangeLogLockCollectionStatement.<init>(AdjustChangeLogLockCollectionStatement.java:40)
	at app//liquibase.ext.mongodb.lockservice.MongoLockService.adjustRepository(MongoLockService.java:101)
	at app//liquibase.nosql.lockservice.AbstractNoSqlLockService.init(AbstractNoSqlLockService.java:102)
	at app//liquibase.nosql.lockservice.AbstractNoSqlLockService.acquireLock(AbstractNoSqlLockService.java:155)
	... 97 more

However, the same code works fine with older version like 2.5.3

After some investigation, I figured out Spring Boot 2.6.1 uses 4.4.0 version of mongodb driver while liquibase-mongodb:4.6.2 uses 4.3.4. Seems like something has changed in Document.parse(...) in new driver version so that this line throws exception with provided DocumentCodec. This exception could be reproduced by calling this snippet

        Document.parse("""
                { collMod: "DATABASECHANGELOGLOCK",
                "validator": {
                     "$jsonSchema": {
                         "bsonType": "object",
                         "description": "Database Lock Collection",
                         "required": ["_id", "locked"],
                             "properties": {
                                 "_id": {
                                     "bsonType": "int",
                                     "description": "Unique lock identifier"
                                 },
                                 "locked": {
                                     "bsonType": "bool",
                                     "description": "Lock flag"
                                 },
                                 "lockGranted": {
                                     "bsonType": "date",
                                     "description": "Timestamp when lock acquired"
                                 },
                                 "lockedBy": {
                                     "bsonType": ["string", "null"],
                                     "description": "Owner of the lock"
                                 }
                             }
                         }
                     },
                "validationLevel": "strict",
                "validationAction": "error"
                }""", BsonUtils.DOCUMENT_CODEC)

while this one without BsonUtils.DOCUMENT_CODEC works fine

        Document.parse("""
                { collMod: "DATABASECHANGELOGLOCK",
                "validator": {
                     "$jsonSchema": {
                         "bsonType": "object",
                         "description": "Database Lock Collection",
                         "required": ["_id", "locked"],
                             "properties": {
                                 "_id": {
                                     "bsonType": "int",
                                     "description": "Unique lock identifier"
                                 },
                                 "locked": {
                                     "bsonType": "bool",
                                     "description": "Lock flag"
                                 },
                                 "lockGranted": {
                                     "bsonType": "date",
                                     "description": "Timestamp when lock acquired"
                                 },
                                 "lockedBy": {
                                     "bsonType": ["string", "null"],
                                     "description": "Owner of the lock"
                                 }
                             }
                         }
                     },
                "validationLevel": "strict",
                "validationAction": "error"
                }""")

Support mongodb-driver-sync v4.x

I've tried to update driver version in POM and seems all works as expected. All integration tests are passed.

Are there any plans to support it in nearest releases?

┆Issue is synchronized with this Jira Bug by Unito

How to run Mongo JS commands

Back in the dark day when we would perform our database migrations manually, we would execute things involving server side javascript like:

db.myCollection
    .find("stateHistory.state": "MINI")
    .forEach(company => {
        company.stateHistory.forEach(item => {
            if (item.state == "MINI") {
                item.state = "PRIVATE";
            }
        })
        db.myCollection.save(company);
    });

Now we finally switched to liquibase, but still could not find a way to execute native MJS (similar to the <sql> tag).

There is a stack overflow issue here and a forum article here, but I could not locate any concrete solution to this.

Is this already supported? We would highly appreciate a solution to that, even if it would involve java code (such as implementing a reuseable CustomChange and pass the MJS path as a parameter).

┆Issue is synchronized with this Jira Bug by Unito

Java call failing while calling liquibase update

I am trying to integrate with java call and use the module(liquibase-mongodb) but it is failing with below log

0:52:02.903 [main] DEBUG liquibase.servicelocator.ServiceLocator - ServiceLocator finding classes matching interface liquibase.executor.Executor
20:52:02.903 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - Searching for implementations of liquibase.executor.Executor in packages: [liquibase.change, liquibase.command, liquibase.changelog, liquibase.database, liquibase.parser, liquibase.precondition, liquibase.datatype, liquibase.serializer, liquibase.sqlgenerator, liquibase.executor, liquibase.snapshot, liquibase.logging, liquibase.diff, liquibase.structure, liquibase.structurecompare, liquibase.lockservice, liquibase.sdk.database, liquibase.ext, liquibase.pro, com.datical.liquibase]
20:52:02.903 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - Searching for: is assignable to Executor in package: liquibase/change
20:52:02.903 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - Searching for: is assignable to Executor in package: liquibase/command
20:52:02.903 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - Searching for: is assignable to Executor in package: liquibase/changelog
20:52:02.903 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - Searching for: is assignable to Executor in package: liquibase/database
20:52:02.903 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - Searching for: is assignable to Executor in package: liquibase/parser
20:52:02.904 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - Searching for: is assignable to Executor in package: liquibase/precondition
20:52:02.904 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - Searching for: is assignable to Executor in package: liquibase/datatype
20:52:02.904 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - Searching for: is assignable to Executor in package: liquibase/serializer
20:52:02.904 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - Searching for: is assignable to Executor in package: liquibase/sqlgenerator
20:52:02.904 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - Searching for: is assignable to Executor in package: liquibase/executor
20:52:02.904 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - Searching for: is assignable to Executor in package: liquibase/snapshot
20:52:02.904 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - Searching for: is assignable to Executor in package: liquibase/logging
20:52:02.904 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - Searching for: is assignable to Executor in package: liquibase/diff
20:52:02.904 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - Searching for: is assignable to Executor in package: liquibase/structure
20:52:02.904 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - Searching for: is assignable to Executor in package: liquibase/structurecompare
20:52:02.904 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - No classes found in package: liquibase/structurecompare
20:52:02.904 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - Searching for: is assignable to Executor in package: liquibase/lockservice
20:52:02.904 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - Searching for: is assignable to Executor in package: liquibase/sdk/database
20:52:02.904 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - Searching for: is assignable to Executor in package: liquibase/ext
20:52:02.904 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - Searching for: is assignable to Executor in package: liquibase/pro
20:52:02.904 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - Searching for: is assignable to Executor in package: com/datical/liquibase
20:52:02.905 [main] DEBUG liquibase.servicelocator.DefaultPackageScanClassResolver - Found: [class liquibase.executor.jvm.JdbcExecutor, class liquibase.executor.LoggingExecutor, class liquibase.ext.mongodb.executor.MongoExecutor, class com.datical.liquibase.ext.OracleSqlPlusExecutor]
20:52:02.905 [main] DEBUG liquibase.servicelocator.ServiceLocator - liquibase.executor.jvm.JdbcExecutor matches liquibase.executor.Executor
20:52:02.920 [main] DEBUG liquibase.servicelocator.ServiceLocator - liquibase.ext.mongodb.executor.MongoExecutor matches liquibase.executor.Executor
20:52:02.920 [main] DEBUG liquibase.servicelocator.ServiceLocator - com.datical.liquibase.ext.OracleSqlPlusExecutor matches liquibase.executor.Executor
20:52:02.921 [main] DEBUG liquibase.servicelocator.ServiceLocator - ServiceLocator.findClasses for liquibase.executor.Executor
liquibase.exception.LockException: liquibase.exception.UnexpectedLiquibaseException: java.lang.ClassCastException: class liquibase.executor.ExecutorService cannot be cast to class liquibase.SingletonObject (liquibase.executor.ExecutorService and liquibase.SingletonObject are in unnamed module of loader 'app')

┆Issue is synchronized with this Jira Bug by Unito

Unexpected error running Liquibase: org.bson.Document.getList (NoSuchMethodError)

Hello,
I am trying to follow the official tutorial for mongodb, but I am getting this exception:

here is the full log:

`[2021-06-01 11:34:48] FINE [liquibase.servicelocator] Loaded liquibase.license.LicenseService instance liquibase.pro.license.keymgr.DaticalTrueLicenseService
[2021-06-01 11:34:48] INFO [liquibase.integration] No Liquibase Pro license key supplied. Please set liquibaseProLicenseKey on command line or in liquibase.properties to use Liquibase Pro features.
Liquibase Community 4.3.5 by Datical
####################################################
####################################################
Starting Liquibase at 11:34:48 (version 4.3.5 #62 built at 2021-04-29 18:31+0000)
[2021-06-01 11:34:48] FINE [liquibase.integration] Liquibase Hub URL: https://hub.liquibase.com
[2021-06-01 11:34:48] FINE [liquibase.integration] Liquibase Hub Mode: all
[2021-06-01 11:34:48] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.CockroachDatabase
[2021-06-01 11:34:48] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.DB2Database
[2021-06-01 11:34:48] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.Db2zDatabase
[2021-06-01 11:34:48] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.DerbyDatabase
[2021-06-01 11:34:48] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.Firebird3Database
[2021-06-01 11:34:48] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.FirebirdDatabase
[2021-06-01 11:34:48] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.H2Database
[2021-06-01 11:34:48] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.HsqlDatabase
[2021-06-01 11:34:48] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.InformixDatabase
[2021-06-01 11:34:48] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.Ingres9Database
[2021-06-01 11:34:48] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.MSSQLDatabase
[2021-06-01 11:34:48] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.MariaDBDatabase
[2021-06-01 11:34:48] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.MockDatabase
[2021-06-01 11:34:48] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.MySQLDatabase
[2021-06-01 11:34:48] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.OracleDatabase
[2021-06-01 11:34:48] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.PostgresDatabase
[2021-06-01 11:34:48] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.SQLiteDatabase
[2021-06-01 11:34:48] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.SybaseASADatabase
[2021-06-01 11:34:48] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.SybaseDatabase
[2021-06-01 11:34:48] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.UnsupportedDatabase
[2021-06-01 11:34:48] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.ext.mongodb.database.MongoLiquibaseDatabase
[2021-06-01 11:34:48] FINE [liquibase.database] Properties:
[2021-06-01 11:34:48] FINE [liquibase.database] Connecting to the URL:'mongodb://localhost:27017/myDatabase' using driver:'liquibase.ext.mongodb.database.MongoClientDriver'
[2021-06-01 11:34:48] FINE [liquibase.servicelocator] Loaded liquibase.database.DatabaseConnection instance liquibase.database.jvm.JdbcConnection
[2021-06-01 11:34:48] FINE [liquibase.servicelocator] Loaded liquibase.database.DatabaseConnection instance com.datical.liquibase.ext.database.jvm.ProJdbcConnection
[2021-06-01 11:34:48] FINE [liquibase.servicelocator] Loaded liquibase.database.DatabaseConnection instance liquibase.ext.mongodb.database.MongoConnection
[2021-06-01 11:34:49] INFO [com.mongodb.diagnostics.logging.JULLogger log] Cluster created with settings {hosts=[localhost:27017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500}
[2021-06-01 11:34:49] FINE [liquibase.database] Connection has been created
[2021-06-01 11:34:49] FINE [liquibase.ext] Connected to @localhost:27017
[2021-06-01 11:34:49] FINE [liquibase.ext] Not adjusting the auto commit mode; it is already false
[2021-06-01 11:34:49] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance liquibase.structure.core.Catalog
[2021-06-01 11:34:49] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance liquibase.structure.core.Column
[2021-06-01 11:34:49] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance liquibase.structure.core.Data
[2021-06-01 11:34:49] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance liquibase.structure.core.ForeignKey
[2021-06-01 11:34:49] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance liquibase.structure.core.Index
[2021-06-01 11:34:49] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance liquibase.structure.core.PrimaryKey
[2021-06-01 11:34:49] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance liquibase.structure.core.Schema
[2021-06-01 11:34:49] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance liquibase.structure.core.Sequence
[2021-06-01 11:34:49] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance liquibase.structure.core.StoredProcedure
[2021-06-01 11:34:49] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance liquibase.structure.core.Table
[2021-06-01 11:34:49] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance liquibase.structure.core.UniqueConstraint
[2021-06-01 11:34:49] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance liquibase.structure.core.View
[2021-06-01 11:34:49] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance com.datical.liquibase.ext.appdba.synonym.Synonym
[2021-06-01 11:34:49] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance com.datical.liquibase.ext.storedlogic.checkconstraint.CheckConstraint
[2021-06-01 11:34:49] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance com.datical.liquibase.ext.storedlogic.databasepackage.DatabasePackage
[2021-06-01 11:34:49] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance com.datical.liquibase.ext.storedlogic.databasepackage.DatabasePackageBody
[2021-06-01 11:34:49] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance com.datical.liquibase.ext.storedlogic.function.Function
[2021-06-01 11:34:49] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance com.datical.liquibase.ext.storedlogic.trigger.Trigger
[2021-06-01 11:34:49] INFO [com.mongodb.diagnostics.logging.JULLogger log] Opened connection [connectionId{localValue:1, serverValue:15}] to localhost:27017
[2021-06-01 11:34:49] INFO [com.mongodb.diagnostics.logging.JULLogger log] Monitor thread successfully connected to server with description ServerDescription{address=localhost:27017, type=STANDALONE, state=CONNECTED, ok=true, version=ServerVersion{versionList=[4, 0, 6]}, minWireVersion=0, maxWireVersion=7, maxDocumentSize=16777216, logicalSessionTimeoutMinutes=30, roundTripTimeNanos=5076800}
[2021-06-01 11:34:49] FINE [liquibase.servicelocator] Loaded liquibase.lockservice.LockService instance liquibase.lockservice.LockServiceImpl
[2021-06-01 11:34:49] FINE [liquibase.servicelocator] Loaded liquibase.lockservice.LockService instance liquibase.lockservice.MockLockService
[2021-06-01 11:34:49] FINE [liquibase.servicelocator] Loaded liquibase.lockservice.LockService instance liquibase.lockservice.OfflineLockService
[2021-06-01 11:34:49] FINE [liquibase.servicelocator] Loaded liquibase.lockservice.LockService instance liquibase.lockservice.StandardLockService
[2021-06-01 11:34:49] FINE [liquibase.servicelocator] Loaded liquibase.lockservice.LockService instance liquibase.ext.mongodb.lockservice.MongoLockService
[2021-06-01 11:34:49] FINE [liquibase.servicelocator] Loaded liquibase.executor.Executor instance liquibase.executor.jvm.JdbcExecutor
[2021-06-01 11:34:49] FINE [liquibase.servicelocator] Loaded liquibase.executor.Executor instance com.datical.liquibase.ext.OracleSqlPlusExecutor
[2021-06-01 11:34:49] FINE [liquibase.servicelocator] Loaded liquibase.executor.Executor instance liquibase.nosql.executor.NoSqlExecutor
[2021-06-01 11:34:49] INFO [com.mongodb.diagnostics.logging.JULLogger log] Opened connection [connectionId{localValue:2, serverValue:16}] to localhost:27017
[2021-06-01 11:34:49] INFO [com.mongodb.diagnostics.logging.JULLogger log] Closed connection [connectionId{localValue:2, serverValue:16}] to localhost:27017 because the pool has been closed.
Unexpected error running Liquibase: org.bson.Document.getList(Ljava/lang/Object;Ljava/lang/Class;)Ljava/util/List;
For more information, please use the --logLevel flag
[2021-06-01 11:34:49] SEVERE [liquibase.integration] Unexpected error running Liquibase: org.bson.Document.getList(Ljava/lang/Object;Ljava/lang/Class;)Ljava/util/List;
java.lang.NoSuchMethodError: org.bson.Document.getList(Ljava/lang/Object;Ljava/lang/Class;)Ljava/util/List;
at liquibase.ext.mongodb.statement.AbstractRunCommandStatement.checkResponse(AbstractRunCommandStatement.java:78)
at liquibase.ext.mongodb.statement.AbstractRunCommandStatement.run(AbstractRunCommandStatement.java:60)
at liquibase.ext.mongodb.statement.AbstractRunCommandStatement.run(AbstractRunCommandStatement.java:55)
at liquibase.ext.mongodb.statement.ListCollectionNamesStatement.queryForList(ListCollectionNamesStatement.java:79)
at liquibase.ext.mongodb.statement.CountCollectionByNameStatement.queryForLong(CountCollectionByNameStatement.java:44)
at liquibase.ext.mongodb.statement.CountCollectionByNameStatement.queryForLong(CountCollectionByNameStatement.java:33)
at liquibase.nosql.executor.NoSqlExecutor.queryForLong(NoSqlExecutor.java:105)
at liquibase.nosql.executor.NoSqlExecutor.queryForLong(NoSqlExecutor.java:98)
at liquibase.ext.mongodb.lockservice.MongoLockService.existsRepository(MongoLockService.java:85)
at liquibase.nosql.lockservice.AbstractNoSqlLockService.hasDatabaseChangeLogLockTable(AbstractNoSqlLockService.java:305)
at liquibase.nosql.lockservice.AbstractNoSqlLockService.init(AbstractNoSqlLockService.java:93)
at liquibase.nosql.lockservice.AbstractNoSqlLockService.acquireLock(AbstractNoSqlLockService.java:155)
at liquibase.nosql.lockservice.AbstractNoSqlLockService.waitForLock(AbstractNoSqlLockService.java:119)
at liquibase.Liquibase.lambda$update$1(Liquibase.java:220)
at liquibase.Scope.lambda$child$0(Scope.java:160)
at liquibase.Scope.child(Scope.java:169)
at liquibase.Scope.child(Scope.java:159)
at liquibase.Scope.child(Scope.java:138)
at liquibase.Liquibase.runInScope(Liquibase.java:2369)
at liquibase.Liquibase.update(Liquibase.java:217)
at liquibase.Liquibase.update(Liquibase.java:203)
at liquibase.integration.commandline.Main.doMigration(Main.java:1802)
at liquibase.integration.commandline.Main$1.lambda$run$0(Main.java:367)
at liquibase.Scope.lambda$child$0(Scope.java:160)
at liquibase.Scope.child(Scope.java:169)
at liquibase.Scope.child(Scope.java:159)
at liquibase.Scope.child(Scope.java:138)
at liquibase.integration.commandline.Main$1.run(Main.java:366)
at liquibase.integration.commandline.Main$1.run(Main.java:196)
at liquibase.Scope.child(Scope.java:169)
at liquibase.Scope.child(Scope.java:145)
at liquibase.integration.commandline.Main.run(Main.java:196)
at liquibase.integration.commandline.Main.main(Main.java:158)

`

┆Issue is synchronized with this Jira Bug by Unito

Is adminCommand really connected to the admin DB?

I'm trying to use runCommand or adminCommand to invoke shardCollection. I'm on version 4.3.1.

I get this error from Mongo: 'shardCollection may only be run against the admin database', from this:
adminCommand(command: '{shardCollection: 'darrin.player_info_static', key: '{location: 1, _id: 1}', unique: true} ')
Same as if I'd used runCommand.

Your AdminCommandStatement.run() calls: database.getMongoDatabase().runCommand(command);
I'd expect it to lookup the admin DB.

And I can't figure out how to invoke db.adminCommand() on Mongo using runCommand (as a workaround).

┆Issue is synchronized with this Jira Bug by Unito

Cannot populate MongoDb using insertOne

I am running Liquibase MongoDb extension as a Docker image using a Dockerfile from the following repository:
https://github.com/mmarcon/liquibase-mongo-docker

As a changelog I used this simple json:

{
    "databaseChangeLog": [
        {
            "changeSet": {
                "id": "4",
                "author": "Nick",
                "comment": "Populate person table",
                "changes": [
                    {
                        "insertOne": {
                            "collectionName": "person",
                            "document": {
                                "$rawJson": {
                                    "name": "Alexandru Slobodcicov",
                                    "address": "Moldova"
                                }
                            }
                        }
                    }
                ]
            }
        }
    ]
}

Results

Liquibase is being run successfully, collection is being created, but no data is populated.

Here are Liquibase logs:

2021-01-29T16:09:02.1994518Z [2021-01-29 16:09:02] INFO [com.mongodb.diagnostics.logging.JULLogger log] Opened connection [connectionId{localValue:5, serverValue:5}] to ex-mongodb:27017
2021-01-29T16:09:02.2027671Z [2021-01-29 16:09:02] INFO [com.mongodb.diagnostics.logging.JULLogger log] Monitor thread successfully connected to server with description ServerDescription{address=ex-mongodb:27017, type=STANDALONE, state=CONNECTED, ok=true, version=ServerVersion{versionList=[4, 2, 9]}, minWireVersion=0, maxWireVersion=8, maxDocumentSize=16777216, logicalSessionTimeoutMinutes=30, roundTripTimeNanos=2012900}
2021-01-29T16:09:02.2177238Z [2021-01-29 16:09:02] INFO [com.mongodb.diagnostics.logging.JULLogger log] Opened connection [connectionId{localValue:6, serverValue:6}] to ex-mongodb:27017
2021-01-29T16:09:02.2275768Z [2021-01-29 16:09:02] INFO [liquibase.ext] Create Database Lock Collection: extricatordb.DATABASECHANGELOGLOCK
2021-01-29T16:09:02.289213Z [2021-01-29 16:09:02] INFO [liquibase.ext] Created database lock Collection: DATABASECHANGELOGLOCK
2021-01-29T16:09:02.2900146Z [2021-01-29 16:09:02] INFO [liquibase.ext] Adjusting database Lock Collection with name: extricatordb.DATABASECHANGELOGLOCK
2021-01-29T16:09:02.3016375Z [2021-01-29 16:09:02] INFO [liquibase.ext] Adjusted database Lock Collection with name: extricatordb.DATABASECHANGELOGLOCK
2021-01-29T16:09:02.3320803Z [2021-01-29 16:09:02] INFO [liquibase.ext] Lock Database
2021-01-29T16:09:02.3436049Z [2021-01-29 16:09:02] INFO [liquibase.ext] Successfully Acquired Change Log Lock
2021-01-29T16:09:02.3890683Z [2021-01-29 16:09:02] INFO [liquibase.servicelocator] Cannot load service: liquibase.parser.ChangeLogParser: liquibase.nosql.parser.json.JsonNoSqlChangeLogParser Unable to get public no-arg constructor
2021-01-29T16:09:02.6942666Z [2021-01-29 16:09:02] INFO [liquibase.ext] Create Database Change Log Collection
2021-01-29T16:09:02.6945298Z [2021-01-29 16:09:02] INFO [liquibase.ext] Creating database history collection with name: extricatordb.DATABASECHANGELOG
2021-01-29T16:09:02.7565717Z [2021-01-29 16:09:02] INFO [liquibase.ext] Created database history collection : extricatordb.DATABASECHANGELOG
2021-01-29T16:09:02.7568709Z [2021-01-29 16:09:02] INFO [liquibase.ext] Adjusting database history Collection with name: extricatordb.DATABASECHANGELOG
2021-01-29T16:09:02.7570992Z [2021-01-29 16:09:02] INFO [liquibase.ext] Adjusted database history Collection with name: extricatordb.DATABASECHANGELOG
2021-01-29T16:09:03.0824029Z [2021-01-29 16:09:03] INFO [liquibase.nosql] Changeset changelog/create_settlements_workspace.json::4::Nick
2021-01-29T16:09:03.0826871Z [2021-01-29 16:09:03] INFO [liquibase.nosql] Populate person table
2021-01-29T16:09:03.1542302Z [2021-01-29 16:09:03] INFO [liquibase.changelog] Document inserted into collection person
2021-01-29T16:09:03.1547072Z [2021-01-29 16:09:03] INFO [liquibase.changelog] ChangeSet changelog/create_settlements_workspace.json::4::Nick ran successfully in 72ms
2021-01-29T16:09:03.1662403Z [2021-01-29 16:09:03] INFO [liquibase.ext] Release Database Lock
2021-01-29T16:09:03.1693298Z [2021-01-29 16:09:03] INFO [liquibase.ext] Successfully released change log lock
2021-01-29T16:09:03.1715455Z [2021-01-29 16:09:03] INFO [com.mongodb.diagnostics.logging.JULLogger log] Closed connection [connectionId{localValue:6, serverValue:6}] to ex-mongodb:27017 because the pool has been closed.
2021-01-29T16:09:03.1745137Z Liquibase: Update has been successful.

And a screenshot from MongoDb Compass

image

Could you say me, why data is not being populated?

┆Issue is synchronized with this Jira Bug by Unito

JSON schema validation not working

liquibase-mongodb -> 4.5.0

rule validations are not created.

example of a databaseChangeLog:

{
"databaseChangeLog": [
{
"changeSet": {
"id": "1",
"author": "author",
"preConditions": [
{
"onFail": "WARN"
},
{
"documentExists": {
"collectionName": "student"
}
}
],
"comment": "Create collection",
"changes": [
{
"createCollection": {
"collectionName": "student",
"validator": {
"$jsonSchema": {
"bsonType": "object"
"properties": {
"studentId": {
"bsonType": "string",
"maxLength": 8,
"description": "student id"
},
"description": {
"bsonType": "string",
"maxLength": 50,
"description": "description"
}
}
}
},
"validationAction": "error",
"validationLevel": "strict"
}
}
]
}
}
]
}

Liquibase with mongodb x.509 certificates to auth

https://forum.liquibase.org/t/liquibase-with-mongodb-x-509-certificates-to-auth/5172
Liquibase with mongodb x.509 certificates to auth

padmaja
Hi ,
I am using liquibase with mongodb which has string format (username and password).And I would like to use my mongodb to connect with x.509 certs using Liquibase .With this approach my url contains --tls --tlsCertificateKeyFile. How can I do it.I am using Liquibase with CLI so far.
Thanks for the help.

https://forum.liquibase.org/t/what-is-the-role-of-the-user-to-acquire-a-lock-in-mongodb/5190
How to configure Liquibase to access mongodb x.509 certificates to authenticate and make a connection

Hi , I am using liquibase with mongodb which has string format (username and password).And I would like to use my mongodb to connect with x.509 certs using Liquibase .With this approach my url contains --tls --tlsCertificateKeyFile. How can I do it.I am using Liquibase with CLI so far. Thanks for the help

┆Issue is synchronized with this Jira Bug by Unito

Support for DNS Seed List Connection Format or Atlas Cluster

Current supported format is Standard Connection String Format:
mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]
New format to support DNS Seed List Connection Format:
mongodb+srv://server.example.com/
mongodb+srv://:@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS

┆Issue is synchronized with this Jira Bug by Unito

Add support for MongoDB Atlas Serverless

MongoDB has introduced a new serverless offering.

When the dns is queried it returns a TXT record containing authSource=admin&loadBalanced=true The loadBalanced parameter is unique to serverless so drivers that have not been updated throw an error that they get an invalid parameter from the DNS TXT record. There is no work around because as Mongo controls the DNS records.

This connection string throws an error stating "Could not open connection to database" with an explanation about the TXT record.
mongodb+srv://example.mongodb.net/test?retryWrites=true&w=majority

Caused by: com.mongodb.MongoConfigurationException: A TXT record is only permitted to contain the keys 
[authsource, replicaset], but the TXT record for 'example.mongodb.net' contains the keys [loadbalanced, authsource]
	at com.mongodb.ConnectionString.<init>(ConnectionString.java:388)
	at liquibase.ext.mongodb.database.MongoConnection.open(MongoConnection.java:104)

Add a comparison between Liquibase-Mongo and Mongock

Due to the fact MongoDB is a NoSQL DB, it's kind of unclear if all the regular Liquibase features are supported, and hence, if it would be better to use the native Mongock migration tool. A little comparison or emphasis of Liquibase-Mongo current capabilities would do the work.

┆Issue is synchronized with this Jira Bug by Unito

Rollback fails when encountering skipped changeset in the databasechangelot table

I am using the following configuration

apache maven 3.6.3

                <groupId>org.liquibase</groupId>
                <artifactId>liquibase-maven-plugin</artifactId>
                <version>4.6.1</version>
                <executions>
                    <execution>
                        <phase>${liquibase.plugin.phase}</phase>
                        <goals>
                            <goal>update</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <propertyFile>target/classes/liquibase-${env}-${dbName}.properties</propertyFile>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>com.mediarithmics</groupId>
                        <artifactId>liquibase-clickhouse</artifactId>
                        <version>0.6.1</version>
                    </dependency>
                    <dependency>
                        <groupId>org.liquibase.ext</groupId>
                        <artifactId>liquibase-mongodb</artifactId>
                        <version>4.6.1</version>
                    </dependency>
                </dependencies>
            </plugin>

I have the following database changelog table

ID        description        execType         tag
1             update 1           SKIPPED
2             update 2           SKIPPED
3             tag                    SKIPPED        tag1
4             tag                    EXECUTED     tag1
5             update 3           SKIPPED
6             update 4           EXECUTED

when I try a rollback to the tag1,
It removes the changesets 6, but fails to remove 5 and 4 with the following error

[INF       O] Finished at: 2022-01-04T17:09:06+01:00
[INFO] ------------------------------------------------------------------------
[WARNING]           The requested profile "unittest" could not be activated because it does not exist.
[ERROR] Failed to execute goal org.liquibase:liquibase-maven-plugin:4.6.1:rollback (default-cli) on                          project opensee-model-liquidity:
[ERROR] Error setting up or running Liquibase:
[ERROR] liquibase.exception.RollbackFailedExcepti                 on: java.lang.IllegalArgumentException
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.liquibase:liquibase-maven-plugin:4.6.1:rollback (default-cli) o                                n project opensee-model-liquidity:
Error setting up or running Liquibase:
liquibase.exception.RollbackFailedException: java.lang.IllegalArgumentException
    at org.apache.maven.lifecycle.int       ernal.MojoExecutor.execute (MojoExecutor.java:215)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoEx       ecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.       internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.do       Execute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
    at org.apache.maven.cli.       MavenCli.doMain (MavenCli.java:289)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
    at jdk.internal.reflect.NativeMethodAccessorIm       pl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:4           3)
    at java.lang.reflect.Method.invoke (Method.java:566)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (          mLauncher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.j           ava:347)
Caused by: org.apache.maven.plugin.MojoExecutionException:
Error setting up or running Liquibase:
liquibase.exception.RollbackFailedException: java.lang.IllegalArgumentException
    at org.liquibase.maven.plugins.       AbstractLiquibaseMojo.execute (AbstractLiquibaseMojo.java:484)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecy       cle.internal.MojoExecutor.execute (MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (         1mMojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.L       ifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    a    t org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultM           aven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
    at org.apache.maven.cli.MavenCli.doMain (Mav           enCli.java:289)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMe       thodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:566)
    at     org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plex       us.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: org.apache.maven.plugin.MojoExecutionException:            31m
Error setting up or running Liquibase:
liquibase.exception.RollbackFailedException: java.lang.IllegalArgumentException
    at org.liquibase.maven.plugins.AbstractLiquibaseMojo.lambda$null$0 (AbstractLiquibaseMojo.java:475            [m)
    at liquibase.Scope.lambda$child$0 (Scope.java:177)
    at liquibase.Scope.child (Scope.java:186)
    at liquibase.Scope.child (Scope.java:176)
    at liquibase.Scope.child (Scope.java:15           5)
    at org.liquibase.maven.plugins.AbstractLiquibaseMojo.lambda$execute$1 (AbstractLiquibaseMojo.java:402)
    at liquibase.Scope.lambda$child$0 (Scope.java:177)
    at liquibase.Sco       pe.child (Scope.java:186)
    at liquibase.Scope.child (Scope.java:176)
    at liquibase.Scope.child (Scope.java:155)
    at liquibase.Scope.child (Scope.java:240)
    at liquibase.Scope.c       hild (Scope.java:244)
    at org.liquibase.maven.plugins.AbstractLiquibaseMojo.execute (AbstractLiquibaseMojo.java:339)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginM           anager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:15           6)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at     [m org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilde           r.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.       DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
    at org.apache.maven       .cli.MavenCli.doMain (MavenCli.java:289)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAcce       ssorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:566)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.p       lexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: liquibase.exception.LiquibaseException: liqui              base.exception.RollbackFailedException: java.lang.IllegalArgumentException
    at liquibase.changelog.ChangeLogIterator.run (ChangeLogIterator.java:124)
    at liquibase.Liquibase$9.lambda$run$0 (Liquibase.java:1189)
    at liquibase.Scope.lambda$child$0 (Scope.java:177)
    at liquibase.Scope.child (Scope.java:186)
    at liquibase.Scope.child (Scope.java:176)
    at liquib       ase.Scope.child (Scope.java:155)
    at liquibase.Scope.child (Scope.java:240)
    at liquibase.Liquibase$9.run (Liquibase.java:1188)
    at liquibase.Scope.lambda$child$0 (Scope.java:177)
    at l       iquibase.Scope.child (Scope.java:186)
    at liquibase.Scope.child (Scope.java:176)
    at liquibase.Scope.child (Scope.java:155)
    at liquibase.Liquibase.runInScope (Liquibase.java:2404)
    at l       iquibase.Liquibase.rollback (Liquibase.java:1120)
    at org.liquibase.maven.plugins.LiquibaseRollback.performLiquibaseTask (LiquibaseRollback.java:123)
    at org.liquibase.maven.plugins.AbstractLiquibaseMojo.lambda$null$0 (Abstrac           tLiquibaseMojo.java:472)
    at liquibase.Scope.lambda$child$0 (Scope.java:177)
    at liquibase.Scope.child (Scope.java:186)
    at liquibase.Scope.child (Scope.java:176)
    at l       iquibase.Scope.child (Scope.java:155)
    at org.liquibase.maven.plugins.AbstractLiquibaseMojo.lambda$execute$1 (AbstractLiquibaseMojo.java:402)
    at liquibase.Scope.lambda$child$0 (Scope.           java:177)
    at liquibase.Scope.child (Scope.java:186)
    at liquibase.Scope.child (Scope.java:176)
    at liquibase.Scope.child (Scope.java:155)
    at liquibase.Scope.child (Sc           ope.java:240)
    at liquibase.Scope.child (Scope.java:244)
    at org.liquibase.maven.plugins.AbstractLiquibaseMojo.execute (AbstractLiquibaseMojo.java:339)
    at org.apache.maven.plugin.DefaultBuildPluginManage       r.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder           .java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.D       efaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.       maven.cli.MavenCli.execute (MavenCli.java:957)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at jdk.       internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:566)
    at org.codehaus.plexus.classworlds.launcher.Launcher.la       unchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: liquibase.exception.RollbackFailedException: java.lang.IllegalArgumentException
    at liquibas       e.changelog.ChangeSet.rollback (ChangeSet.java:799)
    at liquibase.changelog.visitor.RollbackVisitor.visit (RollbackVisitor.java:53)
    at liquibase.changelog.ChangeLogIterator$2.lamb       da$null$0 (ChangeLogIterator.java:111)
    at liquibase.Scope.lambda$child$0 (Scope.java:177)
    at liquibase.Scope.child (Scope.java:186)
    at liquibase.Scope.child (S           cope.java:176)
    at liquibase.Scope.child (Scope.java:155)
    at liquibase.changelog.ChangeLogIterator$2.lambda$run$1 (ChangeLogIterator.ja           va:110)
    at liquibase.Scope.lambda$child$0 (Scope.java:177)
    at liquibase.Scope.child (Scope.java:186)
    at liquibase.Scope.child (Scope.java:176)
    at liquibase.Scope.child (Scope.java:155)
    at liquibase.Scope.child (Scope.java:240)
    at liquibase.changelog.ChangeLogIterator$2.run (ChangeLogIterator.java:94)
      1mat liquibase.Scope.lambda$child$0 (Scope.java:177)
    at liquibase.Scope.child (Scope.java:186)
    at liquibase.Scope.child (Scope.java:176)
    at liquibase.Scope.child (Scope.java:155)
    at     [m liquibase.Scope.child (Scope.java:240)
    at liquibase.Scope.child (Scope.java:244)
    at liquibase.changelog.ChangeLogIterator.run (ChangeLogIterator.java:66)
    at liquibase.Liquibase$9.lambda$run$0 (Liquibase.java:1189)
    at liquibase.Scope.lambda$child$0 (Scope.java:177)
    at liquibase.Scope.child (        [1mScope.java:186)
    at liquibase.Scope.child (Scope.java:176)
    at liquibase.Scope.child (Scope.java:155)
    at liquibase.Scope.child (Scope.java:240)
        at liquibase.Liquibase$9.run (Liquibase.java:1188)
    at liquibase.Scope.lambda$child$0 (Scope.java:177)
    at liquibase.Scope.child (Scope.java:186)
    at liquibase.Scope.child (Scope.java:176)
    at liquibase.Scope.child (Scope.java:155)
    at liquibase.Liquibase.runInScope (Liquibase.java:2404)
    at liquibase.Liquibase.rollback (Liquibase.java           :1120)
    at org.liquibase.maven.plugins.LiquibaseRollback.performLiquibaseTask (LiquibaseRollback.java:123)
    at org.liquibase.maven.plugins.AbstractLiquibaseMojo.lambda$null$0 (AbstractLiquibaseMojo.java           :472)
    at liquibase.Scope.lambda$child$0 (Scope.java:177)
    at liquibase.Scope.child (Scope.java:186)
    at liquibase.Scope.child (Scope.java:176)
    at liquibase.Scop       e.child (Scope.java:155)
    at org.liquibase.maven.plugins.AbstractLiquibaseMojo.lambda$execute$1 (AbstractLiquibaseMojo.java:402)
    at liquibase.Scope.lambda$child$0 (Scope.java:177)
    at liquibase.Scope.child (Scope.java:186)
    at liquibase.Scope.child (Scope.java:176)
    at liquibase.Scope.child (Scope.java:155)
    at liquibase.Scope.child (Scope.java:240             m)
    at liquibase.Scope.child (Scope.java:244)
    at org.liquibase.maven.plugins.AbstractLiquibaseMojo.execute (AbstractLiquibaseMojo.java:339)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeM       ojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecuto           r.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBui       lder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThread       edBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.ja           va:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli       .MavenCli.execute (MavenCli.java:957)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
    at jdk.int       ernal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (Delegat           ingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:566)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classwo       rlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codeha       us.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: java.lang.IllegalArgumentException
    at liquibase.nosql.executor.NoSqlExecutor.execute (NoSqlExecutor.java:194)
    at liquibase.database.AbstractJdbcDatabase.execute (AbstractJdbcDatabase.java:1279)
    at liquibase.database.AbstractJdbcDatabase.executeRollbackStatements (         1mAbstractJdbcDatabase.java:1303)
    at liquibase.changelog.ChangeSet.rollback (ChangeSet.java:778)
    at liquibase.changelog.visitor.RollbackVisitor.visit (RollbackVisitor.java:53)
        at liquibase.changelog.ChangeLogIterator$2.lambda$null$0 (ChangeLogIterator.java:111)
    at liquibase.Scope.lambda$child$0 (Scope.java:177)
    at      m liquibase.Scope.child (Scope.java:186)
    at liquibase.Scope.child (Scope.java:176)
    at liquibase.Scope.child (Scope.java:155)
    at liquibase.changelog.ChangeLogIte       rator$2.lambda$run$1 (ChangeLogIterator.java:110)
    at liquibase.Scope.lambda$child$0 (Scope.java:177)
    at liquibase.Scope.child (Scope.java:186)
    at liquibase.Scope.child (Scope.java:176)
    at liquibase.Scope.child (Scope.java:155)
    at liquibase.Scope.child (Scope.java:240)
    at liquibase.changelog.ChangeLogIterator$2.run (ChangeLogIte           rator.java:94)
    at liquibase.Scope.lambda$child$0 (Scope.java:177)
    at liquibase.Scope.child (Scope.java:186)
    at liqui       base.Scope.child (Scope.java:176)
    at liquibase.Scope.child (Scope.java:155)
    at liquibase.Scope.child (Scope.java:240)
    at liquibase.Scope.child (Scope.java:244)
    at liquibase.ch       angelog.ChangeLogIterator.run (ChangeLogIterator.java:66)
    at liquibase.Liquibase$9.lambda$run$0 (Liquibase.java:1189)
    at liquibase.Sc       ope.lambda$child$0 (Scope.java:177)
    at liquibase.Scope.child (Scope.java:186)
    at liquibase.Scope.child (Scope.java:176)
    at     [m liquibase.Scope.child (Scope.java:155)
    at liquibase.Scope.child (Scope.java:240)
    at liquibase.Liquibase$9.run (Liquibase.java:1188)
    at liquibase.Scope.lam       bda$child$0 (Scope.java:177)
    at liquibase.Scope.child (Scope.java:186)
    at liquibase.Scope.child (Scope.java:176)
    at liquibase.Scope.child (Scope.java:155)
    at li       quibase.Liquibase.runInScope (Liquibase.java:2404)
    at liquibase.Liquibase.rollback (Liquibase.java:1120)
    at org.liquibase.maven.plugins.LiquibaseRollback.performLiquibaseTask (LiquibaseRollback.java:123)
    at        org.liquibase.maven.plugins.AbstractLiquibaseMojo.lambda$null$0 (AbstractLiquibaseMojo.java:472)
    at liquibase.Scope.lambda$child$0 (Scope.java:177)
    at liquibase.Scope.child (Scope.java:186)
       mat liquibase.Scope.child (Scope.java:176)
    at liquibase.Scope.child (Scope.java:155)
    at org.liquibase.maven.plugins.AbstractLiquibaseMojo.lambda$execute$1 (AbstractLiquibaseMojo.java:402)
    at liquibase.Scope.lambda$c       hild$0 (Scope.java:177)
    at liquibase.Scope.child (Scope.java:186)
    at liquibase.Scope.child (Scope.java:176)
    at liquibase.Scope.child (Scope.java:155)
        at liquibase.Scope.child (Scope.java:240)
    at liquibase.Scope.child (Scope.java:244)
    at org.liquibase.maven.plugins.AbstractLiquibaseMojo.execute (AbstractLiquibaseMojo.java:339)
    at org.apach       e.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
    at org.a       pache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.Lifecycle       ModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
        at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at     org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105              )
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
    at     jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at jdk.internal.reflect.DelegatingMeth       odAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:566)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced        (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.c       odehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
[ERROR]
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the follo          wing articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

I realized that this happens when we have a changeset in "skipped" status in the databasechangelog before arriving to the tag we want to remove.

When I remove the changeset 5 from the table, the rollback is finishing with success.
but it removes the skipped changeset 3, instead of the executed one which is 4.

When I rerun the rollback, it success to remove the changeset with id 4.

CreateCollection silently drops supported options

The CreateCollectionChange silently drops valid options allowed by the server (only retaining the validation related ones if defined).
This is a potential source of error as the user may not notice this when defining and running a changeset as the collection would be created without the options being present.

I have raised a PR for fixing this: #78

In the PR I have changed the implementation to issue a runCommand operation instead. This allows all supported database options to be defined in the changeset which are then passed through to the server. This is more future proof than using the driver's CreateCollectionOptions class which evolves over time and requires manually copying each option across.

If you like this approach I am happy to help convert other similar methods to do the same (e.g. createIndex which recently had changes for a similar reason in Issue-74).

┆Issue is synchronized with this Jira Bug by Unito

Maybe Race Conditions When Running Concurrently

This is something I uncovered in my hacky PR #31 , and don't have a test case without it.

With the PR you can simply run (after building)

docker-compose down -v &&  docker-compose up -d mongo && docker-compose up  --build liquibase-cli-1 liquibase-cli-2

You will sometimes get this exception:

liquibase-cli-2_1  | For more information, please use the --logLevel flag
liquibase-cli-2_1  | [2020-08-30 21:17:12] SEVERE [liquibase.integration] Unexpected error running Liquibase: Command failed with error 48 (NamespaceExists): 'Collection already exists. NS: liquibase_cli.databaseChangeLogLock' on server mongo:27017. The full response is {"ok": 0.0, "errmsg": "Collection already exists. NS: liquibase_cli.databaseChangeLogLock", "code": 48, "codeName": "NamespaceExists"}
liquibase-cli-2_1  | liquibase.exception.LockException: com.mongodb.MongoCommandException: Command failed with error 48 (NamespaceExists): 'Collection already exists. NS: liquibase_cli.databaseChangeLogLock' on server mongo:27017. The full response is {"ok": 0.0, "errmsg": "Collection already exists. NS: liquibase_cli.databaseChangeLogLock", "code": 48, "codeName": "NamespaceExists"}
liquibase-cli-2_1  |    at liquibase.ext.mongodb.lockservice.MongoLockService.acquireLock(MongoLockService.java:184)
liquibase-cli-2_1  |    at liquibase.ext.mongodb.lockservice.MongoLockService.waitForLock(MongoLockService.java:121)
liquibase-cli-2_1  |    at liquibase.Liquibase$1.run(Liquibase.java:188)
liquibase-cli-2_1  |    at liquibase.Scope.lambda$child$0(Scope.java:159)
liquibase-cli-2_1  |    at liquibase.Scope.child(Scope.java:170)
liquibase-cli-2_1  |    at liquibase.Scope.child(Scope.java:158)
liquibase-cli-2_1  |    at liquibase.Scope.child(Scope.java:137)
liquibase-cli-2_1  |    at liquibase.Liquibase.runInScope(Liquibase.java:1790)
liquibase-cli-2_1  |    at liquibase.Liquibase.update(Liquibase.java:183)
liquibase-cli-2_1  |    at liquibase.Liquibase.update(Liquibase.java:179)
liquibase-cli-2_1  |    at liquibase.integration.commandline.Main.doMigration(Main.java:1543)
liquibase-cli-2_1  |    at liquibase.integration.commandline.Main$1.lambda$run$0(Main.java:316)
liquibase-cli-2_1  |    at liquibase.Scope.lambda$child$0(Scope.java:159)
liquibase-cli-2_1  |    at liquibase.Scope.child(Scope.java:170)
liquibase-cli-2_1  |    at liquibase.Scope.child(Scope.java:158)
liquibase-cli-2_1  |    at liquibase.Scope.child(Scope.java:137)
liquibase-cli-2_1  |    at liquibase.Scope.child(Scope.java:183)
liquibase-cli-2_1  |    at liquibase.Scope.child(Scope.java:187)
liquibase-cli-2_1  |    at liquibase.integration.commandline.Main$1.run(Main.java:315)
liquibase-cli-2_1  |    at liquibase.integration.commandline.Main$1.run(Main.java:166)
liquibase-cli-2_1  |    at liquibase.Scope.child(Scope.java:170)
liquibase-cli-2_1  |    at liquibase.Scope.child(Scope.java:144)
liquibase-cli-2_1  |    at liquibase.integration.commandline.Main.run(Main.java:166)
liquibase-cli-2_1  |    at liquibase.integration.commandline.Main.main(Main.java:145)
liquibase-cli-2_1  | Caused by: com.mongodb.MongoCommandException: Command failed with error 48 (NamespaceExists): 'Collection already exists. NS: liquibase_cli.databaseChangeLogLock' on server mongo:27017. The full response is {"ok": 0.0, "errmsg": "Collection already exists. NS: liquibase_cli.databaseChangeLogLock", "code": 48, "codeName": "NamespaceExists"}
liquibase-cli-2_1  |    at com.mongodb.internal.connection.ProtocolHelper.getCommandFailureException(ProtocolHelper.java:175)
liquibase-cli-2_1  |    at com.mongodb.internal.connection.InternalStreamConnection.receiveCommandMessageResponse(InternalStreamConnection.java:303)
liquibase-cli-2_1  |    at com.mongodb.internal.connection.InternalStreamConnection.sendAndReceive(InternalStreamConnection.java:259)
liquibase-cli-2_1  |    at com.mongodb.internal.connection.UsageTrackingInternalConnection.sendAndReceive(UsageTrackingInternalConnection.java:99)
liquibase-cli-2_1  |    at com.mongodb.internal.connection.DefaultConnectionPool$PooledConnection.sendAndReceive(DefaultConnectionPool.java:450)
liquibase-cli-2_1  |    at com.mongodb.internal.connection.CommandProtocolImpl.execute(CommandProtocolImpl.java:72)
liquibase-cli-2_1  |    at com.mongodb.internal.connection.DefaultServer$DefaultServerProtocolExecutor.execute(DefaultServer.java:226)
liquibase-cli-2_1  |    at com.mongodb.internal.connection.DefaultServerConnection.executeProtocol(DefaultServerConnection.java:269)
liquibase-cli-2_1  |    at com.mongodb.internal.connection.DefaultServerConnection.command(DefaultServerConnection.java:131)
liquibase-cli-2_1  |    at com.mongodb.internal.connection.DefaultServerConnection.command(DefaultServerConnection.java:123)
liquibase-cli-2_1  |    at com.mongodb.operation.CommandOperationHelper.executeWriteCommand(CommandOperationHelper.java:369)
liquibase-cli-2_1  |    at com.mongodb.operation.CommandOperationHelper.executeWriteCommand(CommandOperationHelper.java:360)
liquibase-cli-2_1  |    at com.mongodb.operation.CommandOperationHelper.executeCommand(CommandOperationHelper.java:284)
liquibase-cli-2_1  |    at com.mongodb.operation.CommandOperationHelper.executeCommand(CommandOperationHelper.java:277)
liquibase-cli-2_1  |    at com.mongodb.operation.CreateCollectionOperation$1.call(CreateCollectionOperation.java:385)
liquibase-cli-2_1  |    at com.mongodb.operation.CreateCollectionOperation$1.call(CreateCollectionOperation.java:381)
liquibase-cli-2_1  |    at com.mongodb.operation.OperationHelper.withConnectionSource(OperationHelper.java:530)
liquibase-cli-2_1  |    at com.mongodb.operation.OperationHelper.withConnection(OperationHelper.java:492)
liquibase-cli-2_1  |    at com.mongodb.operation.CreateCollectionOperation.execute(CreateCollectionOperation.java:381)
liquibase-cli-2_1  |    at com.mongodb.operation.CreateCollectionOperation.execute(CreateCollectionOperation.java:57)
liquibase-cli-2_1  |    at com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.execute(MongoClientDelegate.java:211)
liquibase-cli-2_1  |    at com.mongodb.client.internal.MongoDatabaseImpl.executeCreateCollection(MongoDatabaseImpl.java:312)
liquibase-cli-2_1  |    at com.mongodb.client.internal.MongoDatabaseImpl.createCollection(MongoDatabaseImpl.java:269)
liquibase-cli-2_1  |    at liquibase.ext.mongodb.statement.CreateCollectionStatement.execute(CreateCollectionStatement.java:90)
liquibase-cli-2_1  |    at liquibase.ext.mongodb.executor.MongoExecutor.execute(MongoExecutor.java:150)
liquibase-cli-2_1  |    at liquibase.ext.mongodb.executor.MongoExecutor.execute(MongoExecutor.java:144)
liquibase-cli-2_1  |    at liquibase.ext.mongodb.lockservice.MongoLockService.init(MongoLockService.java:92)
liquibase-cli-2_1  |    at liquibase.ext.mongodb.lockservice.MongoLockService.acquireLock(MongoLockService.java:154)
liquibase-cli-2_1  |    ... 23 more
liquibase-cli-2_1  | 

I suspect when the databaseChangeLog and databaseChangeLock collections aren't created they two processes fight for creation without using repeatable operations. I'm not sure if my changes caused that error. I did notice in other cases, that two threads can both seemingly think they got the lock although that might be my change shrug.

┆Issue is synchronized with this Jira Bug by Unito

Inserts with JSON changelog doesn't work (MongoDB)

Environment
Liquibase 4.3.4
Liquibase-mongoDB extension 4.3.4
Linux/Windows
JSON format changelog with insertOne/insertMany change types.

When testing the following changelog https://github.com/liquibase/liquibase-mongodb/blob/main/src/test/resources/liquibase/ext/json/generic-1-insert-people.json
It appears that the insertOne change type passed successfully with the liquibase update. However, the data is missing or corrupted.

The insertMany change type appears to fail with the following stack trace:

Caused by: com.mongodb.MongoCommandException: Command failed with error 16 (InvalidLength): 'Write batch sizes must be between 1 and 100000. Got 0 operations.' on server localhost:27017. The full response is {"ok": 0.0, "errmsg": "Write batch sizes must be between 1 and 100000. Got 0 operations.", "code": 16, "codeName": "InvalidLength"}
at com.mongodb.internal.connection.ProtocolHelper.getCommandFailureException(ProtocolHelper.java:175)
at com.mongodb.internal.connection.InternalStreamConnection.receiveCommandMessageResponse(InternalStreamConnection.java:302)
at com.mongodb.internal.connection.InternalStreamConnection.sendAndReceive(InternalStreamConnection.java:258)
at com.mongodb.internal.connection.UsageTrackingInternalConnection.sendAndReceive(UsageTrackingInternalConnection.java:99)
at com.mongodb.internal.connection.DefaultConnectionPool$PooledConnection.sendAndReceive(DefaultConnectionPool.java:450)
at com.mongodb.internal.connection.CommandProtocolImpl.execute(CommandProtocolImpl.java:72)
at com.mongodb.internal.connection.DefaultServer$DefaultServerProtocolExecutor.execute(DefaultServer.java:226)
at com.mongodb.internal.connection.DefaultServerConnection.executeProtocol(DefaultServerConnection.java:269)
at com.mongodb.internal.connection.DefaultServerConnection.command(DefaultServerConnection.java:131)
at com.mongodb.internal.connection.DefaultServerConnection.command(DefaultServerConnection.java:123)
at com.mongodb.operation.CommandOperationHelper.executeCommand(CommandOperationHelper.java:343)
at com.mongodb.operation.CommandOperationHelper.executeCommand(CommandOperationHelper.java:334)
at com.mongodb.operation.CommandOperationHelper.executeCommandWithConnection(CommandOperationHelper.java:220)
at com.mongodb.operation.CommandOperationHelper$5.call(CommandOperationHelper.java:206)
at com.mongodb.operation.OperationHelper.withReadConnectionSource(OperationHelper.java:463)
at com.mongodb.operation.CommandOperationHelper.executeCommand(CommandOperationHelper.java:203)
at com.mongodb.operation.CommandOperationHelper.executeCommand(CommandOperationHelper.java:198)
at com.mongodb.operation.CommandReadOperation.execute(CommandReadOperation.java:59)
at com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.execute(MongoClientDelegate.java:194)
at com.mongodb.client.internal.MongoDatabaseImpl.executeCommand(MongoDatabaseImpl.java:194)
at com.mongodb.client.internal.MongoDatabaseImpl.runCommand(MongoDatabaseImpl.java:163)
at com.mongodb.client.internal.MongoDatabaseImpl.runCommand(MongoDatabaseImpl.java:158)
at com.mongodb.client.internal.MongoDatabaseImpl.runCommand(MongoDatabaseImpl.java:148)
at liquibase.ext.mongodb.statement.AbstractRunCommandStatement.run(AbstractRunCommandStatement.java:59)
at liquibase.ext.mongodb.statement.AbstractRunCommandStatement.run(AbstractRunCommandStatement.java:55)
at liquibase.ext.mongodb.statement.AbstractRunCommandStatement.execute(AbstractRunCommandStatement.java:51)
at liquibase.ext.mongodb.statement.AbstractRunCommandStatement.execute(AbstractRunCommandStatement.java:36)
at liquibase.nosql.executor.NoSqlExecutor.execute(NoSqlExecutor.java:181

┆Issue is synchronized with this Jira Bug by Unito

WARNING: Unknown database: MongoDB

I am following the README.md. The command
mvn clean install -Prun-its
failed on tests:

[INFO] Running liquibase.ext.mongodb.changelog.MongoHistoryServiceIT
Jul 27, 2020 1:42:19 PM com.mongodb.diagnostics.logging.JULLogger log
INFO: Cluster created with settings {hosts=[localhost:27017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='100 ms', maxWaitQueueSize=500}
Jul 27, 2020 1:42:20 PM com.mongodb.diagnostics.logging.JULLogger log
INFO: Opened connection [connectionId{localValue:1, serverValue:553}] to localhost:27017
Jul 27, 2020 1:42:20 PM liquibase.database
WARNING: Unknown database: MongoDB
Jul 27, 2020 1:42:20 PM com.mongodb.diagnostics.logging.JULLogger log
INFO: Monitor thread successfully connected to server with description ServerDescription{address=localhost:27017, type=STANDALONE, state=CONNECTED, ok=true, version=ServerVersion{versionList=[4, 2, 8]}, minWireVersion=0, maxWireVersion=8, maxDocumentSize=16777216, logicalSessionTimeoutMinutes=30, roundTripTimeNanos=12420417}
Jul 27, 2020 1:42:20 PM com.mongodb.diagnostics.logging.JULLogger log
INFO: Cluster created with settings {hosts=[localhost:27017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='100 ms', maxWaitQueueSize=500}
Jul 27, 2020 1:42:20 PM liquibase.database
WARNING: Unknown database: MongoDB
...
[ERROR]   MongoStatementIT>AbstractMongoIntegrationTest.setUp:59 » ClassCast liquibase.d...
[ERROR]   MongoStatementIT>AbstractMongoIntegrationTest.setUp:59 » ClassCast liquibase.d...
[ERROR]   RunCommandStatementIT>AbstractMongoIntegrationTest.destroy:46 » NullPointer
[ERROR]   RunCommandStatementIT>AbstractMongoIntegrationTest.setUp:59 » ClassCast liquib...
[ERROR]   RunCommandStatementIT>AbstractMongoIntegrationTest.setUp:59 » ClassCast liquib...
[ERROR]   RunCommandStatementIT>AbstractMongoIntegrationTest.setUp:59 » ClassCast liquib...
[INFO]
[ERROR] Tests run: 91, Failures: 0, Errors: 91, Skipped: 0

The message

WARNING: Unknown database: MongoDB

is from liquibase-core
https://github.com/liquibase/liquibase/blob/master/liquibase-core/src/main/java/liquibase/database/DatabaseFactory.java#L107

Before running the Maven, I ran Mongo and it showed connections:

docker run --rm --network host mongo
2020-07-27T09:03:06.918+0000 I  CONTROL  [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
2020-07-27T09:03:06.921+0000 W  ASIO     [main] No TransportLayer configured during NetworkInterface startup
2020-07-27T09:03:06.922+0000 I  CONTROL  [initandlisten] MongoDB starting : pid=1 port=27017 dbpath=/data/db 64-bit host=centos7-vm
2020-07-27T09:03:06.922+0000 I  CONTROL  [initandlisten] db version v4.2.8
...
2020-07-27T09:42:23.378+0000 I  NETWORK  [conn627] received client metadata from 127.0.0.1:37374 conn627: { driver: { name: "mongo-java-driver|sync", version: "3.12.6" }, os: { type: "Linux", name: "Linux", architecture: "amd64", version: "3.10.0-1127.13.1.el7.x86_64" }, platform: "Java/Oracle Corporation/1.8.0_201-b09" }
2020-07-27T09:42:23.386+0000 I  NETWORK  [listener] connection accepted from 127.0.0.1:37378 #629 (77 connections now open)
2020-07-27T09:42:23.387+0000 I  NETWORK  [conn629] received client metadata from 127.0.0.1:37378 conn629: { driver: { name: "mongo-java-driver|sync", version: "3.12.6" }, os: { type: "Linux", name: "Linux", architecture: "amd64", version: "3.10.0-1127.13.1.el7.x86_64" }, platform: "Java/Oracle Corporation/1.8.0_201-b09" }
2020-07-27T09:42:23.948+0000 I  NETWORK  [conn601] end connection 127.0.0.1:37322 (76 connections now open)
2020-07-27T09:42:23.948+0000 I  NETWORK  [conn553] end connection 127.0.0.1:37226 (75 connections now open)
2020-07-27T09:42:23.948+0000 I  NETWORK  [conn614] end connection 127.0.0.1:37348 (74 connections now open)

Pls point me how to pass tests. Thanks.

┆Issue is synchronized with this Jira Bug by Unito

ExecutorService.getInstance().getExecutor( is deprecated but still being referenced from MongoLockService

executor.comment("Create Database Lock Collection");

Hi the line above calls the deprecated method causing nullpointer error when using the method

ExecutorService.getInstance().setExecutor("mongoDb", database, mongoExecutor);

Please can you address this issue in the next build?

┆Issue is synchronized with this Jira Bug by Unito

runCommand fails to run customAction

I’m trying to add liquibase to my project. I need to create a collection along with index and shard keys creation:

db.runCommand({customAction: “CreateCollection”, collection: “name”, offerThroughput: 400, shardKey: “partition_key”, indexes: [{key: {_id: 1}}, {key: {partition_key: 1, some_key: 1},unique: true}]});

offerThroughput key is specific for CosmosDB which I’m using in my project.

I tried next options:

{customAction: "CreateCollection", collection: "name", offerThroughput: 400, shardKey: "partition_key", indexes: [{key: {_id: 1}, name: "_id_1"}, {key: {partition_key: 1, some_key: 1}, name: "partition_key_1_some_key_1", unique: true}]} All my attempts failed. I didn't find any example with such a command so, I would appreciate it very much if somebody could share the syntax to run such a command on MongoDB.

┆Issue is synchronized with this Jira Bug by Unito

MongoDB connection cannot be made if the Liquibase username and password properties are used with access control enabled

When attempting to create a connection to a mongoDB with Liquibase, the connection will fails if access control is enabled and the username and password properties/flags are used.

STR

  1. Spin up a docker container with access control (password enabled)
    docker run -d -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=mongoAdmin -e MONGO_INITDB_ROOT_PASSWORD=password --name mongodb2 mongo
  2. Create a simple changeLog like the one in the link below:
    https://github.com/liquibase/liquibase-mongodb/blob/main/src/test/resources/liquibase/ext/changelog.create-collection.test.xml
  3. Place the JDBC + extension in the <liquibase home>/lib directory (4.0.0.2.jar + mongo-java-driver-3.12.7.jar).
  4. Run an update:
    liquibase --changeLogFile=dbchangelog_test.xml --url=mongodb://localhost:27017/MYDB?authSource=admin --username=mongoAdmin --password=password status

Result:
The following below error will get produced.
Unexpected error running Liquibase: com.mongodb.MongoCommandException: Command failed with error 13 (Unauthorized): 'command aggregate requires authentication' on server localhost:27017. The full response is {"ok": 0.0, "errmsg": "command aggregate requires authentication", "code": 13, "codeName": "Unauthorized"}

Workaround:

  1. Configure the url to include the username and password.
  2. Do NOT use the Liquibase username and password properties.
    For example:
    liquibase --changeLogFile=dbchangelog_test.xml --url=mongodb://mongoAdmin:password@localhost:27017/MYDB?authSource=admin status

┆Issue is synchronized with this Jira Bug by Unito

Is there a way to tag the current database state?

It's great that now rollbacks work well! I am trying the rollback to a tag, but I don't seem to be able to create a tag in the first place.

I tried to put a tag in the XML of the changelog, and I tried the tag command to tag manually. I wasn't successful in either case.

If I change the tag field manually in the documented inside the DATABASECHANGELOG collection then I can rollback with no issues so the problem is also with the tagging itself. What am I doing wrong?

┆Issue is synchronized with this Jira Bug by Unito

regression: Mongo 4.3.4 fails with createIndex change type

Environment
Linux, Windows
XML change type/changelog

Overview
It appears that the following changeset will fail with the latest 4.3.4 extension

 <changeSet id="1" author="alex">
   <ext:createIndex collectionName="createIndexTest">
      <ext:keys>
            { clientId: 1, type: 1}
      </ext:keys>
      <ext:options>
         {unique: true, name: "ui_tppClientId"}
      </ext:options>
   </ext:createIndex>
</changeSet>

The above changeset is a copy of this example here

Additional comments
This works with 4.2.2

┆Issue is synchronized with this Jira Bug by Unito

Is this extension crush with postgreSQL?

Originally I'm using liquibase to update postgresql, it just working fine.

However, when i try to update mongo too, i added this jar file into lib folder, mongo can be updated. But the postgresql no longer work...

C:\Downloads\liquibase-4.2.2\postgresql>CALL ..\liquibase "--changeLogFile=template.xml" "--driver=org.postgresql.Driver" "--classpath=postgresql-42.2.18.jar" "--url=jdbc:postgresql://xxxxxxxxxx:5432/xxxxxxxxxx" "--username=xxxxxxxxxx" "--password=xxxxxxxxxx" "--logLevel=debug" update
[2021-01-28 18:44:15] FINE [liquibase.servicelocator] Loaded liquibase.license.LicenseService instance liquibase.pro.license.keymgr.DaticalTrueLicenseService
[2021-01-28 18:44:15] INFO [liquibase.integration] No Liquibase Pro license key supplied. Please set liquibaseProLicenseKey on command line or in liquibase.properties to use Liquibase Pro features.
Liquibase Community 4.2.2 by Datical
####################################################
##   _     _             _ _                      ##
##  | |   (_)           (_) |                     ##
##  | |    _  __ _ _   _ _| |__   __ _ ___  ___   ##
##  | |   | |/ _` | | | | | '_ \ / _` / __|/ _ \  ##
##  | |___| | (_| | |_| | | |_) | (_| \__ \  __/  ##
##  \_____/_|\__, |\__,_|_|_.__/ \__,_|___/\___|  ##
##              | |                               ##
##              |_|                               ##
##                                                ##
##  Get documentation at docs.liquibase.com       ##
##  Get certified courses at learn.liquibase.com  ##
##  Free schema change activity reports at        ##
##      https://hub.liquibase.com                 ##
##                                                ##
####################################################
Starting Liquibase at 18:44:15 (version 4.2.2 #36 built at 2020-12-09 20:07+0000)
[2021-01-28 18:44:15] FINE [liquibase.integration] Adding 'file:/C:/Downloads/liquibase-4.2.2/postgresql/postgresql-42.2.18.jar' to the Java classpath.
[2021-01-28 18:44:15] FINE [liquibase.integration] Liquibase Hub URL:      https://hub.liquibase.com
[2021-01-28 18:44:15] FINE [liquibase.integration] Liquibase Hub Mode:     all
[2021-01-28 18:44:15] FINE [liquibase.resource] Adding path C:\Downloads\liquibase-4.2.2\postgresql\. to resourceAccessor liquibase.resource.FileSystemResourceAccessor
[2021-01-28 18:44:15] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.CockroachDatabase
[2021-01-28 18:44:15] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.DB2Database
[2021-01-28 18:44:15] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.Db2zDatabase
[2021-01-28 18:44:15] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.DerbyDatabase
[2021-01-28 18:44:15] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.Firebird3Database
[2021-01-28 18:44:15] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.FirebirdDatabase
[2021-01-28 18:44:15] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.H2Database
[2021-01-28 18:44:15] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.HsqlDatabase
[2021-01-28 18:44:15] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.InformixDatabase
[2021-01-28 18:44:15] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.Ingres9Database
[2021-01-28 18:44:15] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.MSSQLDatabase
[2021-01-28 18:44:15] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.MariaDBDatabase
[2021-01-28 18:44:15] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.MockDatabase
[2021-01-28 18:44:15] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.MySQLDatabase
[2021-01-28 18:44:15] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.OracleDatabase
[2021-01-28 18:44:15] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.PostgresDatabase
[2021-01-28 18:44:15] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.SQLiteDatabase
[2021-01-28 18:44:15] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.SybaseASADatabase
[2021-01-28 18:44:15] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.SybaseDatabase
[2021-01-28 18:44:15] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.UnsupportedDatabase
[2021-01-28 18:44:15] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.ext.mongodb.database.MongoLiquibaseDatabase
[2021-01-28 18:44:15] FINE [liquibase.database] Properties:
[2021-01-28 18:44:15] FINE [liquibase.database] Key:'password' Value:'**********'
[2021-01-28 18:44:15] FINE [liquibase.database] Key:'user' Value:'xxxxxxxxxx'
[2021-01-28 18:44:15] FINE [liquibase.database] Connecting to the URL:'jdbc:postgresql://xxxxxxxxxx:5432/xxxxxxxxxx' using driver:'org.postgresql.Driver'
[2021-01-28 18:44:15] FINE [liquibase.servicelocator] Loaded liquibase.database.DatabaseConnection instance liquibase.database.jvm.JdbcConnection
[2021-01-28 18:44:15] FINE [liquibase.servicelocator] Loaded liquibase.database.DatabaseConnection instance com.datical.liquibase.ext.database.jvm.ProJdbcConnection
[2021-01-28 18:44:15] FINE [liquibase.servicelocator] Loaded liquibase.database.DatabaseConnection instance liquibase.ext.mongodb.database.MongoConnection
Unexpected error running Liquibase: liquibase.exception.DatabaseException: liquibase.exception.DatabaseException: Could not open connection to database: UNKNOWN
For more information, please use the --logLevel flag
[2021-01-28 18:44:15] SEVERE [liquibase.integration] Unexpected error running Liquibase: liquibase.exception.DatabaseException: liquibase.exception.DatabaseException: Could not open connection to database: UNKNOWN
liquibase.exception.DatabaseException: liquibase.exception.DatabaseException: liquibase.exception.DatabaseException: liquibase.exception.DatabaseException: Could not open connection to database: UNKNOWN
        at liquibase.integration.commandline.CommandLineUtils.createDatabaseObject(CommandLineUtils.java:131)
        at liquibase.integration.commandline.Main.doMigration(Main.java:1409)
        at liquibase.integration.commandline.Main$1.lambda$run$0(Main.java:361)
        at liquibase.Scope.lambda$child$0(Scope.java:160)
        at liquibase.Scope.child(Scope.java:169)
        at liquibase.Scope.child(Scope.java:159)
        at liquibase.Scope.child(Scope.java:138)
        at liquibase.Scope.child(Scope.java:222)
        at liquibase.Scope.child(Scope.java:226)
        at liquibase.integration.commandline.Main$1.run(Main.java:360)
        at liquibase.integration.commandline.Main$1.run(Main.java:193)
        at liquibase.Scope.child(Scope.java:169)
        at liquibase.Scope.child(Scope.java:145)
        at liquibase.integration.commandline.Main.run(Main.java:193)
        at liquibase.integration.commandline.Main.main(Main.java:156)
Caused by: liquibase.exception.DatabaseException: liquibase.exception.DatabaseException: liquibase.exception.DatabaseException: Could not open connection to database: UNKNOWN
        at liquibase.database.DatabaseFactory.openConnection(DatabaseFactory.java:216)
        at liquibase.database.DatabaseFactory.openConnection(DatabaseFactory.java:175)
        at liquibase.database.DatabaseFactory.openDatabase(DatabaseFactory.java:140)
        at liquibase.integration.commandline.CommandLineUtils.createDatabaseObject(CommandLineUtils.java:96)
        ... 14 more
Caused by: liquibase.exception.DatabaseException: liquibase.exception.DatabaseException: Could not open connection to database: UNKNOWN
        at liquibase.database.ConnectionServiceFactory.create(ConnectionServiceFactory.java:36)
        at liquibase.database.DatabaseFactory.openConnection(DatabaseFactory.java:213)
        ... 17 more
Caused by: liquibase.exception.DatabaseException: Could not open connection to database: UNKNOWN
        at liquibase.ext.mongodb.database.MongoConnection.open(MongoConnection.java:104)
        at liquibase.database.ConnectionServiceFactory.create(ConnectionServiceFactory.java:33)
        ... 18 more
Caused by: java.lang.IllegalArgumentException: The connection string contains an invalid host 'resql:'. The port '' is not a valid, it must be an integer between 0 and 65535
        at com.mongodb.ConnectionString.validatePort(ConnectionString.java:1020)
        at com.mongodb.ConnectionString.parseHosts(ConnectionString.java:1000)
        at com.mongodb.ConnectionString.<init>(ConnectionString.java:344)
        at liquibase.ext.mongodb.database.MongoConnection.open(MongoConnection.java:96)
        ... 19 more> PS. i masked the db name, username, password by "xxxxxxxxxx".If i removed the jar file, then postgresql update is working again.

Am i did something wrong? Or I cannot use same liquibase for mongo and postgresql at the same time?

Thanks.

┆Issue is synchronized with this Jira Bug by Unito

generateChangeLog feature not working

Yeah thank you for the support and I've actually established the connection as per the below given logs but still having issue with the successful execution onwards as I am integrating liquibase for the first time that too with mongo so facing a bit issues regarding configurations.

Pls have a look on the following code snippet and guide further how can I proceed with this.

`

[2021-04-01 19:59:56] FINE [liquibase.database] Properties:
[2021-04-01 19:59:57] FINE [liquibase.database] Key:'password' Value:'**********'
[2021-04-01 19:59:57] FINE [liquibase.database] Key:'user' Value:''
[2021-04-01 19:59:57] FINE [liquibase.database] Connecting to the URL:'mongodb://localhost:27017/test' using driver:'liquibase.ext.mongodb.database.MongoClientDriver'
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.database.DatabaseConnection instance liquibase.database.jvm.JdbcConnection
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.database.DatabaseConnection instance com.datical.liquibase.ext.database.jvm.ProJdbcConnection
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.database.DatabaseConnection instance liquibase.ext.mongodb.database.MongoConnection
[2021-04-01 19:59:57] WARNING [com.mongodb.diagnostics.logging.Loggers shouldUseSLF4J] SLF4J not found on the classpath.  Logging is disabled for the 'org.mongodb.driver' component
[2021-04-01 19:59:57] FINE [liquibase.database] Connection has been created
[2021-04-01 19:59:57] FINE [liquibase.ext] Connected to @localhost:27017
[2021-04-01 19:59:57] FINE [liquibase.ext] Not adjusting the auto commit mode; it is already false
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance liquibase.structure.core.Catalog
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance liquibase.structure.core.Column
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance liquibase.structure.core.Data
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance liquibase.structure.core.ForeignKey
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance liquibase.structure.core.Index
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance liquibase.structure.core.PrimaryKey
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance liquibase.structure.core.Schema
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance liquibase.structure.core.Sequence
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance liquibase.structure.core.StoredProcedure
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance liquibase.structure.core.Table
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance liquibase.structure.core.UniqueConstraint
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance liquibase.structure.core.View
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance com.datical.liquibase.ext.appdba.synonym.Synonym
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance com.datical.liquibase.ext.storedlogic.checkconstraint.CheckConstraint
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance com.datical.liquibase.ext.storedlogic.databasepackage.DatabasePackage
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance com.datical.liquibase.ext.storedlogic.databasepackage.DatabasePackageBody
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance com.datical.liquibase.ext.storedlogic.function.Function
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance com.datical.liquibase.ext.storedlogic.trigger.Trigger
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.command.LiquibaseCommand instance liquibase.command.core.DeactivateChangeLogCommand
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.command.LiquibaseCommand instance liquibase.command.core.DiffCommand
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.command.LiquibaseCommand instance liquibase.command.core.DiffToChangeLogCommand
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.command.LiquibaseCommand instance liquibase.command.core.DropAllCommand
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.command.LiquibaseCommand instance liquibase.command.core.ExecuteSqlCommand
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.command.LiquibaseCommand instance liquibase.command.core.GenerateChangeLogCommand
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.command.LiquibaseCommand instance liquibase.command.core.HistoryCommand
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.command.LiquibaseCommand instance liquibase.command.core.RegisterChangeLogCommand
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.command.LiquibaseCommand instance liquibase.command.core.SnapshotCommand
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.command.LiquibaseCommand instance liquibase.command.core.SyncHubCommand
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.command.LiquibaseCommand instance liquibase.sdk.convert.ConvertCommand
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.command.LiquibaseCommand instance com.datical.liquibase.ext.command.FormattedDiffCommand
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.command.LiquibaseCommand instance com.datical.liquibase.ext.command.RollbackOneChangeSetCommand
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.command.LiquibaseCommand instance com.datical.liquibase.ext.command.RollbackOneUpdateCommand
BEST PRACTICE: The changelog generated by diffChangeLog/generateChangeLog should be inspected for correctness and completeness before being deployed.
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.snapshot.SnapshotGenerator instance liquibase.snapshot.jvm.CatalogSnapshotGenerator
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.snapshot.SnapshotGenerator instance liquibase.snapshot.jvm.ColumnSnapshotGenerator
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.snapshot.SnapshotGenerator instance liquibase.snapshot.jvm.ColumnSnapshotGeneratorH2
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.snapshot.SnapshotGenerator instance liquibase.snapshot.jvm.ColumnSnapshotGeneratorInformix
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.snapshot.SnapshotGenerator instance liquibase.snapshot.jvm.ColumnSnapshotGeneratorOracle
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.snapshot.SnapshotGenerator instance liquibase.snapshot.jvm.ColumnSnapshotGeneratorPostgres
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.snapshot.SnapshotGenerator instance liquibase.snapshot.jvm.DataSnapshotGenerator
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.snapshot.SnapshotGenerator instance liquibase.snapshot.jvm.ForeignKeySnapshotGenerator
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.snapshot.SnapshotGenerator instance liquibase.snapshot.jvm.IndexSnapshotGenerator
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.snapshot.SnapshotGenerator instance liquibase.snapshot.jvm.PrimaryKeySnapshotGenerator
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.snapshot.SnapshotGenerator instance liquibase.snapshot.jvm.SchemaSnapshotGenerator
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.snapshot.SnapshotGenerator instance liquibase.snapshot.jvm.SequenceSnapshotGenerator
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.snapshot.SnapshotGenerator instance liquibase.snapshot.jvm.TableSnapshotGenerator
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.snapshot.SnapshotGenerator instance liquibase.snapshot.jvm.UniqueConstraintSnapshotGenerator
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.snapshot.SnapshotGenerator instance liquibase.snapshot.jvm.ViewSnapshotGenerator
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.snapshot.SnapshotGenerator instance com.datical.liquibase.ext.appdba.synonym.SynonymSnapshotGenerator
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.snapshot.SnapshotGenerator instance com.datical.liquibase.ext.storedlogic.checkconstraint.CheckConstraintSnapshotGenerator
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.snapshot.SnapshotGenerator instance com.datical.liquibase.ext.storedlogic.checkconstraint.postgres.PostgresCheckConstraintSnapshotGenerator
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.snapshot.SnapshotGenerator instance com.datical.liquibase.ext.storedlogic.databasepackage.PackageBodySnapshotGenerator
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.snapshot.SnapshotGenerator instance com.datical.liquibase.ext.storedlogic.databasepackage.PackageSnapshotGenerator
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.snapshot.SnapshotGenerator instance com.datical.liquibase.ext.storedlogic.function.FunctionSnapshotGenerator
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.snapshot.SnapshotGenerator instance com.datical.liquibase.ext.storedlogic.function.postgres.EDBPostgresFunctionSnapshotGenerator
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.snapshot.SnapshotGenerator instance com.datical.liquibase.ext.storedlogic.function.postgres.PostgresFunctionSnapshotGenerator
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.snapshot.SnapshotGenerator instance com.datical.liquibase.ext.storedlogic.function.mysql.MySQLFunctionSnapshotGenerator
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.snapshot.SnapshotGenerator instance com.datical.liquibase.ext.storedlogic.storedproc.PostgresStoredProcedureSnapshotGenerator
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.snapshot.SnapshotGenerator instance com.datical.liquibase.ext.storedlogic.storedproc.MySQLStoredProcedureSnapshotGenerator
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.snapshot.SnapshotGenerator instance com.datical.liquibase.ext.storedlogic.storedproc.StoredProcedureSnapshotGenerator
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.snapshot.SnapshotGenerator instance com.datical.liquibase.ext.storedlogic.trigger.TriggerSnapshotGenerator
[2021-04-01 19:59:57] FINE [liquibase.servicelocator] Loaded liquibase.snapshot.SnapshotGenerator instance com.datical.liquibase.ext.storedlogic.trigger.postgres.PostgresTriggerSnapshotGenerator
[2021-04-01 19:59:57] FINE [liquibase.util] Computed checksum for 1617289197504 as 5f9b3c4715825a4cf29f74ffe357e11a
Unexpected error running Liquibase: java.lang.ClassCastException: class liquibase.ext.mongodb.database.MongoConnection cannot be cast to class liquibase.database.jvm.JdbcConnection (liquibase.ext.mongodb.database.MongoConnection and liquibase.database.jvm.JdbcConnection are in unnamed module of loader 'app')
For more information, please use the --logLevel flag
[2021-04-01 19:59:57] SEVERE [liquibase.integration] Unexpected error running Liquibase: java.lang.ClassCastException: class liquibase.ext.mongodb.database.MongoConnection cannot be cast to class liquibase.database.jvm.JdbcConnection (liquibase.ext.mongodb.database.MongoConnection and liquibase.database.jvm.JdbcConnection are in unnamed module of loader 'app')
liquibase.exception.LiquibaseException: liquibase.command.CommandExecutionException: java.lang.ClassCastException: class liquibase.ext.mongodb.database.MongoConnection cannot be cast to class liquibase.database.jvm.JdbcConnection (liquibase.ext.mongodb.database.MongoConnection and liquibase.database.jvm.JdbcConnection are in unnamed module of loader 'app')
        at liquibase.integration.commandline.CommandLineUtils.doGenerateChangeLog(CommandLineUtils.java:251)
        at liquibase.integration.commandline.Main.doMigration(Main.java:1542)
        at liquibase.integration.commandline.Main$1.lambda$run$0(Main.java:367)
        at liquibase.Scope.lambda$child$0(Scope.java:160)
        at liquibase.Scope.child(Scope.java:169)
        at liquibase.Scope.child(Scope.java:159)
        at liquibase.Scope.child(Scope.java:138)
        at liquibase.integration.commandline.Main$1.run(Main.java:366)
        at liquibase.integration.commandline.Main$1.run(Main.java:196)
        at liquibase.Scope.child(Scope.java:169)
        at liquibase.Scope.child(Scope.java:145)
        at liquibase.integration.commandline.Main.run(Main.java:196)
        at liquibase.integration.commandline.Main.main(Main.java:158)
Caused by: liquibase.command.CommandExecutionException: java.lang.ClassCastException: class liquibase.ext.mongodb.database.MongoConnection cannot be cast to class liquibase.database.jvm.JdbcConnection (liquibase.ext.mongodb.database.MongoConnection and liquibase.database.jvm.JdbcConnection are in unnamed module of loader 'app')
        at liquibase.command.AbstractCommand.execute(AbstractCommand.java:24)
        at liquibase.integration.commandline.CommandLineUtils.doGenerateChangeLog(CommandLineUtils.java:249)
        ... 12 more
Caused by: java.lang.ClassCastException: class liquibase.ext.mongodb.database.MongoConnection cannot be cast to class liquibase.database.jvm.JdbcConnection (liquibase.ext.mongodb.database.MongoConnection and liquibase.database.jvm.JdbcConnection are in unnamed module of loader 'app')
        at liquibase.snapshot.jvm.JdbcSnapshotGenerator.getDatabaseCatalogNames(JdbcSnapshotGenerator.java:144)
        at liquibase.snapshot.jvm.CatalogSnapshotGenerator.snapshotObject(CatalogSnapshotGenerator.java:35)
        at liquibase.snapshot.jvm.JdbcSnapshotGenerator.snapshot(JdbcSnapshotGenerator.java:65)
        at liquibase.snapshot.SnapshotGeneratorChain.snapshot(SnapshotGeneratorChain.java:49)
        at liquibase.snapshot.DatabaseSnapshot.include(DatabaseSnapshot.java:315)
        at liquibase.snapshot.DatabaseSnapshot.init(DatabaseSnapshot.java:100)
        at liquibase.snapshot.DatabaseSnapshot.<init>(DatabaseSnapshot.java:59)
        at liquibase.snapshot.JdbcDatabaseSnapshot.<init>(JdbcDatabaseSnapshot.java:38)
        at liquibase.snapshot.SnapshotGeneratorFactory.createSnapshot(SnapshotGeneratorFactory.java:215)
        at liquibase.snapshot.SnapshotGeneratorFactory.createSnapshot(SnapshotGeneratorFactory.java:188)
        at liquibase.command.core.DiffCommand.createReferenceSnapshot(DiffCommand.java:222)
        at liquibase.command.core.DiffCommand.createDiffResult(DiffCommand.java:144)
        at liquibase.command.core.GenerateChangeLogCommand.run(GenerateChangeLogCommand.java:62)
        at liquibase.command.AbstractCommand.execute(AbstractCommand.java:19)
        ... 13 more

`

I've followed the pre-requisites and mentioned version compatibility but still facing this issue.

Originally posted by asimghub in #87 (comment)

┆Issue is synchronized with this Jira Bug by Unito

Cannot rename collection

I try to execute a rename command:

<ext:runCommand>
      <ext:command><![CDATA[
        {
          renameCollection: "myDb.foo",
          to: "myDb.bar"
        }
      ]]></ext:command>
    </ext:runCommand>
  </changeSet>

But I get the following error: Command failed with error 13 (Unauthorized): 'renameCollection may only be run against the admin database.' The same command runs fine from studio3T.

Is there any step I am missing?

EDIT: The same error happens if I use adminCommand.

┆Issue is synchronized with this Jira Bug by Unito

Issues with the latest Mongo drivers?

Very simple changelog, just creates a collection against an ATLAS cluster

Running: Liquibase:4.3.5, liquibase-mongodb:4.3.5 and mongo driver 3.8.12

Command line:
liquibase --changeLogFile=db.changelog-master.xml --url="mongodb+srv://:@<my_cluster>/?retryWrites=true&w=majority" status

Returns:
Liquibase command 'status' was executed successfully

Next, upgrade driver to the latest version here (requires both core and sync driver)
https://mvnrepository.com/artifact/org.mongodb/mongodb-driver-core/4.2.3
https://mvnrepository.com/artifact/org.mongodb/mongodb-driver-sync/4.2.3

Using 4.2.3 driver in place of 3.8.12 in the lib folder of liquibase:

Command line:
liquibase --changeLogFile=db.changelog-master.xml --loglevel=debug --url="mongodb+srv://:@<my_cluster>/?retryWrites=true&w=majority" status

Returns:

Starting Liquibase at 09:29:38 (version 4.3.5 #62 built at 2021-04-29 18:31+0000)
[2021-06-01 09:29:38] FINE [liquibase.integration] Liquibase Hub URL: https://hub.liquibase.com
[2021-06-01 09:29:38] FINE [liquibase.integration] Liquibase Hub Mode: all
[2021-06-01 09:29:38] FINE [liquibase.resource] Adding path /my_working_dir/. to resourceAccessor liquibase.resource.FileSystemResourceAccessor
[2021-06-01 09:29:38] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.CockroachDatabase
[2021-06-01 09:29:38] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.DB2Database
[2021-06-01 09:29:38] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.Db2zDatabase
[2021-06-01 09:29:38] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.DerbyDatabase
[2021-06-01 09:29:38] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.Firebird3Database
[2021-06-01 09:29:38] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.FirebirdDatabase
[2021-06-01 09:29:38] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.H2Database
[2021-06-01 09:29:38] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.HsqlDatabase
[2021-06-01 09:29:38] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.InformixDatabase
[2021-06-01 09:29:38] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.Ingres9Database
[2021-06-01 09:29:38] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.MSSQLDatabase
[2021-06-01 09:29:38] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.MariaDBDatabase
[2021-06-01 09:29:38] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.MockDatabase
[2021-06-01 09:29:38] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.MySQLDatabase
[2021-06-01 09:29:38] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.OracleDatabase
[2021-06-01 09:29:38] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.PostgresDatabase
[2021-06-01 09:29:38] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.SQLiteDatabase
[2021-06-01 09:29:38] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.SybaseASADatabase
[2021-06-01 09:29:38] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.SybaseDatabase
[2021-06-01 09:29:38] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.UnsupportedDatabase
[2021-06-01 09:29:38] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.ext.mongodb.database.MongoLiquibaseDatabase
[2021-06-01 09:29:38] FINE [liquibase.database] Properties:
[2021-06-01 09:29:38] FINE [liquibase.database] Connecting to the URL:'mongodb+srv://:@<my_cluster>/?retryWrites=true&w=majority' using driver:'liquibase.ext.mongodb.database.MongoClientDriver'
[2021-06-01 09:29:38] FINE [liquibase.servicelocator] Loaded liquibase.database.DatabaseConnection instance liquibase.database.jvm.JdbcConnection
[2021-06-01 09:29:38] FINE [liquibase.servicelocator] Loaded liquibase.database.DatabaseConnection instance com.datical.liquibase.ext.database.jvm.ProJdbcConnection
[2021-06-01 09:29:38] FINE [liquibase.servicelocator] Loaded liquibase.database.DatabaseConnection instance liquibase.ext.mongodb.database.MongoConnection
[2021-06-01 09:29:38] WARNING [com.mongodb.diagnostics.logging.Loggers shouldUseSLF4J] SLF4J not found on the classpath. Logging is disabled for the 'org.mongodb.driver' component
Unexpected error running Liquibase: org.bson.BsonValue
For more information, please use the --logLevel flag
[2021-06-01 09:29:38] SEVERE [liquibase.integration] Unexpected error running Liquibase: org.bson.BsonValue
java.lang.NoClassDefFoundError: org/bson/BsonValue
at com.mongodb.ConnectionString.buildWriteConcern(ConnectionString.java:907)
at com.mongodb.ConnectionString.createWriteConcern(ConnectionString.java:639)
at com.mongodb.ConnectionString.translateOptions(ConnectionString.java:562)
at com.mongodb.ConnectionString.(ConnectionString.java:394)
at liquibase.ext.mongodb.database.MongoConnection.open(MongoConnection.java:96)
at liquibase.database.ConnectionServiceFactory.create(ConnectionServiceFactory.java:33)
at liquibase.database.DatabaseFactory.openConnection(DatabaseFactory.java:214)
at liquibase.database.DatabaseFactory.openConnection(DatabaseFactory.java:176)
at liquibase.database.DatabaseFactory.openDatabase(DatabaseFactory.java:141)
at liquibase.integration.commandline.CommandLineUtils.createDatabaseObject(CommandLineUtils.java:96)
at liquibase.integration.commandline.Main.doMigration(Main.java:1432)
at liquibase.integration.commandline.Main$1.lambda$run$0(Main.java:367)
at liquibase.Scope.lambda$child$0(Scope.java:160)
at liquibase.Scope.child(Scope.java:169)
at liquibase.Scope.child(Scope.java:159)
at liquibase.Scope.child(Scope.java:138)
at liquibase.integration.commandline.Main$1.run(Main.java:366)
at liquibase.integration.commandline.Main$1.run(Main.java:196)
at liquibase.Scope.child(Scope.java:169)
at liquibase.Scope.child(Scope.java:145)
at liquibase.integration.commandline.Main.run(Main.java:196)
at liquibase.integration.commandline.Main.main(Main.java:158)
Caused by: java.lang.ClassNotFoundException: org.bson.BsonValue
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:606)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:168)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
... 22 more

┆Issue is synchronized with this Jira Bug by Unito

Rollback doesn't work with liquibase-mongodb-4.0.0.2 extension

When rolling back a changeSet, the corresponding data set (“row”) in the DATABASECHANGELOG Collection (“table”) will be removed. However, the object will NOT be rolled back.

I used the changeLog from here:
https://github.com/liquibase/liquibase-mongodb/blob/main/src/test/resources/liquibase/ext/changelog.create-collection.test.xml

STR

  1. Deploy the changeLog
  2. Run liquibase update
  3. Run liquibase rollbackCount 1
  4. Run liquibase update again

Actual result:
The changeSet will fail with the message "collection already exists"

Expected result
The update should have been successful
The collection should have been dropped during the rollback

┆Issue is synchronized with this Jira Bug by Unito

Move from [deprecated] mongo-java-driver

I was trying to run liquibase extension for mongodb in my project but it doesn't work due to use of [deprecated] mongo-java-driver, which is not being published anymore - https://mongodb.github.io/mongo-java-driver/4.0/upgrading/#upgrading-from-the-3-12-java-driver

Since I'm using Spring Data MongoDB (spring-boot-starter-data-mongodb-reactive which in turn brings mongodb-driver-reactivestreams or spring-boot-starter-data-mongodb which in turn brings mongodb-driver-sync and both bring mongodb-driver-core), this causes the following error:

***************************
APPLICATION FAILED TO START
***************************

Description:

An attempt was made to call a method that does not exist. The attempt was made from the following location:

    com.mongodb.internal.connection.DefaultClusterFactory.createCluster(DefaultClusterFactory.java:85)

The following method did not exist:

    'void com.mongodb.internal.connection.DefaultClusterableServerFactory.<init>(com.mongodb.connection.ClusterId, com.mongodb.connection.ClusterSettings, com.mongodb.connection.ServerSettings, com.mongodb.connection.ConnectionPoolSettings, com.mongodb.connection.StreamFactory, com.mongodb.connection.StreamFactory, com.mongodb.MongoCredential, com.mongodb.event.CommandListener, java.lang.String, com.mongodb.MongoDriverInformation, java.util.List)'

The method's class, com.mongodb.internal.connection.DefaultClusterableServerFactory, is available from the following locations:

    jar:file:/Users/elgleidson/.m2/repository/org/mongodb/mongo-java-driver/3.12.7/mongo-java-driver-3.12.7.jar!/com/mongodb/internal/connection/DefaultClusterableServerFactory.class
    jar:file:/Users/elgleidson/.m2/repository/org/mongodb/mongodb-driver-core/4.0.5/mongodb-driver-core-4.0.5.jar!/com/mongodb/internal/connection/DefaultClusterableServerFactory.class

The class hierarchy was loaded from the following locations:

    com.mongodb.internal.connection.DefaultClusterableServerFactory: file:/Users/elgleidson/.m2/repository/org/mongodb/mongo-java-driver/3.12.7/mongo-java-driver-3.12.7.jar


Action:

Correct the classpath of your application so that it contains a single, compatible version of com.mongodb.internal.connection.DefaultClusterableServerFactory


Process finished with exit code 1

┆Issue is synchronized with this Jira Bug by Unito

Can't create index [Validation Failed]

I'm building a docker container with liquibase-mongodb and run test changelogs on empty mongodb:

Index creation was failed with the exception:

Caused by: liquibase.exception.ValidationFailedException: Validation Failed:
     4 changes have validation failures
          No columns defined for createIndex on mongodb, changelog/changelog-master.xml::1::alex
          tableName is required for createIndex on mongodb, changelog/changelog-master.xml::1::alex
          No columns defined for createIndex on mongodb, changelog/changelog-master.xml::1::alex
          tableName is required for createIndex on mongodb, changelog/changelog-master.xml::1::alex

Dockerfile:

FROM liquibase/liquibase:4.4.2
USER liquibase
ENV LIQUIBASE_CORE_VERSION 4.4.2
ENV MONGO_JAVA_DRIVER_VERSION 3.12.10
RUN wget --no-verbose -O /liquibase/lib/liquibase-mongodb-${LIQUIBASE_CORE_VERSION}.jar https://repo1.maven.org/maven2/org/liquibase/ext/liquibase-mongodb/${LIQUIBASE_CORE_VERSION}/liquibase-mongodb-${LIQUIBASE_CORE_VERSION}.jar
RUN wget --no-verbose -O /liquibase/lib/mongo-java-driver-${MONGO_JAVA_DRIVER_VERSION}.jar https://repo1.maven.org/maven2/org/mongodb/mongo-java-driver/${MONGO_JAVA_DRIVER_VERSION}/mongo-java-driver-${MONGO_JAVA_DRIVER_VERSION}.jar
CMD ["sh", "-c", "docker-entrypoint.sh --url=${DB_URL} --username=${DB_USER} --password=${DB_PASS} --classpath=/liquibase/changelog --changeLogFile=${LIQUIBASE_MASTER_FILE} update"]

As I understand it's incorrect behavior.

Do u know any hacks or ways to fix it?

┆Issue is synchronized with this Jira Bug by Unito

executeCommand change type fails to run on an update

After testing the executeCommand change type, it appears that the change set containing the executeCommand change type fails.

Steps to reproduce:
Create a changeset with the executeCommand change type.
Example:

        <changeSet author="Tsvi" id="4321">
           <executeCommand executable="/Users/support.liquibase.net/CLI-Projects/MongoDB_CLI/run_with_mongodb_shell.sh" os="Mac OS X" timeout="10s">  
                <arg  value="test.js"/> 
            </executeCommand>
        </changeSet> 

Running the changeset with the liquibase update command generates the following error:

$ liquibase update --log-level=INFO
Starting Liquibase at 11:10:32 (version 4.7.1 #1239 built at 2022-01-20 20:31+0000)
Liquibase Version: 4.7.1
Liquibase Pro 4.7.1 by Liquibase licensed to customersuccess until Sun Jun 26 23:59:59 CDT 2022
[2022-02-03 11:10:32] INFO [liquibase.license] Successfully installed license from Base64 string starting with 'ABwwGgQUjx' (property liquibaseProLicenseKey).

[2022-02-03 11:10:32] INFO [com.mongodb.diagnostics.logging.JULLogger log] Cluster created with settings {hosts=[tsvi.datical.net:27017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500}
[2022-02-03 11:10:32] INFO [com.mongodb.diagnostics.logging.JULLogger log] Cluster description not yet available. Waiting for 30000 ms before timing out
[2022-02-03 11:10:32] INFO [com.mongodb.diagnostics.logging.JULLogger log] Opened connection [connectionId{localValue:1, serverValue:80}] to tsvi.datical.net:27017
[2022-02-03 11:10:32] INFO [com.mongodb.diagnostics.logging.JULLogger log] Monitor thread successfully connected to server with description ServerDescription{address=tsvi.datical.net:27017, type=STANDALONE, state=CONNECTED, ok=true, version=ServerVersion{versionList=[4, 4, 5]}, minWireVersion=0, maxWireVersion=9, maxDocumentSize=16777216, logicalSessionTimeoutMinutes=30, roundTripTimeNanos=45103969}
[2022-02-03 11:10:33] INFO [com.mongodb.diagnostics.logging.JULLogger log] Opened connection [connectionId{localValue:2, serverValue:81}] to tsvi.datical.net:27017
[2022-02-03 11:10:33] INFO [liquibase.ext] Adjusting database Lock Collection with name: MYDB.DATABASECHANGELOGLOCK
[2022-02-03 11:10:33] INFO [liquibase.ext] Adjusted database Lock Collection with name: MYDB.DATABASECHANGELOGLOCK
[2022-02-03 11:10:33] INFO [liquibase.ext] Lock Database
[2022-02-03 11:10:33] INFO [liquibase.ext] Successfully Acquired Change Log Lock
[2022-02-03 11:10:33] INFO [liquibase.servicelocator] Cannot load service: liquibase.parser.ChangeLogParser: liquibase.nosql.parser.json.JsonNoSqlChangeLogParser Unable to get public no-arg constructor
[2022-02-03 11:10:34] INFO [liquibase.ext] Adjusting database history Collection with name: MYDB.DATABASECHANGELOG
[2022-02-03 11:10:34] INFO [liquibase.ext] Adjusted database history Collection with name: MYDB.DATABASECHANGELOG
Running Changeset: executeCommand.xml::4321::Tsvi
[2022-02-03 11:10:34] INFO [liquibase.nosql] Changeset executeCommand.xml::4321::Tsvi
[2022-02-03 11:10:34] INFO [liquibase.nosql] WARNING The following SQL may change each run and therefore is possibly incorrect and/or invalid:
[2022-02-03 11:10:34] INFO [liquibase.ext] Release Database Lock
[2022-02-03 11:10:34] INFO [liquibase.ext] Successfully released change log lock
[2022-02-03 11:10:34] INFO [com.mongodb.diagnostics.logging.JULLogger log] Closed connection [connectionId{localValue:2, serverValue:81}] to tsvi.datical.net:27017 because the pool has been closed.
[2022-02-03 11:10:34] SEVERE [liquibase.integration] Migration failed for change set executeCommand.xml::4321::Tsvi:
     Reason: java.lang.IllegalArgumentException
liquibase.exception.CommandExecutionException: liquibase.exception.LiquibaseException: Unexpected error running Liquibase: Migration failed for change set executeCommand.xml::4321::Tsvi:
     Reason: java.lang.IllegalArgumentException
        at liquibase.command.CommandScope.execute(CommandScope.java:163)
        at liquibase.integration.commandline.CommandRunner.call(CommandRunner.java:51)
        at liquibase.integration.commandline.CommandRunner.call(CommandRunner.java:21)
        at picocli.CommandLine.executeUserObject(CommandLine.java:1953)
        at picocli.CommandLine.access$1300(CommandLine.java:145)
        at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352)
        at picocli.CommandLine$RunLast.handle(CommandLine.java:2346)
        at picocli.CommandLine$RunLast.handle(CommandLine.java:2311)
        at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179)
        at picocli.CommandLine.execute(CommandLine.java:2078)
        at liquibase.integration.commandline.LiquibaseCommandLine.lambda$execute$1(LiquibaseCommandLine.java:325)
        at liquibase.Scope.child(Scope.java:189)
        at liquibase.Scope.child(Scope.java:165)
        at liquibase.integration.commandline.LiquibaseCommandLine.execute(LiquibaseCommandLine.java:291)
        at liquibase.integration.commandline.LiquibaseCommandLine.main(LiquibaseCommandLine.java:80)
Caused by: liquibase.exception.LiquibaseException: Unexpected error running Liquibase: Migration failed for change set executeCommand.xml::4321::Tsvi:
     Reason: java.lang.IllegalArgumentException
        at liquibase.integration.commandline.Main$1.run(Main.java:443)
        at liquibase.integration.commandline.Main$1.run(Main.java:221)
        at liquibase.Scope.child(Scope.java:189)
        at liquibase.Scope.child(Scope.java:165)
        at liquibase.integration.commandline.Main.run(Main.java:221)
        at liquibase.command.AbstractCliWrapperCommandStep.run(AbstractCliWrapperCommandStep.java:32)
        at liquibase.command.CommandScope.execute(CommandScope.java:157)
        ... 14 more
Caused by: liquibase.exception.LiquibaseException: liquibase.exception.MigrationFailedException: Migration failed for change set executeCommand.xml::4321::Tsvi:
     Reason: java.lang.IllegalArgumentException
        at liquibase.changelog.ChangeLogIterator.run(ChangeLogIterator.java:124)
        at liquibase.Liquibase.lambda$null$0(Liquibase.java:265)
        at liquibase.Scope.lambda$child$0(Scope.java:180)
        at liquibase.Scope.child(Scope.java:189)
        at liquibase.Scope.child(Scope.java:179)
        at liquibase.Scope.child(Scope.java:158)
        at liquibase.Scope.child(Scope.java:243)
        at liquibase.Liquibase.lambda$update$1(Liquibase.java:264)
        at liquibase.Scope.lambda$child$0(Scope.java:180)
        at liquibase.Scope.child(Scope.java:189)
        at liquibase.Scope.child(Scope.java:179)
        at liquibase.Scope.child(Scope.java:158)
        at liquibase.Liquibase.runInScope(Liquibase.java:2405)
        at liquibase.Liquibase.update(Liquibase.java:211)
        at liquibase.Liquibase.update(Liquibase.java:197)
        at liquibase.integration.commandline.Main.doMigration(Main.java:1871)
        at liquibase.integration.commandline.Main$1.lambda$run$0(Main.java:398)
        at liquibase.Scope.lambda$child$0(Scope.java:180)
        at liquibase.Scope.child(Scope.java:189)
        at liquibase.Scope.child(Scope.java:179)
        at liquibase.Scope.child(Scope.java:158)
        at liquibase.integration.commandline.Main$1.run(Main.java:397)
        ... 20 more
Caused by: liquibase.exception.MigrationFailedException: Migration failed for change set executeCommand.xml::4321::Tsvi:
     Reason: java.lang.IllegalArgumentException
        at liquibase.changelog.ChangeSet.execute(ChangeSet.java:695)
        at liquibase.changelog.visitor.UpdateVisitor.visit(UpdateVisitor.java:56)
        at liquibase.changelog.ChangeLogIterator$2.lambda$null$0(ChangeLogIterator.java:111)
        at liquibase.Scope.lambda$child$0(Scope.java:180)
        at liquibase.Scope.child(Scope.java:189)
        at liquibase.Scope.child(Scope.java:179)
        at liquibase.Scope.child(Scope.java:158)
        at liquibase.changelog.ChangeLogIterator$2.lambda$run$1(ChangeLogIterator.java:110)
        at liquibase.Scope.lambda$child$0(Scope.java:180)
        at liquibase.Scope.child(Scope.java:189)
        at liquibase.Scope.child(Scope.java:179)
        at liquibase.Scope.child(Scope.java:158)
        at liquibase.Scope.child(Scope.java:243)
        at liquibase.changelog.ChangeLogIterator$2.run(ChangeLogIterator.java:94)
        at liquibase.Scope.lambda$child$0(Scope.java:180)
        at liquibase.Scope.child(Scope.java:189)
        at liquibase.Scope.child(Scope.java:179)
        at liquibase.Scope.child(Scope.java:158)
        at liquibase.Scope.child(Scope.java:243)
        at liquibase.Scope.child(Scope.java:247)
        at liquibase.changelog.ChangeLogIterator.run(ChangeLogIterator.java:66)
        ... 41 more
Caused by: java.lang.IllegalArgumentException
        at liquibase.nosql.executor.NoSqlExecutor.execute(NoSqlExecutor.java:194)
        at liquibase.database.AbstractJdbcDatabase.execute(AbstractJdbcDatabase.java:1279)
        at liquibase.database.AbstractJdbcDatabase.executeStatements(AbstractJdbcDatabase.java:1261)
        at liquibase.changelog.ChangeSet.execute(ChangeSet.java:660)
        ... 61 more


Unexpected error running Liquibase: Migration failed for change set executeCommand.xml::4321::Tsvi:
     Reason: java.lang.IllegalArgumentException

liquibase.exception.CommandExecutionException: liquibase.exception.LiquibaseException: Unexpected error running Liquibase: Migration failed for change set executeCommand.xml::4321::Tsvi:
     Reason: java.lang.IllegalArgumentException
        at liquibase.command.CommandScope.execute(CommandScope.java:163)
        at liquibase.integration.commandline.CommandRunner.call(CommandRunner.java:51)
        at liquibase.integration.commandline.CommandRunner.call(CommandRunner.java:21)
        at picocli.CommandLine.executeUserObject(CommandLine.java:1953)
        at picocli.CommandLine.access$1300(CommandLine.java:145)
        at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2352)
        at picocli.CommandLine$RunLast.handle(CommandLine.java:2346)
        at picocli.CommandLine$RunLast.handle(CommandLine.java:2311)
        at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179)
        at picocli.CommandLine.execute(CommandLine.java:2078)
        at liquibase.integration.commandline.LiquibaseCommandLine.lambda$execute$1(LiquibaseCommandLine.java:325)
        at liquibase.Scope.child(Scope.java:189)
        at liquibase.Scope.child(Scope.java:165)
        at liquibase.integration.commandline.LiquibaseCommandLine.execute(LiquibaseCommandLine.java:291)
        at liquibase.integration.commandline.LiquibaseCommandLine.main(LiquibaseCommandLine.java:80)
Caused by: liquibase.exception.LiquibaseException: Unexpected error running Liquibase: Migration failed for change set executeCommand.xml::4321::Tsvi:
     Reason: java.lang.IllegalArgumentException
        at liquibase.integration.commandline.Main$1.run(Main.java:443)
        at liquibase.integration.commandline.Main$1.run(Main.java:221)
        at liquibase.Scope.child(Scope.java:189)
        at liquibase.Scope.child(Scope.java:165)
        at liquibase.integration.commandline.Main.run(Main.java:221)
        at liquibase.command.AbstractCliWrapperCommandStep.run(AbstractCliWrapperCommandStep.java:32)
        at liquibase.command.CommandScope.execute(CommandScope.java:157)
        ... 14 more

Environment:
This change type was tested on MacOS and Linux Centos 7 with Liquibase 4.7.1

User and Password not picked from liquibase.properties

Currently it can get credentials from connection string only:
mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database.collection][?options]]
Would be good to replace mongodb:// with mongodb://[username:password@] if provided via properties

┆Issue is synchronized with this Jira Bug by Unito

Liquibase commands are failing for other databases when mongodb jars are also present on classpath

Hi,

The liquibase commands for oracle database are failing when mongo-driver and liquibase-mongo extension jars are present on the LIQUIBASE_HOME/lib folder. They run fine if I remove mongo related jars. We managed to run this command when the MongoDB driver is not in the lib folder.

It looks like liquibase is picking the wrong driver. The scenario is like the following:
Place the oracle and the MongoDB driver inside the lib folder and try to execute against Oracle.

Below are various details;

I am using Liquibase 4.3.1 version.

Below jars were present on my LIQUIBASE_HOME/lib folder while running it for Oracle database.
liquibase-mongodb-4.3.1.jar
mongo-java-driver-3.9.1.jar
ojdbc8-12.2.0.1.0.jar

I ran the following command. I ran it without classpath and driver as well and got the same error.
liquibase --driver=oracle.jdbc.driver.OracleDriver --classpath=C:\apps\liquibase-4.3.1\lib\ojdbc8-12.2.0.1.0.jar --url=jdbc:oracle:thin:@blrdev000330.bpc.broadcom.net:1521:EE --username=system --password=oracle --logLevel=debug history

Please find below debug logs.

[2021-04-01 12:33:02] FINE [liquibase.servicelocator] Loaded liquibase.license.LicenseService instance liquibase.pro.license.keymgr.DaticalTrueLicenseService
[2021-04-01 12:33:02] INFO [liquibase.integration] No Liquibase Pro license key supplied. Please set liquibaseProLicenseKey on command line or in liquibase.properties to use Liquibase Pro features.
Liquibase Community 4.3.1 by Datical
####################################################


| | () () |
| | _ __ _ _ _ | |_ __ _


| | | |/ _ | | | | | '_ \ / _ / __|/ _
| || | (| | || | | |) | (| _ \ /
/|, |_,||./ _,|/
|
| |
|_|
Get documentation at docs.liquibase.com
Get certified courses at learn.liquibase.com
Free schema change activity reports at
https://hub.liquibase.com
####################################################
Starting Liquibase at 12:33:02 (version 4.3.1 liquibase/liquibase#26 built at 2021-02-12 17:41+0000)
[2021-04-01 12:33:02] FINE [liquibase.integration] Liquibase Hub URL: https://hub.liquibase.com
[2021-04-01 12:33:02] FINE [liquibase.integration] Liquibase Hub Mode: all
[2021-04-01 12:33:02] FINE [liquibase.resource] Adding path C:\Users\ashwanipratap. to resourceAccessor liquibase.resource.FileSystemResourceAccessor
[2021-04-01 12:33:02] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.CockroachDatabase
[2021-04-01 12:33:02] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.DB2Database
[2021-04-01 12:33:02] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.Db2zDatabase
[2021-04-01 12:33:03] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.DerbyDatabase
[2021-04-01 12:33:03] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.Firebird3Database
[2021-04-01 12:33:03] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.FirebirdDatabase
[2021-04-01 12:33:03] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.H2Database
[2021-04-01 12:33:03] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.HsqlDatabase
[2021-04-01 12:33:03] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.InformixDatabase
[2021-04-01 12:33:03] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.Ingres9Database
[2021-04-01 12:33:03] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.MSSQLDatabase
[2021-04-01 12:33:03] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.MariaDBDatabase
[2021-04-01 12:33:03] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.MockDatabase
[2021-04-01 12:33:03] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.MySQLDatabase
[2021-04-01 12:33:03] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.OracleDatabase
[2021-04-01 12:33:03] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.PostgresDatabase
[2021-04-01 12:33:03] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.SQLiteDatabase
[2021-04-01 12:33:03] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.SybaseASADatabase
[2021-04-01 12:33:03] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.SybaseDatabase
[2021-04-01 12:33:03] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.UnsupportedDatabase
[2021-04-01 12:33:03] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.ext.mongodb.database.MongoLiquibaseDatabase
[2021-04-01 12:33:03] FINE [liquibase.database] Properties:
[2021-04-01 12:33:03] FINE [liquibase.database] Key:‘user’ Value:‘system’
[2021-04-01 12:33:03] FINE [liquibase.database] Key:‘password’ Value:’**********’
[2021-04-01 12:33:03] FINE [liquibase.database] Connecting to the URL:‘jdbc:oracle:thin:@blrdev000330.bpc.broadcom.net:1521:EE’ using driver:‘oracle.jdbc.driver.OracleDriver’
[2021-04-01 12:33:03] FINE [liquibase.servicelocator] Loaded liquibase.database.DatabaseConnection instance liquibase.database.jvm.JdbcConnection
[2021-04-01 12:33:03] FINE [liquibase.servicelocator] Loaded liquibase.database.DatabaseConnection instance com.datical.liquibase.ext.database.jvm.ProJdbcConnection
[2021-04-01 12:33:03] FINE [liquibase.servicelocator] Loaded liquibase.database.DatabaseConnection instance liquibase.ext.mongodb.database.MongoConnection
Unexpected error running Liquibase: liquibase.exception.DatabaseException: liquibase.exception.DatabaseException: Could not open connection to database: UNKNOWN
For more information, please use the --logLevel flag
[2021-04-01 12:33:03] SEVERE [liquibase.integration] Unexpected error running Liquibase: liquibase.exception.DatabaseException: liquibase.exception.DatabaseException: Could not open connection to database: UNKNOWN
liquibase.exception.DatabaseException: liquibase.exception.DatabaseException: liquibase.exception.DatabaseException: liquibase.exception.DatabaseException: Could not open connection to database: UNKNOWN
at liquibase.integration.commandline.CommandLineUtils.createDatabaseObject(CommandLineUtils.java:131)
at liquibase.integration.commandline.Main.doMigration(Main.java:1412)
at liquibase.integration.commandline.Main$1.lambda$run$0(Main.java:364)
at liquibase.Scope.lambda$child$0(Scope.java:160)
at liquibase.Scope.child(Scope.java:169)
at liquibase.Scope.child(Scope.java:159)
at liquibase.Scope.child(Scope.java:138)
at liquibase.integration.commandline.Main$1.run(Main.java:363)
at liquibase.integration.commandline.Main$1.run(Main.java:193)
at liquibase.Scope.child(Scope.java:169)
at liquibase.Scope.child(Scope.java:145)
at liquibase.integration.commandline.Main.run(Main.java:193)
at liquibase.integration.commandline.Main.main(Main.java:156)
Caused by: liquibase.exception.DatabaseException: liquibase.exception.DatabaseException: liquibase.exception.DatabaseException: Could not open connection to database: UNKNOWN
at liquibase.database.DatabaseFactory.openConnection(DatabaseFactory.java:217)
at liquibase.database.DatabaseFactory.openConnection(DatabaseFactory.java:176)
at liquibase.database.DatabaseFactory.openDatabase(DatabaseFactory.java:141)
at liquibase.integration.commandline.CommandLineUtils.createDatabaseObject(CommandLineUtils.java:96)
… 12 more
Caused by: liquibase.exception.DatabaseException: liquibase.exception.DatabaseException: Could not open connection to database: UNKNOWN
at liquibase.database.ConnectionServiceFactory.create(ConnectionServiceFactory.java:36)
at liquibase.database.DatabaseFactory.openConnection(DatabaseFactory.java:214)
… 15 more
Caused by: liquibase.exception.DatabaseException: Could not open connection to database: UNKNOWN
at liquibase.ext.mongodb.database.MongoConnection.open(MongoConnection.java:104)
at liquibase.database.ConnectionServiceFactory.create(ConnectionServiceFactory.java:33)
… 16 more
Caused by: java.lang.IllegalArgumentException: The connection string contains invalid user information. If the username or password contains a colon (:slight_smile: or an at-sign (@) then it must be urlencoded
at com.mongodb.ConnectionString.(ConnectionString.java:309)
at liquibase.ext.mongodb.database.MongoConnection.open(MongoConnection.java:96)
… 17 more

Please look into this and suggest the resolution.

Thanks!
Ashwani

┆Issue is synchronized with this Jira Bug by Unito

generateChangeLog command not working for Mongodb.

getting below error:

Caused by: liquibase.exception.CommandExecutionException: java.lang.ClassCastException: class liquibase.ext.mongodb.database.MongoConnection cannot be cast to class liquibase.database.jvm.JdbcConnection (liquibase.ext.mongodb.database.MongoConnection and liquibase.database.jvm.JdbcConnection are in unnamed module of loader 'app')

liquibase-plugin dropAll Warns with Cannot Drop Collection Database Change Log as not found

org.liquibase:liquibase-maven-plugin:4.1.1:dropAll

[INFO] Adjusting database history Collection with name: test_db.DATABASECHANGELOG
[INFO] Adjusted database history Collection with name: test_db.DATABASECHANGELOG
[INFO] Dropping Collection Database Change Log: DATABASECHANGELOG
[WARNING] Cannot Drop Collection Database Change Log as not found: DATABASECHANGELOG
Cannot Drop Collection Database Change Log as not found: DATABASECHANGELOG

┆Issue is synchronized with this Jira Bug by Unito

Difficulty connecting to AWS DocumentDB with TLS

The notes for release 4.1.1.2 of this connector talk about adding a new parameter for Azure Cosmos and Amazon DocumentDB.

However, every attempt I’ve made to connect to DocumentDB has failed. Connecting to DocumentDB with TLS requires using a .PEM/.P7B file. You can specify the location of these files with a connection string parameter (tlsCAFile) but my connections fail when I attempt this. Looking at the DEBUG logs, it appears as if the driver being used doesn’t recognize that parameter.

[2021-05-19 10:54:37] WARNING [com.mongodb.diagnostics.logging.JULLogger log] Connection string contains unsupported option 'tlscafile'.

Is there a different way to connect with TLS which works for AWS DocumentDB? Thanks!

┆Issue is synchronized with this Jira Bug by Unito

Does it support preconditions

Does this extension supports preconditions. If yes, please provide some examples. I believe it will be good and easy if there is a page describing all the tags available.

┆Issue is synchronized with this Jira Bug by Unito

Changeset get run again when changed file location

Liquibase has mentioned that uniqueness of a changeset will be considered on the basis of author and id, but while restructuring my changesets (keeping the author and id same), they are executed again. Is this a correct behavior?
If yes, what are the parameters on which uniqueness of a changeset is considered.

┆Issue is synchronized with this Jira Bug by Unito

Build is passing but there are failed tests for createIndex

Build is passing although there is a stack trace in the build when IT tests are run for createIndex. Stack trace taken from this build
https://travis-ci.com/github/liquibase/liquibase-mongodb/builds/225436460

Starting at Line 3390

INFO] Running liquibase.ext.mongodb.statement.MongoStatementIT
liquibase.exception.DatabaseException: Could not execute
	at liquibase.nosql.executor.NoSqlExecutor.execute(NoSqlExecutor.java:183)
	at liquibase.nosql.executor.NoSqlExecutor.execute(NoSqlExecutor.java:174)
	at liquibase.ext.mongodb.statement.MongoStatementIT.lambda$testCreateIndexChange$11(MongoStatementIT.java:202)
	at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
	at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
	at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:647)
	at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:272)
	at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1382)
	at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:647)
	at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:272)
	at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1382)
	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
	at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
	at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:485)
	at liquibase.ext.mongodb.statement.MongoStatementIT.testCreateIndexChange(MongoStatementIT.java:200)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:688)
	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140)
	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84)
	at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
	at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:210)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:206)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:131)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:65)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
	at java.util.ArrayList.forEach(ArrayList.java:1257)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
	at java.util.ArrayList.forEach(ArrayList.java:1257)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
	at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
	at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
	at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invokeAllTests(JUnitPlatformProvider.java:150)
	at org.apache.maven.surefire.junitplatform.JUnitPlatformProvider.invoke(JUnitPlatformProvider.java:124)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:384)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:345)
	at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:126)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:418)
Caused by: com.mongodb.MongoCommandException: Command failed with error 9 (FailedToParse): 'Error in specification { key: { clientId: 1, type: 1 } } :: caused by :: The 'name' field is a required property of an index specification' on server localhost:27017. The full response is {"ok": 0.0, "errmsg": "Error in specification { key: { clientId: 1, type: 1 } } :: caused by :: The 'name' field is a required property of an index specification", "code": 9, "codeName": "FailedToParse"}
	at com.mongodb.internal.connection.ProtocolHelper.getCommandFailureException(ProtocolHelper.java:175)
	at com.mongodb.internal.connection.InternalStreamConnection.receiveCommandMessageResponse(InternalStreamConnection.java:358)
	at com.mongodb.internal.connection.InternalStreamConnection.sendAndReceive(InternalStreamConnection.java:279)
	at com.mongodb.internal.connection.UsageTrackingInternalConnection.sendAndReceive(UsageTrackingInternalConnection.java:100)
	at com.mongodb.internal.connection.DefaultConnectionPool$PooledConnection.sendAndReceive(DefaultConnectionPool.java:490)
	at com.mongodb.internal.connection.CommandProtocolImpl.execute(CommandProtocolImpl.java:71)
	at com.mongodb.internal.connection.DefaultServer$DefaultServerProtocolExecutor.execute(DefaultServer.java:253)
	at com.mongodb.internal.connection.DefaultServerConnection.executeProtocol(DefaultServerConnection.java:202)
	at com.mongodb.internal.connection.DefaultServerConnection.command(DefaultServerConnection.java:118)
	at com.mongodb.internal.connection.DefaultServerConnection.command(DefaultServerConnection.java:110)
	at com.mongodb.internal.operation.CommandOperationHelper.executeCommand(CommandOperationHelper.java:345)
	at com.mongodb.internal.operation.CommandOperationHelper.executeCommand(CommandOperationHelper.java:336)
	at com.mongodb.internal.operation.CommandOperationHelper.executeCommandWithConnection(CommandOperationHelper.java:222)
	at com.mongodb.internal.operation.CommandOperationHelper$5.call(CommandOperationHelper.java:208)
	at com.mongodb.internal.operation.OperationHelper.withReadConnectionSource(OperationHelper.java:583)
	at com.mongodb.internal.operation.CommandOperationHelper.executeCommand(CommandOperationHelper.java:205)
	at com.mongodb.internal.operation.CommandOperationHelper.executeCommand(CommandOperationHelper.java:200)
	at com.mongodb.internal.operation.CommandReadOperation.execute(CommandReadOperation.java:58)
	at com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.execute(MongoClientDelegate.java:170)
	at com.mongodb.client.internal.MongoDatabaseImpl.executeCommand(MongoDatabaseImpl.java:194)
	at com.mongodb.client.internal.MongoDatabaseImpl.runCommand(MongoDatabaseImpl.java:163)
	at com.mongodb.client.internal.MongoDatabaseImpl.runCommand(MongoDatabaseImpl.java:158)
	at com.mongodb.client.internal.MongoDatabaseImpl.runCommand(MongoDatabaseImpl.java:148)
	at liquibase.ext.mongodb.statement.AbstractRunCommandStatement.run(AbstractRunCommandStatement.java:59)
	at liquibase.ext.mongodb.statement.AbstractRunCommandStatement.run(AbstractRunCommandStatement.java:55)
	at liquibase.ext.mongodb.statement.AbstractRunCommandStatement.execute(AbstractRunCommandStatement.java:51)
	at liquibase.ext.mongodb.statement.AbstractRunCommandStatement.execute(AbstractRunCommandStatement.java:36)
	at liquibase.nosql.executor.NoSqlExecutor.execute(NoSqlExecutor.java:181)
	... 82 more

[INFO] Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.346 s - in liquibase.ext.mongodb.statement.MongoStatementIT

My guess is that there is no assertion for the test to see whether it failed or passed.

This may be related to why the issue for #137 seemed to pass Integration Testing.

┆Issue is synchronized with this Jira Bug by Unito

Allow to ignore validation schema for change log collection.

Today MongoHistoryService.java and MongoLockService.java use CreateChangeLogCollectionStatement.java to create ChangeLogCollection in mongo. I am trying to use liquibase-mongodb with DocumentDB from Amazon, despite DocumentDB is mongo 3.6 compatible it does not support schema validation, so I want to provide some parameter that says either use schema for ChangeLogCollection or not.

There is an error I am getting

Caused by: com.mongodb.MongoCommandException: Command failed with error 303: 'Field 'validator' is currently not supported' on server dev-label-cluster.cluster-clxpxja4gsqb.us-east-1.docdb.amazonaws.com:27017. The full response is {"ok": 0.0, "errmsg": "Field 'validator' is currently not supported", "code": 303}
    at com.mongodb.internal.connection.ProtocolHelper.getCommandFailureException (ProtocolHelper.java:175)
    at com.mongodb.internal.connection.InternalStreamConnection.receiveCommandMessageResponse (InternalStreamConnection.java:303)
    at com.mongodb.internal.connection.InternalStreamConnection.sendAndReceive (InternalStreamConnection.java:259)
    at com.mongodb.internal.connection.UsageTrackingInternalConnection.sendAndReceive (UsageTrackingInternalConnection.java:99)
    at com.mongodb.internal.connection.DefaultConnectionPool$PooledConnection.sendAndReceive (DefaultConnectionPool.java:450)
    at com.mongodb.internal.connection.CommandProtocolImpl.execute (CommandProtocolImpl.java:72)
    at com.mongodb.internal.connection.DefaultServer$DefaultServerProtocolExecutor.execute (DefaultServer.java:226)
    at com.mongodb.internal.connection.DefaultServerConnection.executeProtocol (DefaultServerConnection.java:269)
    at com.mongodb.internal.connection.DefaultServerConnection.command (DefaultServerConnection.java:131)
    at com.mongodb.internal.connection.DefaultServerConnection.command (DefaultServerConnection.java:123)
    at com.mongodb.operation.CommandOperationHelper.executeWriteCommand (CommandOperationHelper.java:369)
    at com.mongodb.operation.CommandOperationHelper.executeWriteCommand (CommandOperationHelper.java:360)
    at com.mongodb.operation.CommandOperationHelper.executeCommand (CommandOperationHelper.java:284)
    at com.mongodb.operation.CommandOperationHelper.executeCommand (CommandOperationHelper.java:277)
    at com.mongodb.operation.CreateCollectionOperation$1.call (CreateCollectionOperation.java:385)
    at com.mongodb.operation.CreateCollectionOperation$1.call (CreateCollectionOperation.java:381)
    at com.mongodb.operation.OperationHelper.withConnectionSource (OperationHelper.java:530)
    at com.mongodb.operation.OperationHelper.withConnection (OperationHelper.java:492)
    at com.mongodb.operation.CreateCollectionOperation.execute (CreateCollectionOperation.java:381)
    at com.mongodb.operation.CreateCollectionOperation.execute (CreateCollectionOperation.java:57)
    at com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.execute (MongoClientDelegate.java:213)
    at com.mongodb.client.internal.MongoDatabaseImpl.executeCreateCollection (MongoDatabaseImpl.java:312)
    at com.mongodb.client.internal.MongoDatabaseImpl.createCollection (MongoDatabaseImpl.java:269)
    at liquibase.ext.mongodb.statement.CreateCollectionStatement.execute (CreateCollectionStatement.java:90)
    at liquibase.ext.mongodb.executor.MongoExecutor.execute (MongoExecutor.java:150)
    at liquibase.ext.mongodb.executor.MongoExecutor.execute (MongoExecutor.java:144)
    at liquibase.ext.mongodb.lockservice.MongoLockService.init (MongoLockService.java:93)
    at liquibase.ext.mongodb.lockservice.MongoLockService.acquireLock (MongoLockService.java:155)
    at liquibase.ext.mongodb.lockservice.MongoLockService.waitForLock (MongoLockService.java:122)
    at liquibase.Liquibase.update (Liquibase.java:183)
    at liquibase.Liquibase.update (Liquibase.java:178)
    at liquibase.Liquibase.update (Liquibase.java:174)
    at liquibase.Liquibase.update (Liquibase.java:167)
`



┆Issue is synchronized with this [Jira Bug](https://datical.atlassian.net/browse/LB-490) by [Unito](https://www.unito.io/learn-more)

Does YAML support raw JSON Parser?

I am working on liquibase for mongodb, and tried using YAML format as a changeset for my database. (This is because YAML is the preferred format used across other services in the project)

This is the sample changeset:

- changeSet:
    id: 4384721482
    author: bashayam
    comment: Create foo validator
    changes:
    - createCollection:
        collectionName: foo
        options:
          $rawJson:
            validator:
              $jsonSchema:
                bsonType: object
                required:
                - bar
                - foobar
                properties:
                  bar:
                    bsonType: string
                    description: foo
                  foobar:
                    bsonType: string
                    description: bar
            validationAction: error
            validationLevel: strict

With the above YAML changeset what happened was, the parsing was successful until the createCollection. So, the collection was created successfully, but the validation rules were not applied, since the YAML wasn't able to parse $rawJson.

Is there a way that this can be achieved? (The parsing should work successfully and the validator must be updated with the rules specified in YAML).

PS:

  1. I tried the same changeset in JSON and XML format, and it seems to be working fine.
  2. I have added the following jar files to liquibase/lib folder:
  • jackson-annotations-2.11.3.jar,
  • jackson-core-2.11.3.jar,
  • jackson-databind-2.11.3.jar
  • snakeyaml-1.27.jar
  • mongodb-driver-sync-2.3.jar
  • mongodb-driver-core-2.3.jar

in addition to the liquibase maven extension jar and mongo java driver jar.

┆Issue is synchronized with this Jira Bug by Unito

Pre-released 4.1.2-SNAPSHOT.jar update fails on insertMany change type in a JSON changeLog

Pre-released 4.1.2-SNAPSHOT.jar update fails on insertMany change type in a JSON changeLog

STR
Build a 4.1.2-SNAPSHOT.jar locally with the latest changes that includes the formatted JSON changeLog/change-types.
Include liquibase-mongodb-4.1.2-SNAPSHOT.jar and mongo-java-driver-3.12.7.jar in {liquibase_home}/lib directory.

Run liquibase update with a an insertMany cahnge type in a JSON changeLog.

For example: https://github.com/liquibase/liquibase-mongodb/blob/main/src/test/resources/liquibase/ext/json/generic-1-insert-people.json

Expected result:
Liquibase should create the entries for the insertMany change type in the JSON changest/changelog

Actual result:
Liquibase fails with the following error:
$ liquibase --changeLogFile=generic-1-insert-people.json --logLevel=debug update [2020-11-01 15:31:11] FINE [liquibase.servicelocator] Loaded liquibase.license.LicenseService instance liquibase.pro.license.keymgr.DaticalTrueLicenseService [2020-11-01 15:31:11] INFO [liquibase.integration] No Liquibase Pro license key supplied. Please set liquibaseProLicenseKey on command line or in liquibase.properties to use Liquibase Pro features. Liquibase Community 4.1.1 by Datical Starting Liquibase at 15:31:11 (version 4.1.1 #10 built at 2020-10-12 19:24+0000) [2020-11-01 15:31:11] FINE [liquibase.integration] Liquibase Hub URL: https://hub.liquibase.com [2020-11-01 15:31:11] FINE [liquibase.integration] Liquibase Hub Mode: all [2020-11-01 15:31:11] FINE [liquibase.resource] Adding path /Users/support.liquibase.net/CLI-Projects/MongoDB/. to resourceAccessor liquibase.resource.FileSystemResourceAccessor [2020-11-01 15:31:11] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.DB2Database [2020-11-01 15:31:11] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.Db2zDatabase [2020-11-01 15:31:11] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.DerbyDatabase [2020-11-01 15:31:11] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.Firebird3Database [2020-11-01 15:31:11] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.FirebirdDatabase [2020-11-01 15:31:11] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.H2Database [2020-11-01 15:31:11] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.HsqlDatabase [2020-11-01 15:31:11] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.InformixDatabase [2020-11-01 15:31:11] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.Ingres9Database [2020-11-01 15:31:11] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.MSSQLDatabase [2020-11-01 15:31:11] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.MariaDBDatabase [2020-11-01 15:31:11] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.MockDatabase [2020-11-01 15:31:11] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.MySQLDatabase [2020-11-01 15:31:11] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.OracleDatabase [2020-11-01 15:31:12] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.PostgresDatabase [2020-11-01 15:31:12] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.SQLiteDatabase [2020-11-01 15:31:12] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.SybaseASADatabase [2020-11-01 15:31:12] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.SybaseDatabase [2020-11-01 15:31:12] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.database.core.UnsupportedDatabase [2020-11-01 15:31:12] FINE [liquibase.servicelocator] Loaded liquibase.database.Database instance liquibase.ext.mongodb.database.MongoLiquibaseDatabase [2020-11-01 15:31:12] FINE [liquibase.database] Properties: [2020-11-01 15:31:12] FINE [liquibase.database] Connecting to the URL:'mongodb://localhost:27017/MYDB' using driver:'liquibase.ext.mongodb.database.MongoClientDriver' [2020-11-01 15:31:12] FINE [liquibase.servicelocator] Loaded liquibase.database.DatabaseConnection instance liquibase.database.jvm.JdbcConnection [2020-11-01 15:31:12] FINE [liquibase.servicelocator] Loaded liquibase.database.DatabaseConnection instance com.datical.liquibase.ext.database.jvm.ProJdbcConnection [2020-11-01 15:31:12] FINE [liquibase.servicelocator] Loaded liquibase.database.DatabaseConnection instance liquibase.ext.mongodb.database.MongoConnection [2020-11-01 15:31:12] INFO [com.mongodb.diagnostics.logging.JULLogger log] Cluster created with settings {hosts=[localhost:27017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500} [2020-11-01 15:31:12] FINE [liquibase.database] Connection has been created [2020-11-01 15:31:12] FINE [liquibase.ext] Connected to null@localhost:27017 [2020-11-01 15:31:12] FINE [liquibase.ext] Not adjusting the auto commit mode; it is already false [2020-11-01 15:31:12] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance liquibase.structure.core.Catalog [2020-11-01 15:31:12] INFO [com.mongodb.diagnostics.logging.JULLogger log] Opened connection [connectionId{localValue:1, serverValue:35}] to localhost:27017 [2020-11-01 15:31:12] INFO [com.mongodb.diagnostics.logging.JULLogger log] Monitor thread successfully connected to server with description ServerDescription{address=localhost:27017, type=STANDALONE, state=CONNECTED, ok=true, version=ServerVersion{versionList=[4, 4, 1]}, minWireVersion=0, maxWireVersion=9, maxDocumentSize=16777216, logicalSessionTimeoutMinutes=30, roundTripTimeNanos=6888234} [2020-11-01 15:31:12] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance liquibase.structure.core.Column [2020-11-01 15:31:12] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance liquibase.structure.core.Data [2020-11-01 15:31:12] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance liquibase.structure.core.ForeignKey [2020-11-01 15:31:12] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance liquibase.structure.core.Index [2020-11-01 15:31:12] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance liquibase.structure.core.PrimaryKey [2020-11-01 15:31:12] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance liquibase.structure.core.Schema [2020-11-01 15:31:12] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance liquibase.structure.core.Sequence [2020-11-01 15:31:12] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance liquibase.structure.core.StoredProcedure [2020-11-01 15:31:12] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance liquibase.structure.core.Table [2020-11-01 15:31:12] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance liquibase.structure.core.UniqueConstraint [2020-11-01 15:31:12] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance liquibase.structure.core.View [2020-11-01 15:31:12] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance com.datical.liquibase.ext.appdba.synonym.Synonym [2020-11-01 15:31:12] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance com.datical.liquibase.ext.storedlogic.checkconstraint.CheckConstraint [2020-11-01 15:31:12] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance com.datical.liquibase.ext.storedlogic.databasepackage.DatabasePackage [2020-11-01 15:31:12] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance com.datical.liquibase.ext.storedlogic.databasepackage.DatabasePackageBody [2020-11-01 15:31:12] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance com.datical.liquibase.ext.storedlogic.function.Function [2020-11-01 15:31:12] FINE [liquibase.servicelocator] Loaded liquibase.structure.DatabaseObject instance com.datical.liquibase.ext.storedlogic.trigger.Trigger [2020-11-01 15:31:12] FINE [liquibase.servicelocator] Loaded liquibase.lockservice.LockService instance liquibase.lockservice.LockServiceImpl [2020-11-01 15:31:12] FINE [liquibase.servicelocator] Loaded liquibase.lockservice.LockService instance liquibase.lockservice.MockLockService [2020-11-01 15:31:12] FINE [liquibase.servicelocator] Loaded liquibase.lockservice.LockService instance liquibase.lockservice.OfflineLockService [2020-11-01 15:31:12] FINE [liquibase.servicelocator] Loaded liquibase.lockservice.LockService instance liquibase.lockservice.StandardLockService [2020-11-01 15:31:12] FINE [liquibase.servicelocator] Loaded liquibase.lockservice.LockService instance liquibase.ext.mongodb.lockservice.MongoLockService [2020-11-01 15:31:12] FINE [liquibase.servicelocator] Loaded liquibase.executor.Executor instance liquibase.executor.jvm.JdbcExecutor [2020-11-01 15:31:12] FINE [liquibase.servicelocator] Loaded liquibase.executor.Executor instance com.datical.liquibase.ext.OracleSqlPlusExecutor [2020-11-01 15:31:12] FINE [liquibase.servicelocator] Loaded liquibase.executor.Executor instance liquibase.nosql.executor.NoSqlExecutor [2020-11-01 15:31:12] INFO [com.mongodb.diagnostics.logging.JULLogger log] Opened connection [connectionId{localValue:2, serverValue:36}] to localhost:27017 [2020-11-01 15:31:12] INFO [liquibase.ext] Adjusting database Lock Collection with name: MYDB.DATABASECHANGELOGLOCK [2020-11-01 15:31:12] INFO [liquibase.ext] Adjusted database Lock Collection with name: MYDB.DATABASECHANGELOGLOCK [2020-11-01 15:31:12] INFO [liquibase.ext] Lock Database [2020-11-01 15:31:12] INFO [liquibase.ext] Successfully Acquired Change Log Lock [2020-11-01 15:31:12] FINE [liquibase.servicelocator] Loaded liquibase.parser.ChangeLogParser instance liquibase.parser.core.formattedsql.FormattedSqlChangeLogParser [2020-11-01 15:31:12] FINE [liquibase.servicelocator] Loaded liquibase.parser.ChangeLogParser instance liquibase.parser.core.json.JsonChangeLogParser [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.parser.ChangeLogParser instance liquibase.parser.core.sql.SqlChangeLogParser [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.parser.ChangeLogParser instance liquibase.parser.core.xml.XMLChangeLogSAXParser [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.parser.ChangeLogParser instance liquibase.parser.core.yaml.YamlChangeLogParser [2020-11-01 15:31:13] INFO [liquibase.servicelocator] Cannot load service: liquibase.parser.ChangeLogParser: liquibase.nosql.parser.json.JsonNoSqlChangeLogParser Unable to get public no-arg constructor [2020-11-01 15:31:13] FINE [liquibase.resource] Closing duplicate stream for file:/Users/support.liquibase.net/CLI-Projects/MongoDB/generic-1-insert-people.json [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.AddAutoIncrementChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.AddColumnChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.AddDefaultValueChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.AddForeignKeyConstraintChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.AddLookupTableChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.AddNotNullConstraintChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.AddPrimaryKeyChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.AddUniqueConstraintChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.AlterSequenceChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.CreateIndexChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.CreateProcedureChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.CreateSequenceChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.CreateTableChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.CreateViewChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.DeleteDataChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.DropAllForeignKeyConstraintsChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.DropColumnChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.DropDefaultValueChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.DropForeignKeyConstraintChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.DropIndexChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.DropNotNullConstraintChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.DropPrimaryKeyChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.DropProcedureChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.DropSequenceChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.DropTableChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.DropUniqueConstraintChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.DropViewChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.EmptyChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.ExecuteShellCommandChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.InsertDataChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.LoadDataChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.LoadUpdateDataChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.MergeColumnChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.ModifyDataTypeChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.OutputChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.RawSQLChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.RenameColumnChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.RenameSequenceChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.RenameTableChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.RenameViewChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.SQLFileChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.SetColumnRemarksChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.SetTableRemarksChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.StopChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.TagDatabaseChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.core.UpdateDataChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.change.custom.CustomChangeWrapper [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance com.datical.liquibase.ext.appdba.markunused.change.MarkUnsedChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance com.datical.liquibase.ext.appdba.synonym.change.CreateSynonymChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance com.datical.liquibase.ext.appdba.synonym.change.DropSynonymChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance com.datical.liquibase.ext.storedlogic.checkconstraint.change.AddCheckConstraintChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance com.datical.liquibase.ext.storedlogic.checkconstraint.change.DisableCheckConstraintChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance com.datical.liquibase.ext.storedlogic.checkconstraint.change.DropCheckConstraintChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance com.datical.liquibase.ext.storedlogic.checkconstraint.change.EnableCheckConstraintChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance com.datical.liquibase.ext.storedlogic.databasepackage.change.CreatePackageBodyChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance com.datical.liquibase.ext.storedlogic.databasepackage.change.CreatePackageChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance com.datical.liquibase.ext.storedlogic.databasepackage.change.DropPackageBodyChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance com.datical.liquibase.ext.storedlogic.databasepackage.change.DropPackageChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance com.datical.liquibase.ext.storedlogic.function.change.CreateFunctionChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance com.datical.liquibase.ext.storedlogic.function.change.DropFunctionChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance com.datical.liquibase.ext.storedlogic.trigger.change.CreateTriggerChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance com.datical.liquibase.ext.storedlogic.trigger.change.DisableTriggerChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance com.datical.liquibase.ext.storedlogic.trigger.change.DropTriggerChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance com.datical.liquibase.ext.storedlogic.trigger.change.EnableTriggerChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance com.datical.liquibase.ext.storedlogic.trigger.change.RenameTriggerChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.ext.mongodb.change.AdminCommandChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.ext.mongodb.change.CreateCollectionChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.ext.mongodb.change.CreateIndexChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.ext.mongodb.change.InsertManyChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.ext.mongodb.change.InsertOneChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.change.Change instance liquibase.ext.mongodb.change.RunCommandChange [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.changelog.ChangeLogHistoryService instance liquibase.changelog.MockChangeLogHistoryService [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.changelog.ChangeLogHistoryService instance liquibase.changelog.StandardChangeLogHistoryService [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.changelog.ChangeLogHistoryService instance liquibase.ext.mongodb.changelog.MongoHistoryService [2020-11-01 15:31:13] INFO [liquibase.ext] Adjusting database history Collection with name: MYDB.DATABASECHANGELOG [2020-11-01 15:31:13] INFO [liquibase.ext] Adjusted database history Collection with name: MYDB.DATABASECHANGELOG [2020-11-01 15:31:13] FINE [liquibase.util] Computed checksum for createCollection:[ collectionName="person" ] as 08850fdc8ad5be416f97add1312fb2e2 [2020-11-01 15:31:13] FINE [liquibase.util] Computed checksum for 8:08850fdc8ad5be416f97add1312fb2e2: as 977093896ec672227927b3b45b0d16bb [2020-11-01 15:31:13] FINE [liquibase.util] Computed checksum for insertOne:[ collectionName="person" ] as 988df75ad4fadf026ee78872503f44c4 [2020-11-01 15:31:13] FINE [liquibase.util] Computed checksum for insertMany:[ collectionName="person" ] as 0344462153932e5f1676b84a57a03d69 [2020-11-01 15:31:13] FINE [liquibase.util] Computed checksum for 8:988df75ad4fadf026ee78872503f44c4:8:0344462153932e5f1676b84a57a03d69: as faa3c91ec8c8504a85993e79a19f4df1 [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.AddAutoIncrementGenerator [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.AddAutoIncrementGeneratorDB2 [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.AddAutoIncrementGeneratorHsqlH2 [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.AddAutoIncrementGeneratorInformix [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.AddAutoIncrementGeneratorMySQL [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.AddAutoIncrementGeneratorSQLite [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.AddColumnGenerator [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.AddColumnGeneratorDefaultClauseBeforeNotNull [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.AddColumnGeneratorSQLite [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.AddDefaultValueGenerator [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.AddDefaultValueGeneratorDerby [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.AddDefaultValueGeneratorInformix [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.AddDefaultValueGeneratorMSSQL [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.AddDefaultValueGeneratorMySQL [2020-11-01 15:31:13] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.AddDefaultValueGeneratorOracle [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.AddDefaultValueGeneratorPostgres [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.AddDefaultValueGeneratorSQLite [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.AddDefaultValueGeneratorSybase [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.AddDefaultValueGeneratorSybaseASA [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.AddForeignKeyConstraintGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.AddPrimaryKeyGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.AddPrimaryKeyGeneratorInformix [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.AddUniqueConstraintGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.AddUniqueConstraintGeneratorInformix [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.AddUniqueConstraintGeneratorTDS [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.AlterSequenceGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.BatchDmlExecutablePreparedStatementGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.ClearDatabaseChangeLogTableGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.CommentGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.CopyRowsGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.CreateDatabaseChangeLogLockTableGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.CreateDatabaseChangeLogTableGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.CreateDatabaseChangeLogTableGeneratorSybase [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.CreateIndexGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.CreateIndexGeneratorFirebird [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.CreateIndexGeneratorPostgres [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.CreateProcedureGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.CreateSequenceGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.CreateTableGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.CreateTableGeneratorInformix [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.CreateViewGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.CreateViewGeneratorInformix [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.DeleteGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.DropColumnGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.DropDefaultValueGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.DropForeignKeyConstraintGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.DropIndexGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.DropPrimaryKeyGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.DropProcedureGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.DropSequenceGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.DropTableGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.DropUniqueConstraintGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.DropViewGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.GetNextChangeSetSequenceValueGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.GetViewDefinitionGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.GetViewDefinitionGeneratorDB2 [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.GetViewDefinitionGeneratorDerby [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.GetViewDefinitionGeneratorFirebird [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.GetViewDefinitionGeneratorHsql [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.GetViewDefinitionGeneratorInformix [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.GetViewDefinitionGeneratorMSSQL [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.GetViewDefinitionGeneratorOracle [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.GetViewDefinitionGeneratorPostgres [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.GetViewDefinitionGeneratorSybase [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.GetViewDefinitionGeneratorSybaseASA [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.InitializeDatabaseChangeLogLockTableGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.InsertDataChangeGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.InsertGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.InsertOrUpdateGeneratorDB2 [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.InsertOrUpdateGeneratorH2 [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.InsertOrUpdateGeneratorHsql [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.InsertOrUpdateGeneratorInformix [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.InsertOrUpdateGeneratorMSSQL [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.InsertOrUpdateGeneratorMySQL [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.InsertOrUpdateGeneratorOracle [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.InsertOrUpdateGeneratorPostgres [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.InsertOrUpdateGeneratorSQLite [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.InsertOrUpdateGeneratorSybaseASA [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.InsertSetGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.LockDatabaseChangeLogGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.MarkChangeSetRanGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.ModifyDataTypeGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.RawSqlGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.ReindexGeneratorSQLite [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.RemoveChangeSetRanStatusGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.RenameColumnGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.RenameSequenceGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.RenameTableGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.RenameViewGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.ReorganizeTableGeneratorDB2 [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.RuntimeGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.SelectFromDatabaseChangeLogGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.SelectFromDatabaseChangeLogLockGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.SetColumnRemarksGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.SetNullableGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.SetTableRemarksGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.StoredProcedureGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.TableRowCountGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.TagDatabaseGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.UnlockDatabaseChangeLogGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.UpdateChangeSetChecksumGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.UpdateDataChangeGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.sqlgenerator.core.UpdateGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance com.datical.liquibase.ext.appdba.markunused.change.MarkUnusedGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance com.datical.liquibase.ext.appdba.synonym.change.CreateSynonymGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance com.datical.liquibase.ext.appdba.synonym.change.DropSynonymGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance com.datical.liquibase.ext.storedlogic.checkconstraint.change.AddCheckConstraintGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance com.datical.liquibase.ext.storedlogic.checkconstraint.change.DisableCheckConstraintGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance com.datical.liquibase.ext.storedlogic.checkconstraint.change.DropCheckConstraintGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance com.datical.liquibase.ext.storedlogic.checkconstraint.change.EnableCheckConstraintGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance com.datical.liquibase.ext.storedlogic.databasepackage.change.CreatePackageBodyGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance com.datical.liquibase.ext.storedlogic.databasepackage.change.CreatePackageGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance com.datical.liquibase.ext.storedlogic.databasepackage.change.DropPackageBodyGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance com.datical.liquibase.ext.storedlogic.databasepackage.change.DropPackageGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance com.datical.liquibase.ext.storedlogic.function.change.CreateFunctionGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance com.datical.liquibase.ext.storedlogic.function.change.DropFunctionGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance com.datical.liquibase.ext.storedlogic.trigger.change.CreateTriggerGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance com.datical.liquibase.ext.storedlogic.trigger.change.DisableTriggerGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance com.datical.liquibase.ext.storedlogic.trigger.change.DropTriggerGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance com.datical.liquibase.ext.storedlogic.trigger.change.EnableTriggerGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance com.datical.liquibase.ext.storedlogic.trigger.change.RenameTriggerGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.sqlgenerator.SqlGenerator instance liquibase.nosql.executor.NoSqlGenerator [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.hub.HubService instance liquibase.hub.core.MockHubService [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.hub.HubService instance liquibase.hub.core.OnlineHubService [2020-11-01 15:31:14] FINE [liquibase.servicelocator] Loaded liquibase.hub.HubService instance liquibase.hub.core.OfflineHubService [2020-11-01 15:31:14] FINE [liquibase.changelog] Running Changeset:generic-1-insert-people.json::2::Nick [2020-11-01 15:31:14] INFO [liquibase.nosql] Changeset generic-1-insert-people.json::2::Nick [2020-11-01 15:31:14] INFO [liquibase.nosql] Populate person table [2020-11-01 15:31:14] FINE [liquibase.changelog] Reading ChangeSet: generic-1-insert-people.json::2::Nick [2020-11-01 15:31:14] INFO [liquibase.nosql] WARNING The following SQL may change each run and therefore is possibly incorrect and/or invalid: [2020-11-01 15:31:14] FINE [liquibase.ext] Executing Statement: db.person.insertOne({}, {}); [2020-11-01 15:31:14] INFO [liquibase.ext] Release Database Lock [2020-11-01 15:31:14] INFO [liquibase.ext] Successfully released change log lock [2020-11-01 15:31:14] INFO [com.mongodb.diagnostics.logging.JULLogger log] Closed connection [connectionId{localValue:2, serverValue:36}] to localhost:27017 because the pool has been closed. Unexpected error running Liquibase: Migration failed for change set generic-1-insert-people.json::2::Nick: Reason: java.lang.NullPointerException For more information, please use the --logLevel flag [2020-11-01 15:31:14] SEVERE [liquibase.integration] Unexpected error running Liquibase: Migration failed for change set generic-1-insert-people.json::2::Nick: Reason: java.lang.NullPointerException liquibase.exception.LiquibaseException: liquibase.exception.MigrationFailedException: Migration failed for change set generic-1-insert-people.json::2::Nick: Reason: java.lang.NullPointerException at liquibase.changelog.ChangeLogIterator.run(ChangeLogIterator.java:124) at liquibase.Liquibase.lambda$null$0(Liquibase.java:275) at liquibase.Scope.lambda$child$0(Scope.java:160) at liquibase.Scope.child(Scope.java:169) at liquibase.Scope.child(Scope.java:159) at liquibase.Scope.child(Scope.java:138) at liquibase.Scope.child(Scope.java:222) at liquibase.Liquibase.lambda$update$1(Liquibase.java:274) at liquibase.Scope.lambda$child$0(Scope.java:160) at liquibase.Scope.child(Scope.java:169) at liquibase.Scope.child(Scope.java:159) at liquibase.Scope.child(Scope.java:138) at liquibase.Liquibase.runInScope(Liquibase.java:2277) at liquibase.Liquibase.update(Liquibase.java:215) at liquibase.Liquibase.update(Liquibase.java:201) at liquibase.integration.commandline.Main.doMigration(Main.java:1760) at liquibase.integration.commandline.Main$1.lambda$run$0(Main.java:361) at liquibase.Scope.lambda$child$0(Scope.java:160) at liquibase.Scope.child(Scope.java:169) at liquibase.Scope.child(Scope.java:159) at liquibase.Scope.child(Scope.java:138) at liquibase.Scope.child(Scope.java:222) at liquibase.Scope.child(Scope.java:226) at liquibase.integration.commandline.Main$1.run(Main.java:360) at liquibase.integration.commandline.Main$1.run(Main.java:193) at liquibase.Scope.child(Scope.java:169) at liquibase.Scope.child(Scope.java:145) at liquibase.integration.commandline.Main.run(Main.java:193) at liquibase.integration.commandline.Main.main(Main.java:156) Caused by: liquibase.exception.MigrationFailedException: Migration failed for change set generic-1-insert-people.json::2::Nick: Reason: java.lang.NullPointerException at liquibase.changelog.ChangeSet.execute(ChangeSet.java:670) at liquibase.changelog.visitor.UpdateVisitor.visit(UpdateVisitor.java:49) at liquibase.changelog.ChangeLogIterator$2.lambda$null$0(ChangeLogIterator.java:111) at liquibase.Scope.lambda$child$0(Scope.java:160) at liquibase.Scope.child(Scope.java:169) at liquibase.Scope.child(Scope.java:159) at liquibase.Scope.child(Scope.java:138) at liquibase.changelog.ChangeLogIterator$2.lambda$run$1(ChangeLogIterator.java:110) at liquibase.Scope.lambda$child$0(Scope.java:160) at liquibase.Scope.child(Scope.java:169) at liquibase.Scope.child(Scope.java:159) at liquibase.Scope.child(Scope.java:138) at liquibase.Scope.child(Scope.java:222) at liquibase.changelog.ChangeLogIterator$2.run(ChangeLogIterator.java:94) at liquibase.Scope.lambda$child$0(Scope.java:160) at liquibase.Scope.child(Scope.java:169) at liquibase.Scope.child(Scope.java:159) at liquibase.Scope.child(Scope.java:138) at liquibase.Scope.child(Scope.java:222) at liquibase.Scope.child(Scope.java:226) at liquibase.changelog.ChangeLogIterator.run(ChangeLogIterator.java:66) ... 28 more Caused by: java.lang.NullPointerException at liquibase.integration.commandline.Main$SecureLogFilter.isLoggable(Main.java:2093) at java.logging/java.util.logging.Handler.isLoggable(Handler.java:346) at java.logging/java.util.logging.StreamHandler.isLoggable(StreamHandler.java:237) at java.logging/java.util.logging.StreamHandler.publish(StreamHandler.java:194) at java.logging/java.util.logging.ConsoleHandler.publish(ConsoleHandler.java:95) at java.logging/java.util.logging.Logger.log(Logger.java:979) at java.logging/java.util.logging.Logger.doLog(Logger.java:1006) at java.logging/java.util.logging.Logger.logp(Logger.java:1283) at liquibase.logging.core.JavaLogger.log(JavaLogger.java:23) at liquibase.logging.core.CompositeLogger.log(CompositeLogger.java:29) at liquibase.logging.core.CompositeLogger.log(CompositeLogger.java:29) at liquibase.logging.core.AbstractLogger.info(AbstractLogger.java:50) at liquibase.logging.core.AbstractLogger.info(AbstractLogger.java:45) at liquibase.changelog.ChangeSet.execute(ChangeSet.java:636) ... 48 more

┆Issue is synchronized with this Jira Bug by Unito

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.