Release Date: 5 August 2019
We are proud to announce an early release of our Neo4j Database – Neo4j Enterprise Edition 4.0 Milestone Release 2 (in short Neo4j EE 4.0 MR2). This release is distributed publicly: we encourage you to try out all the new features. Neo4j 4.0 will be available within Neo4j Desktop Canary Version. Neo4j 4.0 is the core technology of the Neo4j Graph Platform.

Important Information

This milestone release must be considered pre-alpha and it should not be used in production. Issues in the release may lead to data corruption and eventually data loss. The new features available in this release may change in future releases, therefore it is advisable to carefully review and plan and development based on it. It is also important to note that some procedures that are still available in the release have been replaced with Cypher commands. Those procedures are related to user and role management. In order to test new user and role management functionality, you should use the new Cypher commands.

Highlights

  • Multiple databases available at runtime
  • Java and Javascript Reactive drivers with Server-to-Client flow control
  • New index population algorithm for the native index provider
  • A new, experimental version of Spring Data Neo4j based on reactive drivers (SDN/RX)
  • Experimental features on security and Role Based Access Control

Detailed Changes and Docs

For a list of fixes and improvements, please see the changelog below. Look for 4.0 Milestone Release documentation here.

Upgrading to Neo4j EE 4.0 MR2

There is no upgrade path from Neo4j 3.5 to Neo4j EE 4.0 MR2. In order to try this release with existing data, you should export data from an old version and import them into this version.  
 

Neo4j 4.0 MR2 Changelog

