2.2.6
-----
o Fixes #4415 - not leaking tx state containing neo store records across transactions
o Fixes an issue where label updates where supplied unordered during batch import
  when deduplicating nodes. This issue could prevent any import containing duplicate
  input ids from completing successfully.
o ID files will now be properly always marked as unclean on unclean
  shutdowns, fixing issue where recovery could require a database
  restart to complete
o TransactionIdStore tracks highest transaction id instead of highest gap-free transaction id.
  This fixes an issue where a lower transaction id than expected would be seen as last committed.
o Fixes #5528 - Unique constraint not being respected
o Awaits uniqueness constraint indexes to be rebuilt, if recovery process decides to do so,
  before considering the database as started. This mimics the behaviour of creating such a constraint.
o Greatly lowered memory usage during rebuilding of counts store.

2.2.5
-----
o Adds timeout for log rotation
o Count store no longer rotates during consistency checks
o Count store is now properly marked as unclean on failed shutdown and is
  rebuilt if necessary
o Fixes issue where very large configured values for log prunning threshold
  would not be respected
o Legacy index lifecycle is now handled properly during restarts, which fixes an
  issue where stale index files were used
o Fixes an IllegalArgumentException encountered during count store rebuilds with
  large number of indexes
o Properties are no longer read when deleting them, fixing  an issue where stale
  reads could lead to errors

2.2.4
-----
o Fixes #4910 - TransactionData incorrect when modifying/deleting relationships.
o Read only transactions no longer trigger Transaction events
o Log rotation will now always leave at least one logical log in place regardless of prune strategy
  decisions. This ensures that there are always transactions to serve to slave and incremental backups
o Lifted the 63 name constraint per transaction for index commands. It is now possible to update more than 63 legacy
  indexes and/or 63 property names in a single transaction.
o Fixed a ClassCastException error that manifested under very specific conditions when updating a legacy index.
o Batch importer will now check all constraints when it shuts down and will report any violations

2.2.3
-----
o Fixes an issue where a shutdown of a database that had a panic might mark the database as cleanly shut down
  where it actually needed a recovery on next startup.
o Setting for specifying query logging `dbms.querylog.filename` now specifies a file, not a directory.
  This setting also now has no default, which means query logging is now disabled by default.
o Transaction event handlers can now reach relationship start/end node and type in afterCommit
  for created and deleted relationships without requiring a transaction.

2.2.2
-----
o Parallelized relationship import stage in the batch importer for better scalability
o Much better memory usage of :ID batch importer index, specifically around conflict resolutions.
o Properly propagates exceptions during startup of a database, regardless of whether or not shutdown throws exception.
o Much faster recovery after a non-clean shutdown or crash, due to transactions getting applied in batches.
o Fixes batch import issue with anonymous nodes, i.e. imported nodes w/o :ID. They could previously
  cause random failures during preparation of the IdMapper index.
o Reduced contention of updates to label scan store by using batching of concurrent transactions,
  similar to batched writes to the transaction log.
o Label scan store is built in parallel by the batch importer, to avoid waiting for it to build the first startup.
o Fixes an IdMapper encoding issue when using INTEGER id type which resulted in many unnecessary index conflicts,
  which in turn resulted in an unnecessarily high IdMapper memory consumption.

2.2.1
-----
o Fixed issue where counts could get not up to date values in db created with importer
o Importer doesn't set any empty array properties during import
o Fixed issue where importer could assign wrong sets of properties on relationships
  in the vicinity of "bad" relationships
o Fixed issue with AIOOBE during property encoding in importer
o Fixed race condition when taking a uniqueness constraint ONLINE which could let changes,
  that would violate the constraint, to be committed.
o Added ability to scan index in addition to scanning node store
o Fixed issue where importer IdMapper collision detection would use excessive memory
o Performance improvements to importer, specifically around preparing IdMapper

2.2.0
-----
o Fixed issue where index wasn't properly recovered if one with the same label/property
  had earlier been created and dropped
o Fixed race condition where a unique constraint is being created while
  concurrent transactions would violate the constraint
o Fixed concurrency issue in NodeLabelsCache
o Fixed a race between committing transaction and db shutting down
o Removed unnecessary call to IndexingService monitor on commit if no index changes
o Fixed inconsistent-read bugs in StandardStore
o Introduced user-friendly error message if Lucene index limits are going to be
  reached during a commit

2.2.0-RC1
---------
o Fixed race condition where constraint index would be made available before it was actually ready.
o Import tool allows user to specify a threshold of failed relationships (due to a missing node) to
  accept rather than throwing an exception as soon as one is encountered.
o Improved speed of rebuilding counts store by using import tool counts computer.
o Fixed bug where we could read past the last page of the counts store.
o Fixed issue where failed unique constraints weren't being correctly orphaned on recovery.

2.2.0-M04
---------
o Default logical log rotation threshold is now 250Mb, minimum 1Mb
o Import tool optimizations and a fixed Windows-specific memory issue around reading large files
o Treats newlines in indexes platform independent. Automatic upgrade from previous minor version available

2.2.0-M03
---------
o Fixes issue with open file limit when using frequent PERIODIC COMMITs during import
o Rename the mapped_memory_total_size setting to dbms.pagecache.memory
o Fix property uniqueness constraint violation during concurrent modifications
o messages.log was missing on windows
o Fix an issue where deleting consecutive relationships could corrupt the relationship cache
o Fix the ordering of how we write long strings to the property store, as well as node and
  relationship record, preventing not in use type exceptions

