[ https://issues.apache.org/jira/browse/KUDU-683?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Grant Henke updated KUDU-683: ----------------------------- Target Version/s: 1.8.0 (was: 1.5.0) > Clean up multi-master tech debt > ------------------------------- > > Key: KUDU-683 > URL: https://issues.apache.org/jira/browse/KUDU-683 > Project: Kudu > Issue Type: Bug > Components: client > Affects Versions: M5 > Reporter: Adar Dembo > Priority: Major > > Multi-master support in the C++ client has introduced a fair amount of > RPC-related tech debt. There's a lot of duplication in the handling of > timeouts, retries, and error conditions. The various callbacks are also > tricky to follow and error prone. Now that the code has settled and we > understand what's painful about it, we're in a better position to fix it. > Here's a high-level design idea: there should only be one RPC class that's > responsible for RPC delivery end-to-end, including retries, leader master > discovery, etc. Within that class there should be a single callback that's > reused for every asynchronous function, and there should be a separate state > machine that tracks the ongoing status of the RPC. Per-RPC specialization > should be as minimal as possible, via templates on the PBs, callbacks, or, > worst case, subclassing. -- This message was sent by Atlassian JIRA (v7.6.3#76005)