FEP 070c: Block synchronization across servers

You certainly move fast @dansup :slight_smile:

Overall I love it - the lack of eventual consistency of block state has concerned me for a while.

One concern is the potential for Blocks to be dropped if there are changes while requesting a paginated collection. The worst case being; the collection is reduced in size, and pagination causes some users who have Blocks in pace to be missed - which the FEP says to consider being an Undo Block.

For syncs being triggered after noticing a digest mismatch, the receiving server can re-compile the digest after receiving the collection, to tell if it was changed during that time (might be worth advising this in the FEP).

But for servers doing a periodic reconciliation, they won’t have that digest to compare to. The issue should be rectified upon the next reconciliation, but I’d be more comfortable if there was a more immediate way to detect this issue. I don’t know the best way to do that though. Servers could attach the block sync digest as a response header? Paginated collections could contain a hash of results in the collection object? Use ETag / If-Match headers?