neo4j-contrib / neo4j-apoc-procedures

Awesome Procedures On Cypher for Neo4j - codenamed "apoc"                     If you like it, please ★ above ⇧            
https://neo4j.com/labs/apoc
Apache License 2.0
1.7k stars 495 forks source link

neo4j 5.3.0 not compatible with apoc-core 5.3.0 #3432

Closed AnkurArohi closed 1 year ago

AnkurArohi commented 1 year ago

Guidelines

Please note that GitHub issues are only meant for bug reports/feature requests. If you have questions on how to use APOC, please ask on the Neo4j Discussion Forum instead of creating an issue here.

Expected Behavior (Mandatory)

Like the previous versions neo4j should start the DB

Actual Behavior (Mandatory)

Fails to start DB

Caused by: java.lang.NoSuchMethodError: 'void apoc.trigger.TriggerHandler.(org.neo4j.graphdb.GraphDatabaseService, org.neo4j.dbms.api.DatabaseManagementService, apoc.ApocConfig, org.neo4j.logging.Log, org.neo4j.kernel.api.procedure.GlobalProcedures, apoc.Pools, org.neo4j.scheduler.JobScheduler)' at apoc.CoreApocGlobalComponents.getServices(CoreApocGlobalComponents.java:25) ~[apoc-5.3.0-core.jar:5.3.0] at apoc.ApocExtensionFactory$ApocLifecycle.lambda$init$1(ApocExtensionFactory.java:84) ~[apoc-5.3.0-extended.jar:5.3.0] at apoc.ApocExtensionFactory$ApocLifecycle.withNonSystemDatabase(ApocExtensionFactory.java:76) ~[apoc-5.3.0-extended.jar:5.3.0] at apoc.ApocExtensionFactory$ApocLifecycle.init(ApocExtensionFactory.java:82) ~[apoc-5.3.0-extended.jar:5.3.0] at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.init(LifeSupport.java:323) ~[neo4j-common-5.3.0.jar:5.3.0] at org.neo4j.kernel.lifecycle.LifeSupport.init(LifeSupport.java:57) ~[neo4j-common-5.3.0.jar:5.3.0] at org.neo4j.kernel.extension.AbstractExtensions.init(AbstractExtensions.java:73) ~[neo4j-kernel-5.3.0.jar:5.3.0] at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.init(LifeSupport.java:323) ~[neo4j-common-5.3.0.jar:5.3.0] at org.neo4j.kernel.lifecycle.LifeSupport.init(LifeSupport.java:57) ~[neo4j-common-5.3.0.jar:5.3.0] at org.neo4j.kernel.database.Database.initializeExtensions(Database.java:678) ~[neo4j-kernel-5.3.0.jar:5.3.0] at org.neo4j.kernel.database.Database.specificInit(Database.java:356) ~[neo4j-kernel-5.3.0.jar:5.3.0] at org.neo4j.kernel.database.AbstractDatabase.init(AbstractDatabase.java:136) ~[neo4j-kernel-5.3.0.jar:5.3.0]

How to Reproduce the Problem