2.2.0-M02
---------
o Introduced GraphDatabaseService.execute(...) for executing cypher queries.
o For projects using Neo4j, usage of ImpermanentGraphDatabase testing facility
  requires explicit dependency on "test-jar" from the "neo4j-io" module.

2.2.0-M01
---------
o Configuration for store memory mapping values is now changed to be a
  single value that is shared across all stores
o New Muninn page cache offers more performant operation with reduced
  garbage collector strain
o Removes dependency on JTA
o Lucene logical logs (lucene.log.vXXX) and TransactionManager
  logs (tm_tx_log.X) are no longer created
o Logical logs are now renamed to neostore.transaction.db.vXXX
o Introduces batched writes, which especially benefit small transactions
  and multi-threaded workloads
o Log rotation no longer transfers transactions in flight between
  logs, removing a class of performance issues
o Introduces count store (neostore.counts.db) for use by the
  cost based Cypher planner
o Deprecated Function and Function2 interfaces, as they are internal utility APIs.
  Users may still use the new org.neo4j.function.Function interface, but these are no
  longer considered official API. Users are expected to choose a utility library like
  Guava or apache commons for their utility needs.
o Extends the Transaction interface with a new method `terminate()` that makes it possible
  to mark the transaction as terminated, which means it will be both marked for rollback
  as well as all further operations carried out within that transaction will throw
  a `TransactionTerminatedException` exception.
o Adds an import script (neo4j-import on Unix, Neo4jImport on Windows) for bulk import
  of data from CSV files

2.1.8
-----
o 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.
o 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.
o 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.

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

2.1.6
-----
o 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
o Fixes potential deadlock if a transaction starts when the database is
  shutting down
o Fixes potential ConcurrentModificationException from concurrent access to
  AutoIndexer configuration

2.1.5
-----
o 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
o 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
o 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
o Improves performance for index lookups during transactions by removing some
  exception handling
o Fixes issue with high id calculation that could lead to store file sizes being
  larger than required
o Fixes issue with property value equality definition in index state. It is now
  the same as for reading from indexes on disk

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

2.1.3
-----
o Fixed a bug where the BatchInserter would generate inconsistent uniqueness
  constraints.
o 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.
o 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.
o Adds support for upgrading directly from 1.9 stores, in addition to the
  existing ability to upgrade from 2.0 stores.

2.1.2
-----
o 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
o BatchImporter properly zeroes out reused buffers, ensuring relationship record backpoints are properly
  setup during migration

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

2.1.0
-----
o Fixes potential leak of transaction state in entity locks that could
  lead to excess GC activity
o Fixes "illegal position" errors from persistence window pool
o Fixes potential race in XaLogicalLog that could lead to duplicate
  entries in the log
o Fixes a memory leak in DiskLayer that could happen through heavy
  properties on datasource restarts
o 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.
o Properly close IndexReaders, preventing potential file descriptor leaks.
o Fixes a bug that could cause locks to improperly clean up state
o Store upgrades will now migrate some transaction logs along with the
  store, allowing extraction of transactions without requiring
  new transactions to happen

2.1.0-RC2
---------
o Fixes issue where store upgrade could leave relationship ids to be reused by
  subsequent usage of the database

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

2.1.0-M02
------------
o Widens recoverable failure scenarios for schema indexes
o Fix for recovery of schema changes in the case of 2PC transactions
o Compile on Java8. Fixes #2149
o Reduce synchronization in createTranasction path
o Made transaction service more resilient to user code leaking transactions.
o Performance improvements for upgrade process.

2.1.0-M01
------------
o Introduces utility methods for printing paths into a new class, org.neo4j.graphdb.traveral.Paths
o 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.
o Relationship chains are now split by type and direction. Disk storage format changes, requires an upgrade.
o Fixes an issue with tx log reading in damaged log files
o Adds support for labels in transaction event handlers

2.0.2
-----
o Fixes an issue with tx log reading in severely damaged log files.
o Fixes a JVM deadlock issue between committing and a reading thread
o Can now handle more gracefully a larger set of failed index states
o Logical logs are now kept, by default, for 7 days to make backup more likely to choose incremental.
o Fix a cache poisoning issue where large properties would keep a reference to a closed
  store after a HA role switch. Manifested as NullPointerException when reading very large
  properties in rare cases.
o Logical logs are now kept, by default, for 7 days to make backup more likely to choose incremental.
o Fixes issue where store migration forgets about legacy indexes
o Datasource specific transaction application now respects global TM state
o Fixes an issue where indexes that have been dropped would fail recovery
  if commands to activate them were run in recovery.
o Fixes byte count monitoring
o Fixes issue with proper update of indexes that came from improper
  command execution order
o Fixes memory leak in XaResourceManager that could lead recovered
  transaction application to delay noticeably
o Fixes null pointer exceptions coming from LazyProperties being
  half loaded while a datasource restart happens

2.0.1
-----
o Improve speed of verifying unique constraints on constraint creation.
o Improve speed of creating label scan store in BatchInserter.
o Fixes issue with batch inserter which could lead to record not in use exception
  when adding properties
o Introduces monitoring for reads/writes to the logical log

