Permalink
Branch: master
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
262 lines (153 sloc) 9.75 KB

Changelog

v0.16.0

Enhancements

  • Add :socket and :socket_dir config options (#132).
  • Rename uuid dependency to elixir_uuid (#135).
  • Subscription concurrency (#134).
  • Send :subscribed message to all subscribers connected to a subscription (#136).
  • Update to postgrex v0.14 (#143).

Breaking changes

  • Replace :poison with :jason for JSON event data & metadata serialization (#144).

    To support this change you will need to derive the Jason.Encoder protocol for all of your events.

    This can be done by adding @derive Jason.Encoder before defining the struct in every event module.

    defmodule Event1 do
      @derive Jason.Encoder
      defstruct [:id, :data]
    end

    Or using Protocol.derive/2 for each event, as shown below.

    require Protocol
    
    for event <- [Event1, Event2, Event3] do
      Protocol.derive(Jason.Encoder, event)
    end

0.15.1

Enhancements

  • Use a timeout of :infinity for the migration task (mix event_store.migrate) to allow database migration to run longer than the default 15 seconds.

Bug fixes

  • Socket closing causes the event store to never receive notifications (#130).
  • Subscription with selector function should notify pending events after all filtered (#131).

0.15.0

  • Support system environment variables for all config (#115).
  • Allow subscriptions to filter the events they receive (#114).
  • Allow callers to omit event_type when event data is a struct (#118).
  • Remove dependency on psql for event_store.create, event_store.init, event_store.migrate, and event_store.drop mix tasks (#117).
  • Supports query parameters in URL for database connection (#119).
  • Improve typespecs and include Dialyzer in Travis CI build (#121).

0.14.0

  • Add JSONB support (#86).
  • Add :ssl and :ssl_opts config params (#88).
  • Make mix event_store.init task do nothing if events table already exists (#89).
  • Timeout issue when using EventStore.read_stream_forward/3 (#92).
  • Replace :info level logging with :debug (#90).
  • Dealing better with Poison dependancy (#91).
  • Publish events directly to subscriptions (#93).
  • Use PostgreSQL advisory locks to enforce only one subscription instance (#98).
  • Remove stream process (#99).
  • Use PostgreSQL's NOTIFY / LISTEN for event pub/sub (#100).
  • Link existing events to another stream (#103).
  • Subscription notification message once successfully subscribed (#104).
  • Transient subscriptions (#105).
  • Transient subscription event mapping function (#108).
  • Turn EventStore mix tasks into generic tasks for use with Distillery during deployment (#111).

Upgrading

Upgrade your existing EventStore database by running:

mix event_store.migrate

You can drop and recreate an EventStore database by running:

mix do event_store.drop, event_store.create, event_store.init

v0.13.2

Bug fixes

  • Use Supervisor.child_spec with an explicit id for Registry processes to support Elixir v1.5.0 and v1.5.1 (v1.5.2 contains a fix for this issue).

v0.13.1

Bug fixes

  • EventStore migrate mix task read migration SQL scripts from app dir (Application.app_dir(:eventstore)).

v0.13.0

Enhancements

  • Use a UUID field for the event_id column, rename existing field to event_number (#75).
  • Use uuid data type for event correlation_id and causation_id (#57).
  • Mix task to migrate an existing EventStore database (mix event_store.migrate).

Bug fixes

  • Append to stream is limited to 7,281 events in a single request (#77).

Upgrading

Upgrade your existing EventStore database by running: mix event_store.migrate

Or you can drop and recreate the EventStore database by running: mix do event_store.drop, event_store.create, event_store.init

v0.12.1

Bug fixes

  • Publisher only notifies first pending event batch (#81).

v0.12.0

Enhancements

  • Allow optimistic concurrency check on write to be optional (#31).

Bug fixes

  • Fix issue where subscription doesn't immediately receive events published while transitioning between catch-up and subscribed. Any missed events would be noticed and replayed upon next event publish.

v0.11.0

Enhancements

  • Support for running on a cluster of nodes using Swarm for process distribution (#53).

  • Add stream_version column to streams table. It is used for stream info querying and optimistic concurrency checks, instead of querying the events table.

Upgrading

Run the schema migration v0.11.0.sql script against your event store database.

v0.10.1

Bug fixes

  • Fix for ack of last seen event in stream subscription (#66).

v0.10.0

Enhancements

  • Writer per event stream (#55).

    You must run the schema migration v0.10.0.sql script against your event store database.

  • Use DBConnection's built in support for connection pools (using poolboy).

v0.9.0

Enhancements

  • Adds causation_id alongside correlation_id for events (#48).

    To migrate an existing event store database execute v0.9.0.sql script.

  • Allow single stream, and all streams, subscriptions to provide a mapper function that maps every received event before sending to the subscriber.

    EventStore.subscribe_to_stream(stream_uuid, "subscription", subscriber, mapper: fn event -> event.data end)
  • Subscribers now receive an {:events, events} tuple and should acknowledge receipt by: EventStore.ack(subscription, events)

v0.8.1

Enhancements

  • Add Access functions to EventStore.EventData and EventStore.RecordedEvent modules (#37).
  • Allow database connection URL to be provided as a system variable (#39).

Bug fixes

  • Writer not parsing database connection URL from config (#38).

v0.8.0

Enhancements

  • Stream events from a single stream forward.

v0.7.4

Enhancements

  • Subscriptions use Elixir streams to read events when catching up.

v0.7.3

Enhancements

  • Upgrade fsm dependency to v0.3.0 to remove Elixir 1.4 compiler warnings.

v0.7.2

Enhancements

  • Stream all events forward (#34).

v0.7.1

Enhancements

  • Allow snapshots to be deleted (#26).

v0.7.0

Enhancements

  • Subscribe to a single stream, or all streams, from a specified start position (#17).

v0.6.2

Bug fixes

  • Subscriptions that are at max capacity should wait until all pending events have been acknowledged by the subscriber being catching up with any unseen events.

v0.6.1

Enhancements

  • Use IO lists to build insert events SQL statement (#23).

v0.6.0

Enhancements

  • Use NaiveDateTime for each recorded event's created_at property.

v0.5.2

Enhancements

  • Provide typespecs for the public API (#16)
  • Fix compilation warnings in mix database task (#14)

Bug fixes

  • Read stream forward does not use count to limit returned events (#10)

v0.5.0

Enhancements

  • Ack handled events in subscribers (#18).
  • Buffer events between publisher and subscriber (#19).