-
Bug
-
Resolution: Done
-
Blocker
-
5.2.0.Final
-
None
The NBST functionality leaves place to inconsistencies during removals:
1. the joiner first requests transaction data
2. after all transaction data is integrated (i.e. tx is prepared on the state receiver node) it requests the rest(data container) of the data
3. in order not to override the data from transactions which is more recent (transactions at step 1 might commit during step 2), the insertion at 2 happens with putIfAbsent. Whilst this prevents from overriding newer values (written by transactions), it doesn't guard against the situation in which the tx at step 1 removed data. So it is possible for deleted data a to resurrect.
A solution to this inconsistency issue is to use tombstones for the duration of the state transfer.