2.0.0-RC1
---------
o BREAKING CHANGE: Reference node has been removed.
o BREAKING CHANGE: All classes under the org.neo4j.kernel package space, except
  those related to the traversal frameworks, are now deprecated and due to be moved
  into internal packages. This includes well-known classes such as EmbeddedGraphDatabase
  and HighlyAvailableGraphDatabase, both of which are replaced by GraphDatabaseFactory
  and HighlyAvailableGraphDatabaseFactory, respectively.
o BREAKING CHANGE: Removed deprecated settings from org.neo4j.graphdb.factory.GraphDatabaseSettings. These settings are
  no longer effective and can be removed without any effect.
o BREAKING CHANGE: Removed deprecated org.neo4j.graphdb.index.IndexProvider (and associated
  org.neo4j.graphdb.index.IndexIterable and org.neo4j.graphdb.index.IndexProviderKernelExtensionFactory). This has been
  replaced by the kernel extension mechanism.
o BREAKING CHANGE: Removed deprecated org.neo4j.graphdb.PropertyContainer#getPropertyValues(). Instead use
  org.neo4j.graphdb.PropertyContainer#getPropertyKeys() and org.neo4j.graphdb.PropertyContainer#getProperty(String).
o BREAKING CHANGE: Removed deprecated methods from org.neo4j.kernel.GraphDatabaseAPI: #getDiagnosticsManager(),
  #getMessageLog(), #getIdGeneratorFactory(), #getKernelData() and #getPersistenceSource(). These are internal
  components which Kernel clients should not need to access. The entire org.neo4j.kernel.GraphDatabaseAPI interface is
  deprecated and will be removed in future.
o BREAKING CHANGE: Deprecated constructors of EmbeddedReadOnlyDatabase and EmbeddedGraphDatabase have been removed,
  in favor of the long-advertised alternative GraphDatabaseFactory.
o BREAKING CHANGE: All deprecated methods in GraphDatabaseAPI have been removed in favor of getDependencyResolver().

2.0.0-M05
---------
o BREAKING CHANGE: GraphDatabaseSettings now only exposes Setting, deprecated settings classes have been removed.
o Fixed problems with array properties being updated multiple times in a single transaction
o Adds label store as an index
o Transaction now implements AutoClosable
o Distinguish between data and schema transactions
o Unique constraint validation for new data

2.0.0-M04
---------
o BREAKING CHANGE: Requires useage of Java 7
o BREAKING CHANGE: Transactions are now required for all operations throughout Java Core API,
  read operations as well as write operations.
o Defines proper equality for indexing of array properties.
o BREAKING CHANGE: Equality for indexing of number properties compares numbers independent of underlying primitive Java type.

2.0.0-M03
---------
o Read-only index results are closed properly

2.0.0-M02
---------
o Support for labels in the org.neo4j.unsafe.batchinsert APIs.
o BREAKING CHANGE: Replaced protected fields from org.neo4j.graphdb.factory.GraphDatabaseFactory with a single
  org.neo4j.graphdb.factory.GraphDatabaseFactoryState instance to avoid race conditions when creating multiple,
  lazily instantiated builders
o BREAKING CHANGE: org.neo4j.graphdb.index.BatchInserterIndex and org.neo4j.graphdb.index.BatchInserterIndexProvider
  has been removed in favor of the same interfaces available in org.neo4j.unsafe.batchinsert
o BREAKING CHANGE: The BatchInserter and the BatchGraphDatabase are not binary compatible with 1.9 due to some methods
  now taking a varargs array of labels as last argument.  Please recompile any code that depends on the BatchInserter.

2.0.0-M01
---------
o Adds support for adding, listing, removing, and testing of labels
o Adds support for creating, querying, and dropping label-based indexes

1.9.5 (2013-11-11)
------------------
o Fixed NPE in PersistenceWindowPool when concurrently loading non-mapped windows
o Fixed potential deadlock in PersistenceWindowPool cause by negative mark count
o Performance optimizations for best-first selector
o Database now waits on a timeout for transactions to finish before actually shutting
  down, while preventing new transactions from starting up

1.9.3 (2013-08-30)
------------------
o Remove hard dependency on Logback
o Introduction of logical_log_rotation_threshold to control log rotation.
o Autoconfigurator can handle cases where physical memory is less than the configured JVM heap
o Fixes index out of bounds errors when iterating over relationships
o Fixes race in persistent window pool which might lead to inconsistent data

1.9.2 (2013-07-16)
------------------
o When flushing persistent windows, do so only if dirty. This is a performance improvement
  for certain scenarios.
o Fixes bug where loading relationship chains with high ids would cause them to be
  ignored when iterating over them.

1.9.1 (2013-06-24)
------------------
o Fixes bug where creating an Index with an invalid configuration would not properly clean up
  the configuration for it.
o Fixes race condition that occasionally would make Node.getSingleRelationship() mistakenly fail.
o Fixes compliance for non-logback logging implementations
o Cleanup of transactions that fail commit happens under the same lock as the commit

1.9 (2013-05-13)
----------------
o Performance improvement on initial loading of relationship types during startup

1.9.RC2 (2013-04-30)
--------------------
o Fixes race conditions on usage of persistence windows' byte buffers that occasionally led to buffer over/underflows.

1.9.M05 (2013-03-05)
--------------------
o Concurrent modifications to relationship chains now do now lead to RecordNotInUse exceptions or
  cache poisoning
o Proper tx management will now make negative transaction counts impossible
o IndexProvider is now deprecated, replaced by KernelExtensionFactory
o Store locks are respected from read only instances too
o grab_file_lock configuration setting is now deprecated

1.9.M04 (2013-01-17)
--------------------
o Start entries are now explicitly marked as written, solves a bug that might cause recovery to fail

1.9.M02 (2012-11-30)
--------------------
o Made sure that auto-indexing removed graph elements from indexes when they are delete
o OrderByTypeExpander keeps ordering of type AND direction
o Fixed an issue where a lock on a store was sometimes not released
o Old GraphDatabaseSetting classes are now wrappers for Settings instances
o Fixes an issue where an incomplete 2PC transaction could cause recovery to not be triggered
o Optimizations for read performance
  - Cache refers to relationship types as ints instead of Strings.
  - Binary search on sorted arrays for finding properties and
    relationship types in the cache.
  - Less objects instantiated during getting and iterating relationships.
  - Reduced number of map lookups significantly for a getProperty call,
    especially outside transaction or in transactions without any changes.
    (previously 8 lookups whereof 2 synchronized, now down to as low as 2)
  - Uses ThreadLocal as mapper from thread to transaction
  - Refactored LockReleaser into TransactionState, associated with each
    transaction instead

1.9.M01 (2012-10-23)
--------------------
o XaDatasources now implement lifecycle and their registration with XaDatasourceManager triggers TxManager recovery
  on startup
o Neo4j logical log now handles running out of disk space at a critical point gracefully.
o Kernel extensions are now factories that create instances which participate in the database's lifecycle
o Fixes a race condition around relationship chain loading from multiple threads on the same node

1.8.RC1 (2012-09-05)
--------------------
o Removed contention around allocating and moving persistence windows so that a thread won't need to await
  another thread doing this refresh, instead just continue knowing that the windows will be optimally
  placed in a very near future.
o Removed contention around translating a key (as String) into the ID by using copy-on-write map instead
  of a concurrent hash map. Used in property key as well as relationship type translation.
o Fix for Node/Relationship#getPropertyValues() sometimes returning null values from the iterator.
o Important log messages from the transaction manager and the persistence window pool are now logged
  to messages.log, rather than to java.util.logging.

1.8.M07 (2012-08-08)
--------------------
o [DEPRECATION] Deprecated reference node. Indexes should be used for entry points in the graph
o Traversal framework backwards compatibility
  + Cleaned up any breaking changes
  + Removed Expander#addFilter
o Kernel JMX bean instance identifier is now reused and can optionally be set explicitly via forced_kernel_id config setting

1.8.M06 (2012-07-06)
--------------------
o Deprecated AbstractGraphDatabase.transactionRunning()
o Changed synchronization of applying transactions to prevent a deadlock scenario
o Original cause can be extracted from a transaction RollbackException

1.8.M05 (2012-06-25)
--------------------
o Configurable amount of logical logs to keep, by for example number of days or size on disk.
  keep_logical_logs configuration is extended to support values such as: "10 days", "200M size" a.s.o.
  Regardless of configuration there will always be at least the latest non-empty logical log left.
o Loosened contention in PersistenceWindowPool#acquire a bit not requiring any synchronization on the pool level.

1.8.M04 (2012-06-07)
--------------------
o Additions to the traversal framework:
  + Bidirectional traversals (with BidirectionalTraversalDescription). AllPaths/AllSimplePaths
    uses this feature and are now faster due to less relationships being traversed.
  + Multiple start nodes (as well as multiple end nodes for bidirectional traversals).
  + PathExpander (RelationshipExpander for Paths) which has the full Path passed in instead of
    just the end node of the path. It can also see and modify a user defined traversal branch state.
  + Metadata about the traversal, for the time being: number of relationships traversal and
    number paths returned.
  + Added Path#reverseNodes() and Path#reverseRelationships which gives all nodes/relationships in
    a path in reverse order (starting from the end node going back to the start node). More relevant
	in many scenarios as well as allowing for a more efficient implementation.
  + Sorting of traversal results, specify with TraversalDescription#sort(Comparable).
  + Some measure to reduce memory consumption and garbage generation during traversals.

1.8.M03 (2012-05-24)
--------------------
o Changed array map to CHM in property index manager, better multithreaded performance

1.8.M02 (2012-05-11)
--------------------
o Optimized short string and short array encoding algorithms
o Fixed problem with SpringTransactionManager during HA master switch

1.8.M01 (2012-04-26)
--------------------
o Byte array properties are handled in a more optimized way, increasing performance by a couple of times at least.
o Fix for an issue where update of cache when creating a relationship on a very dense node would take longer and longer time.
o Fix for an issue where a recovery would sometimes fail with it reporting that a start record already had been injected.

1.7 (2012-04-19)
----------------
o Moved BatchInserter to a different package.
o Fixed 'Record Not In Use' issue with creating and setting Node properties with the BatchInserter.
o Cleanup of configuration refactoring.

1.7.M03 (2012-04-11)
--------------------
o Refactoring of configuration and object instantiation.
o Removed old OSGi support in favor of the new and better one.
o Added possibility to use logback for logging.
o Renamed array cache to GC resistant cache (GCR) and moved it to enterprise.
o Fixed problem with GCR cache that could cause it to calculate incorrect size.
o Fixed problem with closing of messages.log on windows

1.7.M02 (2012-03-26)
--------------------
o Added lock free atomic array cache that avoids triggering full GCs.
o Added GC monitor that will keep track on how much the JVM blocks application threads.
o Fix for an issue where upgrading indices with an unclean shutdown.
o Replaced ArrayMap in TxManager with CHM.

1.7.M01 (2012-03-12)
--------------------
o Fixed bug in PropertyStore that during recovery would throw exception if the last record was incomplete.
o Fixes to transaction log start position caching which mitigates a performance issue and fixes a caching issue during rotation.
o Fixed a couple of issue around copying incomplete transaction to new log during a log rotation.
o Fixed a property cache poisoning bug and some stale references leaking.
o Lots of improved toString() of internal classes and better exception messages.
o Fixed a data race issue between threads removing the same property while the node is evicted from cache.
o Fixed an issue where a property record in the logical log was missing its owner.
o Added a checksum on a start record for a transaction combining Xid/master/me to get a pretty unique verification of equality.
o Log messages in messages.log are now printed in UTC time zone so that it's the same across servers.
o Fix for an issue where a full rebuild of an id generator (rebuild_idgenerators_fast=false) could result
  in exception when adding free ids.
o FileSystemAbstraction is in use everywhere instead of touch the FS directly.
o Fix for issue which would close an id generator as clean if a startup failed at the wrong time, which would make
  the id generator diverge from the store it held ids for and possible truncate that store file the next clean shutdown.

1.6 (2012-01-19)
----------------
o Minor performance optimization in property handling code.

1.6.M03 (2012-01-12)
--------------------
o Added means of introspecting locks taken by the LockManager.
o Added a diagnostics API.
o Added Index#putIfAbsent which ensures uniquely put key/value pair for an entity.
o Added UniqueFactory which gets or creates entities uniquely using Index#putIfAbsent
o Fixed an issue with upgrading an 1.5.M02 store where a "store version" record wouldn't be added and which caused problems after non-clean shutdown.
o Fixed an issue where sometimes dual start entries for a transaction would be added in the logical log.

1.6.M02 (2011-12-16)
--------------------
o Lower memory usage of ImpermanentGraphDatabase.
o Abstracted stores that stores id/name pairs into AbstractNameStore/AbstractNameRecord and removed lots of duplicated code.
o Fixed a race condition in the property cache which cuold poison the cache.
o Fixed an issue where a JVM crash in the wrong place would make the next startup rename the current logical log without
  incrementing the logVersion, making the next log rename fail.
o Start records in the logical log aren't written until the transaction starts preparing/committing. This fixes an issue
  with the logical log not being rotated sometimes.
o Added AbstractGraphDatabase#tx() which returns a TransactionBuilder possible of configuring the transaction to be "unforced"
  meaning that logical logs won't be forced when committing. Means better performance for small non-critical transactions.
o Reduced number of proxy object instantiation and node record loading in general.
o Added a wrapping graphdb abstraction, which makes instances survive even if the underlying db restarts.
o Detached LogExtractor from XaLogicaLog so that it can be used without having a db running.
o Added an API for progress indication. With a default implementation that prints dots (every 0.5%) and percentages
  (every 10%) to a PrintStream.
o Added Transaction#acquire{Read,Write}Lock for manually grabbing locks on nodes/relationships. Such locks can also be released earlier than tx.finish.

1.6.M01 (2011-11-24)
--------------------
o ImpermantentGraphDatabase now uses purely in-memory structures for speed during tests. It's done on a FileChannel level
  so that every other aspect of the database is intact, just that the bytes end up in ByteBuffers instead of files.
o Fixed an issue with evaluators not executing correctly for the start node of a traversal.
o Fixed an issue with BufferOverflowException thrown sometimes during extraction of prepared transactions.
o Added graph properties, i.e. properties that belongs to the graph itself as opposed to a specific node or relationship.
  Useful for extensions which would like to store configuration and what not.
o Better multi-line support in shell, as well as case insensitive app names.
o GraphDatabaseService#getAllNodes and #getRelationshipTypes @Deprecated and moved to GlobalGraphOperations class,
  where also #getAllRelationships is implemented.

1.5 (2011-10-18)
----------------
o Bug fixes for batch inserter and migration regarding new store format.
o Incremented log format version and added store version as a record in NeoStore for extra safety regarding migration.
o Lots of useful system/environment logging added to messages.log to help investiation of problems immensely.

1.5.M02 (2011-10-10)
--------------------
o Changes in 1.4.2
o [STORE FORMAT CHANGE] New layout of the property store(s) which results in roughly a 30% reduction in size on disk as well as fewer I/O read operations for reading properties.

1.4.2 (2011-09-27)
------------------
o Fixed bug where properties could temporarily disappear from cache if adding/removing properties on an entity in the same tx.
o Removed XaLogicalLog#getCommittedTransaction, which focused on extracting a single transaction and instead implemented getLogExtractor.
  It returns a LogExtractor which extracts transactions and keeps state after each extracted tx making it ideal to extract tx ranges.
  The implementation has got very limited and short-lived synchronization blocks.
