What's new

4.0.3-patch-40033 - 2018/03/19

Server

  • [Certificates] improved the "Let's Encrypt" automatic renewal process
  • [Certificates] added certificate replacement alerts in addition to logs
  • [Compaction] fixed the possibility of index to stay in compaction state
  • [Configuration] trimming values
  • [Docker] returning RavenDB exit code as a container exit code
  • [ETL] improved error handling
  • [Indexing] fixed error handling
  • [Indexing] added the ability to enable errored index
  • [Indexing] fixed possible NRE in LuceneDocumentConverter when complex objects are indexed
  • [Indexing] converting 'null' to DynamicNullObject.ExplicitNull in index definition to enable null-propagation
  • [Memory] better memory management
  • [MultiGet] properly resetting HTTP status code
  • [Querying] better matching when querying Idle auto indexes
  • [RVN] fixed 'get-key' and 'put-key' operations
  • [SNMP] will return NoSuchInstance then value is not available
  • updated to .NET Core 2.0.6

Client

  • [Attachments] attachment operations in 'session' will respect the session database
  • [DocumentStore] disabled the ability to change 'Database' property in 'DocumentStore' after initilization
  • [DocumentStore] if 'Database' is null during initialization then 'DocumentStore' will throw
  • [Facets] will now use parametrized queries
  • [Facets] support for writing range expressions with not matching types (e.g. field is 'int' and value is 'double')
  • [Metadata] support for DateTime and DateTimeOffset
  • [Memory] properly disposing BlittableJsonReaders when streaming is used
  • [Operations] fixed race condition that could result in AccessViolationException
  • [Projections] DateTime.Now, UtcNow and Today will return JS Date object instead of milliseconds
  • [Projections] proper translation for .Count
  • [Querying] empty list passed to IN will return no results instead of throwing
  • [Lazy] when lazy loading with ID using ID that is in the session already should not return all documents
  • [Lazy] when lazy loading wirh IDs, session can return null dictionary, when session already contains data
  • [Lazy] fixed behavior when duplicate IDs are present
  • [Lazy] properly populating results for lazy loads that do not hit server

Studio

  • various performance and stability fixes
  • layout fixes
  • added the ability to replace cluster certificate

4.0.3-patch-40031 - 2018/03/07

Server

  • [Cluster] stability improvements
  • [ETL] ETL error notifications will be aggregated
  • [Import/Export] fixed TransformScript, filtering can be done by throwing 'skip'
  • [Indexing] reaching .NET runtime capabilities (InvalidProgramException) will stop and error index immediately
  • [JSON] proper support for decimal values with high-precision
  • [Memory] correctly identifying if running inside a container
  • [Memory] proper low memory detection when running on Windows
  • [Patching] proper reset of the engine statistics before re-using the JS engine
  • [Patching] added scalarToRawString for accessing raw data of string and numbers
  • [Querying] fixed NRE for count queries (pageSize = 0) with order by
  • [Querying] support for doing count queries on distinct
  • [Querying] collection queries will properly handle null id matches (no match instead of throwing)
  • [Replication] stability improvements
  • [SNMP] added Zabbix template
  • [Service] added the ability to customize user under which Windows Service is registered
  • [Voron] stability improvements

Client

  • [Caching] proper caching of lazy requests, setting duration to -1 when response comes from cache
  • [Metadata] support for storing complex objects inside @metadata
  • [Querying] support for nullables when doing range facet query
  • [Querying] lazy queries will populate query statistics correctly
  • [Querying] optimized Any and AnyAsync code
  • [Querying] fixed issue where AfterQueryExecuted could be executed more than once
  • [Projections] Enums inside projections should take into account the SaveEnumAsInteger convention
  • [Projections] support for doing Average
  • [Projections] proper translation for null-coalescing
  • [Projections] support for DateTime.MinValue and DateTime.MaxValue
  • [Projections] added support for Math.Round with 2 arguments
  • [Projections] better support for doing projections on dictionaries

Studio

  • [Compare Exchange] added UI
  • [New Version Notification] more detailed notification
  • various fixes and stability improvements

4.0.2 (40029) - 2018/02/26

