What's new

5.4.103 (54038) - 2023/03/30

Server

  • [Let's Encrypt] fixed issue with retrieving a certificate due to compatibility problem with upcoming Let's Encrypt API changes

5.4.102 (54037) - 2023/03/27

Server

  • [Backups] fixed possible desync of backup status between nodes
  • [Backups] fixed issue with saving a server-wide backup when any of the database is idle
  • [Backups] during Restore we should not hold read transaction (held by atomic guards) for a long time to decrease scratch file size
  • [Backups] fixed potential NRE when importing old dump file without Indexes History
  • [Changes API] created optimized channel for aggressive cache usage
  • [Configuration] added 'Security.WellKnownIssuers.Admin' configuration
  • [Debug] added the ability to collect debug package only for server or per database
  • [ETL] added stop reason to OLAP ETL statistics
  • [ETL] fixed issue with disabling an ETL task when in fallback mode
  • [ETL] fixed 'Failed to parse' issue when registering behavior function in a script engine when script contains GlobalObject
  • [Indexes] fixed regression and using a different approach to fix potential problems with JS or multi map-reduce indexes not preserving the order of hashing of reduce key values
  • [Indexes] fixed regression with proper detection of dynamic fields in JavaScript indexes
  • [Indexes] added certificate info to index history view
  • [Indexes] added support for .NET 7 'TimeOnly' increased precision
  • [Indexes] fixed issue with extraction of collection name for more index types
  • [Logging] added the ability to enable Kestrel logs
  • [Memory] releasing allocated compressed value when deleting a document with a lot of revisions
  • [Memory] added Zswap and Zswapped to memory info reader on Linux due to 'top' displaying only first 15 chars
  • [Memory] fixed possible memory leak when storage compaction is being used
  • [Querying] fixed issue with timings not working when metadata comes from query metadata cache
  • [Querying] fixed issue with accessing a disposed object when (id) when 'load' is used in RQL and value is used during projection more than once
  • [Querying] fixed internal cache issue which could result in returning invalid query results for certain query types
  • [Replication] when entire Time Series is being deleted, we should not update the document's metadata to avoid creating a conflict on the document
  • [Replication] when document with Time Series is being deleted, we should create a DeletedRange to prevent possible inconsistency between Time Series on database nodes
  • [Setup] added Ubuntu 22.04 DEB package
  • [Threading] using shorter thread names on Linux
  • [.NET] updated to 7.0.4

Client API

  • [Conventions] added 'CreateHttpClient' and 'HttpClientType' conventions
  • [Changes API] optimized changes API for aggressive cache usage (requires both server and client update)
  • [JSON] added support for .NET 7 'TimeOnly' increased precision
  • [JSON] added 'DefaultRavenSerializationBinder' which will throw for known .NET RCE Gadgets when they are used in '$type' field and deserialization needs to use value from this field to find a type
  • [Querying] fixed issue with generation of JS projection when '.ToDictionary' is used in LINQ select
  • [Querying] fixed regression that did not allow to select after project into
  • [Session] added Refresh(IEnumerable<T> entities) overload
  • [Subscriptions] fixed possible memory leak in subscription worker when we fail to process incoming batch

Studio

  • [Backups] sending appropriate value when Delay is executed
  • [Dashboard] fixed issue with graphs not displaying time when hovered
  • [Replication] disabled sink to hub replication in the UI when server is unsecured
  • [Memory] exposed total SWAP and SWAP used in the dashboard

Other

  • [Docker] added Windows LTSC 2022 docker images

5.4.101 (54032) - 2023/02/13

Server

  • [Backup] Added ability to cancel and delay server-wide backups by Operator
  • [Certificates] Using UTC time when validating the certificate for developer license
  • [Changes API] Added the timeout for sending a message and clearing messages in the queue when we're in low memory
  • [Cluster] Fixed the maintenance of the order of nodes in a database group after a node gets online
  • [Cluster] Using TCP compression for the cluster communication
  • [Cluster] Fixed negotiation boundaries based on the negotiation PrevLogIndex
  • [Configuration] Marking 'Logs.Microsoft.ConfigurationPath' as read only so it won't attempt to create a file in the default location
  • [Corax] Fixed querying with order by
  • [Corax] Memory usage and performance improvements
  • [Debug] Fixed serialization of GC dump output
  • [Debug] Fixed Debug Package created by for the whole cluster
  • [ETL] Added getRevisionsCount() method available during execution of an ETL script
  • [HTTP] Fixed HTTP response compression when performing lazy load
  • [Indexing] Fixed edge cases in the Index Merger
  • [Indexing] Fixed loading multiple attachments using LoadAttachments function with the usage of Select
  • [JavaScript] Added support for spread operator JS indexes and Patching
  • [Import] Added alerts when skipping configuration for a conflict solver, time series or revisions during the import because they already exist
  • [Import] Fixed import of a CSV file with empty column names
  • [Memory] Fixed an issue with allocating less than allocation unit
  • [Memory] Purging the Lucene's field cache for order by when we are in low memory state
  • [Memory] Fixed calculation of allocated memory in internal allocators
  • [Memory] Added defragmentation mechanism to internal allocators to deal with specific memory allocation patterns
  • [Performance] Improved Smuggler and Patching performance when handling documents with complex nested objects
  • [Querying] Optimized order by queries when ordering by field which is a date
  • [Querying] Added support for count(), key() and sum() methods in JavaScript projections when using dynamic group by queries
  • [Querying] Fixed a bug where only identity RQL projection would work on document loaded from reference existing only in the index
  • [Subscriptions] Sending noop ACK cluster command once per state
  • [Smuggler] Added ability to import / export history of indexes
  • [Time Series] Improved memory usage when processing large number of time series during ETL and indexing
  • [Time Series] Fixed potential AccessViolationException on restoring time series from a backup file (regression introduced in 5.4.100)
  • [Time Series] Improved memory usage during import of time series
  • [.NET] Updated to .NET 7.0.2

Client

  • [Cluster Transactions] Fixed throwing ClusterTransactionConcurrencyException after the failover when using cluster-wide transactions
  • [Querying] Fixed 'declared function' chopped by IAsyncDocumentQueryBase.ToQueryable
  • [Querying] Fixed comparison of field names for projections. We need to do it in case sensitive manner
  • [Querying] Added AsAsyncEnumerable to RavenQueryableExtensions
  • [Querying] Fixed direct Projection of Array from document
  • [Serialization] Prevented ISerializable support by default in the serializer
  • [Subscriptions] Fixed an issue that metadata was not tracked in the subscription session
  • [Time Series] Deleting time series entry should affect the cache

Studio

  • Added on/off switch to disable index optimize during compact operation
  • Fixed column name on Index Errors view

5.4.100 (54027) - 2023/01/09

Server

  • [Backup] Fixed issue with a backup status after changing the type of a backup
  • [Backup] Changed the order in which we perform the snapshot backup - first the indexes then the documents
  • [Backup] Fixed issue with calculating the space required for snapshot backup if indexes were excluded
  • [Backup] Fixed memory usage during backup with time series
  • [Configuration] Added Indexing.MinimumTotalSizeOfJournalsToRunFlushAndSyncWhenReplacingSideBySideIndexInMb
  • [Configuration] Added Http.KeepAlivePingTimeoutInSec and Http.KeepAlivePingTimeoutInSec
  • [Corax] Query execution performance improvements
  • [Corax] Support ticks in date queries
  • [Corax] Introduced index-level boosting
  • [Cluster] Fixed the format of atomic guard values used by Cluster Transactions and block using them via the session
  • [Cluster] Improved handling of a database shutdown
  • [Debug]Added info regarding the GC operation to /admin/memory/gc handler
  • [ETL] Added ability to enable compatibility mode when sending documents to Elasticsearch
  • [ETL] Fixed handling of scripts containing getMetadata() and delete behavior functions
  • [ETL] Fixed high unmanaged memory usage when filtering out docs during ETL
  • [Indexing] Fixed handling of Distinct() with mixed values of string and LazyStringValue types
  • [Indexing] Improved handling of replacement of side-by-side index by waiting for journals to be flushed
  • [Indexing] Fixing unhandled case in the index suggestions merger
  • [Indexing] Fixing potential problems with JS or multi map-reduce indexes not preserving the order of hashing of reduce key values
  • [Logging] Enhancements in the cluster logging to improve logs readability
  • [Logging] Added schema upgrades progress to the init log
  • [Logging] Added ability to get internal Microsoft logs (in particular Kestrel logs)
  • [Logging] Added details to the PutIndexCommand logging
  • [Monitoring] Fixed the issue that average request time stays on last value if traffic moves to an another node
  • [Patching] Reduced JsString allocations in patching
  • [Performance] Improved performance of putting a document
  • [Performance] Improved performance of deletion of a document
  • [Performance] Improved performance of scenario with document writes getting ConcurrenyException in the merged transaction
  • [PostgreSQL] Fixed handling of fields with large values
  • [PostgreSQL] Better schema generation if first item has null values
  • [Querying] Fixed regression issue that we stopped detecting enums as server known type during indexing
  • [Querying] Fixing WaitForNonStaleResults for Time Series and Counters
  • [Revisions] Revert revision per collection
  • [Replication] Fixed very high memory usage when replicating a big transaction and using encryption
  • [Replication] Ensure replication is working from a node in rehabilitation
  • [Smuggler] Added ability to import just one collection
  • [Subscriptions] Subscription worder will continue to retry on DatabaseDisabledException and AllNodesTopologyDownException
  • [TimeSeries] Improved memory usage when importing .ravendump with high number of time series to an encrypted database
  • [TimeSeries] Fixed clone document with a rollup time series
  • [.NET] Updated to .NET 7.0.1

Client API

  • [Session] Making sure that the HiLo number we got is used with the server node tag it came from to avoid duplicate ids
  • [Indexing] Prevent transforming additional method into extended method in index definition rewriter
  • Added AggressivelyCacheForAync to avoid sync usage in async manner

Studio

  • Fixed visibility of time series requests on studio dashboard
  • Allow to cleanup tombstones from the studio
  • Fixed showing of guids in related documents list
  • Endpoint /databases became lighter to improve performance of databases view

5.4.5 (54018) - 2022/11/21

Server

  • [Attachments] prevent saving attachments inside a batch for documents with server-side generated IDs
  • [Backup] optimized cluster transaction restore performance
  • [Backup] added the ability to exclude indexes for Snapshot backup
  • [Backup] after restore database will be automatically loaded to apply the journals
  • [Backup] using 'Backup.TempPath' for one time backups
  • [Backup] optimized memory during restore/import of Time Series to an encrypted database
  • [Batch] fixed issue with waiting for indexes not working when batch is a cluster transaction
  • [Corax] added support for Range facets
  • [Cluster] fixed possibility of Cluster Transaction application hanging after Database is being initialized
  • [Cluster] introduced dedicated commands for processing client/studio/settings configurations to avoid using database record updates all the time, which need much more processing than other commands
  • [Certificates] allow to start the server with expired certificate to allow certificate refresh to take place
  • [ETL] added support for providing SQL provider specific parameter types in SQL ETL scripts
  • [Indexes] added support for file-scoped namespace declarations in additional sources
  • [Indexes] fixed issue with optimize hanging during index compaction
  • [Licensing] fixed issue throwing a 'LicenseLimitException' when asserting PostgreSQL license limit, even if license has this feature enabled
  • [Multi Get] fixed issue with multi-get requests not respecting client timeout
  • [PostgreSQL] disposing documents transaction properly after handling query
  • [Querying] fixed IndexOutOfBoundsException when skip is greater than number of results in index after Distinct is used
  • [Querying] expose @spatial metadata for JavaScript projections
  • [Replication] delay replication on missing attachments
  • [Voron] do not change valid pages if the page checksum or number is invalid
  • [.NET] updated to .NET 6.0.11

Client API

  • [Bulk Insert] throw NotSupportedException on attempt to insert Incremental Time Series
  • [Events] invoke 'OnAfterConversionToEntity' event after entity has been tracked so methods like 'GetMatadataFor' can be used inside the event
  • [Querying] added support for case-sensitive string comparisons in LINQ
  • [Querying] fixed issue with SELECT clause containing unnecessary aliases for methods
  • [Session] fixed possible NRE when updating compare exchange metadata in the session
  • [Session] allow incrementing Time Series multiple times in the same session
  • [Session] added Typed Incremental Time Series API
  • [Subscriptions] forbid opening more than one session per each subscription batch

Studio

  • [Cluster Dashboard] added average request time per database
  • [Index Merge Suggestions] added view
  • [Querying] removed dynamic fields from RQL code assistance
  • [Thread Info] added websockets for live updates