o Fixed an issue where XaLogicalLog#applyCommittedTransaction didn't check log rotation.
o Fixed some issues with updating tx start position cache on log rotation.
o Keeping of logical logs is enabled if previous logs are discovered and configuration not explicitly disallowing it.
o Added DumpLogicalLog for index logs.
o Added an kernel panic event about TxManager set to "not OK" (and isn't able to begin any new transaction).

1.5.M01 (2011-08-31)
--------------------
o Changes in 1.4.1
o Auto indexing hooks in on each operation instead of transaction events.
o Fixed an issue where logical logs wouldn't be rotated if all transactions happened via applyPreparedTransaction (as in HA).
o Several recovery fixes which could produce an invalid state of the log files after a 2PC recovery.
o Loosened some synchronized regarding applying and getting committed transactions.
o Transaction semantics regarding call to success after failure was sync:ed with documentation.
o messages.log is rotated at 100Mb (configurable) and keeps at most three history files.
o Fixed bug where XaLogicalLog#applyTxWithoutTxId wouldn't force the logical log.
o Removed synchronization on TransactionImpl#toString() to avoid a deadlock issue.
o Fixed bug in StringLogger where it would stop logging to the underlying writer if an I/O error occurred or it was intermittently closed.

1.4.1 (2011-08-02)
------------------
o Improved file lock for an open database. Previously the file lock could be released after a full backup.
o Fixed a NPE exception during committing relationships to a NodeImpl representation.
o Fixed a data visibility issue for properties on newly created entities.
o Fixed a data visibility issue for relationships for nodes that didn't have the full relationship chain loaded.
o Fixed an issue where deleted relationships could be visible too long within the transaction deleting them.
o More relevant logging in messages.log.

1.4 (2011-07-08)
----------------
o Fixed a bug in TxLog which sometimes wouldn't write out data to the log file properly during shutdown.

1.4.M05 (2011-06-22)
--------------------
o Improved performance for recovery and extract of transaction when running HA using buffered reads to log.
o Fixed bug that returned wrong representation of cached values for longs and ints.
o Fixed bug with spurious wakeups that could cause threads to receive interrupts by the kernel in wrong context.
o Fixed invalidation problem where there were more than one iterator loading a relationship chain lazily.
o Changed ordering of writes for records during commit to make sure other transactions can't read inconsistent state.
o Fixed performance bug when loading relationship chains that caused the arrays to be resized to many times.

1.4.M04 (2011-06-10)
--------------------
o Added the ability to auto index properties for database primitives
o Locks on database primitives acquired by neostore XAResources are now released during afterCompletion()
  of the global transaction. This allows for nodes and relationships to be used as monitors in distributed
  settings.

1.4.M03 (2011-05-26)
--------------------
o Kernel now supports self relationships or "loops".
o Added new relationship direction aware cache on nodes speeding up traversals by direction.
o Reduced memory usage by relationships.
o Reduced call stack removing the EventConsumer/ResourceConnection wrappers glue between nioneo and kernel.
o Fixed bug in global tx log that did not mark transactions finished when closed then crashed.
o Fixed cache invalidation when applying external transaction.

1.4.M02 (2011-05-12)
--------------------
o Changed the default implementation of the logical log to a DirectMappedLogBuffer.
o Changed the TxLog to use a DirectMappedLogBuffer instead of its ad hoc implementation.
o Added a configuration parameter (Config.USE_MEMORY_MAPPED_LOG) for controlling the log implementation (mmapped vs buffered)
  separately from the store files with a default value of 'false'.

1.3.M05 (2011-03-24)
--------------------
o Added support for HA and backup on Windows.
o Updated index API documentation.

1.3.M04 (2011-03-10)
--------------------
o A database can now contain 32 billion nodes/relationships and 64 billion properties.
o Fixed some issues with files not being closed, which also makes all tests pass on Windows.

1.3.M03 (2011-02-24)
--------------------
o Incremental and full backups can now be performed over the network (configurable port) using backup tool.
o Added optimized (compressed) storage for short strings.
o Refactored KernelExtension to make it easier to write implementations that follow the contract.
o Some refactorings and improvements around logging.

1.3.M02 (2011-02-10)
-----------------------
o Fixed a write performance bug in rotate of logical log.
o Modified persistence window allocation to be more optimistic when expanding a store file.

1.3-1.3 (2011-01-27)
--------------------

o Fix for a traverser issue where the first relationship could sometimes be skipped when choosing to traverse over relationships.
o Added SubProcess concept to ease development of tests which spawns other JVMs.
o More memory efficient extraction of transaction streams from logs.
o Better and safer upgrades from older index store formats.

1.2-1.2 (2010-12-29)
--------------------
o Made it possible to detect if recovery was performed as part of startup of the current instance.
o Fix for an issue that sometimes excluded the first relationship when iterating over the relationships of a traversal.

1.2-1.2.M06 (2010-12-21)
------------------------
- Fixed an issues with PruneEvaluators getting invoked with the start node as argument.
PruneEvaluators was never invoked with the start node before the arrival of Evaluator interface.
- Added logging of recovery completion.
- Added TransactionData#isDeleted(Node) and #isDeleted(Relationship) and also made
the collection to hold these a HashSet instead of ArrayList. This allows fast
lookups for asking if a node/relationship is deleted in a transaction.
- More flexible caching (can instantiate an arbitrary Cache object).

1.2-1.2.M05 (2010-12-02)
------------------------

-API
o Added a BatchInserterIndex.setCacheCapacity(String key, int size) method
  which can be used to enable cache for certain keys for a batch inserter
  index so that lookups will be significantly faster.
o Traversal: Added Evaluator which is a merge between PruneEvaluator and
  filter (Predicate<Path> during traversal). This allows for more flexible
  evaluators and also more performant because a pruner/filter can be merged
  together where it has a full view of the decision making.

-Optimizations
o A memory leak was fixed, leading to decreased memory usage.

1.2-1.2.M04 (2010-11-18)
------------------------

o Added ImpermanentDatabase to aid in testing

o Better toString method

1.2-1.2.M03 (2010-11-04)
------------------------

o Monitoring/management over JMX was moved to the neo4j-management component.

-API
o Added ability to get the names of existing integrated indexes:
  o Index#getName() and Index#getConfiguration()
  o IndexManager#nodeIndexNames() and #relationshipIndexNames()
o Added utility to expand traversals using a relationship type in any direction:
  o Traversal.expanderForTypes(RelationshipType)

1.2-1.2.M02 (2010-10-21)
------------------------

o HA branch merged into trunk
o Made the "soft reference" cache type default.

-New features
o Added GraphDatabaseService#index() which exposes an integrated index framework.

-Optimizations
o Getting relationships requires less cache lookups and is therefore faster.

1.2-1.2.M01 (2010-10-08)
------------------------

-New features
o Kernel extensions - additional services for the Neo4j Kernel are loaded
  automatically if they are present on the classpath.
o The ability to inject Kernel extensions in a running instance through JVM
  agents. This is used for loading the shell on an running instance.

-API
o Traversal: Uniqueness is now instantiated through a factory, with
  the previous enum (moved to org.neo4j.kernel) as default implementation.
o Filters in a traversal description are additive (just as PruneEvaluators).

-Bug fixes
o Circumvented the fact that Class.forName() sometimes throws a
  NoClassDefFoundError instead of ClassNotFoundException.

-Optimizations
o NodeImpl/RelationshipImpl takes less memory since they no longer have
  reference to NodeManager.
o Fixed some low-level throughput/concurrency issues.
o Added (default) weak reference cache option. Control with f.ex. "cache_type=weak"

1.1 (2010-07-29)
----------------

-New features
o Auto configuration by looking at available RAM and heap.
o New event framework, see http://wiki.neo4j.org/content/Event_framework
o JMX enabled kernel.
o New traversal framework, see http://wiki.neo4j.org/content/Traversal_Framework
o Block size for strings and arrays are now configurable when creating a new db.
o Read only operations can now execute without a transaction.

-API
o Added a method to get the GraphDatabaseService on Node and Relationship.
o Moved the commons component utilities into kernel component,
  see helpers package.

-Bug fixes
o Fixed issues with logical log and active log that could cause recovery
  to throw an exception.
o Fixed buffer overflow for large string/array properties.
o Fixed bug that could cause leak of NodeImpl.


1.0 (2010-02-16)
----------------

-API
o Updated javadoc.

-Bug fixes
o Fixed leak of non committed property changes to other transactions.
o Fixed cache duplication bug of relationships.
o Fixed problem that could cause other exception to be thrown than
  NotFoundException on getNodeById/RelationshipById.
o Fixed problem with recovery when LuceneFulltextIndex entries existed
  in global transaction log.
o BatchInserter now throws exception when trying to create a relationship
  with same start and end node.
o Fixed problem with broken entries in logical log that could cause recovery
  to throw an exception.

1.0-rc (2010-01-10)
------------------

o API: moved API to org.neo4j.grapdb and implementation to
  org.neo4j.kernel.impl

1.0-b11 (2009-12-27)
--------------------

- Minor Enhancements, changes and tweaks
o Removed compile-time dependency on shell component.
o Batch inserter now has a NeoService version.
o Minor tweak of concurrency characteristics of array map implementation.

-Bug fixes
o Fixed problem with half entries in global tx log (due to full disk).
o Fixed some bugs in batch inserter.

1.0-b10 (2009-11-02)
--------------------

-Enhancements, new features and major changes
o Core: Read-only mode. It is now possible to start multiple read only
  NeoServices to the same store (using EmbeddedReadOnlyNeo).
o Core:  Improved depth first traversal speed on nodes with many
  relationships by loading relationships on demand. This will also
  reduce the stress on GC when traversing over a node with many
  relationships since much fewer objects will be created.

-Minor enhancements, changes and tweaks
o Core: Faster rebuild of id generators after a crash
o Core: Exception cleanup removing bad code either catching Throwable or
  throwing RuntimeException.
o Core: Fixed so a read only NeoService can apply a logical log from a
  backup.

-Bug Fixes
o Fixed a bug when using plain buffers instead of memory mapped ones that
  could case recovery to fail due to buffers not being flushed properly.


1.0-b9 (2009-08-14)
-------------------

-Enhancements
o Core: New 'batch insert' mode, see http://wiki.neo4j.org/content/Batch_Insert,
  typically used for initial import of bulk data.
o Core: Added a "Windows mode" that uses plain Java buffers instead of mmap().
o Core: Expanded id space for all primitives by adding one more bit.
o Core: Read only transactions have been optimized to have much less overhead.
o Core: New cache implementation based on soft references, which employs faster
  gets and is more concurrent and memory efficient.
o Core: OSGi enabled [thanks Andreas Kollegger]

-Minor enhancements, changes and tweaks
o Shell: Added a traverser command for creating custom traversers.
o Shell: Added support of setting and listing array types.
o Shell: "cd" command can now position itself on a relationship.
o Shell: Output of "man" command has been improved.

-Bug fixes
o Core: Fixed all known batch inserter bugs.
o Core: Fixed a bug that could cause multiple remove of same property to fail
  (should just return null if it doesn't exist).


1.0-b8 (2009-05-03)
-------------------

-Enhancements, new features and major changes
o API: Added NeoService.getAllNodes for iterating across the entire node space
  and getRelationshipTypes() to get all reltypes in the underlying store.
o Core: Added logical log rotation and online-backup core features.
o Core: Reduced memory footprint and object allocation.
o Core: Moved all constraint checks to nioneo resulting in performance increase.
o Core: Improved traversal speed reworking set oriented caches to use arrays.

-Smaller enhancements, changes and tweaks
o API: Added a convenience implementation ofRelationshipType for dynamically
  created and named relationship types: DynamicRelationshipType.
o API: Deprecated PropertyContainer.getPropertyValues() to be removed in later
  releases.
o Core: Removed event manager dependency since it needs a rewrite (event
  generation still to be completely specified).
o Core: Transaction events have been removed, need proper specification.
o Core: Removed read lock on loading of non-cached node/relationship,
  replaced with reentrant lock stripe.
o Core: Persistence row windows in nioneo now only load data if acquired for
  read operation.
o Core: Upgraded to JTA 1.1
o Core: Improved some error messages.
o Core: EmbeddedNeo.toString now reports object id and neo store path.
o Core: Cleaned up logging messages during recovery.
o Core: Increased default block size for string and array stores to better
  fit avg. data sets out there.

-Bug fixes
o Core: Fixed missing close on TM's active log file.
o Core: A bug with copy on write "diff" maps that could cause wrong cached value
  to be read (for both properties and relationships) has been fixed.
o Core: Fixed an issue with non committed properties/relationships
  modifications leaking to other transactions (in cache layer during cache
  resize).
o Core: Fixed bug in property index manager that could cause created index
  not to be published at the right time.
o Core: Fixed bug that allowed for relationship/property loads on deleted
  node (in same tx).
o Core: Fixed some bugs caused by use of JTA tx synchronization hooks (we can't
  use them when ordering is required).
o Core: Fixed bug with relationship type store not handling "holes" correctly.
o Core: Fixed problem with multiple calls to close() on XaDataSources
o Core: Removed use IOException( Throwable ) since it is not in Java 1.5
o Core: Parsing of memory mapped settings can now handle G (1024*1024*1024).
o Core: Fixed silent catch of NotFoundException in traverser implementation.

-Notes
o Testing on Windows Vista platform has revealed a strange performance
  degradation for b8 that we've yet to find the cause of. The problem becomes
  more visible when running many concurrent transactions/threads hammering
  requests to Neo (10x performance decrease has been observed on same hardware).
  For production systems we recommend using GNU Linux or Solaris OS with Sun's
  1.6 JVM for best performance.


1.0-b7 (2008-09-29)
------------------

o API: Removed a number of deprecated methods (primarily for relationship type
  management) from EmbeddedNeo as per warning in the previous release.
o API: Transaction is now an interface.
o API: TraversalPosition now has an isStartNode() method.
o API: NotFound and NotInTransaction runtime exceptions have been moved from
  internal impl package to the api package.
o API: getRelationshipById is now exposed in NeoService.
o API: A common base interface for Node and Relationship has been added that
  contains the set/get/remove property operations.
o Core: Made it easy to embed Neo4j in a Spring application. Spring can also be
  configured to use Neo4j's transaction manager.
o Core: All known bugs have been fixed.
o Core: Removed singletons and made everything IoC.
o Core: Lots of minor optimization and improvements above native store
  layer (nioneo).
o Core: Cleanup of code (removed non used code) and improved exception handling.
o Core: Improved read performance and parallelism by implementing MVCC-like
  features. No locks are now taken during read-only operations, instead
  concurrent operations are working against snapshot versions. Rather than full
  versioning, for higher performance diffs are kept and applied to the right
  transactions (those that have modified data). Result is that read operations
  will execute taking no locks, make full use of what has already been cached
  and can execute concurrently with a transaction that modify the same data.
  Write operations will take locks and use diffs instead of full copy on write
  (this proved to be faster and scale better than actually doing a in memory
  copy of the required data).


1.0-b6 (2007-11-19)
-------------------

o API: Added a NeoService interface that EmbededNeo implements. Left a number
  of methods in EmbeddedNeo for backwards compatibility. They will be removed
  the next release.
o API: Changed relationship types to be dynamic, i.e. created in underlying
  store when they are first used. This means that clients won't have to
  register them with EmbeddedNeo at startup.
o API: The semantics of relationship type equivalence has changed from being
  based strictly on object identity to being based on name() equality.
o API: A a new method isType() has been added to Relatinship. Due to the less
  intuitive ways to check reltype equivalence, it's the prefered way to check
  whether a relationship is of a particular type.
o API: Added convenience methods hasRelationship(...) to Node.
o API: Added a convenience method notStartNode() to TraversalPositions to
  clean up the code (less cumbersome null-checks for edge cases) for evaluator
  implementations.
o Shell: Now detects and lists all available commands dynamically.
o Shell: Integration with Groovy for easy evaluation of Groovy scripts.
o Shell: Now auto-reconnects to server.
o Shell: Polish like cleaner output, filters to ls and bash-style prompt with
  variable expansion.
o Core: Lots of performance tweaks and improvements.
o Core: The internal version of the datastores have been changed. This release
  will transparently upgrade old versions of the store files so there's nothing
  manual involved. But after that, previous releases of Neo won't be able to
  read the store files.
o Core: Testing and robustification on Windows.
o Core: Now fully supports array properties for all primitives and Strings.
