neo4j-contrib / spatial

Neo4j Spatial is a library of utilities for Neo4j that faciliates the enabling of spatial operations on data. In particular you can add spatial indexes to already located data, and perform spatial operations on the data like searching for data within specified regions or within a specified distance of a point of interest. In addition classes are provided to expose the data to geotools and thereby to geotools enabled applications like geoserver and uDig.
http://neo4j-contrib.github.io/spatial
Other
777 stars 191 forks source link

Publish a new version which is compatible with Neo4j 4.3 #382

Open ggrossetie opened 3 years ago

ggrossetie commented 3 years ago

Currently, the latest version 0.28.0-neo4j-4.2.3 published is not compatible with the latest version of Neo4j 4.3:

Here's the exception thrown when Neo4j server is starting:

java.lang.RuntimeException: Error starting Neo4j database server at /data/databases
    at org.neo4j.graphdb.facade.DatabaseManagementServiceFactory.startDatabaseServer(DatabaseManagementServiceFactory.java:214) ~[neo4j-4.3.1.jar:4.3.1]
    at org.neo4j.graphdb.facade.DatabaseManagementServiceFactory.build(DatabaseManagementServiceFactory.java:170) ~[neo4j-4.3.1.jar:4.3.1]
    at org.neo4j.server.CommunityBootstrapper.createNeo(CommunityBootstrapper.java:36) ~[neo4j-4.3.1.jar:4.3.1]
    at org.neo4j.server.NeoBootstrapper.start(NeoBootstrapper.java:134) [neo4j-4.3.1.jar:4.3.1]
    at org.neo4j.server.NeoBootstrapper.start(NeoBootstrapper.java:90) [neo4j-4.3.1.jar:4.3.1]
    at org.neo4j.server.CommunityEntryPoint.main(CommunityEntryPoint.java:34) [neo4j-4.3.1.jar:4.3.1]
Caused by: org.neo4j.kernel.lifecycle.LifecycleException: Component 'apoc.ApocConfig@79f5a6ed' failed to initialize. Please see the attached cause exception "'org.apache.commons.text.lookup.StringLookup org.apache.commons.text.lookup.StringLookupFactory.dnsStringLookup()'".
    at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.init(LifeSupport.java:424) ~[neo4j-common-4.3.1.jar:4.3.1]
    at org.neo4j.kernel.lifecycle.LifeSupport.init(LifeSupport.java:65) ~[neo4j-common-4.3.1.jar:4.3.1]
    at org.neo4j.kernel.extension.AbstractExtensions.init(AbstractExtensions.java:76) ~[neo4j-kernel-4.3.1.jar:4.3.1]
    at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.init(LifeSupport.java:403) ~[neo4j-common-4.3.1.jar:4.3.1]
    at org.neo4j.kernel.lifecycle.LifeSupport.init(LifeSupport.java:65) ~[neo4j-common-4.3.1.jar:4.3.1]
    at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:101) ~[neo4j-common-4.3.1.jar:4.3.1]
    at org.neo4j.graphdb.facade.DatabaseManagementServiceFactory.startDatabaseServer(DatabaseManagementServiceFactory.java:205) ~[neo4j-4.3.1.jar:4.3.1]
    ... 5 more
