Skip to content
This repository has been archived by the owner on Jun 1, 2021. It is now read-only.

Causal event delivery #66

Closed
krasserm opened this issue May 5, 2015 · 2 comments
Closed

Causal event delivery #66

krasserm opened this issue May 5, 2015 · 2 comments

Comments

@krasserm
Copy link
Contributor

krasserm commented May 5, 2015

Storing events in an order that is consistent with their causal relationship can be inefficient. When giving up causal storage order, Eventuate must re-order events before delivering them in order to preserve causality on application-level.

Applications should also also be able to disable causal delivery. This is useful for actors that manage Counter or MV-Register CRDTs, for example, for which causal delivery order is not relevant. Other application-specific actors and/or views may also want to turn off causal delivery if their state update operations commute.

@krasserm krasserm self-assigned this May 5, 2015
@krasserm krasserm changed the title Scalable event log replication Causal event delivery Jul 22, 2015
krasserm added a commit that referenced this issue Jul 22, 2015
- no causal event storage order in logs required
- needed for more scalable event log replication
- causal delivery can be turned on/off per actor
- closes #66
@krasserm
Copy link
Contributor Author

An initial implementation (M1) exists on branch wip-66-causal-event-delivery. In this implementation, event-sourced actors and views re-order events before delivering them to their event handler. It is assumed that an actor that handles a given event also handles all causally related events. Hence, these causally related events

  1. must pass all replication filters
  2. must be routed to that actor and
  3. must be handled by that actor

This is the case for some applications, such as Eventuate's operation-based CRDTs, for example. However, the above assumptions cannot be made in general because application-specific replication filters, routings and event handlers can prevent causally related events from being handled by a certain actor.

@krasserm krasserm added this to the 0.3 milestone Jul 23, 2015
@krasserm krasserm changed the title Causal event delivery Scalable event replication Aug 2, 2015
@krasserm krasserm changed the title Scalable event replication Causal event delivery Oct 11, 2015
@krasserm krasserm changed the title Causal event delivery Causal event re-ordering Oct 11, 2015
@krasserm krasserm removed this from the 0.4 milestone Oct 11, 2015
@krasserm krasserm removed the ready label Oct 11, 2015
@krasserm krasserm removed their assignment Oct 11, 2015
@krasserm krasserm added ready and removed ready labels Oct 11, 2015
@krasserm krasserm changed the title Causal event re-ordering Causal event delivery Oct 11, 2015
@krasserm krasserm added core and removed core labels Nov 14, 2015
@krasserm
Copy link
Contributor Author

Eventuate will continue storing events in causal order.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

1 participant