What's new

4.0.3 (40036) - 2018/04/23

This is an aggregated build containing fixes released in patch versions since the previous stable build - 4.0.2 (40029) in addition with:

Server

  • [Backup] Smuggler and Restore operation should take into account the file extension when determining the order of files
  • [Backup] unfinished backup files will be marked with '.in-progress' extension
  • [Backup] preventing from saving more than one full or snapshot backup in the same folder
  • [Certificates] will not longer throw on startup if certificate is expired
  • [Cluster] stability improvements
  • [Configuration] added 'Storage.MaxScratchBufferSizeInMb'
  • [Compaction] more robust
  • [Indexes] better error handling on catastrophic failures
  • [Indexes] preventing a deadlock that could occur when index was being stopped and side-by-side replacement is in progress
  • [Indexes] fixed encryption for large indexes
  • [Indexes] fixed possible overflow when AlphaNumeric sorting is being used
  • [Indexes] editing side-by-side index now works properly and does not create an invalid index
  • [Indexes] preventing from creating an excessive indexing thread after replacing an index
  • [JSON] fixed LazyCompressedStringValue conversion
  • [JSON] fixed writing large strings
  • [Linux] optimized number of fsync calls
  • [Memory] fixed memory leak when encrypted database is being used
  • [Restore] added ability to disable ongoing tasks after restore
  • [Settings] the deployment package now contains settings.default.json instead of settings.json to prevent accidental overrides when updating the Server
  • [Setup] added UNIX file permissions to cluster deployment package
  • [Setup] fixed issues with updating expired licenses
  • [Voron] stability improvements
  • fixed big floating point numbers handling
  • databases will no longer unload when Changes API connection is opened
  • working directory is set automatically to executable directory on startup
  • updated to .NET Core 2.0.7

Client API

  • [Bulk Insert] checking if the background task state is not faulty on 'Store' operation to error early
  • [Caching] aggressive caching could not work when being mixed with non-aggressive loads
  • [Conventions] added UseCompression
  • [Operations] fixed missing disposal of Changes API when 'WaitForCompletion' throws timeout exception
  • [NuGet] added 'System.Runtime.InteropServices.RuntimeInformation' dependency

Studio

  • various performance and stability fixes
  • layout fixes

4.0.3-patch-40034 - 2018/03/30

Server

  • [Audit] allow to configure audit log
  • [Cluster] operators can now demote nodes and force timeouts
  • [Cluster] stability improvements
  • [Configuration] added Security.AuditLog.FolderPath and Security.AuditLog.RetentionTimeInHours
  • [Database] database will not be unloaded if only read operations are performed on it
  • [Encryption] fixed possible issue with loading encrypted database after restart
  • [JavaScript] fixed performance degradation issue
  • [JavaScript] fixed possible concurrency issue in Jint
  • [JavaScript] patching will not add property when it does not exist but the existence was checked in the JS
  • [JavaScript] support for 'map' on objects
  • [JSON] fixed possible "Invalid escape char 'r' in query response"
  • [Indexing] fixed NRE that could happen when statistics are retrieved,
  • [Indexing] added First, FirstOrDefault, Single, SingleOrDefault, Any, All support to arrays inside indexing functions
  • [Memory] better memory handling
  • [Migration] support for API keys
  • [Querying] do not return duplicate results when duplicate IDs are present inside 'IN' operator
  • [Restore] fixed issue with restoring Windows-made snapshots on Linux due to invalid path combining
  • [Service] support for service name with spaces
  • [Suggestions] should take into account field analyzer and match the 3.x behavior
  • [Voron] fixed possible corruption that could happen in map-reduce indexes
  • [Voron] fixed decreasing temp buffers file on Encrypted database when low on memory
  • support for 'multipart/form-data' when batches are being processed
  • more restrictive static index and database names

Client

  • [Headers] header values needs to be send using invariant culture to avoid getting bad response from Kestrel
  • [Projections] support for using reserved words
  • [Projections] support for 'map' on objects

Studio

  • various performance and stability fixes
  • layout fixes
  • improved memory stats displaying

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