There is no compatibility issue as we are adding a new field to an existing data structure (
DescribeConfigsOptions). If the field is not specified then the code will behave in same manner as existing code. The same applies to changes to the
kafka-topics tool, as we are adding new options and existing options will continue to behave as is.
If there are alternative ways of accomplishing the same thing, what were they? The purpose of this section is to motivate why the design is the way it is and not some other way.We considered adding
configurationKeys collection directly to the
ConfigResource object so that user can specify different type of resources and for each one of them they can also specify the configurations to fetch. This avoid the issue #2 mentioned above in the
Proposed Changes section. However,
ConfigResource class is widely used outside of this api (over 300 usages) and is meant to represent a resource that has configurations. The new configuraiton key field will be of no use in all these other cases, so we decided to not pursue this approach.