Simple Dataset (where it's possibile)

//Insert here a set of Cypher statements that helps us to reproduce the problem

Steps (Mandatory)

  1. The above conf provided
  2. Plugins installed cd /plugins/ apoc-5.3.0-core.jar apoc-5.3.0-extended.jar neosemantics-5.1.0.0.jar

Screenshots (where it's possibile)

Specifications (Mandatory)

config looks like this

neo4j.conf server.directories.data=/dbdata server.jvm.additional=-Dlog4j2.formatMsgNoLookups=true server.jvm.additional=-Dlog4j2.disable.jmx=true server.jvm.additional=-XX:+ExitOnOutOfMemoryError server.config.strict_validation.enabled=false

server.bolt.advertised_address=:7687 server.bolt.listen_address=:7687

server.memory.heap.initial_size=10g server.memory.heap.max_size=10g

server.default_listen_address=0.0.0.0 server.memory.pagecache.size=4g server.directories.plugins=/plugins server.directories.logs=/logs dbms.tx_log.rotation.retention_policy=false dbms.security.procedures.unrestricted=apoc.,algo. dbms.memory.pagecache.size=4g dbms.memory.off_heap.max_size=6900m dbms.memory.heap.max_size=9700m dbms.memory.heap.initial_size=9700m dbms.logs.default_format=JSON db.tx_log.rotation.retention_policy=false

Currently used versions

Versions

gem-neo4j commented 1 year ago

Hi there! Thanks for writing in, the extended APOC library had some release issues, we have since removed it from GitHub, are you able to try with 5.3.1 extended? (5.3.0 is fine for Neo4j and APOC Core still); https://github.com/neo4j-contrib/neo4j-apoc-procedures/releases/tag/5.3.1

AnkurArohi commented 1 year ago

@gem-neo4j Thanks for your reply, yes with 5.3.1 extended it works fine!

AnkurArohi commented 1 year ago

@gem-neo4j

I have a similar issue neo4j at start has unrecognized settings for BOLT port, but in the start log we see its correct.

09:21:24.963+0000 WARN Unrecognized setting. No declared setting with name: BOLT.PORT. 2023-01-31T09:21:24.967409662Z 2023-01-31 09:21:24.967+0000 WARN Unrecognized setting. No declared setting with name: HOST. 2023-01-31T09:21:24.976122045Z 2023-01-31 09:21:24.975+0000 INFO Starting... 2023-01-31T09:21:25.436466131Z 2023-01-31 09:21:25.436+0000 INFO This instance is ServerId{7806800d} (7806800d-be02-4da8-a158-16790a0d0a0b) 2023-01-31T09:21:25.601653623Z SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". 2023-01-31T09:21:25.601692701Z SLF4J: Defaulting to no-operation (NOP) logger implementation 2023-01-31T09:21:25.601701799Z SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 2023-01-31T09:21:26.077791281Z 2023-01-31 09:21:26.077+0000 INFO ======== Neo4j 5.3.0 ======== 2023-01-31T09:21:32.765271009Z 2023-01-31 09:21:32.764+0000 INFO Called db.clearQueryCaches(): Query cache already empty. 2023-01-31T09:21:32.843605326Z 2023-01-31 09:21:32.843+0000 INFO Bolt enabled on 0.0.0.0:7687. 2023-01-31T09:21:33.529137909Z 2023-01-31 09:21:33.528+0000 INFO Remote interface available at http://localhost:7474/ 2023-01-31T09:21:33.532216534Z 2023-01-31 09:21:33.531+0000 INFO id: 4CA96947A253006F4F39EB4F6B421DF97B315FC437A46ACBC10C1D726488DA9E 2023-01-31T09:21:33.532323414Z 2023-01-31 09:21:33.532+0000 INFO name: system 2023-01-31T09:21:33.532445562Z 2023-01-31 09:21:33.532+0000 INFO creationDate: 2023-01-31T09:21:26.745Z 2023-01-31T09:21:33.532571983Z 2023-01-31 09:21:33.532+0000 INFO Started.

gem-neo4j commented 1 year ago

I am not entirely sure on this one, as that is not my area (you may need to ask in a different place as this doesn't seem APOC related), but one thing to note is that a large proportion of our config settings were renamed in the 5.x series from the 4.x series, and I recommend you look at the naming to make sure they are correct. Here is the docs for 5.x ports config: https://neo4j.com/docs/operations-manual/5/configuration/ports/

AnkurArohi commented 1 year ago

@gem-neo4j

Thanks, yes thats why as you can see in the config the correct nomenclature is used. server.bolt.advertised_address=:7687 server.bolt.listen_address=:7687

Still I get this log, and also there are other WARN logs which refer to Failed to load ....

But it functions

Can you move this ticket to the right place please?

gem-neo4j commented 1 year ago

Hi again! I was not able to start a fresh 5.3 db with the config you pasted in the reproduction steps (different errors to those you provided). Can you post your entire neo4j.conf here? A warning like "WARN Unrecognized setting. No declared setting with name: BOLT.PORT" is saying that there is a line in your config file which is named BOLT.PORT.

AnkurArohi commented 1 year ago

server.directories.data=/dbdata server.jvm.additional=-Dlog4j2.formatMsgNoLookups=true server.jvm.additional=-Dlog4j2.disable.jmx=true server.jvm.additional=-XX:+ExitOnOutOfMemoryError server.directories.plugins=/plugins server.config.strict_validation.enabled=false

server.bolt.advertised_address=:7687 server.bolt.listen_address=:7687

dbms.security.procedures.unrestricted=algo.,apoc.

db.tx_log.rotation.retention_policy=false

server.memory.heap.initial_size=10g server.memory.heap.max_size=10g server.memory.pagecache.size=4g

AnkurArohi commented 1 year ago

env =

          env:
            - name: NEO4J_AUTH
              value: '{{ netztopo_ongdb_username }}/{{ netztopo_ongdb_password }}'
            - name: NEO4J_dbms_memory_heap_initial__size
              value: '{{ netztopo_initial_size }}'
            - name: NEO4J_dbms_memory_heap_max__size
              value: '{{ netztopo_max_size }}'
            - name: NEO4J_dbms_memory_pagecache_size
              value: '{{ netztopo_pagecache_size }}'
            - name: NEO4J_dbms_memory_off__heap_max__size
              value: '{{ netztopo_off_heap_max_size }}'
            - name: NEO4J_dbms_tx__log_rotation_retention__policy
              value: 'false'
            - name: NEO4J_dbms_security_procedures_unrestricted
              value: 'apoc.*,algo.*'
            # Supported since Neo4j 4.3. Will log a warning on startup with older version.
            - name: NEO4J_dbms_logs_default__format
              value: 'JSON'
          resources:
gem-neo4j commented 1 year ago

I see you're using neosemantics-5.1.0.0.jar, I understand there is no 5.3 available, but versions of plugins aren't usually compatible between different minor versions (for example you cannot use Neo4j 5.3 with APOC 5.1), have you tried removing that plugin, or using 5.1 as the version for everything else? :)

AnkurArohi commented 1 year ago

Yes removing that plugin does not help either.

gem-neo4j commented 1 year ago

Okay, we haven't been able to reproduce your issue, if you can give exact reproduction steps that might help :) But just starting a new 5.3 db with those config params and APOC installed doesn't cause those warnings for me.

ncordon commented 1 year ago

@AnkurArohi do you have any more insights about this? Otherwise we will close the issue as it does not seem apoc specific

AnkurArohi commented 1 year ago

ok, we can close this, thanks