Kernel

  • Spatial index configuration now propagate properly in cluster such that index will have the same configuration on all members. Index configuration is bound to index at the time of creation and not lazily loaded when data is added like before.
  • Fix bug where an eventually consistent fulltext index after db restart not be not be eventually consistent anymore.
  • Settings/Configuration rework.
  • The db.labels and db.indexes procedures now no longer take shared schema locks, which means that they no longer conflict with, nor wait for the completion of, schema mutating transactions.
  • Neo4j will always be able to reuse deleted records briefly after being deleted, regardless of crash or running in a clustered environment. All settings regarding id allocation and reuse have been removed.
  • LabelScanStore is always store copied under StoreCopyCheckpointMutex.
  • GenericKey only keep entityId if strictly needed to differentiate keys in minimalSplitter.
  • The default full text index analyzer is now “standard-no-stop-words”, which is the same as the “standard” analyzer, except it does not filter out any stop words.
  • 4.0 setting rework.
  • Fixes a problem where the recovery that happened after an incremental catchup in a Causal Cluster, would put the write the wrong starting transaction to the debug.log. The starting transaction was cached from the first recovery, and wasn’t cleared for subsequent recoveries. This only influenced the logging output – the recovery process itself always picked the correct starting transaction to recovery from.
  • Full-text schema index queries can now start with a leading “*” wildcard, such that, for instance, the token “abcdef” in a property value, can be matched by the query “*def”.
  • Introduce setting to limit number of databases can be managed by neo4j.
  • Remove commons module helpers from public API.
  • Print process priority as part of neo4j admin report instead of start time.
  • Better handling of OutOfMemoryErrors during log flushing
  • Full-text index configurations, such as analyzer and eventually_consistent, are now properly replicated in a cluster. This makes it safe to customise these settings in a Causal Cluster deployment.
  • Remove metrics.neo4j.enabled in favor of metrics.enabled.
  • A new dbms.checkpoint procedure has been added. This is useful for when you change the log pruning configuration, and you want the changes to take effect quickly. Note that calling this procedure can have a negative effect on transaction throughput because it temporarily disables the dbms.checkpoint.iops.limit setting.
  • Number of currently open and maximum number of file descriptors are added to metrics ( file.descriptors.count / file.descriptors.maximum, controlled by setting metrics.jvm.file.descriptors.enabled), as provided by the jvm. currently only available on unix-based operating systems.
  • Performance of making changes to nodes and relationships are no longer affected by the presence of indexes and/or constraints that are not related to the actual changes. Before these changes a large number of indexes and/or constraints could affect performance of write transactions negatively, even if the actual changes were unrelated to the changes made.
  • Fix a number of cases where unhelpful exceptions were thrown, when a committed write transaction that perform deletes or removals cause conflicts in an overlapping read transaction. We now throw IllegalStateException from the embedded API, and TransientException (which tells clients to retry their transactions) from the driver (Bolt) API.
  • Increase native key size limit to ~8k using Offload store in GBPTree.
  • Failed index sampling doesn’t prevent index drop. Previously if index sampling failed for some reason, this could prevent index from being dropped because sampler didn’t clean up after itself.
  • The neo4j-admin dump now uses a new archive format. This makes the dump and load commands significantly faster, while also making the archives slightly smaller. Additionally, the dump and load commands now also prints their progress to the console.
  • Fix delay calculation in IO limiter.
  • Always close reader from RecordingConflictDetector.
  • Three improvements around uniqueness constraint creation:
    • Indexes of type UNIQUE without a constraint can be dropped using DROP INDEX ON :Label(key).
    • Uniqueness constraint creation will not be subject to the dbms.transaction.timeout timeout.
    • Uniqueness constraint creation transaction will notice termination, e.g. termination using killQuery/killTransaction procedures will actually terminate it.
  • Move PageCache profiles to common directory.
  • Removal of active database concept. Introduce default database.
  • Deprecate for removal dbms.active_database and unsupported.dbms.directories.database.
  • The Causal Cluster Raft Replicator will no longer print (potentially enormous) textual transaction log segments to the debug.log.
  • Index population backed by “block based index populator” could report false negatives for duplicate property values. This happened if, while scanning the store to provide updates for the populating index, property values changed such that the scan would see the same value twice even though no duplication existed in any point in time. This is mitigated by verifying suspected duplicates after population is finished.
  • Index population is now faster for large indexes.
  • Internal annotation processors are now in a separate module so they can run from a cleaner annotation path, rather than the classpath. This makes it easier to convince build tools to not complain about them, when building applications that embed Neo4j.
  • neo4j-admin memrec now makes better suggestions for systems that have memory capacities in the 512 MiB to 1 GiB range.
  • Adds IndexReader#distinctValues() able to access all distinct values in an index with number of indexed entries for each value. Values are materialized if user requests it and the index supports materialization of actual values.
  • Makes consistency checker relationship cache algo actually work
  • Backport: Removes accidental limitation of number of reltypes to 64K for high_limit format
  • Adds IndexReader#distinctValues
  • Introduce procedures that able to kill transactions.
  • Throttle StoreSizeMBean calls to prevent excessive resources consumption
  • Neo4j will now log warnings if there are duplicate settings in the neo4j.conf file.
  • Update reported metrics types to correctly represent nature of reported event.
  • Removes explicit neo4j-admin import db existence check.
  • Improves the error message when a kernel extension cannot be loaded for various reasons, such as version mismatches between extensions like APOC, and Neo4j itself.
  • Remove explicit/legacy/manual indexes.
  • Fix public api: revive legacy iterators.
  • Fix VM pause monitor logging.
  • A new db.index.fulltext.awaitIndex procedure has been added, which can await indexes specified by name, instead of the label/property pattern it supported so far by the db.awaitIndex procedure. Specifically, this means that you can now wait for specific named fulltext indexes to come online. Previously it was only possible to wait for fulltext indexes to come online, by calling the db.awaitIndexes procedure, which waits for all schema indexes. The behaviour of the existing db.awaitIndex procedure has not been changed, in order to preserve compatibility.
  • When a native memory allocation fails, Neo4j will now include helpful debugging information in all such cases, instead of just some of them.
  • Fix node set property to not lock unrelated constraints
  • Fix a problem where if a fulltext schema index and a normal schema has the same schema (e.g. the same label and property combination) then the fulltext schema index could not be dropped. It is now possible to drop fulltext schema indexes, even when the schema of the fulltext index matches that of a normal schema index.
  • Fixes a race updating the label index, where e.g. a node CREATE followed by DELETE could be reordered into DELETE followed by CREATE, and vice versa.
  • The result of the db.index.fulltext.listAvailableAnalyzers procedure now includes a description of each analyzer. The simple, classic, and stop analyzers from the standard Lucene analyzer suite have also been added.
  • Fixes an issue where a large amount of bad data items encountered during an import could use an excessive amount of heap and slow down the import as a whole. The report queue is now bounded and applies back-pressure.
  • Properly prints FAILED on import failure.
  • Close all index readers opened during lockingNodeUniqueIndexSeek.
  • Settings controlling log levels of debug.log can now be changed at runtime, those settings are: dbms.logs.debug.level – the default log level of the internal log, and unsupported.dbms.logs.debug.debug_loggers – specific log level per package/logger
  • Restore possibility to use BranchedStoreBean.
  • Improvements to total mapped size calculations.
  • Prevent fulltext indexes from being created via db.createIndex procedure.
  • Programmatic invocations of online backup now respects the page cache tuning parameters that they are given.

