[ 
https://issues.apache.org/jira/browse/KUDU-1944?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16785095#comment-16785095
 ] 

Andrew Wong commented on KUDU-1944:
-----------------------------------

Remove the various deprecated pieces of our public API.

Notably, any PB fieldĀ that gets auto-generated in the Java client will expose a 
deprecated, but still useable method as a part of the public API. 
[{{DEPRECATED_range_predicates}}|https://gerrit.cloudera.org/c/12661/] in 
{{NewScanRequestPB}}, and the resulting {{addColumnRangePredicatesRaw}} and 
{{addColumnRangePredicate}} methods in {{AbstractKuduScannerBuilder}}, are an 
example of this.

> Breaking changes best suited for a Kudu major release (i.e. 2.0)
> ----------------------------------------------------------------
>
>                 Key: KUDU-1944
>                 URL: https://issues.apache.org/jira/browse/KUDU-1944
>             Project: Kudu
>          Issue Type: New Feature
>          Components: api, client, master, tserver
>    Affects Versions: 1.3.0
>            Reporter: Adar Dembo
>            Priority: Major
>
> I thought it might be useful to start a list of all Kudu features or 
> additions that we suspect may be breaking (i.e. may break client API/ABI 
> compatibility, wire compatibility, on-disk compatibility, etc.) and should be 
> reserved for a Kudu major release, where we could expect to tolerate such 
> breakages.
> Here are a few candidates off the top of my head.
> h4. Remove std:: classes from C++ client API
> The presence of std:: classes complicates maintenance of ABI compatibility 
> w.r.t. libstdc++. Couple options here:
> * Replace std:: classes with simpler primitives (i.e. std::string -> void * + 
> size_t).
> * Replace std:: classes with Kudu counterparts (i.e. std::string -> 
> faststring).
> * Replace entire C++ API with a C-based API.
> * Add a C-based API but retain C++ API as header-only.
> I believe all of these break ABI compatibility and likely API compatibility 
> too.
> h4. Rework Java client async API
> When we first released Kudu 1.0 we thought about stabilizing the async Java 
> API (i.e. all public classes that start with Async), but decided against it 
> because we had no good use cases. If we were to do that now, we'd most 
> certainly be breaking ABI/API compatibility for anyone using it in its 
> current form.
> h4. Rework status/error codes
> This one also comes up from time to time. It bemoans the coarse grainedness 
> of Status' error codes and, depending on how its done, may break client 
> ABI/API compatibility as well as wire compatibility.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to