Skip to content

Neo4j 2.1 Advanced 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

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

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
  • ReST API now exposes node degree

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

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

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.

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

2.1.0

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

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

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

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

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.

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