Class CompletedProcedureCleaner<TEnvironment>

java.lang.Object
org.apache.hadoop.hbase.procedure2.Procedure<TEnvironment>
org.apache.hadoop.hbase.procedure2.ProcedureInMemoryChore<TEnvironment>
org.apache.hadoop.hbase.procedure2.CompletedProcedureCleaner<TEnvironment>
All Implemented Interfaces:
Comparable<Procedure<TEnvironment>>

@Private class CompletedProcedureCleaner<TEnvironment> extends ProcedureInMemoryChore<TEnvironment>
Internal cleaner that removes the completed procedure results after a TTL.

NOTE: This is a special case handled in timeoutLoop().

Since the client code looks more or less like:

   procId = master.doOperation()
   while (master.getProcResult(procId) == ProcInProgress);
 
The master should not throw away the proc result as soon as the procedure is done but should wait a result request from the client (see executor.removeResult(procId)) The client will call something like master.isProcDone() or master.getProcResult() which will return the result/state to the client, and it will mark the completed proc as ready to delete. note that the client may not receive the response from the master (e.g. master failover) so, if we delay a bit the real deletion of the proc result the client will be able to get the result the next try.