Graphs for Everyone

Overview

Neo4j: Graphs for Everyone

Neo4j is the world’s leading Graph Database. It is a high performance graph store with all the features expected of a mature and robust database, like a friendly query language and ACID transactions. The programmer works with a flexible network structure of nodes and relationships rather than static tables — yet enjoys all the benefits of enterprise-quality database. For many applications, Neo4j offers orders of magnitude performance benefits compared to relational DBs.

Learn more on the Neo4j website.

Discord

Using Neo4j

Neo4j is available both as a standalone server, or an embeddable component. You can download or try online.

Extending Neo4j

We encourage experimentation with Neo4j. You can build extensions to Neo4j, develop library or drivers atop the product, or make contributions directly to the product core. You’ll need to sign a Contributor License Agreement in order for us to accept your patches.

Dependencies

Neo4j is built using Apache Maven version 3.5.4 and a recent version of supported VM. Bash and Make are also required. Note that maven needs more memory than the standard configuration, this can be achieved with export MAVEN_OPTS="-Xmx512m".

macOS users need to have Homebrew installed.

With brew on macOS

brew install maven

Please note that we do not support building Debian packages on macOS.

With apt-get on Ubuntu

sudo apt install maven openjdk-11-jdk

On top of that, to build Debian packages and Neo4j Desktop:

apt install debhelper devscripts dos2unix dpkg make xmlstarlet
# You will need a license for install4j, which is only needed for Neo4j Desktop
curl -O https://download-keycdn.ej-technologies.com/install4j/install4j_linux_6_1_4.deb
dpkg -i install4j_linux_6_1_4.deb

Building Neo4j

Before you start running the unit and integration tests in the Neo4j Maven project on a Linux-like system, you should ensure your limit on open files is set to a reasonable value. You can test it with ulimit -n. We recommend you have a limit of at least 40K.

  • A plain mvn clean install will only build the individual jar files.

  • Test execution is, of course, part of the build.

  • In case you just want the jars, without running tests, this is for you: mvn clean install -DskipTests.

  • To build product packages, do export PATH="bin:$PATH" && make clean all in the packaging directory after building artifacts with Maven.

  • To build the documentation see the Neo4j documentation.

  • If you are running into problems building on Windows you can try building Neo4j in a Ubuntu virtual machine.

  • You may need to increase the memory available to Maven: export MAVEN_OPTS="-Xmx512m".

Running Neo4j

After running a mvn clean install, cd into packaging/standalone/target and extract the version you want, then:

bin/neo4j start

in the extracted folder to start Neo4j on localhost:7474. On Windows you want to run:

bin\neo4j start

instead.

Neo4j Desktop

Neo4j Desktop is a convenient way for developers to work with local Neo4j databases.

To install Neo4j Desktop, go to Neo4j Download Center and follow the instructions.

Licensing

Neo4j Community Edition is an open source product licensed under GPLv3.

Neo4j Enterprise Edition includes additional closed-source components not available in this repository and requires a commercial license from Neo4j or one of its affiliates.

Trademark

Neo4j’s trademark policy is available at our trademark policy page.

