shumbo / choreography-ts

Choreographic Programming in TypeScript
1 stars 2 forks source link

Fault Tolerance #34

Closed shumbo closed 1 year ago

shumbo commented 1 year ago

This PR adds a minimal fault tolerance feature that can tolerate a node crashing and restarting. We do so by recording the return values of each choreographic operator and saving log entries to the persistent storage. Each operator also checks if there is a log entry in the log, and if it finds that the operator has already been executed, it returns the saved value and does not execute the actual behavior. This makes it possible to "recover" the program state at the point of the crash and continue as if the crash didn't happen. The other locations are expected to be waiting for the crashing node to come back up.

codecov[bot] commented 1 year ago

Codecov Report

Merging #34 (d91cd6c) into main (1ff57bc) will increase coverage by 0.68%. The diff coverage is 92.68%.

@@            Coverage Diff             @@
##             main      #34      +/-   ##
==========================================
+ Coverage   86.26%   86.94%   +0.68%     
==========================================
  Files          20       21       +1     
  Lines         859      927      +68     
  Branches       94      103       +9     
==========================================
+ Hits          741      806      +65     
- Misses        117      120       +3     
  Partials        1        1              
Files Changed Coverage Δ
packages/core/src/core.ts 86.93% <88.46%> (-0.02%) :arrow_down:
packages/core/src/in-memory-log-manager.ts 100.00% <100.00%> (ø)
packages/core/src/lib/transport-test-suite.ts 98.36% <100.00%> (+0.34%) :arrow_up:

... and 1 file with indirect coverage changes

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more