Cypher

  • Spatial distance queries will now be solved by a NodeUniqueIndexSeekByRange instead of a NodeByLabelScan when a uniqueness constraint exists.
  • Cache property reads in the row, if the same property is accessed more than once in the query. For example the query MATCH (n:N) WHERE n.prop > 10 RETURN n.prop would only have cached n.prop previously, if it could get the value from an index. Now, it will be cached in any case. This adds caching of relationship properties as well.
  • The plan description is changed such that both cache reads and writes appear as cache[n.prop] in the Other column.
  • Fix planning bug with pattern-predicates on var-length-expand patterns, which would get overly expensive plans including RollUpApplies. This bug is only present in 3.5.6.
  • Rarely the planner was not able to find a join between two perfectly joinable plans which would then result in a “Found no solution for block with size 0” error. This is fixed now.
  • Less logging of Discarded stale query…
  • Fix a rewriter issue which caused too many predicates to be rewritten away for certain queries with optional match and distinct.
  • Fix wrong results with PatternComprehensions for VarExpand (4.0).
  • New physical Operator “Ordered Aggregation” that performs an aggregation operation when some or all of the grouping columns are sorted.
  • Solve bug with the error message This expression should not be added to a logical plan that would only occur in test environments. Remove obsolete runtime pattern matching code.
  • Fix memory hogging query collector.
  • Fixes bug with the message “Tried to map bad logical plan. LHS and RHS must never be the same”.
  • Fixes bug with the message “Expressions need to be registered with it’s owning Pipe, so the profiling knows where to report db-hits”. This should now never happen when assertions are disabled.
  • Fix bug in slot allocation of aliased variable names.
  • Fix bug with node reference leaking to bolt server.
  • UNWIND of a singular value will now always be equivalent to UNWIND of a list containing only that value, i.e. UNWIND 7 AS x RETURN x do behave the same as UNWIND [7] AS x RETURN x. This was not consistent in earlier versions of Neo4j.
  • Fix bug where adding nodes to the graph would not cause a query replan.
  • Fix rounding error in DurationValue approximate.
  • fix runtime=slotted any() on rhs of NodeHashJoin.
  • Fix bug in planner where queries with many OR:ed exact predicates would plan slowly or never complete, if they where solvable with a uniqueness constraint (or Node Key) index.
  • Added support for range seek on composite indexes.
  • Fix missing register-owning-pipe on expression in some pipes.
  • Update from Scala 2.11 to Scala 2.12.
  • New physical Operator “Ordered Distinct” that performs a distinct operation when the input is sorted.
  • Adding existential subqueries to Cypher, on the form:
MATCH (n)
WHERE EXISTS { MATCH (n)-[r]->(p)
               WHERE p.prop > 2 }
RETURN n
  • Fixes problem in procedure dbms.setTXMetaData() where null value in the given map could lead to a null pointer exception.
  • Fixed distance queries that used < and ranged over the dateline and would miss points exactly on the dateline.
  • Fix scala.MatchError crash on DELETE last(col).
  • dbms.functions() will now also list all available cypher functions as well as information about which function will result in aggregation.
  • Fix rare bug in slotted runtime which would manifest as an exception with the message Tried to copy more data into less in Cypher queries with execution plans containing an Apply with a Optional and a Distinct on its right hand side.
  • New physical operators: PartialSort and PartialTop. They perform a Sort or Sort+Limit operation, if the input is already sorted on a subset of the columns. For example, we would plan a PartialSort for ORDER BY a, b, if the input is already sorted by a.
  • Add the current temporal instant as a default value to the temporal truncate function. E.g. datetime.truncate(‘day’) is now a valid shorthand version of datetime.truncate(‘day’, datetime()).
  • Fix bug in slotted NodeRightOuterHashJoin, which would lead to wrong results.
  • The Cypher planner now can use index provided properties (instead of going to the property store) in the following case: MATCH (n:Label) RETURN n.prop given an index and an existence or node key constraint on :Label(prop).
  • Add procedure for replanning.
  • Show file name and line number for LOAD CSV errors.
  • The Cypher planner now can use index backed order by for the min and max functions with a range predicate and thus avoid sorting/aggregation for queries like: MATCH (n:Label) WHERE n.prop > 0 RETURN min(n.prop) given an index on :Label(prop).
  • Fix issue where queries with many disjunctive index seeks (… n.age = 3 OR n.name = ‘George’ …) would plan forever.
  • Fix issue with compiled runtime and count(), where transient entity inconsistencies would make some aggregating queries (e.g. MATCH (n:Artist) WHERE n.name = ‘Madonna’ RETURN count(n)) return fewer rows than expected.
  • Fixes an issue with having a DISTINCT (that is on the node instead of the property) between an index read and the usage of the property. E.g MATCH (n:Label) WHERE n.prop = 42 WITH DISTINCT n RETURN n.prop.
  • Fix an error that made the timestamp function case sensitive, https://github.com/neo4j/neo4j/issues/12097.
  • The Cypher planner now can use index backed property values for aggregation functions. That implies that queries like: MATCH (n:Label) WITH n.prop AS property RETURN sum(property) can be solved with a NodeIndexScan rather than a NodeByLabelScan (given an index on :Label(prop)).
  • Make system-graph the built-in default auth provider.
  • Obsfucate LDAP system password in debug log.
  • When ordering both by aliased (var01) and unaliased (p.name) columns, we would possibly swap them. This is now fixed.
  • Updating after undirected match with predicate.
  • Fix issue with PROFILE and EXPLAIN of queries with unusual variable names.

