GitHub user ijuma opened a pull request: https://github.com/apache/kafka/pull/2343
[WIP] Client Compatibility Temporary PR to run tests in Jenkins, this will be merged to #2264 once @cmccabe comes online. You can merge this pull request into a Git repository by running: $ git pull https://github.com/ijuma/kafka KAFKA-4507 Alternatively you can review and apply these changes as the patch at: https://github.com/apache/kafka/pull/2343.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #2343 ---- commit 64d321be6230a7bcb4a7962dd2bd7e00593a0c6a Author: Colin P. Mccabe <cmcc...@confluent.io> Date: 2017-01-04T18:29:19Z KAFKA-4507: The client should send older versions of requests to the broker if necessary commit bf78ae087f1e8b79fab53028d5d379399266e5e0 Author: Colin P. Mccabe <cmcc...@confluent.io> Date: 2017-01-05T21:25:01Z Add NodeApiVersions.java and unit tests (cherry picked from commit a4e2bdbeaf832d55985a056beea769805703f2dd) commit 37168a9dc0a40c48a491f6c8af1b0e911bdf8ed7 Author: Colin P. Mccabe <cmcc...@confluent.io> Date: 2017-01-05T21:43:05Z Improve NodeApiVersionsTest (cherry picked from commit 51fc001b938c2e0318fb4f44290ad3c243e7fbaa) commit 9d55d80c0ff048ba6a5d3622ae1805b97321720d Author: Colin P. Mccabe <cmcc...@confluent.io> Date: 2017-01-06T20:41:20Z Fetcher.java: fix indentation commit b22d58e9922873a074c24461293ff816898e0e94 Author: Colin P. Mccabe <cmcc...@confluent.io> Date: 2017-01-06T20:41:28Z ProduceRequest: disable creating versions earlier than 2 commit 85d9ce90bf9d7955d99b275bcdc4185ed73f6a4b Author: Colin P. Mccabe <cmcc...@confluent.io> Date: 2017-01-07T00:47:44Z Add builders for CreateTopicsRequest and DeleteTopicsRequest, so that they can be used with send() etc. commit 9c73252bba1974006fc78e1dae3ebe4ced62f6f1 Author: Colin P. Mccabe <cmcc...@confluent.io> Date: 2017-01-08T03:48:17Z Fix checkStyle commit 042d136b503798752ef5c3510d5a02609280bbd2 Author: Colin P. Mccabe <cmcc...@confluent.io> Date: 2017-01-09T18:27:29Z Accessors should not start with 'get' commit ea7dc13a46bc22078f5ee62ffb8693b4756ec368 Author: Colin P. Mccabe <cmcc...@confluent.io> Date: 2017-01-09T18:52:32Z Don't special-case null when using the stringbuilder. remove unused variable commit 158dcd8870f29b73edbef768ff6604c9077c4c9a Author: Colin P. Mccabe <cmcc...@confluent.io> Date: 2017-01-09T20:26:23Z Some fixes to the system which handles mismatches between client versions and broker versions If a message cannot be sent to a broker, because it is too old, an exception will be thrown from AbstractRequest#Builder#build. This exception will be picked up in NetworkClient and used to create a ClientResponse. We now include the whole exception in the ClientResponse, for extra detail and clarity in case it is needed. In the Fetcher, we don't need to check for negative timestamps when requireTimestamps is set, since this will be caught by the builder's build method. This check also was not reliable since sometimes no offsets at all would be returned, and it would appear as if the broker supported timestamps, when it did not. commit 543386e38ffdbb78bde5d2b22cb361007162c8ba Author: Colin P. Mccabe <cmcc...@confluent.io> Date: 2017-01-09T20:36:56Z Fix checkstyle commit 8bd043baa9c75db274b3b1ca3ad58a8e3bd65955 Author: Colin P. Mccabe <cmcc...@confluent.io> Date: 2017-01-10T17:53:51Z OffsetAndTimestamp: improve comment commit 72dd07a98285640b564e1a1968f88f291c8292ec Author: Colin P. Mccabe <cmcc...@confluent.io> Date: 2017-01-10T17:54:33Z ClientRequest: re-order the elements printed in toString commit 10cec51e99e6ef00d20e5cdf0629345fc2eea3b0 Author: Colin P. Mccabe <cmcc...@confluent.io> Date: 2017-01-10T17:55:57Z Some whitespace cleanups commit da91cfca63c42dac3ac40eacad11764be64b9e78 Author: Colin P. Mccabe <cmcc...@confluent.io> Date: 2017-01-10T19:02:53Z change AbstractRequest#getVersion to AbstractRequest#version commit 8c16fe7b8ec5b3c08cb5bb9c8fe7881a07d5c60f Author: Colin P. Mccabe <cmcc...@confluent.io> Date: 2017-01-10T19:15:41Z NodeApiVersions: some improvements * don't require ApiKeys#ID_TO_APIKEY to be public * getUsableVersion should throw exception when there is no usable version commit 21ab8256adb23e8427d17976dfce594cbaa1f2e2 Author: Colin P. Mccabe <cmcc...@confluent.io> Date: 2017-01-10T19:16:48Z ControllerChannelManager: some style and whitespace fixes commit 3e21bc8db760e199df51869f4195964e7edd8efd Author: Colin P. Mccabe <cmcc...@confluent.io> Date: 2017-01-10T19:17:41Z NetworkClientBlockingOps: leave out unnecessary parentheses commit 692feca36daaa5fb8dbb07672417eb30f4ce7d65 Author: Colin P. Mccabe <cmcc...@confluent.io> Date: 2017-01-10T19:19:54Z NetworkClient: some fixes * Remove unnecessary parentheses * handleAbortedSends doesn't need to take a 'now' parameter * fix a place where we were removing from nodeApiVersions using the wrong type (String instead of Integer) * convert log string concatenation to using placeholders * rename 'int nodeIndex' -> 'int nodeId' commit fc4ae827c86d8985c3004a51f7dd37516bc74358 Author: Colin P. Mccabe <cmcc...@confluent.io> Date: 2017-01-10T19:23:31Z Some refactors * remove a superfluous client.send() parameter * getOffsetsByTimesImpl -> retrieveOffsetsByTimes commit d0cb3de9bffd02e2d830edae54e1e5d4d5d5eb84 Author: Colin P. Mccabe <cmcc...@confluent.io> Date: 2017-01-10T19:27:26Z NetworkClient: remove unused 'now' parameter from handleConnections commit bf5c34d34794e887584cdf5b6c57d8fd89549574 Author: Colin P. Mccabe <cmcc...@confluent.io> Date: 2017-01-10T19:52:40Z Fetcher.java: add a check for null in Fetcher#listOffset commit 80e03b00584f2269c4ba6ae3a4f4f51195eddcdc Author: Colin P. Mccabe <cmcc...@confluent.io> Date: 2017-01-10T20:42:44Z Utils.java: whitespace fix commit 0cfa3e455bbf040f96d6fda766df2f2d235b76e7 Author: Colin P. Mccabe <cmcc...@confluent.io> Date: 2017-01-10T21:08:54Z AbstractRequest#Builder: make toString methods more consistent and use parentheses not braces commit d43241a67465a4b5f2740258cb7b7b1c44cf8594 Author: Colin P. Mccabe <cmcc...@confluent.io> Date: 2017-01-10T21:45:35Z Rename Utils#join(Map...) to Utils#mkString commit 6d7ed2955ef16b7c62795a02acac5c5b3fe87451 Author: Colin P. Mccabe <cmcc...@confluent.io> Date: 2017-01-10T22:16:22Z ClientUtils, NodeApiVersions: fix checkstyle commit be6c69e817ebb3136b52d7929f1cfa4dd54cf767 Author: Colin P. Mccabe <cmcc...@confluent.io> Date: 2017-01-10T22:17:35Z NetworkClient: brokers should not send ApiVersionRequest; only clients should commit 7decd77a57241fe420670f0b7c4d57178d9bdd86 Author: Colin P. Mccabe <cmcc...@confluent.io> Date: 2017-01-10T23:08:38Z NodeApiVersions: fix getUsableVersion, refactor toString commit 3f1c189d4249333a421228c4d06babfe6cd46165 Author: Colin P. Mccabe <cmcc...@confluent.io> Date: 2017-01-10T23:17:26Z ReplicaFetcherThread: some style fixes commit 4dd366232b57609105d8f1e4a502dbc80d9cc34c Author: Colin P. Mccabe <cmcc...@confluent.io> Date: 2017-01-10T23:17:39Z JoinGroupRequest: set rebalanceTimeout to -1 if the version is too old to send ---- --- If your project is set up for it, you can reply to this email and have your reply appear on GitHub as well. If your project does not have this feature enabled and wishes so, or if the feature is enabled but not working, please contact infrastructure at infrastruct...@apache.org or file a JIRA ticket with INFRA. ---