Caused by: java.lang.NoSuchMethodError: 'org.apache.commons.text.lookup.StringLookup org.apache.commons.text.lookup.StringLookupFactory.dnsStringLookup()'
    at org.apache.commons.configuration2.interpol.DefaultLookups.<clinit>(DefaultLookups.java:97) ~[apoc.jar:4.3.0.0]
    at org.apache.commons.configuration2.interpol.ConfigurationInterpolator.<clinit>(ConfigurationInterpolator.java:111) ~[apoc.jar:4.3.0.0]
    at org.apache.commons.configuration2.convert.DefaultConversionHandler.<clinit>(DefaultConversionHandler.java:72) ~[apoc.jar:4.3.0.0]
    at org.apache.commons.configuration2.beanutils.DefaultBeanFactory.<init>(DefaultBeanFactory.java:84) ~[apoc.jar:4.3.0.0]
    at org.apache.commons.configuration2.beanutils.DefaultBeanFactory.<init>(DefaultBeanFactory.java:71) ~[apoc.jar:4.3.0.0]
    at org.apache.commons.configuration2.beanutils.DefaultBeanFactory.<clinit>(DefaultBeanFactory.java:56) ~[apoc.jar:4.3.0.0]
    at org.apache.commons.configuration2.beanutils.BeanHelper.<init>(BeanHelper.java:118) ~[apoc.jar:4.3.0.0]
    at org.apache.commons.configuration2.beanutils.BeanHelper.<init>(BeanHelper.java:106) ~[apoc.jar:4.3.0.0]
    at org.apache.commons.configuration2.beanutils.BeanHelper.<clinit>(BeanHelper.java:80) ~[apoc.jar:4.3.0.0]
    at java.lang.Class.forName0(Native Method) ~[?:?]
    at java.lang.Class.forName(Class.java:315) ~[?:?]
    at com.sun.proxy.$Proxy46.<clinit>(Unknown Source) ~[?:?]
    at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?]
    at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:?]
    at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?]
    at java.lang.reflect.Constructor.newInstance(Constructor.java:490) ~[?:?]
    at java.lang.reflect.Proxy.newProxyInstance(Proxy.java:1022) ~[?:?]
    at java.lang.reflect.Proxy.newProxyInstance(Proxy.java:1008) ~[?:?]
    at org.apache.commons.configuration2.builder.fluent.Parameters.createParametersProxy(Parameters.java:306) ~[apoc.jar:4.3.0.0]
    at org.apache.commons.configuration2.builder.fluent.Parameters.fileBased(Parameters.java:185) ~[apoc.jar:4.3.0.0]
    at apoc.ApocConfig.loadConfiguration(ApocConfig.java:175) ~[apoc.jar:4.3.0.0]
    at apoc.ApocConfig.init(ApocConfig.java:136) ~[apoc.jar:4.3.0.0]
    at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.init(LifeSupport.java:403) ~[neo4j-common-4.3.1.jar:4.3.1]
    at org.neo4j.kernel.lifecycle.LifeSupport.init(LifeSupport.java:65) ~[neo4j-common-4.3.1.jar:4.3.1]
    at org.neo4j.kernel.extension.AbstractExtensions.init(AbstractExtensions.java:76) ~[neo4j-kernel-4.3.1.jar:4.3.1]
    at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.init(LifeSupport.java:403) ~[neo4j-common-4.3.1.jar:4.3.1]
    at org.neo4j.kernel.lifecycle.LifeSupport.init(LifeSupport.java:65) ~[neo4j-common-4.3.1.jar:4.3.1]
    at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:101) ~[neo4j-common-4.3.1.jar:4.3.1]
    at org.neo4j.graphdb.facade.DatabaseManagementServiceFactory.startDatabaseServer(DatabaseManagementServiceFactory.java:205) ~[neo4j-4.3.1.jar:4.3.1]
    ... 5 more

You can reproduce this issue using Docker:

Prepare the plugins directory

$ mkdir plugins
$ cd plugins
$ wget -q https://github.com/neo4j-contrib/neo4j-apoc-procedures/releases/download/4.3.0.0/apoc-nlp-dependencies-4.3.0.0.jar
$ wget -q https://github.com/neo4j-contrib/neo4j-apoc-procedures/releases/download/4.3.0.0/apoc-4.3.0.0-all.jar -O apoc.jar
$ wget -q https://github.com/neo4j-contrib/spatial/releases/download/0.28.0-neo4j-4.2.3/neo4j-spatial-0.28.0-neo4j-4.2.3-server-plugin.jar -O spatial.jar
$ cd -

Note: You should add both apoc.jar and apoc-nlp-dependencies-4.3.0.0.jar in order to trigger this exception. You should also use the same naming in order to load jar in the same order.

Run neo4j 4.3 using a the local plugins directory

$ docker run --rm -v "$(pwd)/plugins:/plugins" --env NEO4J_ACCEPT_LICENSE_AGREEMENT='yes' neo4j:4.3
2021-06-25 09:49:44.575+0000 INFO  Starting...
2021-06-25 09:49:46.474+0000 INFO  ======== Neo4j 4.3.1 ========
2021-06-25 09:49:46.572+0000 ERROR Failed to start Neo4j on dbms.connector.http.listen_address, a socket address. If missing port or hostname it is acquired from dbms.default_listen_address.
java.lang.RuntimeException: Error starting Neo4j database server at /data/databases
    at org.neo4j.graphdb.facade.DatabaseManagementServiceFactory.startDatabaseServer(DatabaseManagementServiceFactory.java:214) ~[neo4j-4.3.1.jar:4.3.1]
    at org.neo4j.graphdb.facade.DatabaseManagementServiceFactory.build(DatabaseManagementServiceFactory.java:170) ~[neo4j-4.3.1.jar:4.3.1]
    at org.neo4j.server.CommunityBootstrapper.createNeo(CommunityBootstrapper.java:36) ~[neo4j-4.3.1.jar:4.3.1]
    at org.neo4j.server.NeoBootstrapper.start(NeoBootstrapper.java:134) [neo4j-4.3.1.jar:4.3.1]
    at org.neo4j.server.NeoBootstrapper.start(NeoBootstrapper.java:90) [neo4j-4.3.1.jar:4.3.1]
    at org.neo4j.server.CommunityEntryPoint.main(CommunityEntryPoint.java:34) [neo4j-4.3.1.jar:4.3.1]
