Research Article

A Novel Low-Overhead Recovery Approach for Distributed Systems

Algorithm 1

Nonblocking Algorithm.
At each process 𝑃 𝑖 ( 1 ≀ i ≀ 𝑛 )
 if 𝑃 𝑖 receives 𝑀 𝑐
      takes checkpoint 𝐢 𝑖 π‘₯ ;
   sends its 𝑉 𝑖 π‘₯ ( s e n t ) and 𝑉 𝑖 π‘₯ ( r e c v ) to the initiator process 𝑃 βˆ— ;
      // all such vectors from each 𝑃 𝑖 are used by 𝑃 βˆ— to determine the lost messages
         sent by the processes during ( 𝐢 𝑖 π‘₯ - 𝐢 𝑖 π‘₯ βˆ’ 1 ) in the event of a failure continues its normal operation;
   else if 𝑃 𝑖 receives a piggybacked application message < m, $ > && 𝑃 𝑖 has not yet received 𝑀 𝑐
       for the current execution of the checkpointing algorithm
        takes checkpoint 𝐢 𝑖 π‘₯ without waiting for 𝑀 𝑐 ;
        sends its 𝑉 𝑖 π‘₯ ( s e n t ) and 𝑉 𝑖 π‘₯ ( r e c v ) to the initiator process 𝑃 βˆ— ;
      // all such vectors from each 𝑃 𝑖 are used by 𝑃 βˆ— to determine the lost messages
         sent by the processes during ( 𝐢 𝑖 π‘₯ - 𝐢 𝑖 π‘₯ βˆ’ 1 ) in the event of a failure continues its normal operation;
      // processes the received message π‘š and ignores 𝑀 𝑐 , when received later