Skip to content

Neo4j 2.1 Enterprise changelog

Jonas Kalderstam edited this page Mar 31, 2017 · 2 revisions

2.1.8

Includes all changes from 2.0.4

Kernel:

  • Fixes an issue in the batch inserter, where writing multiple labels would not sort them correctly, and writing the same label twice could introduce duplicate label records.
  • Fixes an issue where we would fail to delete the index files of a uniqueness constraint, if the database crashed during the commit of the transaction that created said constraint and the constraint cannot be brought online because duplicates have since been committed.
  • Fixes an issue where recovery of transactions that creates, drops and recreates an index, could leave it in a state where it wouldn't accept new writes.

Lucene index:

  • Track and prevent overflowing the per-index document limit of Lucene.

Consistency checker:

  • Fixes an issue where the consistency checker would report very large indexed long valued properties as duplicates, even though they were distinct.
  • Add a "consistency_check_graph" setting (for the "-config" properties file) that allows you to turn off consistency checking of the store files, and only check the indexes and the schema.

Cypher:

  • Throw an exception when toInt() is used to parse a number too big to fit in 64 bits

Backup:

  • Add a "-gather-forensics" flag that will include the transaction log files in the backup.

HA:

  • Fixes an issue where store copying could get a NullPointerException when it was cancelled, because it deleted the downloaded files too quickly.
  • Fixes an issue where creating a uniqueness constraint could race with a violating transaction, and allow both transactions to commit.

2.1.7

Kernel:

  • It is now possible to define the amount of memory to dedicate to mapping portions of the relationship type storage
  • Recovery of the relationship type store no longer leads to excessive size use because of improper id use
  • Batch importer will now throw ConstraintViolationException when a schema constraint is not respected
  • Deleting a Node already deleted in the running transaction will now result in an EntityNotFoundException
  • Constraint enforcement is now more strict courtesy of using an up to date Lucene index reader
  • messages.log file is now properly created under Windows

Cypher:

  • Fixes problem when using undirected variable length paths
  • Fix type error that made numbers coercible to boolean
  • Fail with a helpful error message when predicates in shortest path can't be used as expected
  • Fixes problem when using shortest paths with minimal length of 0
  • Fixes bug when using index hints with OPTIONAL MATCH
  • Fixes behaviour of REMOVE on NULL entities

Server:

  • Improves performance of JSON serialization by flushing buffers only on HTTP stream flushing

Backup:

  • Fixes bug where the backup process would result in stores inappropriate for use as slave instances in HA clusters, because of improper last txid information

HA:

  • Slaves receiving IllegalEpochException will from now on react to it by updating themselves to properly communicate with the master

2.1.6

Kernel:

  • Fixes issue with shutdown order for the store and the transaction log, which might result in record changes to not be applied in case of IO errors
  • Fixes potential deadlock if a transaction starts when the database is shutting down
  • Fixes potential ConcurrentModificationException from concurrent access to AutoIndexer configuration

Lucene index:

  • Tweaks of segment merge options which allow for reduced file handle usage

Consistency checker:

  • Fixes bug that could lead to false positives when checking for property owners

Server:

  • Users of unmanaged extensions now have access to Cypher ExecutionEngine
  • Expose node degree in REST API

Backup:

  • Fixes an issue with backup, where it could happen that the backup would not be initialized with the proper last txid which could make the store inappropriate for use in HA

HA:

  • Fixes issue where if the master lost contact with a majority of slaves and subsequently contact was restored, the master instance would not resume its role

2.1.5

Cypher:

  • Solves shortest path end points when they are missing
  • Removes eager loading of data for OPTIONAL MATCH

Kernel:

  • Solves an issue where discrete remove+add operations on an existing property is not properly translated to a change operation, but rather is translated to an add operation
  • Adds a property chain verification mechanism that detects duplicate property names for a given node/relationship as properties are loaded. It logs the state to the console, capped to 1 message every two hours
  • Solves an issue where relationship removal from a node would lead to iteration over the relationships of that node to continue beyond the available relationship set
  • Improves performance for index lookups during transactions by removing some exception handling
  • Fixes issue with high id calculation that could lead to store file sizes being larger than required
  • Fixes issue with property value equality definition in index state. It is now the same as for reading from indexes on disk

Server:

  • Node REST representations now contain the labels of the node

Consistency checker:

  • Added a consistency check for duplicate property names in a given node/relationship's property chain

Cluster:

  • Fixes issue where the lowest numbered instance would fail to leave and rejoin the cluster, if it was not master before leaving

HA:

  • Adds the ability for an instance state change to SLAVE can be cancelled by appropriate events. This solves problems with occasional high state switch times and potentially instances failing to join
  • Fixes consistency issues with the state reported by the HA bean. Now there will be no incompatible roles reported in the JMX console for a particular instance