Issues
  • Cypher feature request: post-UNION processing

    Cypher feature request: post-UNION processing

    Related to issue #1879, but I'd like to ask for more holistic and general support for post-UNION processing, not just limiting/skipping/ordering.

    One way to look at it is very much like a WITH clause. Perhaps UNION WITH would thus be a good name for it, or maybe UNION RESULT to convey that you're now acting on the entire union'ed result.

    Our major use case is aggregating a stream of content, where that content is queried in different ways. The important point is: we want to process the content after aggregation, not before. Without this ability with today's UNION, we're less efficient in some cases, and outright buggy in others.

    To avoid making this description too long, I'll post an example of the problem in a comment, as well as a proposed syntax in another comment.

    feature cypher team-clg 
    opened by aseemk 100
  • Support multiple databases in Neo4j Server

    Support multiple databases in Neo4j Server

    @tomasmuller: 'Added -i PATH option for ./bin/neo4j and ./bin/neo4j-coordinator scripts.

    This option override the default value of NEO4J_INSTANCE, which is NEO4J_HOME.

    So, to use this flag, the PATH must point to a directory with /conf and /data folders and files, and all existing path entries in configuration files must be updated to this new location. '

    feature team-kernel 
    opened by lassewesth 64
  • Transactions appear to leak data between sessions, resulting in EntityNotFoundException

    Transactions appear to leak data between sessions, resulting in EntityNotFoundException

    Tested and confirmed with Neo4j 2.1.6, 2.2.0-M01, 2.2.0-M02 using Neo4j.rb 4.1.0 and Neo4j-core 4.0.0 Ruby gems.

    Given two completely independent sessions, queries against the Cypher transactional appear to be leaking IDs, resulting in errors in one session that reference nodes in the other.

    In session 1:

    Benchmark.ips do |x|
      x.config(warmup: 3, time: 20)
      x.report('create/destroy') do
        s = Student.create
        s.destroy
      end
    end
    

    Benchmark.ips runs the given commands as many times as it can for the duration given.

    The queries against the server are CREATE (s:Student { uuid: {uuid} ) RETURN s and MATCH (s) WHERE ID(s) = {id_of_s} OPTIONAL MATCH s-[r]-() DELETE s,r. Each is an independent transaction. Four queries total: cypher query then commit to create, cypher query then commit to destroy. Uniqueness on the Student's uuid is enforced through a constraint.

    In session 2:

    # Manually, repeatedly
    Student.count
    

    Session 2 will occasionally eventually return an org.neo4j.cypher.EntityNotFoundException error referencing Node with ID 429, which is a node created by session 1.

    This appears to be the same issue as http://stackoverflow.com/questions/26133131/are-neo4js-cypher-transactions-broken. The poster said they would open an issue but if they did, I couldn't find it.

    opened by subvertallchris 50
  • 500 Internal Server Error when adding long text to an index

    500 Internal Server Error when adding long text to an index

    I'm using Neo4j-community-1.9.M04, connecting with python rest client (py2neo 1.4.5). When I try to add a long text to an index, the server returns 500 Internal Server Error.

    Using the py2neo client, I something like:

    everything_idx = gdb.get_or_create_index(neo4j.Node, "everything", config={"type": "fulltext"})
    everything_idx.add("everything", long_text, recommendation_node)
    

    Where long_text is a variable containing text parsed from a URL and recommendation_node is the Node instance I want to index.

    This is what I have in the py2neo log:

    INFO 2013-03-05 11:47:17,855 rest 11104 1108 POST /db/data/index/node/everything {'Content-Type': 'application/json', 'X-Stream': 'true', 'Accept': 'application/json', 'User-Agent': 'py2neo/1.4.6 (win32; python/2.7.2)'} (47486 bytes)
    INFO 2013-03-05 11:47:17,894 rest 11104 1108 500 Internal Server Error {'content-length': '0', 'server': 'Jetty(6.1.25)'}
    

    In Neo4j logs I have the following: console.log:

    11:47:19.733 [[email protected]] WARN  org.mortbay.log - header full: java.lang.ArrayIndexOutOfBoundsException
    11:47:19.734 [[email protected]] ERROR org.mortbay.log - /db/data/index/node/everything
    javax.ws.rs.WebApplicationException: null
            at org.neo4j.server.rest.repr.OutputFormat$1.write(OutputFormat.java:156) ~[neo4j-server-1.9.M04.jar:1.9.M04]
            at com.sun.jersey.core.impl.provider.entity.StreamingOutputProvider.writeTo(StreamingOutputProvider.java:71) ~[jersey-core-1.9.jar:1.9]
            at com.sun.jersey.core.impl.provider.entity.StreamingOutputProvider.writeTo(StreamingOutputProvider.java:57) ~[jersey-core-1.9.jar:1.9]
            at com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:306) ~[jersey-server-1.9.jar:1.9]
            at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1437) ~[jersey-server-1.9.jar:1.9]
            at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349) ~[jersey-server-1.9.jar:1.9]
            at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339) ~[jersey-server-1.9.jar:1.9]
            at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416) ~[jersey-server-1.9.jar:1.9]
            at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537) ~[jersey-server-1.9.jar:1.9]
            at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:699) ~[jersey-server-1.9.jar:1.9]
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) ~[servlet-api-2.5-20081211.jar:na]
            at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) ~[jetty-6.1.25.jar:6.1.25]
            at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390) ~[jetty-6.1.25.jar:6.1.25]
            at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) [jetty-6.1.25.jar:6.1.25]
            at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) [jetty-6.1.25.jar:6.1.25]
            at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) [jetty-6.1.25.jar:6.1.25]
            at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) [jetty-6.1.25.jar:6.1.25]
            at org.mortbay.jetty.Server.handle(Server.java:326) [jetty-6.1.25.jar:6.1.25]
            at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) [jetty-6.1.25.jar:6.1.25]
            at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:943) [jetty-6.1.25.jar:6.1.25]
            at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756) [jetty-6.1.25.jar:6.1.25]
            at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218) [jetty-6.1.25.jar:6.1.25]
            at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) [jetty-6.1.25.jar:6.1.25]
            at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410) [jetty-6.1.25.jar:6.1.25]
            at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) [jetty-util-6.1.25.jar:6.1.25]
    

    and in neo4j.0.0.log:

    Mar 5, 2013 11:47:19 AM com.sun.jersey.server.impl.application.WebApplicationImpl _handleRequest
    SEVERE: The response of the WebApplicationException cannot be utilized as the response is already committed. Re-throwing to the HTTP container
    javax.ws.rs.WebApplicationException
            at org.neo4j.server.rest.repr.OutputFormat$1.write(OutputFormat.java:156)
            at com.sun.jersey.core.impl.provider.entity.StreamingOutputProvider.writeTo(StreamingOutputProvider.java:71)
            at com.sun.jersey.core.impl.provider.entity.StreamingOutputProvider.writeTo(StreamingOutputProvider.java:57)
            at com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:306)
            at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1437)
            at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349)
            at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339)
            at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
            at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537)
            at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:699)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
            at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
            at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390)
            at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
            at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
            at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
            at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
            at org.mortbay.jetty.Server.handle(Server.java:326)
            at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
            at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:943)
            at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756)
            at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
            at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
            at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
            at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
    

    I thought the problem could be the rest client I'm using, so I changed it (I tried neo4jrestclient first).

    Any Ideas?

    bug 
    opened by bnikolov 48
  • Feature request: Support indexes on relationships

    Feature request: Support indexes on relationships

    I need to create indexes in relationship to optimize my query. Cypher not support indexes in relationship ? And I cannot create the follow constraint in relationship SHARED_REACTION: CREATE CONSTRAINT ON ()-[sr:SHARED_REACTION]-() ASSERT EXISTS (sr.id) Neo4j returns: "Unable to create CONSTRAINT.." Neo.DatabaseError.Schema.ConstraintCreationFailed

    How can I create this constraint and to use indexes in relationship SHARED_REACTION ?

    cypher enhancement team-kernel 
    opened by LuanaLoubet 44
  • 2.0M6 is unstable on small ARM systems with use of labels

    2.0M6 is unstable on small ARM systems with use of labels

    I'm running the neo4j rest server on small ARM systems, as described here: https://github.com/cjdaly/napkin/wiki/Server-on-BeagleBone-black

    I recently moved from 1.9.x to 2.0M6. Initially I just got things to work by updating my cypher usage to stop using the old ? and ! syntax. Was able to run like this for several days with no issues. Then I added an index like this:

    CREATE INDEX ON :NAPKIN(`napkin.segment`)
    

    and reworked my cypher to use the :NAPKIN label. With this change, neo4j becomes unstable in less than a day.

    I'm using values in neo4j-wrapper.conf that correspond to -Xmx96m -Xms96m. The neo4j linux process seems to consume increasing (VmPeak) memory over time.

    I have more details and a link to the Neo4j log with exception stacks here: https://github.com/cjdaly/napkin/issues/2

    opened by cjdaly 40
  • 4.0.0 enterprise cluster becomes irreparably corrupt from working 3.5 statement

    4.0.0 enterprise cluster becomes irreparably corrupt from working 3.5 statement

    • Neo4j version: 4.0.0
    • Operating system: neo4j:4.0.0-enterprisedocker image
    • API/Driver: cypher

    I'm still trying to narrow down the exact repro but a cypher create/merge statement that was working in 3.5, caused our prod cluster to become corrupt in 4.0.

    The cluster had been migrated from 3.5.12 a few weeks ago and running reliably until this particular statement was run (it's an infrequently run statement), which brought down and corrupted the entire cluster with logs:

    ERROR Clustering components for database 'neo4j' have encountered a critical error org.neo4j.internal.kernel.api.exceptions.TransactionFailureException: Could not apply the transaction to the store after written to log
    
    java.lang.RuntimeException: org.neo4j.internal.kernel.api.exceptions.TransactionFailureException: Could not apply the transaction to the store after written to log
    	at com.neo4j.causalclustering.core.state.machines.token.ReplicatedTokenStateMachine.applyToStore(ReplicatedTokenStateMachine.java:96)
    	at com.neo4j.causalclustering.core.state.machines.token.ReplicatedTokenStateMachine.applyCommand(ReplicatedTokenStateMachine.java:74)
    	at com.neo4j.causalclustering.core.state.machines.CoreStateMachines$StateMachineCommandDispatcher.dispatch(CoreStateMachines.java:119)
    	at com.neo4j.causalclustering.core.state.machines.token.ReplicatedTokenRequest.dispatch(ReplicatedTokenRequest.java:94)
    	at com.neo4j.causalclustering.core.state.CommandApplicationProcess.handleOperations(CommandApplicationProcess.java:234)
    	at com.neo4j.causalclustering.core.state.CommandApplicationProcess.applyBatch(CommandApplicationProcess.java:210)
    	at com.neo4j.causalclustering.core.state.CommandBatcher.flush(CommandBatcher.java:44)
    	at com.neo4j.causalclustering.core.state.CommandApplicationProcess.applyUpTo(CommandApplicationProcess.java:175)
    	at com.neo4j.causalclustering.core.state.CommandApplicationProcess.applyJob(CommandApplicationProcess.java:139)
    	at java.base/java.lang.Thread.run(Thread.java:834)
    Caused by: org.neo4j.internal.kernel.api.exceptions.TransactionFailureException: Could not apply the transaction to the store after written to log
    	at org.neo4j.kernel.impl.api.TransactionRepresentationCommitProcess.applyToStore(TransactionRepresentationCommitProcess.java:82)
    	at org.neo4j.kernel.impl.api.TransactionRepresentationCommitProcess.commit(TransactionRepresentationCommitProcess.java:51)
    	at com.neo4j.causalclustering.core.state.machines.StateMachineCommitHelper.commit(StateMachineCommitHelper.java:56)
    	at com.neo4j.causalclustering.core.state.machines.StateMachineCommitHelper.commit(StateMachineCommitHelper.java:51)
    	at com.neo4j.causalclustering.core.state.machines.token.ReplicatedTokenStateMachine.applyToStore(ReplicatedTokenStateMachine.java:92)
    	... 9 more
    Caused by: org.neo4j.internal.kernel.api.exceptions.TransactionApplyKernelException: Failed to apply transaction: Transaction #1832889 at log position LogPosition{logVersion=1, byteOffset=217722710} {started 1970-01-01 00:00:00.000+0000, committed 1970-01-01 00:00:00.000+0000, with 1 commands in this transaction, lease 0, latest committed transaction id when started was 0, additional header bytes: 
    

    ...

    at org.neo4j.internal.recordstorage.RecordStorageEngine.apply(RecordStorageEngine.java:302)
    at org.neo4j.kernel.impl.api.TransactionRepresentationCommitProcess.applyToStore(TransactionRepresentationCommitProcess.java:78)
    ... 13 more
    Caused by: org.neo4j.token.api.NonUniqueTokenException: The PropertyKey NamedToken[name:stripeBankAccountId, id:611, internal:false] is not unique, it existed as NamedToken[name:__org.neo4j.SchemaRule.IndexConfig.spatial.wgs-84.max, id:611, internal:true]. at org.neo4j.token.TokenRegistry.put(TokenRegistry.java:73) at org.neo4j.token.AbstractTokenHolderBase.addToken(AbstractTokenHolderBase.java:52) at org.neo4j.internal.recordstorage.BridgingCacheAccess.addPropertyKeyToken(BridgingCacheAccess.java:68) at org.neo4j.internal.recordstorage.CacheInvalidationTransactionApplier.visitPropertyKeyTokenCommand(CacheInvalidationTransactionApplier.java:69) at org.neo4j.internal.recordstorage.Command$PropertyKeyTokenCommand.handle(Command.java:537) at org.neo4j.internal.recordstorage.TransactionApplierFacade.visit(TransactionApplierFacade.java:57) at org.neo4j.internal.recordstorage.TransactionApplierFacade.visit(TransactionApplierFacade.java:32) at org.neo4j.kernel.impl.transaction.log.PhysicalTransactionRepresentation.accept(PhysicalTransactionRepresentation.java:76) at org.neo4j.kernel.impl.api.TransactionToApply.accept(TransactionToApply.java:130) at org.neo4j.internal.recordstorage.RecordStorageEngine.apply(RecordStorageEngine.java:294) ... 14 more
    

    Repair was attempted by restarting the nodes but this resulted in all nodes failing to start with logs:

    ERROR Clustering components for database 'neo4j' have encountered a critical error Encountered error when attempting to reconcile database neo4j from state 'EnterpriseDatabaseState{databaseId=DatabaseId{name='neo4j', databaseId=DatabaseIdWithoutName{uuid=9f35bdfb-46ba-40f8-a292-88b0ba533c55}}, operatorState=STOPPED, failed=false}' to state 'online'
    
    java.lang.IllegalStateException: Encountered error when attempting to reconcile database neo4j from state 'EnterpriseDatabaseState{databaseId=DatabaseId{name='neo4j', databaseId=DatabaseIdWithoutName{uuid=9f35bdfb-46ba-40f8-a292-88b0ba533c55}}, operatorState=STOPPED, failed=false}' to state 'online' at com.neo4j.dbms.DbmsReconciler.reportErrorAndPanicDatabase(DbmsReconciler.java:435) at com.neo4j.dbms.DbmsReconciler.handleReconciliationErrors(DbmsReconciler.java:420) at com.neo4j.dbms.DbmsReconciler.lambda$postReconcile$14(DbmsReconciler.java:369) at java.base/java.util.concurrent.ConcurrentHashMap.compute(ConcurrentHashMap.java:1947) at com.neo4j.dbms.DbmsReconciler.postReconcile(DbmsReconciler.java:367) at com.neo4j.dbms.DbmsReconciler.lambda$scheduleReconciliationJob$7(DbmsReconciler.java:234) at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:859) at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:837) at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506) at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1705) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:834) Caused by: org.neo4j.dbms.api.DatabaseManagementException: Unable to start database `DatabaseId{name='neo4j', databaseId=DatabaseIdWithoutName{uuid=9f35bdfb-46ba-40f8-a292-88b0ba533c55}}` at com.neo4j.dbms.database.ClusteredMultiDatabaseManager.startDatabase(ClusteredMultiDatabaseManager.java:83) at com.neo4j.dbms.database.ClusteredMultiDatabaseManager.startDatabase(ClusteredMultiDatabaseManager.java:37) at com.neo4j.dbms.database.MultiDatabaseManager.forSingleDatabase(MultiDatabaseManager.java:112) at com.neo4j.dbms.database.MultiDatabaseManager.startDatabase(MultiDatabaseManager.java:98) at com.neo4j.dbms.DbmsReconciler.start(DbmsReconciler.java:537) at com.neo4j.dbms.Transitions$TransitionFunction.lambda$prepare$0(Transitions.java:219) at com.neo4j.dbms.DbmsReconciler.doTransitionStep(DbmsReconciler.java:335) at com.neo4j.dbms.DbmsReconciler.doTransitionStep(DbmsReconciler.java:336) at com.neo4j.dbms.DbmsReconciler.doTransitions(DbmsReconciler.java:318) at com.neo4j.dbms.DbmsReconciler.lambda$doTransitions$9(DbmsReconciler.java:308) at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700) ... 3 more Caused by: org.neo4j.kernel.lifecycle.LifecycleException: Component '[email protected]' failed to initialize. Please see the attached cause exception "Internal token for id 611 not found.". at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.init(LifeSupport.java:426) at org.neo4j.kernel.lifecycle.LifeSupport.init(LifeSupport.java:66) at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:102) at org.neo4j.kernel.recovery.Recovery.performRecovery(Recovery.java:364) at org.neo4j.kernel.recovery.Recovery.performRecovery(Recovery.java:246) at org.neo4j.kernel.recovery.RecoveryFacade.recovery(RecoveryFacade.java:49) at com.neo4j.causalclustering.core.CoreDatabase.lambda$new$0(CoreDatabase.java:42) at org.neo4j.kernel.lifecycle.LifecycleAdapter$3.start(LifecycleAdapter.java:86) at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:444) at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:111) at com.neo4j.causalclustering.common.ClusteredDatabase.start(ClusteredDatabase.java:39) at com.neo4j.dbms.database.ClusteredMultiDatabaseManager.startDatabase(ClusteredMultiDatabaseManager.java:79) ... 13 more Caused by: java.lang.RuntimeException: Error reading transaction logs, recovery not possible. To force the database to start anyway, you can specify 'unsupported.dbms.tx_log.fail_on_corrupted_log_files=false'. This will try to recover as much as possible and then truncate the corrupt part of the transaction log. Doing this means your database integrity might be compromised, please consider restoring from a consistent backup instead. at org.neo4j.kernel.recovery.Recovery.throwUnableToCleanRecover(Recovery.java:464) at org.neo4j.kernel.recovery.TransactionLogsRecovery.init(TransactionLogsRecovery.java:147) at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.init(LifeSupport.java:405) ... 24 more Caused by: org.neo4j.kernel.lifecycle.LifecycleException: Component '[email protected]' failed to initialize. Please see the attached cause exception "Internal token for id 611 not found.". at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.init(LifeSupport.java:426) at org.neo4j.kernel.lifecycle.LifeSupport.init(LifeSupport.java:66) at org.neo4j.kernel.recovery.TransactionLogsRecovery.init(TransactionLogsRecovery.java:117) ... 25 more Caused by: java.lang.RuntimeException: org.neo4j.internal.kernel.api.exceptions.schema.MalformedSchemaRuleException: Cannot read schema rule because it is referring to a property key token (id 611) that does not exist. at org.neo4j.internal.recordstorage.SchemaStorage.readSchemaRuleThrowingRuntimeException(SchemaStorage.java:266) at org.neo4j.internal.recordstorage.SchemaStorage.lambda$streamAllSchemaRules$5(SchemaStorage.java:238) at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:271) at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177) at java.base/java.util.stream.LongPipeline$1$1.accept(LongPipeline.java:177) at java.base/java.util.stream.Streams$RangeLongSpliterator.tryAdvance(Streams.java:207) at java.base/java.util.Spliterator$OfLong.tryAdvance(Spliterator.java:740) at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.lambda$initPartialTraversalState$0(StreamSpliterators.java:294) at java.base/java.util.stream.StreamSpliterators$AbstractWrappingSpliterator.fillBuffer(StreamSpliterators.java:206) at java.base/java.util.stream.StreamSpliterators$AbstractWrappingSpliterator.doAdvance(StreamSpliterators.java:161) at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.tryAdvance(StreamSpliterators.java:300) at java.base/java.util.Spliterators$1Adapter.hasNext(Spliterators.java:681) at org.neo4j.internal.recordstorage.SchemaCache$SchemaCacheState.load(SchemaCache.java:298) at org.neo4j.internal.recordstorage.SchemaCache$SchemaCacheState.<init>(SchemaCache.java:264) at org.neo4j.internal.recordstorage.SchemaCache.load(SchemaCache.java:134) at org.neo4j.internal.recordstorage.RecordStorageEngine.loadSchemaCache(RecordStorageEngine.java:368) at org.neo4j.internal.recordstorage.RecordStorageEngine$2.init(RecordStorageEngine.java:459) at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.init(LifeSupport.java:405) ... 27 more Caused by: org.neo4j.internal.kernel.api.exceptions.schema.MalformedSchemaRuleException: Cannot read schema rule because it is referring to a property key token (id 611) that does not exist. at org.neo4j.kernel.impl.store.SchemaStore.insertPropertyIntoMap(SchemaStore.java:463) at org.neo4j.kernel.impl.store.SchemaStore.schemaRecordToMap(SchemaStore.java:445) at org.neo4j.kernel.impl.store.SchemaStore.readSchemaRule(SchemaStore.java:326) at org.neo4j.internal.recordstorage.SchemaStorage.readSchemaRule(SchemaStorage.java:274) at org.neo4j.internal.recordstorage.SchemaStorage.readSchemaRuleThrowingRuntimeException(SchemaStorage.java:259) ... 44 more Caused by: org.neo4j.token.api.TokenNotFoundException: Internal token for id 611 not found. at org.neo4j.token.AbstractTokenHolderBase.getInternalTokenById(AbstractTokenHolderBase.java:121) at org.neo4j.kernel.impl.store.SchemaStore.insertPropertyIntoMap(SchemaStore.java:457) ... 48 more
    

    I tried starting each node as a single instance but each failed to repair the corrupt datastore and refused to start.

    I had a duplicate cluster in test environment that when I ran the same transaction failed in the identical way so this was not just a fluke.

    I will try to post more details here once I can further isolate the root cause.

    This appears to be a p0 bug in neo4j 4.0.0. see also https://community.neo4j.com/t/nonuniquetokenexception-cant-launch-database-cant-use-cypher-shell-to-fix-it/13551/7

    bug team-kernel 
    opened by chrisdostert 39
  • Cypher locking regression in 2.2

    Cypher locking regression in 2.2

    See: https://stackoverflow.com/questions/31755509/neo4j-2-2-cypher-locking-regression This seems likely to be a bug, where a lock can be released between queries in the same transaction. Any possible explanation?

    bug 2.2 team-kernel 
    opened by jonathancrosmer 38
  • Feature request: Use indexes for ORDER BY

    Feature request: Use indexes for ORDER BY

    Currently (in neo4j 2.3.2), this Cypher:

    PROFILE MATCH (n:person) RETURN n.email ORDER BY n.email LIMIT 1

    starts off with an O(N) NodeByLabelScan, while this Cypher:

    PROFILE MATCH (n:person) WHERE n.email < "[email protected]" RETURN n.email LIMIT 1

    starts with a NodeUniqueIndexSeekByRange (if person:email is indexed), which is much faster for large graphs. I can sort of work around this by saying WHERE n.email < x and then doing binary search on x, but that's clunky and slow. Can ORDER BY be updated to use indexes in 3.0? Thanks.

    Relevant StackOverflow thread: http://stackoverflow.com/questions/23835349/does-cyphers-order-by-uses-the-index

    cypher enhancement team-cypher 
    opened by rationalism 38
  • Cypher: OR index lookups should work

    Cypher: OR index lookups should work

    You guys might already be working on this, but this is a somewhat common use case that was easy with the old index syntax, and entirely too inefficient with the new indexes. Index hinting on this type of query returns an error, and the query without an index hint does a label scan for horrid performance.

    Query: match a:Crew using index a:Crew(name) where a.name="Neo" or a.name="Cypher" return a; Error: org.neo4j.cypher.IndexHintException: Can't use an index hint without an equality comparison on the correct node property label combo. Label: Crew Property name: name

    feature cypher 
    opened by freeeve 36
  • dbms.read_only = true causes neo4j v3.4.18 to become unresponsive and report

    dbms.read_only = true causes neo4j v3.4.18 to become unresponsive and report "this IndexReader is closed" after org.apache.lucene.store.AlreadyClosedException exceptions

    First thanks for helping to build, use, and maintain neo4j . I've been gratefully using it for years now, and have been impressed by the care with which the neo4j codebase has been maintained and improved.

    • Neo4j version: 3.4.18
    • Operating system: Ubuntu 18.04 LTS
    • API/Driver: errors are reported via http cypher endpoints as well as bolt /cypher-shell

    steps to reproduce:

    1. install neo4j v3.4.18 via apt-get
    2. create graph.db with legacy/explicit lucene indexes
    3. set dbms.read_only = true in /etc/neo4j/neo4j.conf

    Expected behavior

    Neo4j runs normally and any write operation fails.

    Actual behavior

    Neo4j becomes unresponsive after reporting a org.apache.lucene.store.AlreadyClosedException exceptions with recurring error message this IndexReader is closed.

    Work around

    from /etc/neo4j/neo4j.conf -

    ...
    # Only allow read operations from this Neo4j instance. This mode still requires
    # write access to the directory for lock purposes.
    #dbms.read_only=true
    #
    # only after disabling read-only mode in neo4j v3.4.18,
    # periodic (~ every 10 minutes) org.apache.lucene.store.AlreadyClosedException exceptions in lucene/neo4j with "this IndexReader is closed"
    # were no longer seen. Note that "legacy" explicit lucene indexes are used.
    # see https://github.com/globalbioticinteractions/globalbioticinteractions/issues/701
    # Suspect that lucene or other parts is not happy with read_only restrictions
    # imposed by a read-only dataset.
    #
    dbms.read_only=false
    ...
    

    Please advise on how to provide a public, read-only, neo4j instance without having to introduce an authentication wall.

    bug team-kernel 
    opened by jhpoelen 0
  • Node properties have no guaranteed order

    Node properties have no guaranteed order

    According to this stackoverflow article, Neo4j node properties have no guaranteed order. Any body know how Neo4j order the properties and how to keep order like when we set? Thank you so much!

    feature 
    opened by KienPM 0
  • SLF4J: Class path contains multiple SLF4J bindings.

    SLF4J: Class path contains multiple SLF4J bindings.

    I was recently upgrading from 3.x to 4.x and ran into this issue. It looks like https://github.com/neo4j/neo4j/commit/2f55744a21e4a6cb3f7dd909ac5612f7a410c270 disabled the ability to cleanly have SLF4J together with neo4j embedded as a dependency. Luckily there's a workaround, but it may not be a trivial one. (see expected) The repro is through test, but I think it would have the same effect if embedded was used in production code along with SLF4J since the dependency comes from neo4j-security.

    • Neo4j version: 4.2.x
    • Operating system: Windows 10
    • API/Driver: Java API
    • Steps to reproduce
      testImplementation("org.neo4j.test:neo4j-harness:4.2.4")
      testImplementation("org.apache.logging.log4j:log4j-slf4j-impl:2.14.1")
      
    • Expected behavior Same behavior as
      testImplementation("org.neo4j.test:neo4j-harness:4.2.4") {
      	exclude(group = "org.slf4j", module = "slf4j-nop")
      }
      
    • Actual behavior
    SLF4J: Class path contains multiple SLF4J bindings.
    SLF4J: Found binding in [jar:file:/P:/caches/gradle/caches/modules-2/files-2.1/org.apache.logging.log4j/log4j-slf4j-impl/2.14.1/9a40554b8dab7ac9606089c87ae8a5ba914ec932/log4j-slf4j-impl-2.14.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: Found binding in [jar:file:/P:/caches/gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-nop/1.7.30/55d4c73dd343efebd236abfeb367c9ef41d55063/slf4j-nop-1.7.30.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
    SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
    
    bug 
    opened by TWiStErRob 0
  • Auto-upgrade of older dump file does not occur when loading to a non-default database

    Auto-upgrade of older dump file does not occur when loading to a non-default database

    When using neo4j-admin load to a non-default database:

    neo4j-admin load --from=boog.dump --database=boog

    and the dump file requires migration to the latest format, even if

    dbms.allow_upgrade=true

    in conf/neo4j.conf, the upgrade does not occur automatically. However, when loading to the default database (neo4j), the upgrade does occur as expected.

    Neo4j Version: 4.3.3 community Operating System: Mac OS 10.15.17 JVM: JVM - Version:11.0.12, Name:Java HotSpot(TM) 64-Bit Server VM, Vendor:Oracle Corporation API: local

    Steps to reproduce

    1. Dump a database from, e.g., a Neo4j 3.5.3 instance: neo4j-admin dump --database=thing --to=.
    2. Ensure Neo4j 4.3 (stopped) instance conf/neo4j.conf has dbms.allow_upgrade=true present and uncommented.
    3. Load dump file from (1) to the Neo4j 4.3 instance, to a non-default database: neo4j-admin load --database=thing --from=thing.dump
    4. Start 4.3 instance in console mode: neo4j console

    Expected behavior

    • Console log should show the server working on upgrading the new database: Starting Neo4j. 2021-08-28 16:36:58.498+0000 INFO Starting... 2021-08-28 16:36:59.984+0000 INFO ======== Neo4j 4.3.3 ======== 2021-08-28 16:37:02.066+0000 INFO Performing postInitialization step for component 'security-users' with version 3 and status CURRENT 2021-08-28 16:37:02.067+0000 INFO Updating the initial password in component 'security-users' 2021-08-28 16:37:02.122+0000 INFO [neo4j/3b8cd03f] Starting upgrade of database 2021-08-28 16:37:02.151+0000 INFO [neo4j/3b8cd03f] Migrating Store files (1/8): 2021-08-28 16:37:02.622+0000 INFO [neo4j/3b8cd03f] 10% completed 2021-08-28 16:37:02.623+0000 INFO [neo4j/3b8cd03f] 20% completed 2021-08-28 16:37:02.623+0000 INFO [neo4j/3b8cd03f] 30% completed 2021-08-28 16:37:02.623+0000 INFO [neo4j/3b8cd03f] 40% completed 2021-08-28 16:37:02.623+0000 INFO [neo4j/3b8cd03f] 50% completed 2021-08-28 16:37:02.624+0000 INFO [neo4j/3b8cd03f] 60% completed 2021-08-28 16:37:02.624+0000 INFO [neo4j/3b8cd03f] 70% completed 2021-08-28 16:37:02.624+0000 INFO [neo4j/3b8cd03f] 80% completed [etc]
    • New database should be accessible in Neo4j (front-end or api).

    Actual behavior

    • Upgrade process not seen in console log.
    • New database not accessible in Neo4j interface (although is present under data/databases)

    thx

    bug 
    opened by majensen 0
  • neo4j admin online restore

    neo4j admin online restore

    It would be useful if neo4j-admin restore would allow for an online restore (like neo4j-admin backup).

    feature 
    opened by jamesdhope 0
  • neo4j-admin restore to a directory rather than to the running instance

    neo4j-admin restore to a directory rather than to the running instance

    It would be useful if neo4j-admin could restore to a path.

    For example, if running neo4j-admin restore in a initContainer, you would want the restored database to be persisted to a volume mount ready to be mounted into the neo core rather than in the ephemeral initContainer being used to run the restore command.

    feature 
    opened by jamesdhope 0
  • JSON log format not applied for http.log

    JSON log format not applied for http.log

    The setting dbms.logs.default_format=json is not taken into consideration for the http.log

    Neo4j Version: 4.3.1 Operating System: OSX API: Tarball

    Steps to reproduce

    1. Download Neo4j Community 4.3.1
    2. Add the setting dbms.logs.default_format=json
    3. Enable http logging : dbms.logs.http.enabled=true
    4. Start Neo4j
    5. Open the http.log file after having connected with the browser

    Expected behavior

    Logs should be written in JSON format

    Actual behavior

    Logs are written in plain format

    $ tail -n 100 logs/http.log
    2021-08-04 11:34:49.628+0000 INFO  [REQUEST] 127.0.0.1 -  [Wed Aug 04 13:34:49 CEST 2021] "/" 303 -1 "" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36" 50
    2021-08-04 11:34:49.635+0000 INFO  [REQUEST] 127.0.0.1 -  [Wed Aug 04 13:34:49 CEST 2021] "/browser/" 200 3428 "" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36" 5
    2021-08-04 11:34:49.682+0000 INFO  [REQUEST] 127.0.0.1 -  [Wed Aug 04 13:34:49 CEST 2021] "/browser/neo4j-driver.chunkhash.bundle.js" 200 137918 "http://localhost:7474/browser/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36" 5
    2021-08-04 11:34:49.694+0000 INFO  [REQUEST] 127.0.0.1 -  [Wed Aug 04 13:34:49 CEST 2021] "/browser/vendor.chunkhash.bundle.js" 200 560450 "http://localhost:7474/browser/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36" 17
    2021-08-04 11:34:49.694+0000 INFO  [REQUEST] 127.0.0.1 -  [Wed Aug 04 13:34:49 CEST 2021] "/browser/worker.chunkhash.bundle.js" 200 623717 "http://localhost:7474/browser/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36" 17
    2021-08-04 11:34:49.697+0000 INFO  [REQUEST] 127.0.0.1 -  [Wed Aug 04 13:34:49 CEST 2021] "/browser/relate-by-ui.chunkhash.bundle.js" 200 893803 "http://localhost:7474/browser/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36" 20
    2021-08-04 11:34:49.701+0000 INFO  [REQUEST] 127.0.0.1 -  [Wed Aug 04 13:34:49 CEST 2021] "/browser/mdx.chunkhash.bundle.js" 200 1293997 "http://localhost:7474/browser/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36" 27
    2021-08-04 11:34:49.756+0000 INFO  [REQUEST] 127.0.0.1 -  [Wed Aug 04 13:34:49 CEST 2021] "/browser/app-e747f5e505e69ba3e5a1.js" 200 3146017 "http://localhost:7474/browser/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36" 71
    2021-08-04 11:34:49.777+0000 INFO  [REQUEST] 127.0.0.1 -  [Wed Aug 04 13:34:49 CEST 2021] "/browser/cypher-editor.chunkhash.bundle.js" 200 5585870 "http://localhost:7474/browser/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36" 109
    2021-08-04 11:34:50.406+0000 INFO  [REQUEST] 127.0.0.1 -  [Wed Aug 04 13:34:50 CEST 2021] "/" 200 216 "http://localhost:7474/browser/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36" 22
    2021-08-04 11:34:50.625+0000 INFO  [REQUEST] 127.0.0.1 -  [Wed Aug 04 13:34:50 CEST 2021] "/browser/assets/fonts/fontawesome-webfont.woff2" 200 77160 "http://localhost:7474/browser/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36" 4
    2021-08-04 11:34:50.627+0000 INFO  [REQUEST] 127.0.0.1 -  [Wed Aug 04 13:34:50 CEST 2021] "/browser/assets/fonts/FiraCode-Bold.woff2" 200 87040 "http://localhost:7474/browser/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36" 5
    2021-08-04 11:34:50.627+0000 INFO  [REQUEST] 127.0.0.1 -  [Wed Aug 04 13:34:50 CEST 2021] "/browser/assets/fonts/OpenSans-Regular.ttf" 200 96932 "http://localhost:7474/browser/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36" 5
    2021-08-04 11:34:50.627+0000 INFO  [REQUEST] 127.0.0.1 -  [Wed Aug 04 13:34:50 CEST 2021] "/browser/assets/fonts/FiraCode-Regular.woff2" 200 80724 "http://localhost:7474/browser/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36" 5
    2021-08-04 11:34:57.981+0000 INFO  [REQUEST] 127.0.0.1 -  [Wed Aug 04 13:34:57 CEST 2021] "/browser/assets/fonts/icons.woff2" 200 40148 "http://localhost:7474/browser/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36" 2
    2021-08-04 11:35:05.383+0000 INFO  [REQUEST] 127.0.0.1 -  [Wed Aug 04 13:35:05 CEST 2021] "/browser/assets/images/neo4j-logo.svg" 200 1686 "http://localhost:7474/browser/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36" 1
    2021-08-04 11:35:05.397+0000 INFO  [REQUEST] 127.0.0.1 -  [Wed Aug 04 13:35:05 CEST 2021] "/browser/assets/images/aura-logo.svg" 200 4998 "http://localhost:7474/browser/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36" 2
    2021-08-04 11:35:05.436+0000 INFO  [REQUEST] 127.0.0.1 -  [Wed Aug 04 13:35:05 CEST 2021] "/browser/assets/fonts/OpenSans-Semibold.ttf" 200 100820 "http://localhost:7474/browser/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36" 2
    
    bug team-drivers 
    opened by ikwattro 0
  •  Different analyzers in index-time and query-time

    Different analyzers in index-time and query-time

    I want to request a feature on full text search, and to do so let me first explain an example.

    Assume that the query is "Javad" and we want to retrieve a document if it contains, e.g., "Javad" or "MohammadJavad" or "Javadi" or "SeyedJavad". But we do not want to retrieve a document if it only contains, e.g., "Java". This may be a reasonable expectation for search in a language like Persian. Or, for example, the query is "Jen" and we want to retrieve a document if it contains "Jennifer".

    As far as I know, full-text search in Neo4j uses the same index on both the documents and the query. Thus, if we want to use n-grams with, e.g., n=4 (so that MohammadJavad is matched for Javad), also Java is matched for Javad because n-gram is also applied to the query term Javad. But if we could specify that we only want to apply the n-gram to the documents but not to the query, we could have achieved what we wanted.

    So, I request adding this possibility to Neo4j. I guess that it's not very hard to do so, but it may help a lot, especially for some language like Persian or maybe Arabic.

    A similar issue was formerly mentioned here , but it also wasn't solved. Considering the effort it requires to implement this feature and the benefit it may have for the users, I think that this feature is something worth considering by the Neo4j developers.

    feature team-cypher 
    opened by shayantabrizi 1
  • Server no longer accepts writes, during apoc.trigger.add

    Server no longer accepts writes, during apoc.trigger.add

    Hi,

    We have 3 cores and are trying to add a trigger via the apoc.trigger.add method. The cypher we are using looks like this CALL apoc.trigger.add('<name>', 'UNWIND apoc.trigger.nodesByLabel($assignedNodeProperties, "<node>") AS node CALL rabbitmq.event("<queue>", labels(node), node) return count(*)', { phase: 'before' })

    We have a custom apoc that puts any changes to nodes onto a rabbitmq queue and this is to setup that link. It works fine in a standalone setup, but with more than 1 core to keeps returning Server at <server> no longer accepts writes

    Is there something I can do to my cypher in order to make it work in a cluster setup?

    We are the following setup: Neo4j version 4.1.2 OS: docker Host: GKE

    bug team-cluster 
    opened by alesten 0
  • Neo4jError: Connection was closed by server

    Neo4jError: Connection was closed by server

    I am getting connection was close by server error in some time of intervals.

    Here is Node JS console logs. ###Query MATCH (rbs0:test_Struct {test_struct_id: "Object"}) CALL { WITH rbs0 CALL apoc.path.expandConfig(rbs0, {relationshipFilter: "HAS_TEST_STRUCT_CHILD>"}) YIELD path CALL { WITH path WITH nodes(path)[-1] AS rbs MATCH (rbs)-[:HAS_TEST_STRUCT_STATE]->(rbss:test_Struct_State) CALL { WITH rbss MATCH (rbss)-[:TEST_STRUCT_LANGUAGE_IS]->(lang:Language) RETURN lang } WITH rbss, lang RETURN collect(rbss {.test_struct_desc, language: lang.iso_639_1}) AS res_desc_lang } WITH path, nodes(path) AS n, res_desc_lang, apoc.text.rpad(reduce(a = "", r in relationships(path) | a + apoc.text.lpad(toString(COALESCE(r.order_test_struct,0)),4,"0")),100,"0") AS orders CALL { WITH n WITH n[-1] AS m MATCH (m)<-[r1:TEST_BELONGS_TO_STRUCT]-(rb:test) WITH rb, rb {.test_id, .test_active} AS rb2 order by r1.order_test_in_struct CALL { WITH rb CALL apoc.path.expandConfig(rb, {relationshipFilter: "HAS_TEST_CHILD>"}) YIELD path CALL { WITH path WITH nodes(path)[-1] as rb MATCH (rb)-[:HAS_TEST_ISSUE]->(rbi:test_Issue) WITH rbi ORDER BY rbi.test_issue_no CALL { WITH rbi MATCH (rbi)-[:HAS_TEST_ISSUE_STATE]->(rbis:test_Issue_State)-[:TEST_ISSUE_LANGUAGE_IS]->(lang:Language) RETURN rbis, lang } CALL { WITH rbi OPTIONAL MATCH (rbi)-[:HAS_TEST_TAG]->(rbt:test_Tag) RETURN collect(replace(rbt.test_tag_id, "/", "-") ) as rbTags } RETURN collect(rbi {.test_issue_no, title_short: rbis.test_issue_title_short, title_popular:rbis.test_issue_popular_title, title_long: rbis.test_issue_title_long, language: lang.iso_639_1, label: labels(rbi), tags: rbTags}) AS res_rbi } WITH path, nodes(path) AS n, res_rbi, apoc.text.rpad(reduce(a = "", r in relationships(path) | a + apoc.text.lpad(toString(COALESCE(r.order_test_child,0)),4,"0")),100,"0") AS orders RETURN n[-1] AS res_rbs, n[-2] AS res_rbs_parent, res_rbi ORDER BY orders } RETURN collect(res_rbs {.test_id, .test_active, test_parent_id: res_rbs_parent.test_id, res_rbi, label: labels(res_rbs)}) AS rbs_res } RETURN n[-1] AS res_rbss, n[-2] AS res_rbss_parent, res_desc_lang, rbs_res ORDER BY orders } RETURN res_rbss {.test_struct_id, .test_struct_active, test_struct_parent_id: res_rbss_parent.test_struct_id, res_desc_lang, label: labels(res_rbss)} AS rbss_res, rbs_res

    Get rule book error Neo4jError: Connection was closed by server

    at captureStacktrace (D:\Projects\example-project\node_modules\neo4j-driver\lib\result.js:277:15)
    at new Result (D:\Projects\example-project\node_modules\neo4j-driver\lib\result.js:68:19)
    at Session._run (D:\Projects\example-project\node_modules\neo4j-driver\lib\session.js:174:14)
    at Session.run (D:\Projects\example-project\node_modules\neo4j-driver\lib\session.js:135:19)
    at module.exports (D:\Projects\example-project\src\graphql\resolver\rule-book-structure\get-rule-book-structure.js:256:34)
    at module.exports (D:\Projects\example-project\src\graphql\resolver\rule-book\get-rule-book.js:252:35)
    at processTicksAndRejections (internal/process/task_queues.js:97:5) {
    

    code: 'SessionExpired', name: 'Neo4jError' } Neo4jError: Connection was closed by server

    at captureStacktrace (D:\Projects\example-project\node_modules\neo4j-driver\lib\result.js:277:15)
    at new Result (D:\Projects\example-project\node_modules\neo4j-driver\lib\result.js:68:19)
    at Session._run (D:\Projects\example-project\node_modules\neo4j-driver\lib\session.js:174:14)
    at Session.run (D:\Projects\example-project\node_modules\neo4j-driver\lib\session.js:135:19)
    at module.exports (D:\Projects\example-project\src\graphql\resolver\rule-book-structure\get-rule-book-structure.js:256:34)
    at module.exports (D:\Projects\example-project\src\graphql\resolver\rule-book\get-rule-book.js:252:35)
    at processTicksAndRejections (internal/process/task_queues.js:97:5) {
    

    originalMessage: 'Connection was closed by server', message: 'Error in resolver Query.getRuleBook\nConnection was closed by server' } Get rule book error Neo4jError: Connection was closed by server

    at captureStacktrace (D:\Projects\example-project\node_modules\neo4j-driver\lib\result.js:277:15)
    at new Result (D:\Projects\example-project\node_modules\neo4j-driver\lib\result.js:68:19)
    at Session._run (D:\Projects\example-project\node_modules\neo4j-driver\lib\session.js:174:14)
    at Session.run (D:\Projects\example-project\node_modules\neo4j-driver\lib\session.js:135:19)
    at module.exports (D:\Projects\example-project\src\graphql\resolver\rule-book-structure\get-rule-book-structure.js:256:34)
    at module.exports (D:\Projects\example-project\src\graphql\resolver\rule-book\get-rule-book.js:252:35)
    at processTicksAndRejections (internal/process/task_queues.js:97:5) {
    

    code: 'SessionExpired', name: 'Neo4jError' } Neo4jError: Connection was closed by server

    at captureStacktrace (D:\Projects\example-project\node_modules\neo4j-driver\lib\result.js:277:15)
    at new Result (D:\Projects\example-project\node_modules\neo4j-driver\lib\result.js:68:19)
    at Session._run (D:\Projects\example-project\node_modules\neo4j-driver\lib\session.js:174:14)
    at Session.run (D:\Projects\example-project\node_modules\neo4j-driver\lib\session.js:135:19)
    at module.exports (D:\Projects\example-project\src\graphql\resolver\rule-book-structure\get-rule-book-structure.js:256:34)
    at module.exports (D:\Projects\example-project\src\graphql\resolver\rule-book\get-rule-book.js:252:35)
    at processTicksAndRejections (internal/process/task_queues.js:97:5) {
    

    originalMessage: 'Connection was closed by server', message: 'Error in resolver Query.getRuleBook\nConnection was closed by server' } Get rule book error Neo4jError: Connection was closed by server

    at captureStacktrace (D:\Projects\example-project\node_modules\neo4j-driver\lib\result.js:277:15)
    at new Result (D:\Projects\example-project\node_modules\neo4j-driver\lib\result.js:68:19)
    at Session._run (D:\Projects\example-project\node_modules\neo4j-driver\lib\session.js:174:14)
    at Session.run (D:\Projects\example-project\node_modules\neo4j-driver\lib\session.js:135:19)
    at module.exports (D:\Projects\example-project\src\graphql\resolver\rule-book-structure\get-rule-book-structure.js:256:34)
    at module.exports (D:\Projects\example-project\src\graphql\resolver\rule-book\get-rule-book.js:252:35)
    at processTicksAndRejections (internal/process/task_queues.js:97:5) {
    

    code: 'SessionExpired', name: 'Neo4jError' } Neo4jError: Connection was closed by server

    at captureStacktrace (D:\Projects\example-project\node_modules\neo4j-driver\lib\result.js:277:15)
    at new Result (D:\Projects\example-project\node_modules\neo4j-driver\lib\result.js:68:19)
    at Session._run (D:\Projects\example-project\node_modules\neo4j-driver\lib\session.js:174:14)
    at Session.run (D:\Projects\example-project\node_modules\neo4j-driver\lib\session.js:135:19)
    at module.exports (D:\Projects\example-project\src\graphql\resolver\rule-book-structure\get-rule-book-structure.js:256:34)
    at module.exports (D:\Projects\example-project\src\graphql\resolver\rule-book\get-rule-book.js:252:35)
    at processTicksAndRejections (internal/process/task_queues.js:97:5) {
    

    originalMessage: 'Connection was closed by server', message: 'Error in resolver Query.getRuleBook\nConnection was closed by server' } Get rule book error Neo4jError: Connection was closed by server

    at captureStacktrace (D:\Projects\example-project\node_modules\neo4j-driver\lib\result.js:277:15)
    at new Result (D:\Projects\example-project\node_modules\neo4j-driver\lib\result.js:68:19)
    at Session._run (D:\Projects\example-project\node_modules\neo4j-driver\lib\session.js:174:14)
    at Session.run (D:\Projects\example-project\node_modules\neo4j-driver\lib\session.js:135:19)
    at module.exports (D:\Projects\example-project\src\graphql\resolver\rule-book-structure\get-rule-book-structure.js:267:43)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
    at async module.exports (D:\Projects\example-project\src\graphql\resolver\rule-book\get-rule-book.js:252:29) {
    

    code: 'SessionExpired', name: 'Neo4jError' } Neo4jError: Connection was closed by server

    at captureStacktrace (D:\Projects\example-project\node_modules\neo4j-driver\lib\result.js:277:15)
    at new Result (D:\Projects\example-project\node_modules\neo4j-driver\lib\result.js:68:19)
    at Session._run (D:\Projects\example-project\node_modules\neo4j-driver\lib\session.js:174:14)
    at Session.run (D:\Projects\example-project\node_modules\neo4j-driver\lib\session.js:135:19)
    at module.exports (D:\Projects\example-project\src\graphql\resolver\rule-book-structure\get-rule-book-structure.js:267:43)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
    at async module.exports (D:\Projects\example-project\src\graphql\resolver\rule-book\get-rule-book.js:252:29) {
    

    originalMessage: 'Connection was closed by server', message: 'Error in resolver Query.getRuleBook\nConnection was closed by server' }

    • Neo4j version: 4.2.0 (Enterprise)
    • Operating system: (Ubuntu 16.04)
    • API/Driver: (neo4j-driver v4.0.2)
    bug team-drivers 
    opened by tatva122 1
Releases(3.3.0-beta01)
  • 3.3.0-beta01(Sep 15, 2017)

    Release Date: 09/14/2017

    Neo4j 3.3.0-beta01 is the first beta release of the upcoming Neo4j 3.3.

    Highlights

    • Fusion index default for new indexes
    • Introducing procedures for manual indexes
    • Driver upgrade and small improvements to Neo4j Browser
    • Detailed Changes and Docs

    For the complete list of all changes, please see the changelog.

    Look for 3.3 Developer manual here, and 3.3 Operations manual here.

    Using pre-GA early access releases

    Pre-GA releases of Neo4j are provided under our User Experience Improvement Program (UXIP), intended for evaluation purposes only. Use of this release implies acceptance of the UXIP terms, which include allowing passive reporting about usage. Of course, we would also love to hear active feedback about your experience.

    Source code(tar.gz)
    Source code(zip)
  • 3.2.0-alpha08(Apr 11, 2017)

    Kernel

    • Overwriting property with same value no longer generates write command #9056
    • More scalable index logging #9063
    • Allow skip bad entries logging during import #9103

    Cypher

    • Improved cypher execution speed on variable length queries where only the distinct pairs of start and end node are of interest. One query to benefit would be MATCH (a)-[*4..5]->(b) RETURN DISTINCT a, b. #9062
    • Allow more granular configuration of literals extraction #9093
    • It is no longer possible to CREATE or DROP composite uniqueness constraints. To enforce composite uniqueness, we refer to the new NODE KEY constraint. #9135
    • Use getDegree instead of expansion #9139
    • Correct query type for procedures #9143
    • Handle Ands with single value #9149
    • Predicates on shortest path and optional match #9156

    Packaging

    • Removed neo4j-shared.sh. Functionality is now included in all wrapper scripts directly #9083

    Security

    • Added new role Editor that is allowed to read and write data but not allowed to create new tokens. #9081

    Causal Clustering

    • Improve transaction streaming #9070

    Tools

    • Added --version argument to neo4j-admin and neo4j commands #9102
    • Renamed neo4j-admin version to neo4j-admin store-info #9126

    Misc

    • Show allocated memory and page hits/faults in dbms.listQueries #9037

    • Neo4j now exits with code 0 for SIGINT and SIGTERM #9108

      • systemd will no longer report neo4j as failed after you do systemctl stop neo4j.
      • Hitting Ctrl-C when running neo4j console will no longer exit with error if shutdown was performed gracefully.
    Source code(tar.gz)
    Source code(zip)
  • 3.1.0(Dec 13, 2016)

    We are very excited to introduce our landmark new release – Neo4j 3.1. We encourage everyone to download 3.1.0 and try out all the new features from here.

    Neo4j 3.1 adds a new state-of-the-art clustering architecture and new security architecture to meet enterprise requirements for scale and security. This new release extends the comprehensive set of graph functionality for which Neo4j is best known and builds upon the new Official Language Drivers introduced in Neo4j 3.0.

    releasenote-pic


    Highlights


    • New Clustering Technology based on state-of-the-art RAFT protocol:
      • Cluster-aware stack with built-in load balancing
      • Causal consistency enabling applications to decide on cost/consistency tradeoff at query time
    • New Security Foundation ensuring that authenticated users and applications can perform only authorized actions on data graph stored in Neo4j:
      • Role-Based Access Control for built-in native and federated users (via LDAP connector)
      • Sub-graph authorization via User-Defined Procedures
      • Query listing and termination using :queries command in Neo4j Browser
      • Security event logging
    • Database Kernel and Operations Advances:
      • New execution guard to terminate long-running, end-user queries
      • Ability to reallocate space from deleted records while the cluster is online
      • New command line tools: cypher-shell and improved neo4j-admin
    • Schema Viewer: Displays the graph model at the current point in time
    • IBM Power8 CAPI Flash Support: Enables ultra-large in-memory graphs

    Detailed Changes


    For the complete list of all changes, please see the changelog.

    Upgrading


    When upgrading to Neo4j 3.1 for the first time, be sure to read the current upgrade instructions in the Neo4j Operations Manual, as there are additional steps and considerations.

    Neo4j 3.1 supports direct upgrades from all 2.x releases (recommended to be on latest patch). Pre-2.x users need to upgrade to 2.x before upgrading to 3.1.

    Source code(tar.gz)
    Source code(zip)
  • 3.1.0-M12-beta2(Oct 24, 2016)

    This is the second preview of the upcoming Neo4j 3.1 release. We encourage everyone to download 3.1.0-BETA2 and try out all the new features .

    Highlights


    • Neo4j 3.1 has been feature complete since Beta 1. Thanks to your feedback, beta 2 includes bug fixes and refinements, but no significant changes or additions.

    Detailed Changes


    For the complete list of all changes, please see the changelog.

    Upgrading


    When upgrading to Neo4j 3.1 for the first time, be sure to read the current upgrade instructions in the Neo4j Operations Manual, as there are additional steps and considerations.

    Neo4j 3.1 supports direct upgrades from all 2.x releases (recommended to be on latest patch). Pre-2.x users need to upgrade to 2.x before upgrading to 3.1.

    Source code(tar.gz)
    Source code(zip)
  • 3.1.0-M09(Oct 21, 2016)

    Release Date: 09/16/2016

    Neo4j 3.1.0-M09 is a beta release offering early access to features which are under active development.

    Highlights


    (Enterprise Ed.) Security:

    • Introduce custom caching for authorization and authentication info
    • Expose cache expiration setting in neo4j.conf Support the ability for client applications to specify which authorizing realm to use when logging in #7877

    Other:

    • Introduced neo4j-admin dump and load commands. This can be used for offline backup or moving databases from one Neo4j instance to another.
    • Introduced user-defined functions
    • Introduced procedure dbms.functions which lists all functions
    • Introduced procedures db.resampleIndex(index) and db.resampleOutdatedIndexes() to schedule resampling of indexes. A specific index is specified with a string in the form :<label>(<property>) (for example db.awaitIndex(":Person(name)"), instead of by passing label and property as separate parameters

    Detailed Changes and Docs


    For the complete list of all changes, please see the changelog.
    Look for Beta docs here

    Using a Milestone


    Milestone releases of Neo4j are provided under our User Experience Improvement Program (UXIP), intended for evaluation purposes only. Use of a milestone implies acceptance of the UXIP terms, which include allowing passive reporting about usage. Of course, we would also love to hear active feedback about your experience.

    As beta software, milestones are not appropriate for production use. There is no supported upgrade path, and the features and APIs may change before being finalized (hopefully reflecting your feedback).

     
    Source code(tar.gz)
    Source code(zip)
  • 2.3.7(Oct 21, 2016)

    Release Date: 08/31/2016

    Neo4j 2.3.7 is a maintenance release with critical improvements.

    Highlights


    • Open indexes in read only mode in case database started in read only mode to prevent cases when usage of interrupts will result in deleted index (not applicable to ha setup)
    • Automatically rebuild indexes that fail to open on startup.
    • Allow node id reuse using ‘dbms.ids.reuse.types.override’ setting in Enterprise Edition

    Detailed changes


    For the complete list of all changes, please see the changelog.

    Upgrading


    All Neo4j users are recommended to upgrade to this release. Upgrading to Neo4j 2.3 (from Neo4j 2.2 or earlier) requires a migration to the on-disk store and cannot be reversed. Please ensure you have a valid backup before proceeding.

    Production users of Neo4j 2.1, or earlier, should note that there will be configuration changes required and that applications will need to be updated to support authentication of database requests. Please see our Upgrading to Neo4j 2.3 FAQ for further details.

    (Note: Neo4j 1.9 users may also upgrade directly to this release and are recommended to do so carefully. We strongly encourage verifying the syntax and validating all responses from your Cypher scripts, REST calls and Java code before upgrading any production system. For information about upgrading from Neo4j 1.9, please see our Upgrading to Neo4j 2.3 FAQ.)

     
    Source code(tar.gz)
    Source code(zip)
  • 3.1.0-M10(Oct 21, 2016)

    Release Date: 10/04/2016

    Neo4j 3.1.0-M10 is a beta release offering early access to features which are under active development.

    Highlights


    Security (Enterprise Edition)

    • All security related events are now logged to the new security.log file
    • Introduced support custom security plugins for authentication and authorization
    • Automatically reload auth files from disk every 5 seconds to enable external changes and externally driven cluster synchronisation
    • Added procedures for killing queries

    Kernel (Enterprise Edition)

    • Enhance high limit record format allowing for many more relationship types than before. This requires setting dbms.allow_format_migration=true config for stores using this format

    Cypher

    • User Defined Functions and procedure for listing them
    • Several Bugfixes around IN and slices and type-checking

    Other

    • Check-consistency, neo4j-backup and import csv tools now can be invoked from neo4j-admin script. The previous method of calling above tools will be deprecated
    • Debian packages now provide upgrade instructions when upgrading from 2.x to 3.x

    Detailed Changes and Docs


    For the complete list of all changes, please see the changelog.
    Look for Beta docs here

    Using a Milestone


    Milestone releases of Neo4j are provided under our User Experience Improvement Program (UXIP), intended for evaluation purposes only. Use of a milestone implies acceptance of the UXIP terms, which include allowing passive reporting about usage. Of course, we would also love to hear active feedback about your experience.

    As beta software, milestones are not appropriate for production use. There is no supported upgrade path, and the features and APIs may change before being finalized (hopefully reflecting your feedback).

     
    Source code(tar.gz)
    Source code(zip)
  • 3.0.6(Oct 21, 2016)

    Release Date: 09/16/2016

    Neo4j 3.0.6 is a maintenance release, with important improvements.

    Highlights

    • Several improvements to Debian packaging in upgrading from 2.x and 3.x
    • (Enterprise only) Bumps store version in high-limit format. Requires setting dbms.allow_format_migration=true if using previous version high-limit format store
    • Update ha component lifecycle to make sure we have only one active update puller on slaves. Fixes problem introduced in 3.0.5

    Detailed Changes

    For the complete list of all changes, please see the changelog.

    Upgrading

    Note:Upgrading to this version of Neo4j may change the internal ids of relationships, which can invalidate any manually maintained relationship references whether in an external system or stored within Neo4j as a property value. Plan to verify and recreate any such storage after the upgrade.

    Please read the upgrading section of the Neo4j Operations Manual for details.

     
    Source code(tar.gz)
    Source code(zip)
  • 3.1.0-BETA1(Oct 21, 2016)

    Release Date: 10/13/2016

    We are very excited to introduce a preview of our landmark new release – Neo4j 3.1 – coming out soon. We encourage everyone to download 3.1.0-BETA1 and try out all the new features from here.

    Neo4j 3.1 adds a new state-of-the-art clustering architecture and new security architecture to meet enterprise requirements for scale and security. This new release extends the comprehensive set of graph functionality for which Neo4j is best known and builds upon the new Official Language Drivers introduced in Neo4j 3.0.

    releasenote-pic


    Highlights


    • New Clustering Technology based on state-of-the-art RAFT protocol:
      • Cluster-aware stack with built-in load balancing
      • Casual consistency enabling applications to decide on cost/consistency tradeoff at query time
    • New Security Foundation ensuring that authenticated users and applications can perform only authorized actions on data graph stored in Neo4j:
      • Role-Based Access Control for built-in native and federated users (via LDAP connector)
      • Sub-graph authorization via User-Defined Procedures
      • Query listing and termination using :qs command in Neo4j Browser (to be renamed to :queries)
      • Security event logging
    • Database Kernel and Operations Advances:
      • New execution guard to terminate long-running, end-user queries
      • Ability to reallocate space from deleted records while the cluster is online
      • New command line tools: cypher-shell and improved neo4j-admin
    • Schema Viewer: Displays the graph model at the current point in time
    • IBM Power8 CAPI Flash Support: Enables ultra-large in-memory graphs

    Detailed Changes


    For the complete list of all changes, please see the changelog.

    Upgrading


    When upgrading to Neo4j 3.1 for the first time, be sure to read the current upgrade instructions in the Neo4j Operations Manual, as there are additional steps and considerations.

    Neo4j 3.1 supports direct upgrades from all 2.x releases (recommended to be on latest patch). Pre-2.x users need to upgrade to 2.x before upgrading to 3.1.

     
    Source code(tar.gz)
    Source code(zip)
  • 3.0.0-RC1(Apr 15, 2016)

    Neo4j 3.0.0-RC1 is a release candidate offering early access to features which are under active development.

    Highlights

    • Mixed use of CALL within Cypher statements.
    • Revised namespace for some built-in Procedures.
    • Neo4j Browser now includes Neo4j Sync, a companion cloud service for saving scripts and graph style sheets
    • Significant modifications to configuration settings
    • All logging is more uniform in format and configuration.
    • Windows command-line and Powershell API have been simplified, introducing some incompatibility with previous versions.

    Detailed Changes

    For the complete list of all changes, please see the changelog.

    Using a Release Candidate

    Release candidates are like Milestone releases of Neo4j, which are provided under our User Experience Improvement Program (UXIP), intended for evaluation purposes only. Use of a release candidate implies acceptance of the UXIP terms, which include allowing passive reporting about usage. Of course, we would also love to hear active feedback about your experience.

    As beta software, release candidates are not appropriate for production use. There is no supported upgrade path, and while the features and APIs have been finalized, changes may still occur to correct errors (hopefully reflecting your feedback).

    Download

    You can download Neo4j 3.0-RC1 or use one of the other distribution mechanism (debian package, homebrew etc). Please check out our Blog post with more details and also links to the most recent binary protocol drivers.

    Feedback, please!

    Use this release candidate to help us test Neo4j thoroughly so that we can provide an amazing and stable release. We’d love to hear from you on our public Slack or via e-mail: [email protected]

    Source code(tar.gz)
    Source code(zip)
  • 2.3.1(Nov 20, 2015)

    Neo4j 2.3.1 is a maintenance release, with critical improvements.

    Highlights

    • exists() can accept maps, enabling IS NOT NULL to work with LOAD CSV
    • New PowerShell scripts for common Neo4j tasks
    • Faster transition from electing master to becoming master, reducing observed windows of cluster being temporarily without master.
    • Fixes a race condition where voting would fail if there was a concurrent role switch happening.

    Detailed Changes

    For the complete list of all changes, please see the changelog.

    Upgrading

    All Neo4j users are recommended to upgrade to this release.

    Upgrading to Neo4j 2.3.1 (from Neo4j 2.2 or earlier) requires a migration to the on-disk store and can not be reversed.

    Please ensure you have a valid backup before proceeding.

    Production users of Neo4j 2.1, or earlier, should note that there will be configuration changes required and that applications will need to be updated to support authentication of database requests.

    Please see our Upgrading to Neo4j 2.3 FAQ for further details.

    Source code(tar.gz)
    Source code(zip)
  • 2.3.0(Nov 20, 2015)

    Neo4j 2.3 is a significant release, that provides read and write performance for massive operational throughput — making it our fastest and most scalable graph database yet.

    Highlights

    • High concurrent performance at scale with fully off-heap cache
    • Improved Cypher performance with smarter query planner
    • Schema Enhancements: property existence constraints
    • String-enhanced graph search
    • Spring Data Neo4j 4.0
    • Official Docker support
    • PowerShell support
    • Mac Installer and Launcher
    • Easy 3rd party monitoring with Neo4j Metrics
    • View custom content in Neo4j Browser, for instance: :play http://guides.neo4j.com/guide-library.html

    See the detailed release notes.

    Upgrade Instructions

    All Neo4j users are recommended to upgrade to this release. Upgrading to Neo4j 2.3.0 requires a migration to the on-disk store and can not be reversed.

    Please ensure you have a valid backup before proceeding.

    Production users should note that there will be configuration changes required, and that applications will need to be updated to support authentication of database requests. Please see our Upgrading to Neo4j 2.3 FAQ for further details.

    Source code(tar.gz)
    Source code(zip)
  • 2.2.7(Nov 15, 2015)

    Neo4j 2.2.7 is a maintenance release, with critical improvements.

    Highlights of this release:

    • Fixes #5631 - MERGE with multiple labels respects uniqueness constraints<
    • Fixes #5799 - to match variable length patterns of length one
    • Fixes neo4j-import handling of nodes with many labels, which might have been observed as an InvalidRecordException
    • neo4j-import treats extra data columns without a corresponding header as "bad". New option --ignore-extra-columns to log those into the "bad" file
    • When stopping Neo4j, the timeout will no longer forcefully shut down the process (which would require recovery on next start). Instead, a warning is displayed and waiting will continue.
    • Within a cluster, slaves which fail to apply updates will kernel panic to prevent further updates attempts, which could cause other harm. Failure to apply a transaction may be caused by severe underlying problems, for example out of disk space.

    For the complete list of all changes, please see the changelog.

    All Neo4j users are recommended to upgrade to this release. Upgrading to Neo4j 2.2 (from Neo4j 2.1 or earlier) requires a migration to the on-disk store and can not be reversed. Please ensure you have a valid backup before proceeding. Production users of Neo4j 2.1, or earlier, should note that there will be configuration changes required and that applications will need to be updated to support authentication of database requests. Please see our Upgrading to Neo4j 2.2 FAQ for further details..

    (Note: Neo4j 1.9 users may also upgrade directly to this release, and are recommended to do so carefully. We strongly encourage verifying the syntax and validating all responses from your Cypher scripts, REST calls, and Java code before upgrading any production system. For information about upgrading from Neo4j 1.9, please see our Upgrading to Neo4j 2 FAQ.)

    Source code(tar.gz)
    Source code(zip)
  • 2.2.6(Nov 15, 2015)

    Neo4j 2.2.6 is a maintenance release, with critical improvements.

    Changes in this release:

    • Proper handling of MATCH node with many labels (Fixes #5336)
    • USING INDEX query hint no longer breaks some queries (Fixes #5195)
    • Improved handling of unclean shutdown and recovery, eliminating extra restart
    • More consistent behavior in handling of unique constraints (Fixes #5528)
    • New configuration: query log rotation using dbms.querylog.rotation.threshold
    • New option: neo4j-import --ignore-empty-strings to create record without that property when the string is empty

    All Neo4j users are recommended to upgrade to this release. Upgrading to Neo4j 2.2 (from Neo4j 2.1 or earlier) requires a migration to the on-disk store and can not be reversed. Please ensure you have a valid backup before proceeding. Production users of Neo4j 2.1, or earlier, should note that there will be configuration changes required and that applications will need to be updated to support authentication of database requests. Please see our Upgrading to Neo4j 2.2 FAQ for further details..

    (Note: Neo4j 1.9 users may also upgrade directly to this release, and are recommended to do so carefully. We strongly encourage verifying the syntax and validating all responses from your Cypher scripts, REST calls, and Java code before upgrading any production system. For information about upgrading from Neo4j 1.9, please see our Upgrading to Neo4j 2 FAQ.)

    Source code(tar.gz)
    Source code(zip)
  • 2.2.5(Sep 4, 2015)

    Neo4j 2.2.5 is a maintenance release, with critical improvements.

    Changes in this release:

    • Resolves a critical issue with incremental backups (Neo4j Enterprise), that could result in database inconsistencies after restoring from backup.
    • Resolves a locking issue that could occur in a High Availability deployment (Neo4j Enterprise), which could result in locks being held too long on cluster slaves and resulting is possible deadlock scenarios.
    • Resolved a rare race condition in index lookups, which could result in matched entities not being found by an index lookup.
    • Updates the neo4j import tool to handle the --multiline-field option when importing from CSV.
    • Improved recovery of database statistics after unclean shutdowns, resulting in more accurate statistics.
    • Resolves an issue with recovery of database statistics could fail if large number of indexes are in use.

    All Neo4j users are recommended to upgrade to this release. Upgrading to Neo4j 2.2 (from Neo4j 2.1 or earlier) requires a migration to the on-disk store and can not be reversed. Please ensure you have a valid backup before proceeding. Production users of Neo4j 2.1, or earlier, should note that there will be configuration changes required and that applications will need to be updated to support authentication of database requests. Please see our Upgrading to Neo4j 2.2 FAQ for further details.

    (Note: Neo4j 1.9 users may also upgrade directly to this release, and are recommended to do so carefully. We strongly encourage verifying the syntax and validating all responses from your Cypher scripts, REST calls, and Java code before upgrading any production system. For information about upgrading from Neo4j 1.9, please see our Upgrading to Neo4j 2 FAQ.)

    For a full summary of changes in this release, please review the CHANGES.TXT file contained within the distribution.

    Source code(tar.gz)
    Source code(zip)
  • 2.2.4(Sep 4, 2015)

    Neo4j 2.2.4 is a maintenance release, with critical improvements.

    Changes in this release:

    • Improvements to Cypher performance when reading properties of nodes and relationships.
    • Resolves a Cypher semantic error when nesting multiple FOREACH clauses.
    • Resolves a Cypher runtime when encountering null values during an index seek (#4673).
    • Resolves an issue in embedded TransactionEventHandler’s, which could return an incorrect relationship type for changed or deleted relationships (#4910).
    • Removes the legacy index limit on the number of indexed properties that may be updated in a single transaction.
    • Resolves a rare issue in index recovery, that could result in indefinite blocking for subsequent index updates.
    • The neo4j import tool now handles multiline fields by default.

    All Neo4j users are recommended to upgrade to this release. Upgrading to Neo4j 2.2 (from Neo4j 2.1 or earlier) requires a migration to the on-disk store and can not be reversed. Please ensure you have a valid backup before proceeding. Production users of Neo4j 2.1, or earlier, should note that there will be configuration changes required and that applications will need to be updated to support authentication of database requests. Please see our Upgrading to Neo4j 2.2 FAQ for further details.

    (Note: Neo4j 1.9 users may also upgrade directly to this release, and are recommended to do so carefully. We strongly encourage verifying the syntax and validating all responses from your Cypher scripts, REST calls, and Java code before upgrading any production system. For information about upgrading from Neo4j 1.9, please see our Upgrading to Neo4j 2 FAQ.)

    For a full summary of changes in this release, please review the CHANGES.TXT file contained within the distribution.

    Source code(tar.gz)
    Source code(zip)
  • 2.2.3(Jun 24, 2015)

    Neo4j 2.2.3 is a maintenance release, with critical improvements.

    Changes in this release:

    • Improvements in consistency checking, providing more detailed checking of on-disk store correctness.
    • A new configuration option in Neo4j Browser, causing it to automatically disconnect from Neo4j when the browser is closed or after a period of inactivity (Neo4j Enterprise).
    • A critical fix in HA cluster cache consistency, which could result in writes not being visible on the master of the cluster (Neo4j Enterprise).
    • Several fixes for issues with the 2.2 Cypher compiler which may affect validity of queries and correctness of results.
    • Corrects a rare panic condition, that could result in a non-cleanly shutdown store that wouldn't be recovered on restart.
    • Corrects a issue when using legacy indexes, where previously deleted nodes or relationships may still be visible.
    • Resolves a critical issue, where a single transaction updating more than 63 legacy indexes did not fail as expected and would instead update entries in the wrong index.
    • Provides experimental support for server plugins compiled using Java 8 features (running Neo4j Server on JVM 8 is fully supported).

    All Neo4j users are recommended to upgrade to this release. Upgrading to Neo4j 2.2 (from Neo4j 2.1 or earlier) requires a migration to the on-disk store and can not be reversed. Please ensure you have a valid backup before proceeding. Production users of Neo4j 2.1, or earlier, should note that there will be configuration changes required and that applications will need to be updated to support authentication of database requests. Please see our Upgrading to Neo4j 2.2 FAQ for further details..

    (Note: Neo4j 1.9 users may also upgrade directly to this release, and are recommended to do so carefully. We strongly encourage verifying the syntax and validating all responses from your Cypher scripts, REST calls, and Java code before upgrading any production system. For information about upgrading from Neo4j 1.9, please see our Upgrading to Neo4j 2 FAQ.)

    Source code(tar.gz)
    Source code(zip)
  • 2.3.0-M02(Jun 23, 2015)

  • 2.2.2(May 21, 2015)

    Neo4j 2.2.2 is a maintenance release, with critical improvements.

    Notably, this release:

    • Provides full support for Oracle and OpenJDK Java 8.
    • Resolves an issue that prevented the Neo4j Browser from loading in the latest Chrome release (43.0.2357.65).
    • Corrects the behavior of the :sysinfo (aka :play sysinfo) browser directive.<
    • Improves the import tool handling of values containing newlines, and adds support for skipping duplicate nodes in the input data.
    • Resolves a number of critical issues with the 2.2 Cypher compiler, which affect validity of queries and correctness of results.
    • Improves recovery after a non-clean shutdown, by applying outstanding transactions in batch.
    • Improves write performance for label creation, by batching label scan index writes initiated in concurrent transactions.
    • Resolves a logging issue in Neo4j Desktop, that could result in duplicated logging output after multiple restarts.
    • Resolves a logging issue in Neo4j Enterprise, that could result in excessive logging during network outages (Neo4j Enterprise).
    • Resolves an issue in the automatic configuration of the HPC cache, whereby systems with large amounts of memory would result in an error when trying to allocate an excessively large cache array (Neo4j Enterprise).
    • Ensures HA cluster instances abort after a first attempt to join a cluster containing an unrecognized database, instead of continually re-attempting to join (Neo4j Enterprise).

    All Neo4j users are recommended to upgrade to this release. Upgrading to Neo4j 2.2 (from Neo4j 2.1 or earlier) requires a migration to the on-disk store and can not be reversed. Please ensure you have a valid backup before proceeding. Production users of Neo4j 2.1, or earlier, should note that there will be configuration changes required and that applications will need to be updated to support authentication of database requests. Please see our Upgrading to Neo4j 2.2 FAQ for further details..

    (Note: Neo4j 1.9 users may also upgrade directly to this release, and are recommended to do so carefully. We strongly encourage verifying the syntax and validating all responses from your Cypher scripts, REST calls, and Java code before upgrading any production system. For information about upgrading from Neo4j 1.9, please see our Upgrading to Neo4j 2 FAQ.)

    Source code(tar.gz)
    Source code(zip)
  • 2.3.0-M01(May 19, 2015)

  • 2.2.1(Apr 14, 2015)

    Neo4j 2.2.1 is a maintenance release, with critical improvements.

    Notably, this release:

    • Resolves a number of critical issues with the 2.2 Cypher compiler, which affect validity of queries and correctness of results (#4315, #4331, #4332, #4341, #4342).
    • Deprecates the 2.0 and 2.1 Cypher compilers, which will be removed in Neo4j 2.3.
    • Provides several performance improvements related to reading and flushing data to disk.
    • Adds ability to import data in different encodings, using the import tool.
    • Ensures the import tool does not create empty array properties when there is no value for that property in the input row.
    • Resolves a critical issue that could cause the import tool to fail with an ArrayIndexOutOfBoundsException.
    • Provides several memory use and other performance improvements in the import tool.
    • Ensures client errors in the REST API always include an appropriate ClientError in the response along with a correctly identified stacktrace (#4145).
    • Resolves a rare scenario that could result in excessive memory use during a HA role switch (Neo4j Enterprise).
    • Resolves an issue affecting the use of Neo4j Browser with Internet Explorer, resulting in an incorrectly displayed Cypher query plan visualization.
    • Improves rendering of empty results in Neo4j Browser, to ensure they are clearly identified as containing no data.
    • Corrects a rare race condition that could result in successful creation of a uniqueness constraint, despite duplicate values being added during constraint creation.

    All Neo4j users are recommended to upgrade to this release. Upgrading to Neo4j 2.2 (from Neo4j 2.1 or earlier) requires a migration to the on-disk store and can not be reversed. Please ensure you have a valid backup before proceeding. Production users of Neo4j 2.1, or earlier, should note that there will be configuration changes required and that applications will need to be updated to support authentication of database requests. Please see our Upgrading to Neo4j 2.2 FAQ for further details..

    (Note: Neo4j 1.9 users may also upgrade directly to this release, and are recommended to do so carefully. We strongly encourage verifying the syntax and validating all responses from your Cypher scripts, REST calls, and Java code before upgrading any production system. For information about upgrading from Neo4j 1.9, please see our Upgrading to Neo4j 2 FAQ.)

    Source code(tar.gz)
    Source code(zip)
  • 2.1.8(Apr 3, 2015)

    Neo4j 2.1.8 is a maintenance release, with critical improvements.

    Notably, this release:

    • Resolves an issue that could result in lost index files due to a failure during constraint creation.
    • Fixes an issue that affected re-created indexes, whereby they would occasionally be re-created in a state unable to accept writes.
    • Resolves an issue in the batch inserter that could affect the sorting and consistency of labels in the resulting store.
    • Corrects a reporting issue in consistency checking, where very long integer properties would be incorrectly identified as duplicates.
    • Resolves an occasional failure during store copy (Neo4j Enterprise).

    All Neo4j 2.x users are recommended to upgrade to this release. Upgrading to Neo4j 2.1, from Neo4j 1.9.x or Neo4j 2.0.x, requires a migration to the on-disk store and can not be reversed. Please ensure you have a valid backup before proceeding, then use on a test or staging server to understand any changed behaviors before going into production.

    Neo4j 1.9 users may upgrade directly to this release, and are recommended to do so carefully. We strongly encourage verifying the syntax and validating all responses from your Cypher scripts, REST calls, and Java code before upgrading any production system. For information about upgrading from Neo4j 1.9, please see our Upgrading to Neo4j 2 FAQ.

    Source code(tar.gz)
    Source code(zip)
  • 2.2.0(Mar 30, 2015)

    Neo4j 2.2 is a significant release, that provides read and write performance for massive operational throughput — making it our fastest and most scalable graph database yet.

    Notably, this release:

    • A huge facelift to the Neo4j Browser, including many new ways to view and work with your data, including a new graph legend, the ability to terminate cypher queries, curving arrows, panning, visual query plans and much more.
    • A new cost based query planner for Cypher — which is much smarter at planning queries and more transparent about what it’s doing. This compiler is available in addition to the existing rule based compiler and Neo4j will automatically select which to use for each query (this behavior can be adjusted using compiler directives as described in the documentation of cypher query tuning).
    • Full support for profiling and explaining Cypher query plans, including a query plan visualizer in the Neo4j Browser.
    • Username and password authentication for accessing Neo4j. All access to the Neo4j Browser or REST APIs will now need to supply valid credentials. For more detail, see the section on server authentication and authorization in the documentation.
    • A new page cache, which is faster, provides significant improvements in handling of concurrent operations, and is easier to configure than the memory mapping in previous Neo4j releases — now requiring only a single configuration setting (see the configuration documentation for details).
    • Introduces fast-write buffering which dramatically increases the throughput of many write workloads without any configuration required.
    • The use of separate transactions logs for the graph and the indexes, co-ordinated by an XA system, has been replaced by a singular transactional management and one unified transaction log. This substantially reduces resource overhead and improves scalability. Note that as result of this, the previously exposed XA and JTA functionalities have been removed.
    • Many, many fixes improving stability, performance and usability.

    All Neo4j users are recommended to upgrade to this release. Upgrading to Neo4j 2.2.0 requires a migration to the on-disk store and can not be reversed. Please ensure you have a valid backup before proceeding. Production users should note that there will be configuration changes required, and that applications will need to be updated to support authentication of database requests. Please see our Upgrading to Neo4j 2.2 FAQ for further details..

    (Note: Neo4j 1.9 users may also upgrade directly to this release, and are recommended to do so carefully. We strongly encourage verifying the syntax and validating all responses from your Cypher scripts, REST calls, and Java code before upgrading any production system. For information about upgrading from Neo4j 1.9, please see our Upgrading to Neo4j 2 FAQ.)

    Source code(tar.gz)
    Source code(zip)
  • 2.1.0-RC1(Mar 5, 2015)

  • 2.1.0-RC2(Mar 5, 2015)

  • 2.0.0-RC1(Mar 5, 2015)

  • 2.0.0-M06(Mar 5, 2015)

  • 2.2.0-RC01(Mar 5, 2015)

  • 2.2.0-M04(Mar 5, 2015)

  • 2.1.7(Feb 3, 2015)

    Neo4j 2.1.7 is a maintenance release, with critical improvements.

    Notably, this release:

    • Default configuration for the relationship group store memory mapping (neostore.relationshipgroupstore.db.mapped_memory) is now 10M rather than 0, which provides a significant performance improvement.
    • Resolves an issue where excessive memory could be used during recovery after an unexpected shutdown.
    • Improves the enforcement of schema constraints, resolving several rare race conditions.
    • Ensure the batch importer correctly enforces schema constraints.
    • Improvements to error checking for some Cypher queries using shortestPath.
    • Performance improvements in the serialization of responses to REST API requests.
    • Resolves an issue that could cause backups to be un-usable in slave instances of a HA cluster (Neo4j Enterprise).
    • Improvements to HA cluster error handling (Neo4j Enterprise).

    All Neo4j 2.x users are recommended to upgrade to this release. Upgrading to Neo4j 2.1, from Neo4j 1.9.x or Neo4j 2.0.x, requires a migration to the on-disk store and can not be reversed. Please ensure you have a valid backup before proceeding, then use on a test or staging server to understand any changed behaviors before going into production.

    Neo4j 1.9 users may upgrade directly to this release, and are recommended to do so carefully. We strongly encourage verifying the syntax and validating all responses from your Cypher scripts, REST calls, and Java code before upgrading any production system. For information about upgrading from Neo4j 1.9, please see our Upgrading to Neo4j 2 FAQ.

    Source code(tar.gz)
    Source code(zip)
A distributed, fault-tolerant graph database

STATUS Twitter is no longer maintaining this project or responding to issues or PRs. FlockDB FlockDB is a distributed graph database for storing adjan

Twitter Archive 3.3k Sep 16, 2021