neo4j / docker-neo4j

Docker Images for the Neo4j Graph Database
Apache License 2.0
336 stars 171 forks source link

ERROR: No compatible "graph-data-science" plugin found for Neo4j 5.13.0. #478

Open Podbrushkin opened 12 months ago

Podbrushkin commented 12 months ago

This doc page provides this command:

docker run -it --rm \
  --publish=7474:7474 --publish=7687:7687 \
  --user="$(id -u):$(id -g)" \
  -e NEO4J_AUTH=none \
  --env NEO4J_PLUGINS='["graph-data-science"]' \
  neo4j:latest

Expected behavior

Mounted image with neo4j and graph-data-science plugin enabled.

Actual behavior

Mounted image with neo4j but with this output instead of graph-data-science plugin:

Fetching versions.json for Plugin 'graph-data-science' from https://graphdatascience.ninja/versions.json
ERROR: No compatible "graph-data-science" plugin found for Neo4j 5.13.0.
This can happen with the newest Neo4j versions when a compatible plugin has not yet been released.
You can either use an older version of Neo4j, or continue without graph-data-science.
Neo4j will continue to start, but "graph-data-science" will not be loaded.
Applying default values for plugin graph-data-science to neo4j.conf

List of supported Neo4j versions contains 5.13.0, obviously compatible plugin has already been released.

Changing Neo4j version to older one doesn't help.

jennyowen commented 11 months ago

This is very strange. I was able to reproduce the problem the first time I ran the code. Then after a few retries it just started working??

@Podbrushkin what's the output if you add -e NEO4J_DEBUG=yes to the run command?

Podbrushkin commented 11 months ago

Thank you for your attention, this is output if given arg is added to command:

DEBUGGING ENABLED
Running as user 1000:1000 inside neo4j image
checking /logs is writable
checking /data is writable
checking /data/databases is writable
checking /data/transactions is writable
One or more NEO4J_PLUGINS have been requested.
Checking requested plugins are known and can be installed.
Plugin graph-data-science has been requested
graph-data-science must be downloaded.
Will read graph-data-science versions.json from https://graphdatascience.ninja/versions.json
Fetching versions.json for Plugin 'graph-data-science' from https://graphdatascience.ninja/versions.json
ERROR: 'https://graphdatascience.ninja/versions.json' does not contain an entry for 5.13.0
ERROR: No compatible "graph-data-science" plugin found for Neo4j 5.13.0.
This can happen with the newest Neo4j versions when a compatible plugin has not yet been released.
You can either use an older version of Neo4j, or continue without graph-data-science.
Neo4j will continue to start, but "graph-data-science" will not be loaded.
Applying plugin specific configurations.
Applying default values for plugin graph-data-science to neo4j.conf
graph-data-science requires setting dbms.security.procedures.unrestricted=gds.*
dbms.security.procedures.unrestricted=gds.* has been added to the configuration file.
Setting docker specific configuration overrides
Appended server.memory.pagecache.size=512M to /var/lib/neo4j/conf/neo4j.conf
Appended server.default_listen_address=0.0.0.0 to /var/lib/neo4j/conf/neo4j.conf
Applying configuration settings that have been set using environment variables.
Removing existing setting for server.directories.logs in /var/lib/neo4j/conf/neo4j.conf
Appended server.directories.logs=/logs to /var/lib/neo4j/conf/neo4j.conf
Authentication is requested to be unset
Removing existing setting for dbms.security.auth_enabled in /var/lib/neo4j/conf/neo4j.conf
Appended dbms.security.auth_enabled=false to /var/lib/neo4j/conf/neo4j.conf
getting full neo4j run command
exec /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-12-05 12:03:55.765+0000 INFO  Logging config in use: File '/var/lib/neo4j/conf/user-logs.xml'
2023-12-05 12:03:55.785+0000 INFO  Starting...
2023-12-05 12:03:56.515+0000 INFO  This instance is ServerId{10035b22} (10035b22-fe8d-4a16-a274-8ceb77daa6b9)
2023-12-05 12:03:57.363+0000 INFO  ======== Neo4j 5.13.0 ========
2023-12-05 12:03:59.125+0000 INFO  Bolt enabled on 0.0.0.0:7687.
2023-12-05 12:03:59.747+0000 INFO  HTTP enabled on 0.0.0.0:7474.
2023-12-05 12:03:59.748+0000 INFO  Remote interface available at http://localhost:7474/
2023-12-05 12:03:59.750+0000 INFO  id: 2DD23976E89FF9D5451DE33AA236B08976AE31D624CC585C2CD4C797C2E7CD74
2023-12-05 12:03:59.750+0000 INFO  name: system
2023-12-05 12:03:59.751+0000 INFO  creationDate: 2023-12-05T12:03:58.078Z
2023-12-05 12:03:59.751+0000 INFO  Started.
burqen commented 4 months ago

