mars/test_suite/states_and_actions.txt

137 lines
7.4 KiB
Plaintext

## states_and_actions.txt Version 0.01
# Author: Frank Liepold frank.liepold@1und1.de
# Can be printed with a2ps -R --rows=1 --columns=1 -l 130 -L101 resource_states.txt
#
# Describes states and state transitions of mars entitities. Work in progress!
===================================== CLUSTER ======================================================================
action pre-conditions post-conditions
================ ================================================== =============================================
--------------------------------------------------------------------------------------------------------------------
1. create no cluster present cluster created
mars module not inserted /mars mounted
/mars mounted
--------------------------------------------------------------------------------------------------------------------
2. join (1.) on primary host cluster joined
cluster not joined /mars mounted
mars module not inserted
/mars mounted
--------------------------------------------------------------------------------------------------------------------
3. leave (1.) or (2.) no cluster present
no resources existent
===================================== RESOURCE =====================================================================
The resource states are described in resource_states.txt
In the following table the states which are of no interest in the specific
action are omitted or their values are marked with *.
The disk state "consistent" is an abreviation for not detached nor inconsistent.
HINT: The resource states are not up do date. The actual resource states are described in resource_states.txt.
action pre-conditions post-conditions
============= ================================================== =================================================
--------------------------------------------------------------------------------------------------------------------
4. create
(1.)
mars module inserted role : primary
device: unused disk : uptodate
repl : replaying
mars_device : usable
device : locked
--------------------------------------------------------------------------------------------------------------------
5. join
(4.) on primary host, (2.) role : secondary
mars module inserted disk : uptodate
repl : notjoined repl : replaying
device : unused mars_device : invisible
device : locked
--------------------------------------------------------------------------------------------------------------------
6. leave
(4.) or (5.) disk : detached
disk: uptodate mars_device : undef
outdated device : unlocked
-> wait | force
repl: disconnected
device: not opened by another application
--------------------------------------------------------------------------------------------------------------------
7. switch primary -> secondary
(4.) or (5.) role : secondary
role : primary disk : uptodate
--------------------------------------------------------------------------------------------------------------------
8. switch secondary -> primary
(4.) or (5.) role: primary
no other primary host (evtl. locking (two mounts!))
role : secondary
disk : uptodate
outdated
-> wait | force
--------------------------------------------------------------------------------------------------------------------
9. pause_sync
(4.) or (5.) repl: paused_sync
repl: synching
!synching
-> hint
--------------------------------------------------------------------------------------------------------------------
10. pause_replay
(4.) or (5.) repl: paused_replay
repl: replaying
!replaying
-> hint
--------------------------------------------------------------------------------------------------------------------
11. invalidate
(4.) or (5.) disk: inconsistent
--------------------------------------------------------------------------------------------------------------------
12. logrotate
(4.) or (5.) log rotated
--------------------------------------------------------------------------------------------------------------------
13. logdelete
(4.) or (5.) log deleted
logfile closed
AND logfile received from all secondaries
===================================== DEVICES ======================================================================
--------------------------------------------------------------------------------------------------------------------
14. attach
(4.) or (5.) disk: if no "out of mars changes" occured since detach
disk: detached state = state before detach
else
state = inconsistent
--------------------------------------------------------------------------------------------------------------------
15. detach
(4.) or (5.) disk: detached
--------------------------------------------------------------------------------------------------------------------
===================================== FURTHER INFOS NEEDED =========================================================
1. all state infos from remote hosts are to be provided with a timestamp indicating their actuality
2. replication states like synching, replaying need a "progress bar"
3. useless actions (e.g. primary on a resource beeing already primary) should be handled as tolerant as possible