voldemort/voldemort — pull request #216 by arunthirupathi (2014-08-27 02:42:57+00:00)
Title: Delete slop4

Problems:
1) Exception handling of delete is very different at 4 places ( on
normal response, required failure, quorum failure) and after pipeline is
finished.
2) The exceptions are reported again and again ( They are not removed
from the map).
3) Some places ignore obsoleteVersionException, some others report it.
4) There is a zombie state abort, there is no way to reach this state.
5) Multiple slops could be sent, because of the issue 2. When the
pipeline is aborted, no slops could be sent.
6) Refactored QuotaLimitingStore test to add delete test cases
7) Combined the PUT and GET quotas into 2 quotas.

Solution:
Defined a common method, so that all 4 places call into the same method.
Only the condition for calling is different. Race conditions still
exist, after zone failure check but before pipeline finishes the
exception will go missing, slops will not happen, but the chances are
reduced.
Got rid of the state PerformDeletedHintHandoff as
QuotaExceededExceptions will not be reported as failures. Now doing it
in place.