GetAllVBSeqnos need to be sure that the seqno returned to the caller is not a prepare/abort.
A DCP protocol update is required (an extension of the sync-write DCP protocol changes already made in mad-hatter). The reason for the protocol change is to solve an issue in GetAllVBSeqnos for replica vbuckets.
When we return the 'high-seqno' of a replica, we use the replica's current snapshot.end. The value exposed in this case can, if the replica is receiving a disk snapshot suffer the same issue described in
MB-36948, in that it could be a prepare/abort. If the caller of GetAllVBSeqnos does not opt into sync-replication, then it expects to see the snapshot.end on DCP, however it won't (the view-engine will do exactly that and likely block rebalance, or just hang).
To resolve the issue the DCP snapshot marker command needs to transmit the extra seqno (which won't be a prepare/abort) from active to replica and then GetAllVBSeqnos can use that value for the replica seqno if the caller hasn't negotiated sync-replication.
This MB covers the change to the DCP protocol.