[ https://issues.apache.org/jira/browse/HBASE-10277?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13878111#comment-13878111 ]
stack commented on HBASE-10277: ------------------------------- So, this redo has to be backportable to 0.94? Or you mean that the 0.94 APIs must work as they did in 0.94 though you are in a 0.96+ context? Which is option #3? I do not see a #3 above. Do you mean 'remove old pattern from AP'? If so, that sounds good to me. AP is done 'right' (but you have to add hackery to handle the ugly stuff a while). Old API is deprecated and IMO, it is find if deprecated API loses perf -- it is incentive to move to the new way. > refactor AsyncProcess > --------------------- > > Key: HBASE-10277 > URL: https://issues.apache.org/jira/browse/HBASE-10277 > Project: HBase > Issue Type: Improvement > Reporter: Sergey Shelukhin > Assignee: Sergey Shelukhin > Attachments: HBASE-10277.patch > > > AsyncProcess currently has two patterns of usage, one from HTable flush w/o > callback and with reuse, and one from HCM/HTable batch call, with callback > and w/o reuse. In the former case (but not the latter), it also does some > throttling of actions on initial submit call, limiting the number of > outstanding actions per server. > The latter case is relatively straightforward. The former appears to be error > prone due to reuse - if, as javadoc claims should be safe, multiple submit > calls are performed without waiting for the async part of the previous call > to finish, fields like hasError become ambiguous and can be used for the > wrong call; callback for success/failure is called based on "original index" > of an action in submitted list, but with only one callback supplied to AP in > ctor it's not clear to which submit call the index belongs, if several are > outstanding. > I was going to add support for HBASE-10070 to AP, and found that it might be > difficult to do cleanly. > It would be nice to normalize AP usage patterns; in particular, separate the > "global" part (load tracking) from per-submit-call part. > Per-submit part can more conveniently track stuff like initialActions, > mapping of indexes and retry information, that is currently passed around the > method calls. > -I am not sure yet, but maybe sending of the original index to server in > "ClientProtos.MultiAction" can also be avoided.- Cannot be avoided because > the API to server doesn't have one-to-one correspondence between requests and > responses in an individual call to multi (retries/rearrangement have nothing > to do with it) -- This message was sent by Atlassian JIRA (v6.1.5#6160)