1.9.9

Kernel:

  • Fixes issue in ReferenceCache which could lead to excessive memory usage
  • Fixes potential ommission of relationships of a node when transactions that affect them are rolled back
  • Fixes potential lock leak issue with the Lock Manager component
  • Store files now no longer expand beyond what's necessary during shutdown and no longer contain spans of zeroe'd records
  • Solves issue with excessive number of Remove commands in the lucene logs, caused by having auto indexing enabled and changing properties
  • Auto indexing no longer attempts to remove properties that have been removed from the configuration as candidates for autoindexing
  • Fixes issue where an exception during shutdown could lead to recovery not completing properly on next restart

Server:

  • Ensure transactional endpoint responds with an https location for https calls.

Graph Algo:

  • Ability to return paths with diminishing cost from Dijkstra/Traversal AStar

Cypher:

  • Adds UNWIND
  • Fixes problem where predicates are evaluated wrongly in NOT
  • Fixes problem when WITH introduces a symbol that shadows an existing identifier

Cluster:

  • Fixes issue where responses to learn requests from cluster members could lead to NullPointerExceptions after topology changes

2.1.4

Cypher:

  • Reduces memory usage for updating queries, in situations where eager loading of data is not necessary

Kernel:

  • Fixes issue with label and property changes, triggered with multiple adds and removes of the same label/property in the same transaction
  • Fixes issue with skipped relationships on transaction rollback
  • Batch importer now properly closes the store on shutdown
  • Upgrading a database no longer affects logging of normal operations
  • Corrects updating of Cache when all relationships of a certain type are removed from a dense node
  • Improves performance of index lookups within a transaction
  • Corrects migration of transaction logs when performing store upgrades from 2.0 and 1.9
  • Fixes race condition between committing and reading threads that might lead to duplicate relationships being returned

Consistency check:

  • Consistency checker package is now part of the community bundle
  • Fixes incorrect reports for deleted properties

UDC:

  • Disabling UDC through system properties now works as expected

HA:

  • Master switches now properly cancel slaves that are transitioning to an obsolete master.
  • Fixes an issue where an instance would report, through JMX, invalid roles for a cluster member
  • Transactions that perform no logical changes will now be properly identified as read only
  • Instances in HA mode will now refuse to start on a store that needs to be upgraded
  • Instances will now check, as part of the cluster join process, if another instance has a store of the same version but upgraded from a store copy that had different transaction count, preventing the possibility of binary incompatible stores participating in the same cluster
  • Starting a HA cluster on an upgraded store will now work as expected, due to logs being upgraded as part of the store upgrade process

Backup:

  • Command line tool no longer expects "-from" argument, but "-host" and "-port" instead

2.1.3

Cypher:

  • Adds support for Octal literals (using a preceding 0, e.g. 03517)
  • Adds support for Hexadecimal literals (using a preceding 0x, e.g. 0xF0071E55)
  • Add exists(...) predicate function for checking patterns and properties
  • Ensure toString(...) only does type conversion
  • No longer introduces eagerness in some trivially decidable cases, such as MATCH a, b CREATE (a)-[r:X]->(b)
  • Avoids opening two transactions per single request REST transaction by introducing caching of PreparedQueries in ExecutionEngine.

Kernel:

  • Fixed a bug where the BatchInserter would generate inconsistent uniqueness constraints.
  • Fixed a bug where relationships sometimes were not loaded up for nodes that has many relationships in one direction, and none in the other direction.
  • Fixes a memory leak in the object cache when the database was only creating new entities, i.e. when not reading or updating existing entities.
  • Adds support for upgrading directly from 1.9 stores, in addition to the existing ability to upgrade from 2.0 stores.

HA:

  • Fixes a bug where instances could not join a cluster if their transaction log files were not sufficiently recent.
  • Fixes a bug where a cluster instance could not participate in leader elections after it had resurfaced from a crash.
  • Fixes a bug that could lead to constraints suddenly missing their associated indexes after a mode switch in HA.
  • Fixes a data race bug in the Enterprise (Forseti) LockManager, that could lead to transactions mistakenly failing with IllegalStateExceptions.
  • Fixes a bug in the Enterprise (Forseti) LockManager where explicit shared locks could not be properly upgraded to exclusive locks.

2.1.2

Cypher:

  • Allow Cypher to use indexes to solve IN queries

Kernel:

  • Resolves a recovery issue, where multiple crashes in a row without clean shutdown or log rotation in between could lead to some transactions not being replayed on recovery
  • BatchImporter properly zeroes out reused buffers, ensuring relationship record backpoints are properly setup during migration

Server:

  • Ensures transactional endpoint responds with an https location for https calls

