- 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
- This is a web based distributed zookeeper state machine
sample showing how multiple Spring boot instances having
a state machine can work with a zookeeper to distribute state
handling thoughout a jvm boundaries.
- Also this example is using websocket support to have live
updates of a UI for state machine state changes.
- Add related error handling methods to StateMachine.
- Enhance StateMachineListener and context events around
error events.
- Modify StateMachineInterceptor and stuff around it order
to handle errors.
- Fixes#6, fixes#77
- Fix some concurrent event issues which were
born with new tests
- Enhance tests for dist machine and ensemble
- Add new features to testing system
- Polish and add more logging
- Relates to #49
- New project spring-statemachine-test which contains public
classes to easy generic state machine testing.
- Concepts of StateMachineTestPlan and StateMachineTestPlanBuilder.
- Replaced one zk test to use this framework.
- Fix AbstractStateMachineFactory so that it does not try
to create transitions with null source or target. Basically we
just skip transition source or target which doesn't belong to
region.
- Change DefaultExtendedState to use ConcurrentHashMap so that
there's less change to get into trouble with concurrency.
- Add statechart for tasks recipe.
- Fix various concepts in TasksHandler and its tests.
- Prepare some examples for docs.
- Fixes#74
- Fixes#86
- Fix internal transition changes when extended
state variables has been modified. Also internal
transition is now correctly passed into other
distributed state machines.
- Rename StateChangeInterceptor to StateMachineInterceptor and
add methods for pre/post transitions.
- Adding getId concept into a state machine to help distributed
machines to know from where a state change originates.
- Fix ZookeeperStateMachineEnsemble to work better with
persisted state machine contexts.
- StateMachineAccess, replace state reset and variables
with a StateMachineContext.
- Additional fixes to reset state properly even if
target transition is a super state.
- Some polish
- Add tests
- Fixes#82
- Now have configure method ConfigurationConfigurer.autoStart(boolean)
which can be used to enable autostart feature for top-level state machine.
We keep this feature disabled as default because most of the cases it is
easier to enable it than disable it.
- Reported and fixex #81
- Change how internal state is entered and handled
when transition doesn't terminate into initial state.
- Needed to change stuff in various places because
some of the concepts were literally broken which were
overlooked due to missing tests.
- OnStateNotAcceptedEvent is fired via context
if event is not accepted.
- eventNotAccepted called via StateMachineListener
if event is not accepted.
- Test in StateMachineEventTests.testEventNotAccepted()
- Fixes#43
- Fixes#71
- If substate is entered directry, we don't
go via initial state for particular state machine
where transition ends.
- Fixing other tests which assumed initial state is entered.
- In terms of a history state, initial state is still entered.
- Relates to #74
- Tasks recipe not yet fully working, need to get
this work in to be able to work with other tickets.
- Add childs to StateMachineContext
- A lot of fixes to regions concept throughout
a code base. Some of the concepts were really broken
if there were a complex recursive set of regions, etc.
- Add task executor/scheduler to StateMachineBuilder
- Remove away from plain serialize/deserialize to write/read
concept which works better in a generic abstraction.
- Tweak related class in zookeeper package.
- Relates to #35
- New configurer which can be used to define an ensemble which
if is set automatically wraps a machine with a distributed
state machine and sets it to use an given ensemble.
- Relates to #35
- Move away from using state machine listener if favor
of interceptor which allows to skip state change.
- Remove previously added method in a
StateMachineListener. (was a bad idea).
- More tweaks to zk example
- Relates to #35
- Relates to #45
- Modify current annotation builder model to work via
manual StateMachineBuilder class.
- Add ConfigurationConfigurer to configure bean factory,
task executor and task scheduler via builder.
- NOTE: not yet fully working distributed sm, this
commit is considered to be a stage 1 of further
commits on this matter.
- Preliminary concept of DistributedStateMachine,
StateMachineEnsemble and StateMachinePersist.
- New module spring-statemachine-zookeeper order to
persist state in a distributed matter.
- Refactoring concept of a state machine access to get
better internal access into a sm via functional interfaces.
- Change build to use jdk7 and change test to rely on jdk8
order to test functional lambdas.
- new zookeeper sample demonstrating distributed concepts.
- Relates t0 #35 and #34.
- No docs until things are fully implemented.