Skip to content

Releases: dolittle/Runtime

Release v9.8.0

14 Nov 14:33
83b2aa1
Compare
Choose a tag to compare

Summary

This upgraded the Dolittle Runtime to .NET 9, with major improvements to memory usage and the performance increases provided by the new .NET release. Internal dependencies have also been updated.

For the dev image, the lifecycle management has been improved, and have also been updated to the latest version. Unfortunately, there is not currently available a MongoDB package for the arm64 version, so that is not available.

Removed

  • Dev builds for arm64. Since Mongodb did not provide an ARM compatible package, we only provide an adm64 dev image (where MongoDB is included on-image). ARM users will need to have MongoDB externally, for example via docker compose.

Release v9.7.0

23 Oct 07:40
22f4d8f
Compare
Choose a tag to compare

Summary

Runtime support for GDPR redactions. This adds support for redacting personal data from previously committed events.

Redactions are scoped to a single artifact-type (EventTypeId) and an EventSourceId.

It will recognize events with the correct GUID prefix "de1e7e17-bad5-da7a" that match the event payload and is valid.

    public class Event
    {
        public required string EventId { get; init; }
        public required string EventAlias { get; init; }

        /// <summary>
        /// The properties that will be redacted, and the replacement values.
        /// Can be null, in which case the properties will be redacted with a default value
        /// </summary>
        public required Dictionary<string, object?> RedactedProperties { get; init; }

        public required string RedactedBy { get; init; }
        public required string Reason { get; init; }

        public bool IsValid => !string.IsNullOrWhiteSpace(EventId)
                               && !string.IsNullOrWhiteSpace(EventAlias)
                               && RedactedProperties.Count > 0
                               && !string.IsNullOrWhiteSpace(RedactedBy)
                               && !string.IsNullOrWhiteSpace(Reason);
    }

Any valid redactions will then be performed in the same transaction as it writes the new events. Replays of these events will then return the updated version of the event, with the redactions performed.

Added

  • GDPR redaction support

Release v9.6.5

25 Sep 10:30
bcebd89
Compare
Choose a tag to compare

Summary

This release adds offset metadata initialization on startup, and does not wait until streams are being written. This supports the sparse streams use case, allowing the runtime to work correctly with events removed from the log.

Added

  • Stream offset metadata init

Release v9.6.4

18 Sep 06:18
1197809
Compare
Choose a tag to compare

Summary

External behavior

This release adds support for sparse event logs, which allows users to delete events that are no longer needed. Previously the runtime would not tolerate any events being removed. Now it will just info log the fact and process as normally

Internal

The runtime has been refactored to use central package management, which reduces friction when upgrading dependency versions. It also removes a legacy dependency and replaces it with channels. In addition it will now enforce limits to work in progress by EventHorizon.

Added

  • Central package management
  • Support for sparse event logs

Removed

  • Internal dependency on Nito.AsyncEx, rewritten to use channels

Release v9.6.3

20 Aug 07:28
26c4807
Compare
Choose a tag to compare

Summary

This is a pure maintenance release, upgrading the runtime internal dependencies to their latest stable version.

No breaking changes or interface additions had been added.

Release v9.6.2

27 Jun 10:41
29c33c0
Compare
Choose a tag to compare

Summary

Hardened the handling of already written stream events. Will now log and skip in filter processors. Previously it was able to get stuck while processing a filter that was in an inconsistent state.

Fixed

  • Improved error handling for filter processors, allowing the runtime to self-correct when the stream and processor state does not match

Release v9.6.1

13 Jun 08:44
4a62fb1
Compare
Choose a tag to compare

Summary

This fixes the build scripts for the Dolittle CLI and switches the performance benchmarks to be only built for dotnet 8.

Fixed

  • CLI builds
  • Benchmark runner

Release v9.6.0

13 Jun 07:38
dd04a09
Compare
Choose a tag to compare

Summary

This release adds OpenTelemetry metrics to the runtime. It also changes the behavior of stream processors to be able to provide consumer lag metrics for all event handlers.

Stream processors

Previously if the event handler did not consume an event, it would also not update its current offset in the event log at all. Only processed events would cause an update. This release changes that, so all events are taken into consideration when storing how far each handler is in the stream. This allows the runtime to also provide consumer lag metrics that reflects this offset against the latest committed event.

OpenTelemetry

OpenTelemetry metrics will be enabled by default if there is defined an OpenTelemetry endpoint to publish to.
It can be disabled with Dolittle__Runtime__OpenTelemetry__Tracing=false

Added

  • OpenTelemetry metrics support
  • New metrics:
    • dolittle_customer_runtime_stream_processor_consumer_lag
    • dolittle_customer_runtime_stream_processors_offset
    • dolittle_customer_runtime_stream_processors_processed_total

Changed

  • Stream processor state behavior - now considers unhandled events as well as processed events.

Release v9.5.1

05 Jun 20:52
c104125
Compare
Choose a tag to compare

Summary

Fixed stream ordering when using DB's that do not use the natural sort order of _id. This has been proven to be a potential issue on MongoDB Atlas.

Fixed

  • Added explicit sorting on _id when querying streams

Release v9.5.0

28 May 09:48
0ef324f
Compare
Choose a tag to compare

Summary

Upgrades the production image of the runtime to use .NET 8, with the performance improvements this brings.

The development image is still on 7, keeping the bundled MongoDB as is.