- With a combination of a task executor using a thread pool,
substates with triggerless transitions and actions may fail to
properly pass on message headers.
- Move queue message outside of loop on a class level which
should give next loop a change to see previous queued message
which is then used from triggerless transitions.
- Relates to #100
- Change DefaultStateMachineExecutor to keep event message
around and then loop triggerless transitions order to
pass that message to whole chain.
- Fixes#100
- Enhancing internal model so that event and its headers can
be passed into action if it's used in an initial sub-state
when transition target its super state.
- Added tests and better docs.
- Fixes#99.
- Modifying concepts around DistributedStateMachine and
ZookeeperStateMachineEnsemble to get better handling when
zk connection is lost.
- New jepsen test showing that after a brain split machine
will get back to a consistent state.
- Polish javadocs
- Hopefully fixes#91
- Add missing test method for testing variable change events.
- This may also contribute to make tests more reliable when
testing variable values.
- Should contribute to #76 also.
- Adding secondary read if event logs were read which
should make it less probable losing events at a time
when main state is changed while logs are replayed.
- Hopefully fixes#97
- Check task is null and then set it was wrongly
not made as thread safe, changing it to be wrapped
inside AtomicReference.
- This relates to #76 and hopefully fixes#96
- New extendedStateChanged method in StateMachineListener and
its wingman OnExtendedStateChanged in context events.
- DefaultExtendedState is now using ObservableMap to get notify
when individual variables has been modified.
- Fixes#85
- Now using stateMachineTaskExecutor instead of taskExecutor
so that it's easier to use custom executor and not to
collide with bean created i.e. scheduling.
- Fixes#83
- Change previous DistributedStateMachine fixes which didn't
really work. Now explicitely getting state from machine to be set
into ensemble for post internal transition.
- Now can send Message<E> via test plan instead of plain E.
- More testing for tweaked features.
- This is purely for jepsen tests, though also
handy for UI for showing that variable can be changed.
Essentially we want to have a way to set extended state
variable via internal transition which takes an value from
event headers and set that to extended state. This is then
supposed to be used from jepsen to test concurrenty issues
around extended state variables.
- For some reason ZookeeperStateMachineEnsemble may return null
for very early when postTransition() is handled. Adding check not
to ping back ensemble if its getState() returns null. It really
feels a bit wrong right now, so need to follow this.
- Synchronize JoinPseudoState's
JoinTracker.stateChanged(State<S, E>, State<S, E>) method
for playing nice with concurrent region execution.
Should fix#93.
- Tuning test which relates to #76. What comes for the
tests, there was this concurrency issue and also problem
in tests itself.
- Polish JoinPseudoState.
- Remove propagating BadVersionException from ZookeeperStateMachineEnsemble
via event so that machine can be kept running. Further logs are then read
anyway via watcher. Thought we still need better handling but this
is better for now.
- Relates to #92