Derecho-Project / derecho

The main code repository for the Derecho project.
BSD 3-Clause "New" or "Revised" License
187 stars 47 forks source link

Carefully design the row push patterns during the initialization and the view change process #188

Open sagarjha opened 3 years ago

sagarjha commented 3 years ago

This is in relation to the pull request 182 (https://github.com/Derecho-Project/derecho/pull/182).

We should carefully compute the minimal data we have to send across during the initialization and the view change process, particularly in regards to the SMC slots which can get very large in size. Some of the enhancements possible are:

  1. Avoid sending the SMC slots at initialization because they are empty anyway. Even if the message contents are garbage in the beginning, only the counter value needs to be initialized for all the slots. I believe Lorenzo has already worked on it, but this needs to be carefully reasoned about.
  2. When we are doing a view change, we must make sure that all pending SMC messages are delivered. This is to avoid copying the contents of those slots to the new SST that is formed for the new view. But for this, we don't actually need to send all the slots. And as pointed by Lorenzo, we definitely don't need to send this to all the members of the top-level group. Currently, we don't have use-cases where the application has numerous subgroups containing 1000s of slots with consistent failures, but this could become a problem in the future.