Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.8.0 - 2021-04-26
Added
- Added the
:read_only?
configuration flag forSpear.Connection.Configuration
- this allows one to limit what the
Spear.Connection
will perform to read-only operations such as reading streams
- this allows one to limit what the
- Added link metadata to the
Spear.Event.metadata
packet in a new:link
field
Fixed
- Fixed the
:from
option in read requests (Spear.read_stream/3
,Spear.stream!/3
andSpear.subscribe/4
) to respect the new link information in metadata
0.7.0 - 2021-04-24
Added
- Added the subscription reference returned by
Spear.subscribe/4
andSpear.connect_to_persistent_subscription/5
to- the metadata map of
Spear.Event.t/0
in the pathSpear.Event.metadata.subscription
Spear.Filter.Checkpoint.t/0
in a new field:subscription
- the
:eos
tuples in the new shape of{:eos, reference(), :closed | :dropped}
- the metadata map of
Note that this is a breaking change for any consumers matching explicitly
on :eos
tuples. Consumers relying on the prior data shape should update
like so
- def handle_info({:eos, reason}, state) do
+ def handle_info({:eos, _subscription, reason}, state) do
0.6.1 - 2021-04-23
Fixed
Spear.stream!/3
now reads:from
revisions as inclusive- e.g. passing some
event
in the stream to:from
will ensure that the first element in the enumerable is^event
- the same principal applies when passing event revisions
- see #26
- if this behavior is undesirable, a Spear user may
Stream.drop/2
the initial element in the enumerable
- e.g. passing some
Spear.connect_to_persistent_subscription/5
now returns an error tuple when attempting to connect to a persistent subscription stream and group that has not yet been created.- the reason is a
Spear.Grpc.Response
struct with a status of:not_found
- the reason is a
Added
- Subscriptions may now emit
{:eos, :dropped}
in cases where the EventStoreDB explicitly terminates the subscription- this can happen if a persistent subscription is deleted while it has subscribers actively connected
- each subscriber will receive
{:eos, :dropped}
in its mailbox
0.6.0 - 2021-04-21
Added
- Added the CRUD portions of persistent subscriptions API
- Added subscription functionality for persistent subscriptions
Spear.connect_to_persistent_subscription/5
Spear.ack/3
Spear.nack/4
- associated callbacks in
Spear.Client
Changed
- Moved
Spear.cancel_subscription/3
under the utils API instead of streams- This function may also be used to cancel persistent subscriptions
0.5.0 - 2021-04-19
Added
- Added the gossip API
- this API is very small: just one function
Spear.cluster_info/2
- also added
Spear.Client.cluster_info/1
- under the hood, this also added the ability to decode structured
UUIDs received from the EventStoreDB, as are received in the
Spear.ClusterMember.instance_id
field. SeeSpear.Uuid
for the interesting implementation. - added the record interface
Spear.Records.Gossip
- this API is very small: just one function
Fixed
- Properly grouped free-floating modules under the proper structures and types or record interface groupings in the documentation
0.4.0 - 2021-04-19
Fixed
- Updated security guide to use new configuration style
Added
- Added the operations API
0.3.0 - 2021-04-18
Added
- Added record interface modules for all remaining APIs
- Added functions for interacting with the Users API
0.2.1 - 2021-04-17
Added
- Wrapped new ACL-related functions in
Spear.Client
0.2.0 - 2021-04-17
Changed
- Refactored connection configuration to go through validation
:opts
option has been renamed to:mint_opts
- credentials are passed through the
:connection_string
option or as:username
and:password
options
Added
- Implemented and documented keep-alive
- This can be configured through the
keepAliveInterval
andkeepAliveTimeout
query params in:connection_string
or by the new:keep_alive_interval
and:keep_alive_timeout
configuration options
- This can be configured through the
0.1.4 - 2021-04-16
Added
{:eos, :closed}
is now emitted when a subscription is broken due to the connection between closed betweenSpear.Connection
and EventStoreDBSpear.Connection
now monitors subscription processes and cancels EventStoreDB subscriptions upon subscriber process exit
0.1.3 - 2021-04-15
Added
- Added documentation and functionality for using TLS certificates
- see
Spear.Connection
and the security guide
- see
- Added documentation and functionality for setting the global stream ACL
- see
Spear.set_global_acl/4
and theSpear.Acl
module
- see
- Added functionality for getting and setting stream-level metadata.
0.1.2 - 2021-04-14
Added
- Added dependency on
connection
- Added ping functionality for
Spear.Connection
s - Added the ability to disconnect a connection by
GenServer.call/3
ing it with:close
as the message - Added the ability to explicitly reconnect a connection by
GenServer.cast/2
ing it a message of:connect
Changed
- Changed the internals of
Spear.Connection
to take advantage of the newConnection
dependency- A failure to connect on GenServer init for a connection will no longer take down the supervision tree
- Failures to connect will result in back-off retries in 500ms segments
- The life-cycle of the HTTP2 connection spawned by a
Spear.Connection
is now divorced from the life-cycle of theSpear.Connection
process
0.1.1 - 2021-04-14
Removed
- Removed dependency on
elixir-protobuf/protobuf
- see #4
- also removed all generated files from protobuf
Added
- Added dependency on
:gpb
- and associated generated erlang files
- Added
Spear.Records.*
interface for interacting with gpb-generated records
0.1.0 - 2021-04-12
Added
- Initial implementation of a client for the streams API
- all notable functions are labeled with the
since: "0.1.0"
doc attribute
- all notable functions are labeled with the