ivandika3 opened a new pull request, #10171:
URL: https://github.com/apache/ozone/pull/10171

   ## What changes were proposed in this pull request?
   
   We need to ensure that the tables in CleanupTableInfo in OM response should 
be exactly the same as the ones updated in the corresponding OM request's 
validateAndUpdateCache. Currently, this is done with using CleanupTableInfo 
annotations on the OMClientResponse. However, this is hard to keep track 
because all the cache updates are done in the OMClientRequest, but we need to 
update the OMClientResponse instead, which is very error-prone. We should 
couple the table cache update in OMClientRequest and the tables to cleanup. 
That way, we remove the CleanupTableInfo reflection entirely. This also have 
added benefit of reducing the overhead introduced by Reflections 
(https://stackoverflow.com/questions/435553/java-reflection-performance), this 
requires some benchmark to ensure there are no performance regressions.
   
   One way is for the OMClientRequest to pass the table cache to cleanup for 
the OmClientResponse whenever a cache is updated (e.g. using some context 
object). This will ensure that any table cache updated will be propagated to 
the OMClientResponse and OMClientResponse do not need to handle this logic. 
Moreover, this can save some cleanup overhead if not all tables in the 
CleanupTableInfo need to be cleaned up in certain cases (e.g. 
OMOpenKeysDeleteRequest might only need to cleanup only OPEN_KEY_TABLE (if all 
the open keys are from OBS / LEGACY buckets) or OPEN_FILE_TABLE (if all the 
open keys are from FSO bucket) or both. For example, for each 
Table#addCacheEntry, we also need to update the list of tables to cleanup. 
However, there might be some memory overhead when passing the OM table cache to 
cleanup (although the context objects should be short-lived).
   
   Currently, since OMClientRequest#validateAndUpdateCache only returns the 
generic OMClientResponse, it might be hard to test this. We might need to 
parameterize ( the OMClientRequest (using generic) to pair it with the 
associated OMClientResponse implementation. Afterwards, we can list all the 
OMClientRequest and check the associated OMClientResponse.
   
   ## What is the link to the Apache JIRA
   
   https://issues.apache.org/jira/browse/HDDS-13365
   
   (Please replace this section with the link to the Apache JIRA)
   
   ## How was this patch tested?
   
   UT


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to