Hi @jennyowen :) I have a similar problem using podman.

podman container run --restart no \
    -p 7474:7474 -p 7687:7687 \
    --env NEO4J_AUTH=neo4j/mypassword \
    --log-level=debug \
    -v=./data:/data:Z -v=./logs:/logs:Z \
    --name neo4j \
    -d --userns=keep-id \
    --env NEO4J_PLUGINS='["graph-data-science"]' \
    neo4j:5.19.0-community-ubi9

The container is successfully created but no access to graph data science plugin.

$ podman logs neo4j 
Fetching versions.json for Plugin 'graph-data-science' from https://graphdatascience.ninja/versions.json
ERROR: No compatible "graph-data-science" plugin found for Neo4j 5.19.0 community.
This can happen with the newest Neo4j versions when a compatible plugin has not yet been released.
You can either use an older version of Neo4j, or continue without graph-data-science.
Neo4j will continue to start, but "graph-data-science" will not be loaded.
Applying default values for plugin graph-data-science to neo4j.conf
Changed password for user 'neo4j'. IMPORTANT: this change will only take effect if performed before the database is started for the first time.
2024-07-01 09:39:51.955+0000 INFO  Logging config in use: File '/var/lib/neo4j/conf/user-logs.xml'
2024-07-01 09:39:51.969+0000 INFO  Starting...
2024-07-01 09:39:52.658+0000 INFO  This instance is ServerId{dd07ae4d} (dd07ae4d-a093-4752-9e82-c12d16ef64da)
2024-07-01 09:39:53.374+0000 INFO  ======== Neo4j 5.19.0 ========
2024-07-01 09:39:54.504+0000 INFO  Bolt enabled on 0.0.0.0:7687.
2024-07-01 09:39:55.010+0000 INFO  HTTP enabled on 0.0.0.0:7474.
2024-07-01 09:39:55.011+0000 INFO  Remote interface available at http://localhost:7474/
2024-07-01 09:39:55.013+0000 INFO  id: 89441CF85A00B8260C0F6E8680D0932C3C42D9E32E05BF5D1BF647DE292D2358
2024-07-01 09:39:55.013+0000 INFO  name: system
2024-07-01 09:39:55.014+0000 INFO  creationDate: 2024-06-13T10:40:59.736Z
2024-07-01 09:39:55.014+0000 INFO  Started.

I see that my logs reference 5.19.0 community specifically while https://graphdatascience.ninja/versions.json reference only 5.19.0. Could that be the problem and if so is there a way to deal with that?

jennyowen commented 4 months ago

hi @burqen ! Again I haven't been able to reproduce the problem. It was raised recently that if the versions.json can't be downloaded by the container, then it throws the same error about plugin not having a compatible release. I made a bug fix here https://github.com/neo4j/docker-neo4j/pull/497 but it only got fixed in 5.21.

So it could be that, since the problem doesn't reproduce reliably?

burqen commented 4 months ago

Thanks @jennyowen :) I will look into if there are any access problems on the network where I am.

burqen commented 4 months ago

Hi again @jennyowen So, the server sits in a secure network without internet access. Is there a way to tell the container to pick up the .jar locally instead? If so I can upload the .jar manually to the server.

jennyowen commented 4 months ago

Hi @burqen of course! You just need to put all your plugins into a folder then mount it to /plugins on the container. There's documentation about it here: https://neo4j.com/docs/operations-manual/current/docker/plugins/

burqen commented 4 months ago

Beautiful @jennyowen , works like a charm! 🙏