Time out with diff-changelog command

Hi all,
I’m new to liquibase and try to evaluate it on my project that manage 100GB databases.

When running :
liquibase diff-changelog --changelog-file=test-05.mariadb.sql

I get the issue:
Unexpected error running Liquibase: (conn=16563498) Connection is closed

Adding the following parameters:
–diff-types=tables,columns,indexes

make the things work.

Individual liquibase snapshot command work on each of the targeted database.

I’ve tried to add this kind of parameters :

  • connectTimeout=0
  • socketTimeout=0
    in connection url or in a dedicated driverPropertiesFile=driver.properties
    but it has not impact.
    Could you suggest a solution ?
    If can not make it work, I will not be able to propose liquibase solution to my team.
    Thx a lot for your help !

Hi @SLAB. That’s an interesting problem. Could you try running with monitor-performance flag? monitor-performance

That would give us insight into where the code is spending an unexpectedly long amount of time.

Hello,
Thx a lot for support !
I’va activated log and monitor-performance flags.
Please find the result in attachment.
Regards,
Sylvain

(Attachment log-2.txt is missing)

(Attachment liquibase-2023_04_14T09_22_08_607.jfr is missing)

Hi again,
By adding log-level=INFO, I’ve the additional exception :

[2023-04-14 09:50:53] WARNING [liquibase.database] Cannot determine case sensitivity from JDBC driver
java.sql.SQLNonTransientConnectionException: (conn=16670835) Socket error
at org.mariadb.jdbc.export.ExceptionFactory.createException(ExceptionFactory.java:293)
at org.mariadb.jdbc.export.ExceptionFactory.create(ExceptionFactory.java:359)
at org.mariadb.jdbc.client.impl.StandardClient.readPacket(StandardClient.java:878)
at org.mariadb.jdbc.client.impl.StandardClient.readResults(StandardClient.java:794)
at org.mariadb.jdbc.client.impl.StandardClient.readResponse(StandardClient.java:713)
at org.mariadb.jdbc.client.impl.StandardClient.execute(StandardClient.java:637)
at org.mariadb.jdbc.Statement.executeInternal(Statement.java:941)
at org.mariadb.jdbc.Statement.executeQuery(Statement.java:131)
at org.mariadb.jdbc.Connection.getLowercaseTableNames(Connection.java:265)
at org.mariadb.jdbc.DatabaseMetaData.supportsMixedCaseIdentifiers(DatabaseMetaData.java:1306)
at liquibase.database.AbstractJdbcDatabase.isCaseSensitive(AbstractJdbcDatabase.java:725)
at liquibase.CatalogAndSchema.standardize(CatalogAndSchema.java:118)
at liquibase.CatalogAndSchema.customize(CatalogAndSchema.java:140)
at liquibase.snapshot.SnapshotGeneratorFactory.createSnapshot(SnapshotGeneratorFactory.java:181)
at liquibase.command.core.DiffCommandStep.generateDatabaseShapshot(DiffCommandStep.java:191)
at liquibase.command.core.DiffCommandStep.getTargetSnapshot(DiffCommandStep.java:141)
at liquibase.command.core.DiffCommandStep.createDiffResult(DiffCommandStep.java:102)
at liquibase.command.core.DiffCommandStep.run(DiffCommandStep.java:86)
at liquibase.command.CommandScope.execute(CommandScope.java:195)
at liquibase.integration.commandline.CommandRunner.call(CommandRunner.java:55)
at liquibase.integration.commandline.CommandRunner.call(CommandRunner.java:24)
at picocli.CommandLine.executeUserObject(CommandLine.java:2041)
at picocli.CommandLine.access$1500(CommandLine.java:148)
at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2461)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2453)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2415)
at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2273)
at picocli.CommandLine$RunLast.execute(CommandLine.java:2417)
at picocli.CommandLine.execute(CommandLine.java:2170)
at liquibase.integration.commandline.LiquibaseCommandLine.lambda$null$2(LiquibaseCommandLine.java:367)
at liquibase.Scope.child(Scope.java:196)
at liquibase.Scope.child(Scope.java:172)
at liquibase.integration.commandline.LiquibaseCommandLine.lambda$execute$3(LiquibaseCommandLine.java:332)
at liquibase.Scope.child(Scope.java:196)
at liquibase.Scope.child(Scope.java:172)
at liquibase.integration.commandline.LiquibaseCommandLine.execute(LiquibaseCommandLine.java:330)
at liquibase.integration.commandline.LiquibaseCommandLine.main(LiquibaseCommandLine.java:91)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at liquibase.integration.commandline.LiquibaseLauncher.main(LiquibaseLauncher.java:107)
Caused by: java.io.EOFException: unexpected end of stream, read 0 bytes from 4 (socket was closed by server)
at org.mariadb.jdbc.client.socket.impl.PacketReader.readReusablePacket(PacketReader.java:68)
at org.mariadb.jdbc.message.ClientMessage.readPacket(ClientMessage.java:115)
at org.mariadb.jdbc.client.impl.StandardClient.readPacket(StandardClient.java:855)
… 39 more

[2023-04-14 09:50:53] WARNING [liquibase.database] Cannot determine case sensitivity from JDBC driver
java.sql.SQLNonTransientConnectionException: (conn=16670835) Connection is closed
at org.mariadb.jdbc.export.ExceptionFactory.createException(ExceptionFactory.java:293)
at org.mariadb.jdbc.export.ExceptionFactory.create(ExceptionFactory.java:370)
at org.mariadb.jdbc.client.impl.StandardClient.checkNotClosed(StandardClient.java:889)
at org.mariadb.jdbc.client.impl.StandardClient.sendQuery(StandardClient.java:481)
at org.mariadb.jdbc.client.impl.StandardClient.execute(StandardClient.java:635)
at org.mariadb.jdbc.Statement.executeInternal(Statement.java:941)
at org.mariadb.jdbc.Statement.executeQuery(Statement.java:131)
at org.mariadb.jdbc.Connection.getLowercaseTableNames(Connection.java:265)
at org.mariadb.jdbc.DatabaseMetaData.supportsMixedCaseIdentifiers(DatabaseMetaData.java:1306)
at liquibase.database.AbstractJdbcDatabase.isCaseSensitive(AbstractJdbcDatabase.java:725)
at liquibase.database.core.MySQLDatabase.correctObjectName(MySQLDatabase.java:53)
at liquibase.CatalogAndSchema.customize(CatalogAndSchema.java:157)
at liquibase.snapshot.SnapshotGeneratorFactory.createSnapshot(SnapshotGeneratorFactory.java:181)
at liquibase.command.core.DiffCommandStep.generateDatabaseShapshot(DiffCommandStep.java:191)
at liquibase.command.core.DiffCommandStep.getTargetSnapshot(DiffCommandStep.java:141)
at liquibase.command.core.DiffCommandStep.createDiffResult(DiffCommandStep.java:102)
at liquibase.command.core.DiffCommandStep.run(DiffCommandStep.java:86)
at liquibase.command.CommandScope.execute(CommandScope.java:195)
at liquibase.integration.commandline.CommandRunner.call(CommandRunner.java:55)
at liquibase.integration.commandline.CommandRunner.call(CommandRunner.java:24)
at picocli.CommandLine.executeUserObject(CommandLine.java:2041)
at picocli.CommandLine.access$1500(CommandLine.java:148)
at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2461)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2453)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2415)
at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2273)
at picocli.CommandLine$RunLast.execute(CommandLine.java:2417)
at picocli.CommandLine.execute(CommandLine.java:2170)
at liquibase.integration.commandline.LiquibaseCommandLine.lambda$null$2(LiquibaseCommandLine.java:367)
at liquibase.Scope.child(Scope.java:196)
at liquibase.Scope.child(Scope.java:172)
at liquibase.integration.commandline.LiquibaseCommandLine.lambda$execute$3(LiquibaseCommandLine.java:332)
at liquibase.Scope.child(Scope.java:196)
at liquibase.Scope.child(Scope.java:172)
at liquibase.integration.commandline.LiquibaseCommandLine.execute(LiquibaseCommandLine.java:330)
at liquibase.integration.commandline.LiquibaseCommandLine.main(LiquibaseCommandLine.java:91)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at liquibase.integration.commandline.LiquibaseLauncher.main(LiquibaseLauncher.java:107)

Hi again,
Please let me know how I can send you previously rejected attached file.
Please note also that adding one of the following “diff” parameters lead to the issue:
uniqueconstraints,primarykeys,indexes
Thx for help
Sylvain

Hi @SLAB

Thanks for investigating further. You can email it to me via pj@liquibase.com.

Hello PJ,
Did you receive the attachment I sent you ?
Do you have any tip to solve this issue ?
Thanks for your help,
Sylvain