Browser:

  • Relaxes heartbeat to server

Consistency Checker:

  • Consistency checks on non-constraint indexes is significantly faster

HA:

  • Fixes issue with Forseti lock manager, which could miss grabbing locks under a race condition
  • Update puller on master no longer tries to pull updates from itself

Backup:

  • Backup script now exits with error if consistency check after full backup reveals errors

1.9.8

Kernel:

  • Fixes potential leak of transaction state in entity locks that could lead to excess GC activity
  • Fixes "illegal position" errors from persistence window pool
  • Fixes potential race in XaLogicalLog that could lead to duplicate entries in the log
  • Fixes a memory leak in DiskLayer that could happen through heavy properties on datasource restarts
  • Index transactional state now properly distinguishes between indexes that refer to the same label but different properties. Previously it was possible to erroneously retrieve indexes that have not been committed yet if asking by label.
  • Properly close IndexReaders, preventing potential file descriptor leaks.
  • Fixes a bug that could cause locks to improperly clean up state
  • Store upgrades will now migrate some transaction logs along with the store, allowing extraction of transactions without requiring new transactions to happen

Cluster:

  • Adds version marking in election results, solving problems with incorrect election outcomes and instances failing to join the cluster
  • Slave only instances will not become coordinators under any circumstances

2.1.0-RC2

Kernel:

  • Fixes issue where store upgrade could leave relationship ids to be reused by subsequent usage of the database

2.1.0-RC1

Kernel:

  • The traversal framework can now take Iterable as starting points
  • The Iterable returned from getRelationships(...) can now be iterated more than once
  • Improve the performance of the server by reducing the overhead of logging
  • Further performance improvements for the upgrade process
  • Improve performance by producing less work for the GC in various places
  • Fixes a bug where the transaction log could get duplicate entries, making it unusable for recovery
  • Fixes a bug where the database could leak memory after a mode switch in HA
  • Fixes a bug where file descriptors would leak if more than one MERGE statement was executed in a transaction
  • Fixes a bug where an uncommitted index creation in a transaction could interfer with observing the state of other existing indexes
  • Fixes a bug where old transaction log files could prevent the database from upgrading to a newer version

HA:

  • Add support for rolling upgrades from 2.0.1 or greater (2.0 is not supported)
  • Fixes a bug where slave_only instances could participate in, and win, leader elections

Cluster:

  • Fixes a number of issues when multiple leader elections are in flight concurrently

Cypher:

  • To the new planner, added:
    • Select or SemiApply
    • Optional Expand
    • Outer Hash Join
    • Aggregation
    • Skip
    • Limit
    • SortLimit
  • New planner is disabled by default

2.1.0-M02

Kernel:

  • Widens recoverable failure scenarios for schema indexes
  • Fix for recovery of schema changes in the case of 2PC transactions
  • Compile on Java8. Fixes #2149
  • Reduce synchronization in createTranasction path
  • Made transaction service more resilient to user code leaking transactions.
  • Performance improvements for upgrade process.
  • Introduce new Locks API, and the Forseti lock manager

HA:

  • Clarify the error message for when releasing locks claim prior to a master-switch
  • Reduce network overhead of locking in HA
  • Fix of issue with state bookkeeping for reporting instance role

Cluster:

  • Throttles debug output of clustering code in messages.log
  • Fix issue with cluster bricking if specific message lost when master leaves

Cypher:

  • Add a new cost based planner
  • To the new planner, added:
    • All nodes scan
    • Cartesian product
    • Apply
    • Relationship by id
    • Expand
    • Node by id
    • Node by label
    • Node by index seek
    • Hash join
    • Optional
    • Projection
    • Selection
    • SemiApply
    • Sort
    • Named paths
  • Fix problem where LOAD CSV stops indexes from being used

2.1.0-M01

Cypher:

  • Add LOAD CSV
  • Add USING PERIODIC COMMIT

Kernel:

  • Introduces utility methods for printing paths into a new class, org.neo4j.graphdb.traveral.Paths
  • Deprecates several methods in the old traversal framework (org.neo4j.kernel.Traversal) that have been replaced by new utilities in the org.neo4j.graphdb.traversal library. No breaking changes made, but this flags for these features being removed in the next major version, 3.0.
  • Relationship chains are now split by type and direction. Disk storage format changes, requires an upgrade.
  • Fixes an issue with tx log reading in damaged log files
  • Adds support for labels in transaction event handlers

Cluster:

  • Solves issue with join denied when restarting a failed instance before it times out on the master.
  • Instances will now not form clusters on startup unless they managed to contact every other instance in initial_hosts setting.

======= HA:

  • Slaves will now fall back to a full store copy if the master misses logs old enough to serve inremental updates on join