-
Notifications
You must be signed in to change notification settings - Fork 11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
DozerDB support #685
Comments
Hello, thanks for raising the issue. I tried: <?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog https://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-latest.xsd">
<changeSet id="my-movie-init" author="fbiville">
<sql>CREATE (:Movie {title: 'My Life', genre: 'Comedy'})</sql>
</changeSet>
</databaseChangeLog> and ran Liquibase against a container: docker run --rm \
--env NEO4J_AUTH='neo4j/letmein!' \
--env NEO4J_ACCEPT_LICENSE_AGREEMENT=yes \
--publish=7687:7687 --publish=7474:7474 \
--health-cmd "cypher-shell -u neo4j -p 'letmein!' 'RETURN 1'" \
--health-interval 5s \
--health-timeout 5s \
--health-retries 5 \
graphstack/dozerdb:5.24.2.1-alpha.1 |
@fbiville Thanks for looking into this. I'm still getting the same issue using the example values you posted in your comment. I've accumulated the steps that I've taken, in hope of that you are able to spot what I'm doing wrong. platform: OSX 15.1.1 (24B91) Steps taken$ brew install liquibase
$ curl -L -o /opt/homebrew/opt/liquibase/libexec/lib/liquibase-neo4j-4.31.0-full.jar https://github.com/liquibase/liquibase-neo4j/releases/download/v4.31.0/liquibase-neo4j-4.31.0-full.jar
$ liquibase --version
> ####################################################
> ## _ _ _ _ ##
> ## | | (_) (_) | ##
> ## | | _ __ _ _ _ _| |__ __ _ ___ ___ ##
> ## | | | |/ _` | | | | | '_ \ / _` / __|/ _ \ ##
> ## | |___| | (_| | |_| | | |_) | (_| \__ \ __/ ##
> ## \_____/_|\__, |\__,_|_|_.__/ \__,_|___/\___| ##
> ## | | ##
> ## |_| ##
> ## ##
> ## Get documentation at docs.liquibase.com ##
> ## Get certified courses at learn.liquibase.com ##
> ## ##
> ####################################################
> Starting Liquibase at 12:31:28 using Java 23.0.2 (version 4.31.0 #6261 built at 2025-01-14 14:24+0000)
> Liquibase Home: /opt/homebrew/Cellar/liquibase/4.31.0/libexec
> Java Home /opt/homebrew/Cellar/openjdk/23.0.2/libexec/openjdk.jdk/Contents/Home (Version 23.0.2)
> Libraries:
> - internal/extensions/liquibase-checks.jar: Checks Extension 2.0.0 By Liquibase
> - internal/extensions/liquibase-commercial-bigquery.jar: Liquibase BigQuery Commercial Extension 4.31.0 By Liquibase
> - internal/lib/commons-collections4.jar: Apache Commons Collections 4.4.0 By The Apache Software Foundation
> - internal/lib/commons-io.jar: Apache Commons IO 2.18.0 By The Apache Software Foundation
> - internal/lib/commons-lang3.jar: Apache Commons Lang 3.17.0 By The Apache Software Foundation
> - internal/lib/commons-text.jar: Apache Commons Text 1.13.0 By The Apache Software Foundation
> - internal/lib/h2.jar: H2 Database Engine 2.2.224 By H2 Group
> - internal/lib/hsqldb.jar: HSQLDB 2.7.4 By The HSQL Development Group
> - internal/lib/jaxb-api.jar: jaxb-api 2.3.1 By Oracle Corporation
> - internal/lib/jaxb-core.jar: JAXB Core 4.0.5 By Eclipse Foundation
> - internal/lib/jaxb-runtime.jar: JAXB Runtime 4.0.5 By Eclipse Foundation
> - internal/lib/jaybird.jar: Jaybird 5.0.6.java8 (build: variant=jaybird tag=v5.0.6 date=202410161519) By Firebird project
> - internal/lib/jcc.jar: IBM JCC JDBC 4 Driver 1.4.0 By IBM
> - internal/lib/liquibase-commercial.jar: Commercial Liquibase Functionality 4.31.0 By Liquibase
> - internal/lib/mariadb-java-client.jar: mariadb-java-client 3.4.1 By mariadb.com
> - internal/lib/mssql-jdbc.jar: Microsoft JDBC Driver for SQL Server 12.8.1 By Microsoft Corporation
> - internal/lib/ojdbc8.jar: JDBC 19.24.0.0.0 By Oracle Corporation
> - internal/lib/opencsv.jar: opencsv 5.9.0
> - internal/lib/picocli.jar: picocli 4.7.6 By Remko Popma
> - internal/lib/postgresql.jar: PostgreSQL JDBC Driver 42.7.4 By PostgreSQL Global Development Group
> - internal/lib/slf4j-api.jar: SLF4J API Module 2.0.16 By SLF4J.ORG
> - internal/lib/slf4j-nop.jar: SLF4J NOP Provider 2.0.16 By SLF4J.ORG
> - internal/lib/snakeyaml.jar: SnakeYAML 2.3.0
> - internal/lib/snowflake-jdbc.jar: snowflake-jdbc 3.20.0
> - internal/lib/sqlite-jdbc.jar: SQLite JDBC 3.47.2.0
> - lib/liquibase-neo4j-4.31.0-full.jar: liquibase-neo4j-4.31.0-full UNKNOWN
>
>
> Liquibase Version: 4.31.0
> Liquibase Open Source 4.31.0 by Liquibase
$ docker run --rm \
--env NEO4J_AUTH='neo4j/letmein!' \
--env NEO4J_ACCEPT_LICENSE_AGREEMENT=yes \
--publish=7687:7687 --publish=7474:7474 \
--health-cmd "cypher-shell -u neo4j -p 'letmein!' 'RETURN 1'" \
--health-interval 5s \
--health-timeout 5s \
--health-retries 5 \
graphstack/dozerdb:5.24.2.1-alpha.1
#echo multiline using EOF
$ cat <<EOF > changeset.xml
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog https://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-latest.xsd">
<changeSet id="my-movie-init" author="fbiville">
<sql>CREATE (:Movie {title: 'My Life', genre: 'Comedy'})</sql>
</changeSet>
</databaseChangeLog>
EOF
$ cypher-shell -u neo4j -p 'letmein!' 'CREATE DATABASE persons'
> 0 rows
> ready to start consuming query after 190 ms, results consumed after another 0 ms
$ liquibase --changeLogFile=changeset.xml --url='jdbc:neo4j:neo4j://localhost:7687?database=persons' --username='neo4j' --password='letmein!' update
> ####################################################
> ## _ _ _ _ ##
> ## | | (_) (_) | ##
> ## | | _ __ _ _ _ _| |__ __ _ ___ ___ ##
> ## | | | |/ _` | | | | | '_ \ / _` / __|/ _ \ ##
> ## | |___| | (_| | |_| | | |_) | (_| \__ \ __/ ##
> ## \_____/_|\__, |\__,_|_|_.__/ \__,_|___/\___| ##
> ## | | ##
> ## |_| ##
> ## ##
> ## Get documentation at docs.liquibase.com ##
> ## Get certified courses at learn.liquibase.com ##
> ## ##
> ####################################################
> Starting Liquibase at 12:39:27 using Java 23.0.2 (version 4.31.0 #6261 built at 2025-01-14 14:24+0000)
> Liquibase Version: 4.31.0
> Liquibase Open Source 4.31.0 by Liquibase
> ERROR: Exception Details
> ERROR: Exception Primary Class: DatabaseException
> ERROR: Exception Primary Reason: Unable to complete transaction.
> ERROR: Exception Primary Source: Neo4j null
>
> Unexpected error running Liquibase: Unable to complete transaction.
>
> For more information, please use the --log-level flag |
Thanks for the reproducer, I can indeed reproduce the problem now. liquibase.exception.CommandExecutionException: org.neo4j.driver.exceptions.DatabaseException: Unable to complete transaction.
at liquibase.command.CommandScope.lambda$execute$6(CommandScope.java:300)
at liquibase.Scope.child(Scope.java:210)
at liquibase.Scope.child(Scope.java:186)
at liquibase.command.CommandScope.execute(CommandScope.java:241)
at liquibase.integration.commandline.CommandRunner.call(CommandRunner.java:51)
at liquibase.integration.commandline.CommandRunner.call(CommandRunner.java:21)
at picocli.CommandLine.executeUserObject(CommandLine.java:2045)
at picocli.CommandLine.access$1500(CommandLine.java:148)
at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2465)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2457)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2419)
at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2277)
at picocli.CommandLine$RunLast.execute(CommandLine.java:2421)
at picocli.CommandLine.execute(CommandLine.java:2174)
at liquibase.integration.commandline.LiquibaseCommandLine.lambda$execute$2(LiquibaseCommandLine.java:414)
at liquibase.Scope.child(Scope.java:210)
at liquibase.Scope.child(Scope.java:186)
at liquibase.integration.commandline.LiquibaseCommandLine.lambda$execute$3(LiquibaseCommandLine.java:389)
at liquibase.Scope.child(Scope.java:210)
at liquibase.Scope.child(Scope.java:186)
at liquibase.integration.commandline.LiquibaseCommandLine.execute(LiquibaseCommandLine.java:386)
at liquibase.integration.commandline.LiquibaseCommandLine.main(LiquibaseCommandLine.java:103)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:569)
at liquibase.integration.commandline.LiquibaseLauncher.main(LiquibaseLauncher.java:121)
Caused by: org.neo4j.driver.exceptions.DatabaseException: Unable to complete transaction.
at org.neo4j.driver.internal.util.Futures.blockingGet(Futures.java:111)
at org.neo4j.driver.internal.InternalTransaction.commit(InternalTransaction.java:37)
at liquibase.ext.neo4j.database.jdbc.Neo4jConnection.commit(Neo4jConnection.java:1206)
at liquibase.database.jvm.JdbcConnection.commit(JdbcConnection.java:247)
at liquibase.database.AbstractJdbcDatabase.commit(AbstractJdbcDatabase.java:1098)
at liquibase.ext.neo4j.changelog.Neo4jChangelogHistoryService.initializeHistory(Neo4jChangelogHistoryService.java:490)
at liquibase.ext.neo4j.changelog.Neo4jChangelogHistoryService.init(Neo4jChangelogHistoryService.java:79)
at liquibase.command.core.helpers.DatabaseChangelogCommandStep.checkLiquibaseTables(DatabaseChangelogCommandStep.java:137)
at liquibase.command.core.helpers.DatabaseChangelogCommandStep.run(DatabaseChangelogCommandStep.java:87)
at liquibase.command.CommandScope.lambda$execute$6(CommandScope.java:253)
... 26 more
Suppressed: org.neo4j.driver.internal.util.ErrorUtil$InternalExceptionCause
at org.neo4j.driver.internal.util.ErrorUtil.newNeo4jError(ErrorUtil.java:82)
at org.neo4j.driver.internal.async.inbound.InboundMessageDispatcher.handleFailureMessage(InboundMessageDispatcher.java:107)
at org.neo4j.driver.internal.messaging.common.CommonMessageReader.unpackFailureMessage(CommonMessageReader.java:75)
at org.neo4j.driver.internal.messaging.common.CommonMessageReader.read(CommonMessageReader.java:53)
at org.neo4j.driver.internal.async.inbound.InboundMessageHandler.channelRead0(InboundMessageHandler.java:81)
at org.neo4j.driver.internal.async.inbound.InboundMessageHandler.channelRead0(InboundMessageHandler.java:37)
at org.neo4j.driver.internal.shaded.io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99)
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at org.neo4j.driver.internal.shaded.io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346)
at org.neo4j.driver.internal.shaded.io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318)
at org.neo4j.driver.internal.async.inbound.MessageDecoder.channelRead(MessageDecoder.java:42)
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at org.neo4j.driver.internal.shaded.io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346)
at org.neo4j.driver.internal.shaded.io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318)
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at org.neo4j.driver.internal.shaded.io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:289)
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at org.neo4j.driver.internal.shaded.io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1407)
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
at org.neo4j.driver.internal.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at org.neo4j.driver.internal.shaded.io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:918)
at org.neo4j.driver.internal.shaded.io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
at org.neo4j.driver.internal.shaded.io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)
at org.neo4j.driver.internal.shaded.io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
at org.neo4j.driver.internal.shaded.io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
at org.neo4j.driver.internal.shaded.io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
at org.neo4j.driver.internal.shaded.io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:994)
at org.neo4j.driver.internal.shaded.io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at org.neo4j.driver.internal.shaded.io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:840) Here is the full Bolt sequence:
You will need to reach out to DozerDB. |
@fbiville Ok, I'll try reaching out to Dozer DB |
Hi,
I've been trying to get this plugin to work with DozerDB without any luck. I get some kind of transaction error, compared to when running Neo4J enterprise edition which works well.
I've put together a proper reproducible example using Docker here: https://github.com/bompi88/liquibase-dozerdb. Instructions on how to run is in the README.md.
I'm not sure if I'm doing anything wrong here, or if DozerDB is handling transactions/connections differently. Of course DozerDB is still in alpha, but I would assume this to be working.
The text was updated successfully, but these errors were encountered: