DozerDB / dozerdb-plugin

Free and Open Source Plugin that adds enterprise features to Neo4j Community Distributions
GNU General Public License v3.0
42 stars 3 forks source link

OpenGDS Compiled version for neo4j 5.22.0 #32

Open muddassir-lateef opened 15 hours ago

muddassir-lateef commented 15 hours ago

As mentioned in the documentation of dozer db:

If you would like to use the newest 2.8 alpha version of the graph data science plugin (called OpenGDS), you can download the version we compiled using the link below. It should work for Neo4j Core 5.16 and up. Download OpenGDS 2.8.0-alpha01 and place it in your $HOME/neo4j/plugins folder. The graph data science plugin distributions available on Neo4j's website, through their GitHub repository, or via --env NEO4J_PLUGINS are only compatible with the Neo4j Enterprise Edition. See: DozerDB Graph Data Science.

I tried to use compiled version 2.8.0 mentioned here for neo4j 5.22.0 (i assume since the documentation is old it doesnot support the newer versions) and it gave me this error:

Caused by: java.lang.LinkageError: GDS 2.8.0-alpha01 is not compatible with Neo4j version: 5.22.0
    at org.neo4j.gds.compat.ProxyUtil$ProxyInfo.unsupported(ProxyUtil.java:247) ~[open-gds-2.8.0-alpha01.jar:?]
    at org.neo4j.gds.compat.ProxyUtil.findProxy(ProxyUtil.java:54) ~[open-gds-2.8.0-alpha01.jar:?]
    at org.neo4j.gds.compat.Neo4jProxy.<clinit>(Neo4jProxy.java:114) ~[open-gds-2.8.0-alpha01.jar:?]
    at org.neo4j.gds.procedures.integration.LogAccessor.getLog(LogAccessor.java:33) ~[open-gds-2.8.0-alpha01.jar:?]
    at org.neo4j.gds.extension.OpenGraphDataScienceExtension.newInstance(OpenGraphDataScienceExtension.java:52) ~[open-gds-2.8.0-alpha01.jar:?]
    at org.neo4j.gds.extension.OpenGraphDataScienceExtension.newInstance(OpenGraphDataScienceExtension.java:43) ~[open-gds-2.8.0-alpha01.jar:?]
    at org.neo4j.kernel.extension.AbstractExtensions.newInstance(AbstractExtensions.java:124) ~[neo4j-kernel-5.22.0.jar:5.22.0]
    at org.neo4j.kernel.extension.AbstractExtensions.init(AbstractExtensions.java:62) ~[neo4j-kernel-5.22.0.jar:5.22.0]
    at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.init(LifeSupport.java:317) ~[neo4j-common-5.22.0.jar:5.22.0]
    at org.neo4j.kernel.lifecycle.LifeSupport.init(LifeSupport.java:56) ~[neo4j-common-5.22.0.jar:5.22.0]
    at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:85) ~[neo4j-common-5.22.0.jar:5.22.0]
    at org.neo4j.graphdb.facade.DatabaseManagementServiceFactory.startDatabaseServer(DatabaseManagementServiceFactory.java:271) ~[neo4j-5.22.0.jar:5.22.0]
    ... 5 more

and the compatible gds version from neo4j also doesnot work as mentioned in the documentation . For ref when i try to use that it gives me the following error:

Caused by: java.lang.ClassNotFoundException: com.neo4j.metrics.MetricsManager
    at jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[?:?]
    at jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) ~[?:?]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[?:?]
    at com.neo4j.gds.metrics.GdsMetricsExtension$GdsMetricLifecycleAdapter.getMetricsRegister(GdsMetricsExtension.java:105) ~[neo4j-graph-data-science-2.10.1.jar:?]
    at com.neo4j.gds.metrics.GdsMetricsExtension$GdsMetricLifecycleAdapter.init(GdsMetricsExtension.java:78) ~[neo4j-graph-data-science-2.10.1.jar:?]
    at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.init(LifeSupport.java:317) ~[neo4j-common-5.22.0.jar:5.22.0]
    at org.neo4j.kernel.lifecycle.LifeSupport.init(LifeSupport.java:56) ~[neo4j-common-5.22.0.jar:5.22.0]
    at org.neo4j.kernel.extension.AbstractExtensions.init(AbstractExtensions.java:72) ~[neo4j-kernel-5.22.0.jar:5.22.0]
    at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.init(LifeSupport.java:317) ~[neo4j-common-5.22.0.jar:5.22.0]
    at org.neo4j.kernel.lifecycle.LifeSupport.init(LifeSupport.java:56) ~[neo4j-common-5.22.0.jar:5.22.0]
    at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:85) ~[neo4j-common-5.22.0.jar:5.22.0]
    at org.neo4j.graphdb.facade.DatabaseManagementServiceFactory.startDatabaseServer(DatabaseManagementServiceFactory.java:271) ~[neo4j-5.22.0.jar:5.22.0]
    ... 5 more

I am running it with the following docker run command:

docker run -d \
    --memory=0\
    -p7474:7474 -p7687:7687 \
    -v $HOME/neo4j/data:/data \
    -v $HOME/neo4j/logs:/logs \
    -v $HOME/neo4j/import:/var/lib/neo4j/import \
    -v $HOME/neo4j/plugins:/plugins \
    --env NEO4J_AUTH=${NEO4J_USER}/${NEO4J_PASSWORD} \
    --env NEO4J_PLUGINS='["apoc"]' \
    --env NEO4J_apoc_export_file_enabled=true \
    --env NEO4J_apoc_import_file_enabled=true \
    --env NEO4J_dbms_security_procedures_unrestricted='*' \
    graphstack/dozerdb:5.22.0.0-alpha.1

The plugins directory for now only has apoc and the gds plugin.

Any help will be highly appreciated.

jmsuhy commented 9 hours ago

It sounds like we may need to add building the OpenGDS library to our build script for each release. We will start that with the upcoming 5.24.1 release.

jmsuhy commented 9 hours ago

I just noticed that Neo4j now has release assets under the opengds project. If they work, there is no need for us to compile this anymore.

Can you please verify if the newest version works with your DozerDb version? We will test on the 5.24.1 release.

https://github.com/neo4j/graph-data-science/releases

jmsuhy commented 9 hours ago
<!DOCTYPE html>Pulled from Neo4j GDS GitHub README.md Table 1. Compatibility matrix (italicized version is in development) GDS version Neo4j version Java Version
GDS 2.12.x (preview) Neo4j 5.25.0 Java 21 & Java 17

Neo4j 5.24.0 Neo4j 5.23.0 GDS 2.11.x | Neo4j 5.24.0 | Java 21 & Java 17 Neo4j 5.23.0 GDS 2.10.x | Neo4j 5.24.0 | Java 21 & Java 17 Neo4j 5.23.0 Neo4j 5.22.0 GDS 2.9.x | Neo4j 5.23.0 | Java 21 & Java 17 Neo4j 5.22.0 Neo4j 5.21.0, 5.21.1, 5.21.2 Neo4j 5.20.0 Neo4j 5.19.0 Neo4j 5.18.0, 5.18.1 Neo4j 5.17.0 GDS 2.8.x | Neo4j 5.22.0 | Java 21 & Java 17 Neo4j 5.21.0, 5.21.1, 5.21.2 Neo4j 5.20.0 Neo4j 5.19.0 Neo4j 5.18.0, 5.18.1 Neo4j 5.17.0 Neo4j 5.16.0 GDS 2.7.x | Neo4j 5.21.0, 5.21.1, 5.21.2 | Java 21 & Java 17 Neo4j 5.20.0 Neo4j 5.19.0 Neo4j 5.18.0, 5.18.1 Neo4j 5.17.0 Neo4j 5.16.0 GDS 2.6.x | Neo4j 5.20.0 | Java 21 & Java 17 Neo4j 5.19.0 Neo4j 5.18.0, 5.18.1 Neo4j 5.17.0 Neo4j 5.16.0 Neo4j 5.15.0 Neo4j 5.14.0 Neo4j 4.4.9 - 4.4.37 | Java 11