Browser

  • Update neo4j JS driver to 1.0.3
  • Get Bolt address from server discovery service
  • Query parameter support added
  • Persist visualization auto-complete of relationships and add it to Settings Drawer.
  • Cypher frame now only loads ascii table results when required
  • Enable Bolt setting by default
  • List and kill running queries with the new command :qs
  • See Core-Edge cluster in :sysinfo and connect to individual members
  • Bolt query execution time is now timed on the server side.
  • Update links to docs on pre-releases to ‘beta’
  • Rename command :qs -> :queries
  • Include the server version in the beta docs url
  • Show ‘beta’ welcome frame for pre-releases to promote new features and how users can send us feedback.
  • Enable :queries command only when procedure is available
  • Sort user roles alphabetically in user admin frame
  • Add support for the bolt+routing protocol when in a Causal Cluster
  • Give users feedback when setting :param
  • Reuse connections for heartbeat to not flood the security log with login items
  • Pre-release of rewritten version of Neo4j Browser.
  • Try to fetch guide remotely if not found locally
  • Fix slow loading of user and system info in database drawer
  • Read and act on server config retain_connection_credentials
  • Define URL to connect to with URL param ‘connectURL’
  • Style table view and just show relevant information
  • Fix editor error when writing Cypher LOAD CSV or referencing non existing indexes
  • Fix failure to parse server config browser.remote_content_hostname_whitelist
  • Fix missing scrollbars in left drawer in some web browsers
  • Make the Browser commands case insensitiveFix for collected graph items now showing up in viz
  • Bring back :server status command.
  • Present total db hits and time stats in PROFILE View
  • Backtick meta items in auto generated queries from drawer
  • Fix login for restricted users
  • Fix broken elapsed time in :queries frame
  • Add slider to text view status bar
  • Listen for config maxFrames and enforce that limit in stream
  • Fix indicator being at start of line in error messages
  • Fix for sensitive dropdown menu closing too easy
  • Update document title with connected username and host
  • Add support for handling multiple commands from browser.post_connect_cmd
  • Escape backticks in meta item queries
  • Limit number of meta items shown in db drawer
  • Introduce fetching client configuration from a remote JSON file
  • Fix :help input with space
  • Fix unstable guide pagination
  • Fix missing auth headers on local :GET, :POST etc command requests
  • Fix cursor sometimes resetting to start position
  • Parse server config duration strings correctly
  • Add cluster role, db filename and total store size to sidebar
  • Add dark theme
  • Only display truthy connection data in the browser title
  • Use separate thread for running cypher queries
  • Save/Edit favorite in editor
  • Add support for setting browser :config with objects
  • Fix sluggish experience when having hundreds of thousands meta itemsFix app break when no events in UDC state
  • Fixes mapping issue when using :sysinfo with HA
  • Honor url whitelist when fetching remote grass files
  • Bring back :style command
  • Fix display of zero length paths
  • Don’t add repeated executed commands to history
  • Fix expand/collapse of plan results in all levels
  • Fix cypher result exports
  • Fix display of Neo4j integers in Cypher result frames
  • Add ability to download a query plan as png
  • Fix x overflow in frames with %-width in IE 11
  • Sort keys when inspecting nodes
  • Fix null not rendering in table view results
  • Fix generated query for sidebar meta items named ‘*’
  • Autologin to Browser Sync and obey server config browser.allow_outgoing_connections
  • Fix various bugs in editor Cypher parsing
  • Fix Browser not being able to run cypher queries when using TLS and self signed certs
  • Fix setting initial password over TLS when encryption is requiredIn query plan: show signature of the procedure that got called
  • In query plan: show the label that has been scanned
  • Fix viz bug where boolean captions didn’t show up on graph elements
  • Add 3rd party LICENSES.txt and NOTICE.txt
  • Remove escaping of characters in tables views
  • Add visual feedback when adding new favourite, and enter ‘edit favourite’ mode.
  • Integrate with desktop API
  • Show Browser Sync banner when not accepted terms yet
  • Enable thread to execute cypher on (web worker)
  • Fix issue where mapping cypher result to vis would break the app
  • Sync styling with Browser sync
  • Disable editor highlighting with config option
  • Add more detailed error messages for known Browser/OS issues
  • Fix issue of some queries getting stuck because of the shape of the result
  • Use latest released neo4j-driver
  • Add page cache hit ratio to :sysinfo frame
  • Update :sysinfo to display ‘Store sizes’ jmx values
  • Fix for clearing local data when not signed in to browser sync
  • Add support for multi-statement execution
  • Fix memory leak in background job
  • Make every type of Bolt transactions use web workers
  • Display driver result summary in code view
  • Support new Neo4j types (Neo4j 3.4)
  • Fix Cypher warning position in Warnings View
  • Display more store sizes if they exist (Neo4j > 3.2)
  • Add new param syntax to evaluate against the server
  • Render new types correctly in visualization
  • Show more information on operators in plan output
  • Fix docs links in sidebar to point to the connected version
  • Upgrade neo4j-driver to 1.6.1
  • Add auto refresh to sysinfo frame
  • Fix [object Object] output when returning paths with new types
  • Fix missing inspector items when spread over more than one line
  • Word break long values in db info drawer
  • Don’t add type hinting quotes on strings in CSV export
  • In guides allow one dynamic field to update multiple elements
  • Fix :style / GraSS regressions
  • Show the total number of nodes and relationships in db meta sidebar
  • Fix issue where neo4j-browser kept allocating more and more disk space
  • Switch to React 16.4
  • Fix meta query to be more performant
  • Handle changelog url building in disconnected state
  • Fix crashing favorites sidebar when using non latin1 characters
  • Add toggle for multi statement cypher editor
  • Fix editor to handle string literals that contain new lines
  • Add :history clear command
  • Add pagecache hits and misses to plan output
  • Add complete support for bolt+routing://
  • Add Neo4j Community Forum link to sidebar
  • Enable users with non reader roles to connect
  • Fix :server switch bug in Neo4j Desktop environment
  • Fix username not updating in sidebar when disconnecting
  • Improve Cypher result rendering performance
  • Prepare for Neo4j Desktop distribution
  • Fix issue where editor buttons would overflow the viewport
  • Fetch fresh version of remote guides on every request
  • Update icons
  • Fix neo4j-browser not working properly when db auth is disabled
  • Future proof Neo4j Desktop integration by using the url field in connection info.
  • Fix rare neo4j-browser crash when clicking on yellow Cypher warning triangle
  • Fix crashing :queries frame in clustered environments when all members couldn’t be reached
  • Introduce experimental features section in Settings
  • Enable fullscreen ability for :queries frame
  • Fix auto-completed relationships not showing in viz legend on first render
  • Fix nested :params bug
  • Update neo4j-driver to 1.7 and send transaction metadata with Cypher queries
  • Let the configuration initCmd be empty
  • Fix stream rendering issues in IE 11
  • Add Order to plan output if it exists
  • Update links to documentation in the docs sidebar
  • Show message if neo4j-browser is opened without an active graph in a Neo4j Desktop environment
  • Add support for GraSS selectors (node labels and rel types) containing a .
  • Remote guides – resolve config ’*’ to default whitelist
  • New format for tx metadata for logs
  • Fix application crash when killing a query from :queries frame
  • Support Neo4j Kerberos auth when in a Neo4j Desktop environment
  • Fix (extremely) slow data parsing in certain cases
  • Collapse manually expanded nodes in the viz
  • Replace and add more viz styling colors
  • Upgrade neo4j-driver to 1.7.2
  • Support deep links via Neo4j Desktop
  • Keep bolt connections alive in web workers
  • Fix hidden error on re-run when going from success -> error result
  • Fix :help keys in dark mode
  • fixes: https://github.com/neo4j/neo4j-browser/issues/889
  • Add link :server user list to admin section of db sidebar
  • Fix [object Object] for integers in viz for PathSegments
  • Use less resource intensive background requests
  • Fix user management UI in Community Edition
  • Add tx metadata to queries that’s generated by user actions
  • Show query termination message when closing frame that has an active query
  • Fix subgraphs not displaying correctly under certain circumstances
  • Block background queries until the prev is finished
  • Updates to dark theme
  • Fix retain credentials info on connect frame
  • Escape auto-completed labels, types and property keys in editor.
  • Upgrade to neo4j-driver version 1.7.4

