Skip to content

Release v2.2.0

Latest

Choose a tag to compare

@github-actions github-actions released this 07 Aug 03:42
61455da

Added

  • Added Chronicle.ExternalServices.register/2,3 for registering external service definitions (HTTP or MsSql/PostgreSql endpoints) with Chronicle, via a pipe-friendly Chronicle.ExternalServices.DefinitionBuilder supporting basic/bearer/OAuth authorization and custom headers/options
  • Added Chronicle.Identities.rename/3 for renaming an identity's display name by its stable subject
  • Added Chronicle.Compliance.delete_encryption_key/2 for deleting the PII encryption key for a subject
  • Added Chronicle.EventSequences.EventLog.redact/3 and redact_for_event_source/4 to permanently erase an event's (or an event source's) content for GDPR/compliance purposes — destructive and irreversible, unlike compliance encryption
  • Added get_from_sequence_number/2, get_next_sequence_number/1,2, get_tail_sequence_number_for_observer/2, and complete_stream/2,3 to Chronicle.EventSequences.EventLog (also mirrored on Chronicle.EventSequences.EventSequence for non-default sequences)
  • get_for_event_source/2 and get_tail_sequence_number/2 now accept :event_source_type, :event_stream_type, and :event_stream_id filters instead of silently ignoring them
  • Added append_and_wait_for_completion/3 to append an event and wait for every affected observer (reactor, reducer, ...) to reach it or fail
  • A reactor's handle/2 can now return {:ok, event_or_events} to append follow-up event(s) as a side effect, in addition to :ok/{:error, reason}
  • Chronicle.Reactors.Reactor and Chronicle.Reducers.Reducer gain optional replay-lifecycle callbacks (on_replay_begin/0, on_replay_end/0, on_partition_replay_begin/1, on_partition_replay_end/1)
  • Added Chronicle.ReadModels.watch/2 and unwatch/1 for subscribing to live read-model changesets, and dehydrate_session/4 for explicitly releasing a materialized read-model session
  • Added Chronicle.EventStoreSubscriptions.get_all/1 for listing currently-registered event store subscriptions
  • Added the Chronicle.FailedPartitions module (get_all/1, get_for/2) for inspecting observers with failed partitions
  • unique/2 gains a :scope option (:per_event_source_type / :per_event_stream_type / :per_event_stream_id) to narrow a uniqueness check instead of always checking globally
  • use Chronicle.Reducers.Reducer gains an :active option for passive reducers, whose read model is computed on demand instead of kept warm in the background
  • Added documentation for all of the above (new sections on the event sequences, reactors, read models, event store subscriptions, constraints, and reducers pages, plus a new Failed Partitions page) and console sample demonstrations of redaction, reactor side effects, wait-for-completion, and constraint scoping

Fixed

  • unique/2's :message option is no longer silently discarded when normalizing constraint declarations

Test plan

  • mix compile --warnings-as-errors (client library and console sample) — zero warnings, zero errors
  • mix test — 284 passed
  • Documentation/validate-client-snippets.py — all snippets compile, including new ones