Information Technology Reference
In-Depth Information
message to each one of its receivers (lines 18-23). This message includes State
i
as a
parameter, hence notifying SS-R
j
about all policy changes that occurred in WS
i
during
the last
τ
SSS
period. SS-S
i
then reinitializes State
i
and restarts its
τ
SSS
timer.
Table 1.
Sender's Propagation Algorithm
(01)
At
Reception of Join(SS-R
j
)
Do
(02)
If
Agreed2Join(SS-R
j
) = True
Then
Receivers
i
= Receivers
i
∪
{SS-R
j
};
(03)
If
⎜Receivers
i
⎜ = 1
Then
State
i
.ChangeStatus = False;
(04) State
i
.ChangeDetails = ∅;
(05) Start τ
SSS
timer of SS-S
i
;
(06)
EndIf
(07) Send Decision2Join(SS-S
i
,True) to SS-R
j
(08)
Else
Send Decision2Join(SS-S
i
,False) to SS-R
j
(09)
EndIf
(10)
End
(11)
At
Reception of Leave(SS-R
j
)
Do
(12) Receivers
i
= Receivers
i
− {SS-R
j
};
(13)
End
(14)
At
the detection of Change(C,S) in WS
i
Do
(15) State
i
.ChangeStatus = True;
(16) State
i
.ChangeDetails = State
i
.ChangeDetails ∪ {(C,S)};
(17)
End
(18)
At
the end of τ
SSS
timer of SS-S
i
Do
(19)
For
each SS-R
j
/ SS-R
j
∈ Receivers
i
Do
Send Refresh(State
i
) to SS-R
j
;
EndFor
(20) State
i
.ChangeStatus = False;
(21) State
i
.ChangeDetails = ∅;
(22) Re-start τ
SSS
timer of SS-S
i
;
(23)
End
3.2 Soft-State Receiver Algorithm
The aim of SS-R
j
protocol is to detect faults in senders. For that purpose, SS-R
j
main-
tains a local table called
SR-Table
j
. SR-Table
j
allows SS-R
j
to keep track of Refresh()
messages transmitted by senders. It contains an entry for each SS-S
i
that belongs to
Senders(SS-R
j
). Each entry contains two columns:
−
Refreshed: SR-Table
j
[SS-S
i
,Refreshed]
equals True iff SS-R
j
received a Re-
fresh() from SS-S
i
in the current
τ
SSR
cycle.
Retry: SR-Table
j
[SS-S
i
,Retry]
contains the number of consecutive cycles during
which SS-R
j
did not receive Refresh() from SS-S
i
.
A temporary node failure in SS-S
i
may prevent SS-S
i
from sending Refresh() to SS-R
j
during a
−
SSR
cycle. In this case, SS-R
j
may want to give SS-S
i
a second chance for
sending Refresh() during the next
τ
τ
SSR
cycle. For that purpose, SS-R
j
maintains a
variable (positive integer)
Max-Retry
j
. If SS-R
j
does not receive Refresh() from SS-S
i
during Max-Retry
j
consecutive
SSR
cycles, it considers WS
i
as faulty. The value of
Max-Retry
j
is set by CS
j
composer and may vary from a composite service to another.
The smaller is Max-Retry
j
, the more pessimistic is CS
j
composer about the occurrence
of faults in participants.
τ