Cypher Shell

  • Added modes: verbose/plain. Verbose displays more information and is intended for interactive use. Plain displays only the data from queries, intended for scripting
  • Added multiline statement support
  • Added option –encryption to choose between encrypted and unencrypted communication with the server
  • Added option –debug to get additional information in case of errors
  • Made semicolons optional for shell commands
  • Added version of connected Neo4j to welcome message
  • Fixed lack of interactive detection on Windows
  • Now always uses interactive mode on Windows by default
  • If non-interactive mode is desired (for scripting) then a new flag –non-interactive has been added
  • Insist that username is not empty
  • Fallback to plain bolt:// when url scheme is bolt+routing://
  • Fixed incorrect handling of bangs [!] in usernames/passwords
  • Empty password gives a more descriptive error message
  • Fixed handling of pipes on Windows
  • cypher-shell now available in standalone Debian and RPM packages
  • Added tabular output format
  • Automatically select output format when terminal is interactive or not
  • Fix periodic commit statements
  • Fixed startup crash on Alpine Linux
  • Upgrading to latest version of driver
  • Assigning cypher expressions to parameters
  • Update params display to show new params setting
  • Adding support for spatial and temporal datatype
  • Upgrading to driver 1.6.1
  • Don’t send parameter lambdas to server
  • Upgrade to java 11
  • Stream results of autocommit queries

