Open studyVersion opened 1 year ago
It sounds like docker for windows isn't loading the GDS plugin properly.
Can you run the same run command with -e NEO4J_DEBUG=yes
added and send the output from the startup attempt on docker for windows?
Docker for windows/mac runs in a virtual machine and that can introduce weird runtime conditions.
@jennyowen Thank you for the reply here is the output:
Changed password for user 'neo4j'. IMPORTANT: this change will only take effect if performed before the database is started for the first time. getting full neo4j run command exec gosu neo4j:neo4j /opt/java/openjdk/bin/java -cp /var/lib/neo4j/plugins/:/var/lib/neo4j/conf/:/var/lib/neo4j/lib/* -XX:+UseG1GC -XX:-OmitStackTraceInFastThrow -XX:+AlwaysPreTouch -XX:+UnlockExperimentalVMOptions -XX:+TrustFinalNonStaticFields -XX:+DisableExplicitGC -Djdk.nio.maxCachedBufferSize=1024 -Dio.netty.tryReflectionSetAccessible=true -Djdk.tls.ephemeralDHKeySize=2048 -Djdk.tls.rejectClientInitiatedRenegotiation=true -XX:FlightRecorderOptions=stackdepth=256 -XX:+UnlockDiagnosticVMOptions -XX:+DebugNonSafepoints --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED -Dlog4j2.disable.jmx=true -Dfile.encoding=UTF-8 org.neo4j.server.CommunityEntryPoint --home-dir=/var/lib/neo4j --config-dir=/var/lib/neo4j/conf --console-mode 2023-03-03 11:27:10.227+0000 INFO Starting... 2023-03-03 11:27:11.221+0000 INFO This instance is ServerId{b4c9d072} (b4c9d072-5687-455e-b65a-cb1c07129304) 2023-03-03 11:27:12.574+0000 INFO ======== Neo4j 5.5.0 ======== 2023-03-03 11:27:15.371+0000 INFO Bolt enabled on 0.0.0.0:7687. 2023-03-03 11:27:16.485+0000 INFO Remote interface available at http://localhost:7474/ 2023-03-03 11:27:16.490+0000 INFO id: E2436B0B26E317A03E630ED87D849A835173CF38AF733E1D22AB7833908DEE0F 2023-03-03 11:27:16.490+0000 INFO name: system 2023-03-03 11:27:16.491+0000 INFO creationDate: 2023-03-03T11:27:13.478Z 2023-03-03 11:27:16.491+0000 INFO Started.
Hmm it looks like it's not even trying to load the plugin. It just gives the error parse error: Invalid numeric literal at line 1, column 20
where the plugin should be loaded. When I tried reproducing the problem on windows, it all worked as expected.
Are you sure you're properly typing out NEO4J_PLUGINS='["graph-data-science"]'
and that windows (or your text editor?) isn't introducing weird double quotes? It could be a copy and paste issue.
Just a quick update on my experience with the plugin installation process. Uploading the plugin directly from commands is completely out of the question for now on Windows. I used the following Docker command:
docker run --name testneo4j -p 7474:7474 -p 7687:7687 -v C:\\Users\\YOUR_NAME\\Desktop\\neo4j\\data:/data -v C:\\Users\\YOUR_NAME\\Desktop\\neo4j\\plugins:/plugins -e NEO4J_AUTH=neo4j/12345678 --env NEO4J_PLUGINS='["graph-data-science"]' -d neo4j:latest
While this allowed me to manually create a folder for the plugin i still had to download and paste the .jar file into the plugin directory and finally it worked.
Now the problem is that i encountered an issue when attempting to create a graph using the CALL gds.graph.project() query. Despite trying different variations of the dbms.security.procedures.unrestricted setting, such as dbms.security.procedures.unrestricted=gds.graph.exists
and gds.*
mounting it to the docker command and manually changing the setting on the neo4j.conf file I consistently received the following error message:
gds.graph.project is unavailable because it is sandboxed and has dependencies outside of the sandbox. Sandboxing is controlled by the dbms.security.procedures.unrestricted setting. Only unrestrict procedures you can trust with access to database internals.
Based on this experience, I believe this is a bug that needs to be addressed. I wanted to bring this to your attention in the hopes that it can be resolved soon. Thank you for your attention to this matter.
@studyVersion - try adding this to your docker run --env=NEO4J_dbms_security_procedures_unrestricted="gds.*"
should do the trick
I'm running a Neo4j container with the GDS library installed using the following command:
docker run --name testneo4j -p 7474:7474 -p 7687:7687 -v /path/to/neo4j/data:/data -e NEO4J_AUTH=neo4j/12345678 --env NEO4J_PLUGINS='["graph-data-science"]' -d neo4j:latest
On Linux, the query RETURN gds.version() works fine, indicating that the library is installed properly. However, when I run the same query on Windows 11, I get the following error:
Neo.ClientError.Statement.SyntaxError Unknown function 'gds.version' (line 1, column 8 (offset: 7)) "EXPLAIN return gds.version()" ^
I'd like to avoid using a virtual machine and run the container on my localhost instead. Does anyone have an idea what's causing this issue and how to resolve it?