Caused by: org.neo4j.kernel.lifecycle.LifecycleException: Component 'apoc.ApocConfig@661e279d' failed to initialize. Please see the attached cause exception "'org.apache.commons.text.lookup.StringLookup org.apache.commons.text.lookup.StringLookupFactory.dnsStringLookup()'".
    at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.init(LifeSupport.java:424) ~[neo4j-common-4.3.1.jar:4.3.1]
    at org.neo4j.kernel.lifecycle.LifeSupport.init(LifeSupport.java:65) ~[neo4j-common-4.3.1.jar:4.3.1]
    at org.neo4j.kernel.extension.AbstractExtensions.init(AbstractExtensions.java:76) ~[neo4j-kernel-4.3.1.jar:4.3.1]
    at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.init(LifeSupport.java:403) ~[neo4j-common-4.3.1.jar:4.3.1]
    at org.neo4j.kernel.lifecycle.LifeSupport.init(LifeSupport.java:65) ~[neo4j-common-4.3.1.jar:4.3.1]
    at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:101) ~[neo4j-common-4.3.1.jar:4.3.1]
    at org.neo4j.graphdb.facade.DatabaseManagementServiceFactory.startDatabaseServer(DatabaseManagementServiceFactory.java:205) ~[neo4j-4.3.1.jar:4.3.1]
    ... 5 more
Caused by: java.lang.NoSuchMethodError: 'org.apache.commons.text.lookup.StringLookup org.apache.commons.text.lookup.StringLookupFactory.dnsStringLookup()'
    at org.apache.commons.configuration2.interpol.DefaultLookups.<clinit>(DefaultLookups.java:97) ~[apoc.jar:4.3.0.0]
    at org.apache.commons.configuration2.interpol.ConfigurationInterpolator.<clinit>(ConfigurationInterpolator.java:111) ~[apoc.jar:4.3.0.0]
    at org.apache.commons.configuration2.convert.DefaultConversionHandler.<clinit>(DefaultConversionHandler.java:72) ~[apoc.jar:4.3.0.0]
    at org.apache.commons.configuration2.beanutils.DefaultBeanFactory.<init>(DefaultBeanFactory.java:84) ~[apoc.jar:4.3.0.0]
    at org.apache.commons.configuration2.beanutils.DefaultBeanFactory.<init>(DefaultBeanFactory.java:71) ~[apoc.jar:4.3.0.0]
    at org.apache.commons.configuration2.beanutils.DefaultBeanFactory.<clinit>(DefaultBeanFactory.java:56) ~[apoc.jar:4.3.0.0]
    at org.apache.commons.configuration2.beanutils.BeanHelper.<init>(BeanHelper.java:118) ~[apoc.jar:4.3.0.0]
    at org.apache.commons.configuration2.beanutils.BeanHelper.<init>(BeanHelper.java:106) ~[apoc.jar:4.3.0.0]
    at org.apache.commons.configuration2.beanutils.BeanHelper.<clinit>(BeanHelper.java:80) ~[apoc.jar:4.3.0.0]
    at java.lang.Class.forName0(Native Method) ~[?:?]
    at java.lang.Class.forName(Class.java:315) ~[?:?]
    at com.sun.proxy.$Proxy43.<clinit>(Unknown Source) ~[?:?]
    at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?]
    at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:?]
    at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?]
    at java.lang.reflect.Constructor.newInstance(Constructor.java:490) ~[?:?]
    at java.lang.reflect.Proxy.newProxyInstance(Proxy.java:1022) ~[?:?]
    at java.lang.reflect.Proxy.newProxyInstance(Proxy.java:1008) ~[?:?]
    at org.apache.commons.configuration2.builder.fluent.Parameters.createParametersProxy(Parameters.java:306) ~[apoc.jar:4.3.0.0]
    at org.apache.commons.configuration2.builder.fluent.Parameters.fileBased(Parameters.java:185) ~[apoc.jar:4.3.0.0]
    at apoc.ApocConfig.loadConfiguration(ApocConfig.java:175) ~[apoc.jar:4.3.0.0]
    at apoc.ApocConfig.init(ApocConfig.java:136) ~[apoc.jar:4.3.0.0]
    at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.init(LifeSupport.java:403) ~[neo4j-common-4.3.1.jar:4.3.1]
    at org.neo4j.kernel.lifecycle.LifeSupport.init(LifeSupport.java:65) ~[neo4j-common-4.3.1.jar:4.3.1]
    at org.neo4j.kernel.extension.AbstractExtensions.init(AbstractExtensions.java:76) ~[neo4j-kernel-4.3.1.jar:4.3.1]
    at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.init(LifeSupport.java:403) ~[neo4j-common-4.3.1.jar:4.3.1]
    at org.neo4j.kernel.lifecycle.LifeSupport.init(LifeSupport.java:65) ~[neo4j-common-4.3.1.jar:4.3.1]
    at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:101) ~[neo4j-common-4.3.1.jar:4.3.1]
    at org.neo4j.graphdb.facade.DatabaseManagementServiceFactory.startDatabaseServer(DatabaseManagementServiceFactory.java:205) ~[neo4j-4.3.1.jar:4.3.1]
    ... 5 more
2021-06-25 09:49:46.574+0000 INFO  Neo4j Server shutdown initiated by request
2021-06-25 09:49:46.574+0000 INFO  Stopped.
ameyabp commented 2 years ago

I am facing the same issue. neo4j-spatial plugin causes the server to crash if used along with apoc plugin. If neo4j-spatial is used alone, there are no issues