Causal Clustering

  • Partially order routers in accordance with filtering policies
  • Routing procedures now run with mode DBMS
  • ClusterBinding Shutdown
  • Enable Raft pre-voting by default
  • Make CommandIndexTracker monotonically increasing
  • Do not start databases when stopped during store copy
  • Status endpoint command rate
  • Improve logging of result of causal cluster handshakes
  • Raft membership manager can no longer consider itself superfluous
  • Netty 4.1.32.Final
  • Remove ID-files if instance was unbound
  • Delete spammy log line.
  • Reset last message timer monitor on leader stepping down.

Packaging

  • Pass command line arguments to powershell scripts using proper parameter passing rather than injection into a script block.

Security

  • dbms.security.auth_provider is replaced by two settings, dbms.security.authentication_providers and dbms.security.authorization_providers. This will allow different providers for authentication and authorization in a much cleaner fashion.
  • Support for pkcs12 and jks keystores

Misc

  • Backup no longer logs in running server debug.log.
  • Updated dbms.cluster.overview and dbms.cluster.role procedures to support multi-database. Procedure dbms.cluster.overview now outputs a map of databases and their corresponding roles in a column called “databases”. This new column replaces “role” and “database” columns. Procedure dbms.cluster.role now accepts a mandatory database name parameter. It still outputs a single role.
  • Failure message is not flushed when no free work thread is available.
  • Change causal_clustering.middleware_logging.level setting to accept log levels and not integers. Allowed values are DEBUG, INFO, WARN, ERROR and NONE. Remove causal_clustering.disable_middleware_logging setting. Middleware logging can still be disabled by configuring causal_clustering.middleware_logging.level=NONE, which is also the default.
  • “Connection reset by peer” errors will be logged on warning level without stack traces to avoid log pollution.
  • Fixed an issue where discovery document construction did not consider request URI for bolt entries and always pointed to localhost when no advertised_address is not configured for the connector.
  • Upgrade Jersey server from 1.19.3 to 2.27
  • Updated Jetty version to 9.2.26.v20180806

Deprecations

  • Deprecate JMX beans in favour of metrics that can be exposed over multiple providers (including JMX) or procedures.

API removals

  • Updated OnlineBackup API. Removed deprecated methods for performing full/incremental backup. Added fluent interface methods for configuring backup dependencies and settings.
  • Changed the class to contain a single method for performing a backup that returns a result object.
  • Remove deprecated procedures, db.schema, dbms.security.showCurrentUser and dbms.changePassword.