Server

  • [Backup] fixed S3 integration
  • [Backup] during restore database will be disabled to avoid unnecessary loads
  • [Certificates] fixed CN extraction
  • [Cluster] stability improvements
  • [Compare Exchange] fixed compare exchange operation that could cause a server crash
  • [Indexing] support for indexing 'short' and 'byte' types
  • [Indexing] added System.Globalization using to indexes
  • [JSON] better handling for decimals
  • [JSON] support for ulong
  • [macOS] fixed an issue with starting new threads
  • [Memory] fixed 'ArgumentOutOfRangeException' in 'ArenaMemoryAllocator.GrowArena'
  • [Memory] better memory management
  • [Querying] startsWith queries on Identity property (by default 'Id') only will now be ran directly on storage skipping Lucene and index creation
  • [RQL] proper handling for negative numbers
  • [Setup Wizard] do not allow multiple '*'
  • [SNMP] properly handling the global well-known up-time OID
  • [SNMP] the endpoint returning available OIDs for all databases now builds a proper JSON
  • [SQL ETL] added 'varchar' and 'nVarchar' methods
  • [Tombstones] proper handling of tombstones when document collection is being changed
  • [Voron] better recycled journal handling
  • [Voron] moved 'Journals' to 'Journals' directory
  • setup-as-service.ps1 now sets correct access rights to the server folder
  • scripts included in the deployment package are now signed

Docker

  • added the ability to pass settings via 'RAVEN_SETTINGS' environment variable

Client

  • [Facets] support binary operations between T and Nullable, where the non-nullable operand is a nested binary expression in Range Facets
  • [Indexes] proper handling for 'int', 'short' and 'byte' types in mapping and reduction functions
  • [Projections] cannot use List\\Array parameters in projection if the query generates an output function
  • [Projections] support loading via 'let' when the load-argument is also defined in a previous 'let' statement
  • [Projections] fixed identity property (by default 'Id') projections
  • [Projections] fixed identity property (by default 'Id') projections when DocumentQuery.SelectFiels is used
  • [Querying] fixed issue with querying using an alias on properties of nested-object arrays
  • [Querying] added 'IDocumentQuery' and 'IRawDocumentQuery' extensions that override the 'System.Linq.Enumerables' ones with obsolete attribute explaining that using those methods will materialize query before method is executed and that the execution of the extension method will take place in-memory
  • [Querying] implemented 'IDocumentQuery.Any' and 'IAsyncDocumentQuery.AnyAsync'
  • [Session] Setting custom metadata on the object should retain it after SaveChanges call
  • [Session] fixed the ability to modify a document and delete an attachments for that document in the same session
  • [Smuggler] is now exposed in 'IDocumentStore' interface via 'Smuggler' property
  • [Patching] fixed 'Enum' handling
  • method WaitForIndexesAfterSaveChanges should honor 'throwOnTimeout' flag when set to false

Studio

  • [Server Dashboard] fixed total physical memory calculation
  • [Server Dashboard] fixed free disk space calculation on Linux
  • [Server Dashboard] fixed high memory usage when dashboard is opened for few hours
  • creating documents without '|' or '/' will set '@empty' collection now
  • fixed various CSS/JS bugs

Licensing

  • [Developer] introduced a developer license

4.0.0 (40026) - 2018/02/06

RavenDB Can be Used on the Following Platforms:

  • Windows x64
  • Windows x86
  • Ubuntu 16.04 x64
  • Raspberry Pi
  • Docker (Ubuntu 16.04 and Windows Nano Server)

Performance

  • Over 10X improves performance from a massive code rewrite
  • A redesigned indexing process
  • More efficient document processing
  • Optimized memory management
  • A blittable JSON format

Clustering

  • Intelligent clustering with dynamic node distribution
  • Automatic master-master setup between nodes
  • Cluster-wide tasks capability (External Replication, RavenDB ETL, SQL ETL, Backups, Subscriptions)

Security

  • Easy to configure Setup Wizard and Studio
  • Authentication and authorization based on X.509 certificates
  • Secured connectivity using TLS 1.2

Encryption

  • RavenDB 4.0 uses a modern ‘ChaCha20-Poly1305’ algorithm from a well-known battle-tested encryption library called ‘libsodium’

Querying & Indexing

  • A new and improved SQL-like Raven Query Language (RQL)
  • Improved query optimizer
  • Extended functionalities for Auto-Indexes

Attachments

  • Attachments are now integrated into RavenDB and are bound to documents. They can be processed transactionally with other documents

Storage

  • We removed Esent and replaced it with our in-house storage engine, Voron
  • Voron was developed specifically to meet the unique needs of RavenDB

Studio

  • A redesigned User Interface (UI)
  • A new Setup Wizard for convenient configuration
  • A server dashboard
  • Index performance graphs

Clients

  • .NET
  • Java
  • Node.js
  • Ruby

Licensing

  • A new FREE Community License eligible for commercial production use