kafka.git
9 hours agoMINOR: Fix transiently failing consumer group admin integration test (#5067) trunk
Jason Gustafson [Tue, 22 May 2018 23:24:54 +0000 (16:24 -0700)] 
MINOR: Fix transiently failing consumer group admin integration test (#5067)

Since the producer is using retries=0, we need to await topic creation before sending any records.

Reviewers: Ismael Juma <ismael@juma.me.uk>

10 hours agoKAFKA-6850: Add Record Header support to Kafka Streams Processor API (KIP-244) (...
Jorge Quilcate Otoya [Tue, 22 May 2018 22:44:37 +0000 (00:44 +0200)] 
KAFKA-6850: Add Record Header support to Kafka Streams Processor API (KIP-244) (#4955)

Reviewers: Matthias J. Sax <matthias@confluent.io>, Guozhang Wang <guozhang@confluent.io>

12 hours agoKAFKA-5807 - Check Connector.config() and Transformation.config() returns a valid...
Jeremy Custenborder [Tue, 22 May 2018 20:53:15 +0000 (13:53 -0700)] 
KAFKA-5807 - Check Connector.config() and Transformation.config() returns a valid ConfigDef

Little back story on this. Was helping a user over email. This could be much easier to debug if we assume that the connector developer might not return valid configs. For example Intellij will generate a stub that returns a null. This was the case that inspired this JIRA.

Author: Jeremy Custenborder <jcustenborder@gmail.com>

Reviewers: Jason Gustafson <jason@confluent.io>, Randall Hauch <rhauch@gmail.com>, Ewen Cheslack-Postava <ewen@confluent.io>

Closes #3762 from jcustenborder/KAFKA-5807

14 hours agoMINOR: AdminClient consumer group domain objects should have public constructors...
Jason Gustafson [Tue, 22 May 2018 18:23:47 +0000 (11:23 -0700)] 
MINOR: AdminClient consumer group domain objects should have public constructors (#5063)

These constructors should be public to allow users to write test cases using them. We follow a similar pattern for the other domain objects that we expose in `AdminClient` (e.g. `TopicDescription`).

Reviewers: Ismael Juma <ismael@juma.me.uk>

15 hours agoMINOR: AdminClient metadata manager should reset state on failure
Jason Gustafson [Tue, 22 May 2018 17:11:48 +0000 (10:11 -0700)] 
MINOR: AdminClient metadata manager should reset state on failure

If the internal metadata request fails, we must reset the state inside `AdminClientMetadataManager` or we will be stuck indefinitely in the `UPDATE_PENDING` state and have no way to fetch new metadata.

Author: Jason Gustafson <jason@confluent.io>

Reviewers: Dong Lin <lindong28@gmail.com>

Closes #5057 from hachikuji/fix-admin-client-metadata-update-failure

16 hours agoMINOR: Remove o.a.kafka.common.utils.Base64 and IS_JAVA8_COMPATIBLE
Ismael Juma [Tue, 22 May 2018 16:57:11 +0000 (09:57 -0700)] 
MINOR: Remove o.a.kafka.common.utils.Base64 and IS_JAVA8_COMPATIBLE

We no longer need them since we now require Java 8.

Author: Ismael Juma <ismael@juma.me.uk>

Reviewers: Andras Beni <andrasbeni@cloudera.com>, Manikumar Reddy O <manikumar.reddy@gmail.com>, Dong Lin <lindong28@gmail.com>

Closes #5049 from ijuma/remove-base64

17 hours agoKAFKA-6474: Rewrite tests to use new public TopologyTestDriver [part 3] (#5052)
Filipe Agapito [Tue, 22 May 2018 15:48:54 +0000 (16:48 +0100)] 
KAFKA-6474: Rewrite tests to use new public TopologyTestDriver [part 3] (#5052)

* KAFKA-6474: Rewrite tests to use new public TopologyTestDriver [part 3]

* Refactor:
  - KStreamWindowReduceTest
  - KTableMapKeysTest
  - SessionWindowedKStreamImplTest
  - TimeWindowedKStreamImplTest

* Remove unnecessary @SuppressWarnings(unchecked)

Reviewers: Bill Bejeck <bill@confluent.io>, Matthias J. Sax <matthias@confluent.io>, Guozhang Wang <wangguoz@gmail.com>

25 hours agoMINOR: Remove unnecessary conditional in KafkaAdminClient to fix checkstyle (#5058)
Ismael Juma [Tue, 22 May 2018 07:15:40 +0000 (00:15 -0700)] 
MINOR: Remove unnecessary conditional in KafkaAdminClient to fix checkstyle (#5058)

26 hours agoKAFKA-4423: Drop support for Java 7 (KIP-118) and update deps (#5046)
Ismael Juma [Tue, 22 May 2018 06:17:42 +0000 (23:17 -0700)] 
KAFKA-4423: Drop support for Java 7 (KIP-118) and update deps (#5046)

* Set --source, --target and --release to 1.8.
* Build Scala 2.12 by default.
* Remove some conditionals in the build file now that Java 8
is the minimum version.
* Bump the version of Jetty, Jersey and Checkstyle (the newer
versions require Java 8).
* Fixed issues uncovered by the new version if Checkstyle.
* A couple of minor updates to handle an incompatible source
change in the new version of Jetty.
* Add dependency to jersey-hk2 to fix failing tests caused
by Jersey upgrade.
* Update release script to use Java 8 and to take into account
that Scala 2.12 is now built by default.
* While we're at it, bump the version of Gradle, Gradle plugins,
ScalaLogging, JMH and apache directory api.
* Minor documentation updates including the readme and upgrade
notes. A number of Streams Java 7 examples can be removed
subsequently.

29 hours agoKAFKA-6685: Added Exception to distinguish message Key from Value during deserializing.
Jagadesh Adireddi [Tue, 22 May 2018 04:10:17 +0000 (21:10 -0700)] 
KAFKA-6685: Added Exception to distinguish message Key from Value during deserializing.

https://issues.apache.org/jira/browse/KAFKA-6685

Added Exception message in `WorkerSinkTask.convertMessages` to distinguish message Key from Value during deserialization to Kafka connect format.

*More detailed description of your change,
if necessary. The PR title and PR message become
the squashed commit message, so use a separate
comment to ping reviewers.*

*Summary of testing strategy (including rationale)
for the feature or bug fix. Unit and/or integration
tests are expected for any behaviour change and
system tests should be considered for larger changes.*

Author: Jagadesh Adireddi <adireddijagadesh@gmail.com>

Reviewers: Randall Hauch <rhauch@gmail.com>, Ewen Cheslack-Postava <ewen@confluent.io>

Closes #4765 from jadireddi/KAFKA-6685---log-message-should-distinguish-key-from-value

32 hours agoMINOR: Ignore test_broker_type_bounce_at_start system test (#5055)
Guozhang Wang [Tue, 22 May 2018 00:28:40 +0000 (17:28 -0700)] 
MINOR: Ignore test_broker_type_bounce_at_start system test (#5055)

test_broker_type_bounce_at_start tries to validate that when the controller is down, the streams client will always fail trying to create the topic; with the current behavior of admin client it is actually not always true: the actual behavior depends on the admin client internals as well as when the controller becomes unavailable during the leader assign partitions phase. I'd suggest at least ignore this test for now until the admin client has more stable (personally I'd even suggest removing this test as its coverage benefits is smaller than its introduced issues to me).

Also adding a few more log4j entries as a result of investigating this issue.

Reviewers: Matthias J. Sax <matthias@confluent.io>

38 hours agoMINOR: Reduce required occurrance from 100 to 10 (#5048)
Guozhang Wang [Mon, 21 May 2018 18:50:19 +0000 (11:50 -0700)] 
MINOR: Reduce required occurrance from 100 to 10 (#5048)

Due to #4644 the consumer connector logs will be much more clean with fewer "broker may not be available" entries. We need to reduce the required frequency from 100 to a smaller number.

I've thought about reducing to just 1, but it may still be transient (i.e. even if broker is starting up you may see a few entries) so I reduced it to 10.

Reviewers: Bill Bejeck <bill@confluent.io>, Matthias J. Sax <matthias@confluent.io>

41 hours agoKAFKA-6868; Fix buffer underflow and expose group state in the consumer groups API...
Colin Patrick McCabe [Mon, 21 May 2018 15:37:35 +0000 (08:37 -0700)] 
KAFKA-6868; Fix buffer underflow and expose group state in the consumer groups API (#4980)

* The consumer groups API should expose group state and coordinator information.  This information is needed by administrative tools and scripts that access consume groups.

* The partition assignment will be empty when the group is rebalancing. Fix an issue where the adminclient attempted to deserialize this empty buffer.

* Remove nulls from the API and make all collections immutable.

* DescribeConsumerGroupsResult#all should return a result as expected, rather than Void

* Fix exception text for GroupIdNotFoundException, GroupNotEmptyException. It was being filled in as "The group id The group id does not exist was not found" and similar.

Reviewers: Attila Sasvari <asasvari@apache.org>, Andras Beni <andrasbeni@cloudera.com>, Dong Lin <lindong28@gmail.com>, Jason Gustafson <jason@confluent.io>

2 days agoMINOR: Fix type inference on joins and aggregates (#5019)
Joan Goyeau [Sun, 20 May 2018 23:25:16 +0000 (00:25 +0100)] 
MINOR: Fix type inference on joins and aggregates (#5019)

The type inference doesn't currently work for the join functions in Scala as it doesn't know yet the types of the given KStream[K, V] or KTable[K, V].

The fix here is to curry the joiner function. I personally prefer this notation but this also means it differs more from the Java API.
I believe the diff with the Java API is worth in this case as it's not only solving the type inference but also fits better the Scala way of coding (ex: fold).

Moreover any Scala dev will bug and spend little time on these functions trying to understand why the type inference is not working and then get frustrated to be obliged to be explicit here where it's not harmful to be inferred.

Reviewers: Debasish Ghosh <dghosh@acm.org>, Guozhang Wang <guozhang@confluent.io>, Ismael Juma <ismael@juma.me.uk>

2 days agoKAFKA-6729: Follow up; disable logging for source KTable. (#5038)
Guozhang Wang [Sun, 20 May 2018 17:24:07 +0000 (10:24 -0700)] 
KAFKA-6729: Follow up; disable logging for source KTable. (#5038)

Reviewers: Matthias J. Sax <matthias@confluent.io>

3 days agoKAFKA-6905: Document that Transformers may be re-used by Streams (#5026)
David Glasser [Sun, 20 May 2018 01:44:20 +0000 (18:44 -0700)] 
KAFKA-6905: Document that Transformers may be re-used by Streams (#5026)

This is a follow-up to #5022 which added documentation to the Processor
interface. This commit adds similar documentation to Transformer and
ValueTransformer.

Also, s/processor/transformer/ in the close() docs.

Reviewers: Matthias J. Sax <matthias@confluent.io>, Guozhang Wang <wangguoz@gmail.com>

4 days agoKAFKA-6849: add transformValues methods to KTable. (#4959)
Andy Coates [Fri, 18 May 2018 23:06:50 +0000 (16:06 -0700)] 
KAFKA-6849: add transformValues methods to KTable. (#4959)

See the KIP: https://cwiki.apache.org/confluence/display/KAFKA/KIP-292%3A+Add+transformValues%28%29+method+to+KTable

This PR adds the transformValues method to the KTable interface. The semantics of the call are the same as the methods of the same name on the KStream interface.

Fixes KAFKA-6849

Reviewers: Matthias J. Sax <matthias@confluent.io>, Guozhang Wang <wangguoz@gmail.com>

4 days agoKAFKA-6917; Process txn completion asynchronously to avoid deadlock (#5036)
Rajini Sivaram [Fri, 18 May 2018 20:30:12 +0000 (21:30 +0100)] 
KAFKA-6917; Process txn completion asynchronously to avoid deadlock (#5036)

Reviewers: Guozhang Wang <wangguoz@gmail.com>, Jason Gustafson <jason@confluent.io>

4 days agoMINOR: Remove unused class (#5037)
Guozhang Wang [Fri, 18 May 2018 17:58:10 +0000 (10:58 -0700)] 
MINOR: Remove unused class (#5037)

Reviewers: Bill Bejeck <bill@confluent.io>, Matthias J. Sax <matthias@confluent.io>

4 days agoKAFKA-6566: Improve Connect Resource Cleanup
Robert Yokota [Fri, 18 May 2018 17:39:34 +0000 (10:39 -0700)] 
KAFKA-6566: Improve Connect Resource Cleanup

This is a change to improve resource cleanup for sink tasks and source tasks.  Now `Task.stop()` is called from both `WorkerSinkTask.close()` and `WorkerSourceTask.close()`.

It is called from `WorkerXXXTask.close()` since this method is called in the `finally` block of `WorkerTask.run()`, and Connect developers use `stop()` to clean up resources.

Author: Robert Yokota <rayokota@gmail.com>

Reviewers: Randall Hauch <rhauch@gmail.com>, Ewen Cheslack-Postava <ewen@confluent.io>

Closes #5020 from rayokota/K6566-improve-connect-resource-cleanup

4 days agoKAFKA-5697: revert wakeup-based impl (#5035)
John Roesler [Fri, 18 May 2018 15:05:09 +0000 (10:05 -0500)] 
KAFKA-5697: revert wakeup-based impl (#5035)

The wakeup-based strategy caused more problems than it
solved, so we'll instead focus on KIP-266.

Revert commit 2d8049b.

Keep the metrics addition and the new test util.

Also keep the tests for shutdown, although they must be ignored until
poll(Duration) is done in the scope of KIP-266.

Reviewers: Guozhang Wang <wangguoz@gmail.com>

5 days agoHOTFIX: use ConsumedInternal in StreamsBuilder
Guozhang Wang [Fri, 18 May 2018 00:20:12 +0000 (17:20 -0700)] 
HOTFIX: use ConsumedInternal in StreamsBuilder

5 days agoHOTFIX: move Conusmed to o.a.k.streams.kstream (#5033)
Guozhang Wang [Thu, 17 May 2018 18:56:07 +0000 (11:56 -0700)] 
HOTFIX: move Conusmed to o.a.k.streams.kstream (#5033)

Reviewers: Bill Bejeck <bill@confluent.io>, Matthias J. Sax <matthias@confluent.io>

5 days agoKAFKA-6729: Reuse source topics for source KTable's materialized store's changelog...
Guozhang Wang [Thu, 17 May 2018 18:28:45 +0000 (11:28 -0700)] 
KAFKA-6729: Reuse source topics for source KTable's materialized store's changelog (#5017)

1. In InternalTopologyBuilder#topicGroups, which is used in StreamsPartitionAssignor, look for book-kept storeToChangelogTopic map before creating a new internal changelog topics. In this way if the source KTable is created, its source topic stored in storeToChangelogTopic will be used.

2. Added unit test (confirmed that without 1) it will fail).

3. MINOR: removed TODOs that are related to removed KStreamBuilder.

4. MINOR: removed TODOs in StreamsBuilderTest util functions and replaced with TopologyWrapper.

5. MINOR: removed StreamsBuilderTest#testFrom as it is already covered by TopologyTest#shouldNotAllowToAddSourcesWithSameName, plus it requires KStreamImpl.SOURCE_NAME which should be a package private field of the KStreamImpl.

Reviewers: John Roesler <john@confluent.io>, Bill Bejeck <bill@confluent.io>, Matthias
 J. Sax <matthias@confluent.io>

5 days agoMINOR: Use Set instead of List for multiple topics (#5024)
Joan Goyeau [Thu, 17 May 2018 15:44:50 +0000 (16:44 +0100)] 
MINOR: Use Set instead of List for multiple topics (#5024)

Debasish Ghosh <dghosh@acm.org>, Guozhang Wang <guozhang@confluent.io>

6 days agoMINOR: add missing parameter `processing.guaratees` to Streams docs (#5023)
Matthias J. Sax [Wed, 16 May 2018 20:58:25 +0000 (13:58 -0700)] 
MINOR: add missing parameter `processing.guaratees` to Streams docs (#5023)

Reviewers: Guozhang Wang <guozhang@confluent.io>, Bill Bejeck <bill@confluent.io>

6 days agoMINOR: fix broken links in streams doc (#5025)
Guozhang Wang [Wed, 16 May 2018 20:23:20 +0000 (13:23 -0700)] 
MINOR: fix broken links in streams doc (#5025)

Reviewers: Guozhang Wang <wangguoz@gmail.com>

6 days agoKAFKA-6905: Document that Processors may be re-used by Streams (#5022)
David Glasser [Wed, 16 May 2018 20:10:21 +0000 (13:10 -0700)] 
KAFKA-6905: Document that Processors may be re-used by Streams (#5022)

Reviewers: Guozhang Wang <wangguoz@gmail.com>

7 days agoMINOR: doc change for deprecate removal (#5006)
Guozhang Wang [Wed, 16 May 2018 03:26:19 +0000 (20:26 -0700)] 
MINOR: doc change for deprecate removal (#5006)

Reviewers: John Roesler <john@confluent.io>, Bill Bejeck <bill@confluent.io>, Matthias J. Sax <matthias@confluent.io>

7 days agoKAFKA-6896: Add producer metrics exporting in KafkaStreams (#4998)
Boyang Chen [Tue, 15 May 2018 21:29:07 +0000 (14:29 -0700)] 
KAFKA-6896: Add producer metrics exporting in KafkaStreams (#4998)

We would like to also export the producer metrics from StreamThread just like consumer metrics, so that we could gain more visibility of stream application. The approach is to pass in the threadProducer into the StreamThread so that we could export its metrics in dynamic.

Note that this is a pure internal change that doesn't require a KIP, and in the future we also want to export admin client metrics. A followup KIP for admin client will be created once this is merged.

Reviewers: Guozhang Wang <wangguoz@gmail.com>

8 days agoKAFKA-3473; More Controller Health Metrics (KIP-237)
Dong Lin [Tue, 15 May 2018 06:04:56 +0000 (23:04 -0700)] 
KAFKA-3473; More Controller Health Metrics (KIP-237)

This patch adds a few metrics that are useful for monitoring controller health. See KIP-237 for more detail.

Author: Dong Lin <lindong28@gmail.com>

Reviewers: Jun Rao <junrao@gmail.com>

Closes #4392 from lindong28/KAFKA-3473

11 days agoMINOR: Ensure sensor names are unique in Kafka Streams (#5009)
Matthias J. Sax [Sat, 12 May 2018 00:19:11 +0000 (17:19 -0700)] 
MINOR: Ensure sensor names are unique in Kafka Streams (#5009)

Reviewer: Guozhang Wang <guozhang@confluent.io>

11 days agoHOTFIX: RegexSourceIntegrationTest needs to cleanup shared output topic (#5008)
Matthias J. Sax [Fri, 11 May 2018 20:53:27 +0000 (13:53 -0700)] 
HOTFIX: RegexSourceIntegrationTest needs to cleanup shared output topic (#5008)

Reviewers: Guozhang Wang <wangguoz@gmail.com>

11 days agoKAFKA-6813: Remove deprecated APIs in KIP-182, Part III (#4991)
Guozhang Wang [Fri, 11 May 2018 18:38:02 +0000 (11:38 -0700)] 
KAFKA-6813: Remove deprecated APIs in KIP-182, Part III (#4991)

1. Remove TopologyBuilder, TopologyBuilderException, KStreamBuilder,

2. Completed the leftover work of https://issues.apache.org/jira/browse/KAFKA-5660, when we remove TopologyBuilderException.

3. Added MockStoreBuilder to replace MockStateStoreSupplier, remove all XXStoreSupplier except StateStoreSupplier as it is still referenced in the logical streams graph.

4. Minor: rename KStreamsFineGrainedAutoResetIntegrationTest.java to FineGrainedAutoResetIntegrationTest.java.

Reviewers: Matthias J. Sax <matthias@confluent.io>

11 days agoMINOR - Fix typo in Streams Dev Guide (#4972)
Joel Hamill [Fri, 11 May 2018 17:27:07 +0000 (10:27 -0700)] 
MINOR - Fix typo in Streams Dev Guide (#4972)

Reviewers: Matthias J. Sax <matthias@confluent.io>, Guozhang Wang <guozhang@confluent.io>

11 days agoMINOR: Count fix and Type alias refactor in Streams Scala API (#4966)
Joan Goyeau [Fri, 11 May 2018 17:15:48 +0000 (18:15 +0100)] 
MINOR: Count fix and Type alias refactor in Streams Scala API (#4966)

Reviewers: Debasish Ghosh <dghosh@acm.org>, Guozhang Wang <guozhang@confluent.io>

11 days agoKAFKA-6394; Add a check to prevent misconfiguration of advertised listeners (#4897)
Manikumar Reddy O [Fri, 11 May 2018 15:49:49 +0000 (21:19 +0530)] 
KAFKA-6394; Add a check to prevent misconfiguration of advertised listeners (#4897)

Do not allow server startup if one of its configured advertised listeners has already been registered by another broker.

11 days agoKAFKA-5965: Remove Deprecated AdminClient from Streams Resetter Tool (#4968)
fedosov-alexander [Fri, 11 May 2018 15:44:27 +0000 (18:44 +0300)] 
KAFKA-5965: Remove Deprecated AdminClient from Streams Resetter Tool (#4968)

Removed usage of deprecated AdminClient from StreamsResetter
No additional tests are required.

Matthias J. Sax <matthias@confluent.io>, Guozhang Wang <wangguoz@gmail.com>

12 days agoMINOR: Rename RecordFormat to RecordVersion (#4809)
Ismael Juma [Fri, 11 May 2018 05:06:18 +0000 (22:06 -0700)] 
MINOR: Rename RecordFormat to RecordVersion (#4809)

Also include a few clean-ups:

* Method/variable/parameter renames to make them consistent with
the class name
* Return `ApiVersion` from `minSupportedFor`
* Use `values` to remove some code duplication
* Reduce duplication in `ApiVersion` by introducing the `shortVersion`
method and building the versions map programatically
* Avoid unnecessary `regex` in `ApiVersion.apply`
* Added scaladoc to a few methods

Some of these were originally discussed in:

https://github.com/apache/kafka/pull/4583#pullrequestreview-98089400

Added a test for `ApiVersion.shortVersion`. Relying on existing tests
for the rest since there is no change in behaviour.

Reviewers: Jason Gustafson <jason@confluent.io>

12 days agoMINOR: A few small cleanups in AdminClient from KAFKA-6299 (#4989)
Jason Gustafson [Fri, 11 May 2018 00:31:12 +0000 (17:31 -0700)] 
MINOR: A few small cleanups in AdminClient from KAFKA-6299 (#4989)

Reviewers: Ismael Juma <ismael@juma.me.uk>

12 days agoKAFKA-6894: Improve err msg when connecting processor with global store (#5000)
Robert Yokota [Thu, 10 May 2018 22:49:39 +0000 (15:49 -0700)] 
KAFKA-6894: Improve err msg when connecting processor with global store (#5000)

Reviewers: Matthias J. Sax <matthias@confluent.io>, Guozhang Wang <wangguoz@gmail.com>

12 days agoKAFKA-6893; Create processors before starting acceptor in SocketServer (#4999)
Rajini Sivaram [Thu, 10 May 2018 21:17:59 +0000 (22:17 +0100)] 
KAFKA-6893; Create processors before starting acceptor in SocketServer (#4999)

12 days agoMINOR: Fix typo in ConsumerRebalanceListener JavaDoc (#4996)
Gunju Ko [Thu, 10 May 2018 16:53:49 +0000 (01:53 +0900)] 
MINOR: Fix typo in ConsumerRebalanceListener JavaDoc (#4996)

12 days agoMINOR: Remove deprecated valueTransformer.punctuate (#4993)
Guozhang Wang [Thu, 10 May 2018 16:50:59 +0000 (09:50 -0700)] 
MINOR: Remove deprecated valueTransformer.punctuate (#4993)

Also removed the InternalValueTransformerWithKey / Supplier which is used to mock away the deprecated punctuate function.

Reviewers: Matthias J. Sax <matthias@confluent.io>

12 days agoMINOR: Update dynamic broker configuration doc for truststore update (#4954)
Rajini Sivaram [Thu, 10 May 2018 15:55:15 +0000 (16:55 +0100)] 
MINOR: Update dynamic broker configuration doc for truststore update (#4954)

Reviewers: Manikumar Reddy O <manikumar.reddy@gmail.com>, Jason Gustafson <jason@confluent.io>

12 days agoKAFKA-6870 Concurrency conflicts in SampledStat (#4985)
Chia-Ping Tsai [Thu, 10 May 2018 11:27:45 +0000 (19:27 +0800)] 
KAFKA-6870 Concurrency conflicts in SampledStat (#4985)

Make `KafkaMetric.measurableValue` thread-safe

Reviewers: Rajini Sivaram <rajinisivaram@googlemail.com>

13 days ago KAFKA-6361: Fix log divergence between leader and follower after fast leader fail...
Anna Povzner [Thu, 10 May 2018 01:49:51 +0000 (18:49 -0700)] 
 KAFKA-6361: Fix log divergence between leader and follower after fast leader fail over (#4882)

Implementation of KIP-279 as described here: https://cwiki.apache.org/confluence/display/KAFKA/KIP-279%3A+Fix+log+divergence+between+leader+and+follower+after+fast+leader+fail+over

In summary:
- Added leader_epoch to OFFSET_FOR_LEADER_EPOCH_RESPONSE
- Leader replies with the pair( largest epoch less than or equal to the requested epoch, the end offset of this epoch)
- If Follower does not know about the leader epoch that leader replies with, it truncates to the end offset of largest leader epoch less than leader epoch that leader replied with, and sends another OffsetForLeaderEpoch request. That request contains the largest leader epoch less than leader epoch that leader replied with.

Reviewers: Dong Lin <lindong28@gmail.com>, Jun Rao <junrao@gmail.com>

13 days agoKAFKA-6813: Remove deprecated APIs in KIP-182, Part II (#4976)
Guozhang Wang [Thu, 10 May 2018 00:13:05 +0000 (17:13 -0700)] 
KAFKA-6813: Remove deprecated APIs in KIP-182, Part II (#4976)

1. Remove the deprecated StateStoreSuppliers, and the corresponding Stores.create() functions and factories: only the base StateStoreSupplier and MockStoreSupplier were still preserved as they are needed by the deprecated TopologyBuilder and KStreamBuilder. Will remove them in a follow-up PR.

2. Add TopologyWrapper.java as the original InternalTopologyBuilderAccessor was removed, but I realized it is still needed as of now.

3. Minor: removed StateStoreTestUtils.java and inline its logic in its callers since now with StoreBuilder it is just a one-liner.

Reviewers: Bill Bejeck <bill@confluent.io>, Matthias J. Sax <matthias@confluent.io>

13 days agoKAFKA-6878 Switch the order of underlying.init and initInternal (#4988)
tedyu [Thu, 10 May 2018 00:06:47 +0000 (17:06 -0700)] 
KAFKA-6878 Switch the order of underlying.init and initInternal (#4988)

This is continuation of #4978.
From Guozhang:

I think to fix this issue, in init we could consider switching the steps of 1 and 2:

initInternal(context);
underlying.init(context, root);

since

volatile boolean open = false;

it should be sufficient. In this case the check on step 3) will fail if underlying.init is not completed and we will throw InvalidStateStoreException.

Reviewers: Guozhang Wang <wangguoz@gmail.com>

13 days agoKAFKA-6299; Fix AdminClient error handling when metadata changes (#4295)
Colin Patrick McCabe [Wed, 9 May 2018 21:27:28 +0000 (14:27 -0700)] 
KAFKA-6299; Fix AdminClient error handling when metadata changes (#4295)

When AdminClient gets a NOT_CONTROLLER error, it should refresh its metadata and retry the request, rather than making the end-user deal with NotControllerException.

Move AdminClient's metadata management outside of NetworkClient and into AdminMetadataManager. This will make it easier to do more sophisticated metadata management in the future, such as implementing a NodeProvider which fetches the leaders for topics.

Rather than manipulating newCalls directly, the AdminClient service thread now drains it directly into pendingCalls. This minimizes the amount of locking we have to do, since pendingCalls is only accessed from the service thread.

13 days agoKAFKA-6878: NPE when querying global state store not in READY state (#4978)
tedyu [Wed, 9 May 2018 17:42:10 +0000 (10:42 -0700)] 
KAFKA-6878: NPE when querying global state store not in READY state (#4978)

Check whether cache is null before retrieving from cache.

Reviewers: Guozhang Wang <guozhang@confluent.io>, Bill Bejeck <bill@confluent.io>

13 days agoKAFKA 6673: Implemented missing override equals method (#4745)
asutosh936 [Wed, 9 May 2018 17:34:44 +0000 (12:34 -0500)] 
KAFKA 6673: Implemented missing override equals method (#4745)

Reviewers: Guozhang Wang <guozhang@confluent.io>, Bill Bejeck <bill@confluent.io>

13 days agoKAFKA-6834: Handle compaction with batches bigger than max.message.bytes (#4953)
Rajini Sivaram [Wed, 9 May 2018 10:46:36 +0000 (11:46 +0100)] 
KAFKA-6834: Handle compaction with batches bigger than max.message.bytes (#4953)

Grow buffers in log cleaner to hold one message set after sanity check even if message set is bigger than max.message.bytes.

Reviewers: Jason Gustafson <jason@confluent.io>, Ismael Juma <ismael@juma.me.uk>, Jun Rao <junrao@gmail.com>

2 weeks agoMINOR: Fix trace logging in ReplicaManager (#4916)
Colin Patrick McCabe [Wed, 9 May 2018 06:02:33 +0000 (23:02 -0700)] 
MINOR: Fix trace logging in ReplicaManager (#4916)

Reviewers: Ismael Juma <ismael@juma.me.uk>

2 weeks agoKAFKA-6877; Remove completedFetch upon a failed parse if it contains no records.
Adem Efe Gencer [Wed, 9 May 2018 01:57:34 +0000 (18:57 -0700)] 
KAFKA-6877; Remove completedFetch upon a failed parse if it contains no records.

This patch removed a completedFetch from the completedFetches queue upon a failed parse if it contains no records. The following scenario explains why this is needed for an instance of this case – i.e. in TopicAuthorizationException.

0. Let's assume a scenario, in which the consumer is attempting to read from a topic without the necessary read permission.
1. In Fetcher#fetchedRecords(), after peeking the completedFetches, the Fetcher#parseCompletedFetch(CompletedFetch) throws a TopicAuthorizationException (as expected).
2. Fetcher#fetchedRecords() passes the TopicAuthorizationException up without having a chance to poll completedFetches. So, the same completedFetch remains at the completedFetches queue.
3. Upon following calls to Fetcher#fetchedRecords(), peeking the completedFetches will always return the same completedFetch independent of any updates to the ACL that the topic is trying to read from.
4. Hence, despite the creation of an ACL with correct permissions, once the consumer sees the TopicAuthorizationException, it will be unable to recover without a bounce.

Author: Adem Efe Gencer <agencer@linkedin.com>

Reviewers: Jiangjie (Becket) Qin <becket.qin@gmail.com>

Closes #4974 from efeg/fix/parseCompletedFetchRemainsInQueue

2 weeks agoKAFKA-6292; Improve FileLogInputStream batch position checks to avoid type overflow...
Roman Khlebnov [Wed, 9 May 2018 00:07:50 +0000 (03:07 +0300)] 
KAFKA-6292; Improve FileLogInputStream batch position checks to avoid type overflow (#4928)

Switch from sum operations to subtraction to avoid type casting in checks and type overflow during `FlieLogInputStream` work, especially in cases where property `log.segment.bytes` was set close to the `Integer.MAX_VALUE` and used as a `position` inside `nextBatch()` function.

Reviewers: Ismael Juma <ismael@juma.me.uk>, Jason Gustafson <jason@confluent.io>

2 weeks agoMINOR: add equals()/hashCode() for Produced/Consumed (#4979)
dan norwood [Tue, 8 May 2018 23:07:33 +0000 (16:07 -0700)] 
MINOR: add equals()/hashCode() for Produced/Consumed (#4979)

Reviewer: Matthias J. Sax <matthias@confluent.io>

2 weeks agoKAFKA-6879; Invoke session init callbacks outside lock to avoid Controller deadlock...
Jason Gustafson [Tue, 8 May 2018 22:52:43 +0000 (15:52 -0700)] 
KAFKA-6879; Invoke session init callbacks outside lock to avoid Controller deadlock (#4977)

Fixes a deadlock between the controller's beforeInitializingSession callback which holds the zookeeper client initialization lock while awaiting completion of an asynchronous event which itself depends on the same lock.

Also catch and log callback exceptions to ensure the ZooKeeper reconnection takes place.
Finally, configure KafkaScheduler in ZooKeeperClient to have at least 1 thread.

Added tests that fail or hang without the changes in this PR.

Reviewers: Jun Rao <junrao@gmail.com>, Ismael Juma <ismael@juma.me.uk>

2 weeks agoMINOR: Make Serdes less confusing in Scala (#4963)
Joan Goyeau [Tue, 8 May 2018 16:15:31 +0000 (17:15 +0100)] 
MINOR: Make Serdes less confusing in Scala (#4963)

Serdes are confusing in the Scala wrapper:

* We have wrappers around Serializer, Deserializer and Serde which are not very useful.
* We have Serdes in 2 places org.apache.kafka.common.serialization.Serde and in DefaultSerdes, instead we should be having only one place where to find all the Serdes.

I wanted to do this PR before the release as this is a breaking change.
This shouldn't add more so the current tests should be enough.

Reviewers: Debasish Ghosh <dghosh@acm.org>, Guozhang Wang <guozhang@confluent.io>

2 weeks agoKAFKA-6813: Remove deprecated APIs in KIP-182, Part I (#4919)
Guozhang Wang [Tue, 8 May 2018 00:34:34 +0000 (17:34 -0700)] 
KAFKA-6813: Remove deprecated APIs in KIP-182, Part I (#4919)

I'm breaking KAFKA-6813 into a couple of "smaller" PRs and this is the first one. It focused on:

Remove deprecated APIs in KStream, KTable, KGroupedStream, KGroupedTable, SessionWindowedKStream, TimeWindowedKStream.

Also found a couple of overlooked bugs while working on them:

2.a) In KTable.filter / mapValues without the additional parameter indicating the materialized stores, originally we will not materialize the store. After KIP-182 we mistakenly diverge the semantics: for KTable.mapValues it is still the case, for KTable.filter we will always materialize.

2.b) In XXStream/Table.reduce/count, we used to try to reuse the serdes since their types are pre-known (for reduce it is the same types for both key / value, for count it is the same types for key, and Long for value). This was somehow lost in the past refactoring.

2.c) We are enforcing to cast a Serde<V> to Serde<VR> for XXStream / Table.aggregate, for which the returned value type is NOT known, such the enforced casting should not be applied and we should require users to provide us the value serde if they believe the default ones are not applicable.

2.d) Whenever we are creating a new MaterializedInternal we are effectively incrementing the suffix index for the store / processor-node names. However in some places this MaterializedInternal is only used for validation, so the resulted processor-node / store suffix is not monotonic.

Reviewers: Matthias J. Sax <matthias@confluent.io>, Bill Bejeck <bill@confluent.io>

2 weeks agoKAFKA-6628: RocksDBSegmentedBytesStoreTest does not cover time window serdes (#4836)
Liju John [Mon, 7 May 2018 17:57:35 +0000 (23:27 +0530)] 
KAFKA-6628: RocksDBSegmentedBytesStoreTest does not cover time window serdes (#4836)

Updated RocksDBSegmentedBytesStoreTest class to include time window serdes.

Reviewers: Guozhang Wang <guozhang@confluent.io>, Bill Bejeck <bill@confluent.io>

2 weeks agoMINOR: Remove deprecated KTable#writeAs, print, foreach, to, through (#4910)
Guozhang Wang [Mon, 7 May 2018 16:44:45 +0000 (09:44 -0700)] 
MINOR: Remove deprecated KTable#writeAs, print, foreach, to, through (#4910)

Reviewers: Bill Bejeck <bill@confluent.io>, Matthias J. Sax <matthias@confluent.io>

2 weeks agoKAFKA-6871: KStreams Scala API: incorrect Javadocs and misleading parameter name...
Michael G. Noll [Mon, 7 May 2018 16:27:45 +0000 (18:27 +0200)] 
KAFKA-6871: KStreams Scala API: incorrect Javadocs and misleading parameter name (#4971)

Reviewer: Matthias J. Sax <matthias@confluent.io>, Debasish Ghosh <dghosh@acm.org>, Guozhang Wang <guozhang@confluent.io>, Bill Bejeck <bill@confluent.io>

2 weeks agoMINOR: Remove deprecated parameter in ProcessorContext#register (#4911)
Guozhang Wang [Mon, 7 May 2018 16:22:26 +0000 (09:22 -0700)] 
MINOR: Remove deprecated parameter in ProcessorContext#register (#4911)

Updated the upgrade doc as well since we do not have an overloaded function without the deprecated parameter before. Also renamed the 1.2 release version to 2.0.

Reviewers: Bill Bejeck <bill@confluent.io>, Matthias J. Sax <matthias@confluent.io>

2 weeks agoKAFKA-6474: Rewrite tests to use new public TopologyTestDriver [cleanup] (#4939)
Filipe Agapito [Mon, 7 May 2018 16:21:20 +0000 (17:21 +0100)] 
KAFKA-6474: Rewrite tests to use new public TopologyTestDriver [cleanup] (#4939)

* Add method to create test properties to StreamsTestUtils
* Make TopologyTestDriver protected constructor package-private
* Add comment suggesting the use of TopologyTestDriver to KStreamTestDriver
* Cleanup:
    - GlobalKTableJoinsTest
    - KGroupedStreamImplTest
    - KGroupedTableImplTest
    - KStreamBranchTest
    - KStreamFilterTest
    - KStreamFlatMapTest
    - KStreamFlatMapValuesTest
    - KStreamForeachTest
    - KStreamGlobalKTableJoinTest
    - KStreamGlobalKTableLeftJoinTest
    - KStreamImplTest
    - KStreamKStreamJoinTest
    - KStreamKStreamLeftJoinTest
    - KStreamGlobalKTableLeftJoinTest
    - KStreamKTableJoinTest
    - KStreamKTableLeftJoinTest
    - KStreamMapTest
    - KStreamMapValuesTest
    - KStreamPeekTest
    - StreamsBuilderTest
    - KStreamSelectKeyTest
    - KStreamTransformTest
    - KStreamTransformValuesTest
    - KStreamWindowAggregateTest
    - KTableForeachTest

Reviewers: John Roesler <john@confluent.io>, Bill Bejeck <bill@confluent.io>, Guozhang Wang <wangguoz@gmail.com>

2 weeks agoMINOR: Build and code sample updates for Kafka Streams DSL for Scala (#4949)
Sean Glover [Mon, 7 May 2018 03:55:12 +0000 (23:55 -0400)] 
MINOR: Build and code sample updates for Kafka Streams DSL for Scala (#4949)

Several build and documentation updates were required after the merge of KAFKA-6670: Implement a Scala wrapper library for Kafka Streams.

Encode Scala major version into streams-scala artifacts.
To differentiate versions of the kafka-streams-scala artifact across Scala major versions it's required to encode the version into the artifact name before its published to a maven repository. This is accomplished by following a similar release process as kafka core, which encodes the Scala major version and then runs the build for each major version of Scala supported. This is considered standard practice when releasing Scala libraries, but is not handled for us automatically with the basic Scala for Gradle support.

After this change you can generate and install the kafka-streams-scala artifact into the local maven repository:

$ ./gradlew -PscalaVersion=2.11 install
$ ./gradlew -PscalaVersion=2.12 install

Reviewers: Ismael Juma <ismael@juma.me.uk>, Guozhang Wang <wangguoz@gmail.com>

2 weeks agoMINOR: Remove KafkaStreams#toString (#4909)
Guozhang Wang [Fri, 4 May 2018 23:35:17 +0000 (16:35 -0700)] 
MINOR: Remove KafkaStreams#toString (#4909)

Remove the deprecated KafkaStreams#toString function. Also override toString() for internal classes for debugging purposes.

Reviewers: Bill Bejeck <bill@confluent.io>, Damian Guy <damian@confluent.io>, Matthias J. Sax <matthias@confluent.io>

2 weeks agoKAFKA-6867; Corrected the typos in upgrade.html (#4970)
Surabhi Dixit [Fri, 4 May 2018 22:42:44 +0000 (15:42 -0700)] 
KAFKA-6867; Corrected the typos in upgrade.html (#4970)

Reviewers: Jakob Homan <jghoman@gmail.com>, Jason Gustafson <jason@confluent.io>

2 weeks agoKAFKA-6844: Call shutdown on GlobalStreamThread after all StreamThreads have stopped...
Bill Bejeck [Fri, 4 May 2018 22:18:44 +0000 (18:18 -0400)] 
KAFKA-6844: Call shutdown on GlobalStreamThread after all StreamThreads have stopped (#4950)

Moved the shutdown of GlobalStreamThread to after all StreamThread instances have stopped.

There can be a race condition where shut down is called on a StreamThread then shut down is called on a GlobalStreamThread, but if StreamThread is delayed in shutting down, the GlobalStreamThread can shutdown first.
If the StreamThread tries to access a GlobalStateStore before closing the user can get an exception stating "..Store xxx is currently closed "

Tested by running all current streams tests.

Reviewers: Ted Yu <yuzhihong@gmail.com>, John Roesler <john@confluent.io>, Matthias J. Sax <matthias@confluent.io>, Guozhang Wang <wangguoz@gmail.com>

2 weeks agoHOTFIX: fix streams tutorial code example
Guozhang Wang [Fri, 4 May 2018 16:59:36 +0000 (09:59 -0700)] 
HOTFIX: fix streams tutorial code example

2 weeks agoKAFKA-5697: issue Consumer#wakeup during Streams shutdown
John Roesler [Fri, 4 May 2018 16:02:50 +0000 (09:02 -0700)] 
KAFKA-5697: issue Consumer#wakeup during Streams shutdown

Wakeup consumers during shutdown to break them out of any internally blocking calls.

Semantically, it should be fine to treat a WakeupException as "no work to do", which will then continue the threads' polling loops, leading them to discover that they are supposed to shut down, which they will do gracefully.

The existing tests should be sufficient to verify no regressions.

Author: John Roesler <john@confluent.io>

Reviewers: Bill Bejeck <bbejeck@gmail.com>, Guozhang Wang <wangguoz@gmail.com>

Closes #4930 from vvcephei/streams-client-wakeup-on-shutdown

minor javadoc updates

2 weeks agoMINOR: Removed deprecated schedule function (#4908)
Guozhang Wang [Fri, 4 May 2018 15:42:01 +0000 (08:42 -0700)] 
MINOR: Removed deprecated schedule function (#4908)

While working on this, I also refactored the MockProcessor out of the MockProcessorSupplier to cleanup the unit test paths.

Reviewers: John Roesler <john@confluent.io>, Bill Bejeck <bill@confluent.io>, Matthias J. Sax <matthias@confluent.io>

2 weeks agoKAFKA-6761: Part 1 of 3; Graph nodes (#4923)
Bill Bejeck [Fri, 4 May 2018 15:39:56 +0000 (11:39 -0400)] 
KAFKA-6761: Part 1 of 3; Graph nodes (#4923)

This PR supersedes PR #4654 as it was growing too large. All comments in that PR should be addressed here.
I will attempt to break the PRs for the topology optimization effort into 3 PRs total and will follow this general plan:

1. This PR only adds the graph nodes and graph. The graph nodes will hold the information used to make calls to the InternalTopologyBuilder when using the DSL. Graph nodes are stored in the StreamsTopologyGraph until the final topology needs building then the graph is traversed and optimizations are made at that point. There are no tests in this PR relying on the follow-up PR to use all current streams tests, which should suffice.

2. PR 2 will intercept all DSL calls and build the graph. The InternalStreamsBuilder uses the graph to provide the required info to the InternalTopologyBuilder and build a topology. The condition of satisfaction for this PR is that all current unit, integration and system tests pass using the graph.

3. PR 3 adds some optimizations mainly automatically repartitioning for operations that may modify a key and have child operations that would normally create a separate repartition topic, saving possible unnecessary repartition topics. For example the following topology:

```
KStream<String, String> mappedStreamOther = inputStream.map(new KeyValueMapper<String, String, KeyValue<? extends String, ? extends String>>() {
            @Override
            public KeyValue<? extends String, ? extends String> apply(String key, String value) {

                return KeyValue.pair(key.substring(0, 3), value);
            }
        });

        mappedStreamOther.groupByKey().windowedBy(TimeWindows.of(5000)).count().toStream().to("count-one-out");
        mappedStreamOther.groupByKey().windowedBy(TimeWindows.of(10000)).count().toStream().to("count-two-out");
        mappedStreamOther.groupByKey().windowedBy(TimeWindows.of(15000)).count().toStream().to("count-three-out");
```

would create 3 repartion topics, but after applying an optimization strategy, only one is created.

Reviewers: John Roesler <john@confluent.io>, Guozhang Wang <wangguoz@gmail.com>

2 weeks agoKAFKA-6857; Leader should reply with undefined offset if undefined leader epoch reque...
Anna Povzner [Fri, 4 May 2018 06:06:34 +0000 (23:06 -0700)] 
KAFKA-6857; Leader should reply with undefined offset if undefined leader epoch requested (#4967)

The leader must explicitly check if requested leader epoch is undefined, and return undefined offset so that the follower can fall back to truncating to high watermark. Otherwise, if the leader also is not tracking leader epochs, it may return its LEO, which will the follower to truncate to the incorrect offset.

2 weeks agoKAFKA-6854; Handle batches deleted during log cleaning of logs with txns (#4962)
Rajini Sivaram [Thu, 3 May 2018 20:05:36 +0000 (21:05 +0100)] 
KAFKA-6854; Handle batches deleted during log cleaning of logs with txns (#4962)

Log cleaner grows buffers when result.messagesRead is zero. This contains the number of filtered messages read from source which can be zero when transactions are used because batches may be discarded. Log cleaner incorrectly assumes that messages were not read because the buffer was too small and attempts to double the buffer size unnecessarily, failing with an exception if the buffer is already max.message.bytes. Additional check for discarded batches has been added to avoid growing buffers when batches are discarded.

Reviewers: Ismael Juma <ismael@juma.me.uk>, Jason Gustafson <jason@confluent.io>

2 weeks agoKAFKA-6853: ZooKeeperRequestLatencyMs is incorrect (#4961)
Fedor Bobin [Thu, 3 May 2018 16:46:30 +0000 (19:46 +0300)] 
KAFKA-6853: ZooKeeperRequestLatencyMs is incorrect (#4961)

ResponseMetadata.responseTimeMs is always 0 or negative.

Reviewers: Rajini Sivaram <rajinisivaram@gmail.com>, Ismael Juma <ismael@juma.me.uk>

2 weeks agoUpgrade ZooKeeper to 3.4.12 and Scala to 2.12.6 (#4940)
Ismael Juma [Thu, 3 May 2018 16:25:33 +0000 (09:25 -0700)] 
Upgrade ZooKeeper to 3.4.12 and Scala to 2.12.6 (#4940)

Reviewers: Jun Rao <junrao@gmail.com>

2 weeks agoKAFKA-6829: retry commits on unknown topic or partition (#4948)
Bill Bejeck [Thu, 3 May 2018 00:01:28 +0000 (20:01 -0400)] 
KAFKA-6829: retry commits on unknown topic or partition (#4948)

For the UNKNOWN_TOPIC_OR_PARTITION error, we could change the consumer's behavior to retry after this error. While this is a rare case since the user would not commit offsets for topics unless they had been able to fetch from them, but this doesn't really handle the situation where the broker hasn't received any metadata updates.

Reviewers: Jason Gustafson <jason@confluent.io>, John Roesler <john@confluent.io>, Guozhang Wang <wangguoz@gmail.com>

2 weeks agoHOTFIX: Simplify ConsoleConsumer stripWithPrefix function
Guozhang Wang [Wed, 2 May 2018 20:32:05 +0000 (13:32 -0700)] 
HOTFIX: Simplify ConsoleConsumer stripWithPrefix function

2 weeks agoKAFKA-6657: Add StreamsConfig prefix for different consumers (#4805)
Boyang Chen [Wed, 2 May 2018 20:24:15 +0000 (13:24 -0700)] 
KAFKA-6657: Add StreamsConfig prefix for different consumers (#4805)

This pull request is for JIRA 6657, for KIP-276.

Added unit tests for new getGlobalConsumerConfigs API and make sure existing restore consumer tests are passing.

Reviewers: Bill Bejeck <bill@confluent.io>, Matthias J. Sax <matthias@confluent.io>, Guozhang Wang <wangguoz@gmail.com>

2 weeks agoKAFKA-6825: Make StreamsConfig#DEFAULT_PRODUCTION_EXCEPTION_HANDLER_CLASS_CONFIG...
Guozhang Wang [Wed, 2 May 2018 18:58:43 +0000 (11:58 -0700)] 
KAFKA-6825: Make StreamsConfig#DEFAULT_PRODUCTION_EXCEPTION_HANDLER_CLASS_CONFIG public (#4929)

Reviewers: Matthias J Sax <matthias@confluentio>

3 weeks agoMINOR: Removed unused imports in a few tests (#4938)
Mickael Maison [Tue, 1 May 2018 22:27:20 +0000 (23:27 +0100)] 
MINOR: Removed unused imports in a few tests (#4938)

Reviewers: Ismael Juma <ismael@juma.me.uk>

3 weeks agoKAFKA-6526: Enable unclean leader election without controller change (#4920)
Rajini Sivaram [Tue, 1 May 2018 14:27:02 +0000 (15:27 +0100)] 
KAFKA-6526: Enable unclean leader election without controller change (#4920)

Enable dynamic update of default unclean leader election config of brokers. A new controller event has been added to process unclean leader election when the config is enabled dynamically.

Reviewers: Dong Lin <lindong28@gmail.com>, Manikumar Reddy <manikumar.reddy@gmail.com>

3 weeks agoKAFKA-6810; Enable dynamic update of SSL truststores (#4904)
Rajini Sivaram [Mon, 30 Apr 2018 20:08:34 +0000 (21:08 +0100)] 
KAFKA-6810; Enable dynamic update of SSL truststores (#4904)

Enable broker's SSL truststores to be dynamically updated using ConfigCommand in the same way as keystores are updated.

3 weeks agoMINOR: Ensure exception messages include partition/segment info when possible (#4907)
Jason Gustafson [Mon, 30 Apr 2018 15:59:04 +0000 (08:59 -0700)] 
MINOR: Ensure exception messages include partition/segment info when possible (#4907)

Reviewers: Anna Povzner <anna@confluent.io>, Ismael Juma <ismael@juma.me.uk>

3 weeks agoMINOR: Fix sasl.jaas.config doc string (#4921)
Manikumar Reddy O [Mon, 30 Apr 2018 14:29:50 +0000 (19:59 +0530)] 
MINOR: Fix sasl.jaas.config doc string (#4921)

3 weeks agoKAFKA-3417: Wrap metric reporter calls in try/catch blocks (#3635)
Mickael Maison [Mon, 30 Apr 2018 11:34:02 +0000 (12:34 +0100)] 
KAFKA-3417: Wrap metric reporter calls in try/catch blocks (#3635)

Prevent exception thrown by metric reporters to impact request processing and other reporters.

Co-authored-by: Mickael Maison <mickael.maison@gmail.com>
Co-authored-by: Edoardo Comar <ecomar@uk.ibm.com>
Reviewers: Rajini Sivaram <rajinisivaram@googlemail.com>

3 weeks agoKAFKA-6535: Set default retention ms for Streams repartition topics to Long.MAX_VALUE...
khairy [Mon, 30 Apr 2018 10:18:40 +0000 (11:18 +0100)] 
KAFKA-6535: Set default retention ms for Streams repartition topics to Long.MAX_VALUE (#4730)

Implements KIP-284

Reviewers: Matthias J. Sax <matthias@confluent.io>, Bill Bejeck <bill@confluent.io>, Guozhang Wang <guozhang@confluent.io>

3 weeks agoKAFKA-6785: Add Trogdor documentation (#4862)
Colin Patrick McCabe [Sun, 29 Apr 2018 14:57:25 +0000 (07:57 -0700)] 
KAFKA-6785: Add Trogdor documentation (#4862)

3 weeks agoMINOR: Fix Trogdor tests, partition assignments (#4892)
Colin Patrick McCabe [Sun, 29 Apr 2018 14:54:38 +0000 (07:54 -0700)] 
MINOR: Fix Trogdor tests, partition assignments (#4892)

3 weeks agoMINOR: update VerifiableProducer to send keys if configured and removed StreamsRepeat...
Bill Bejeck [Sat, 28 Apr 2018 05:12:57 +0000 (01:12 -0400)] 
MINOR: update VerifiableProducer to send keys if configured and removed StreamsRepeatingKeyProducerService (#4841)

This PR does the following:

* Remove the StreamsRepeatingIntegerKeyProducerService and the associated Java class
* Add a parameter to VerifiableProducer.java to enable sending keys when specified
* Update the corresponding Python file verifiable_producer.py to support the new parameter.

Reviewers: Matthias J Sax <matthias@confluentio>, Guozhang Wang <wangguoz@gmail.com>

3 weeks agoFix streams web doc configs tables (#4943)
manjuapu [Fri, 27 Apr 2018 23:15:55 +0000 (16:15 -0700)] 
Fix streams web doc configs tables (#4943)

Reviewers: Guozhang Wang <wangguoz@gmail.com>

3 weeks agoMINOR: Streams web doc table fix (#4942)
manjuapu [Fri, 27 Apr 2018 21:20:29 +0000 (14:20 -0700)] 
MINOR: Streams web doc table fix (#4942)

3 weeks agoHOTFIX: rename run_test to execute in streams simple benchmark (#4941)
Guozhang Wang [Fri, 27 Apr 2018 20:40:24 +0000 (13:40 -0700)] 
HOTFIX: rename run_test to execute in streams simple benchmark (#4941)

3 weeks agoMINOR: Pin pip to 9.0.3 as 10 is not compatible with with system pip (#4937)
Max Zheng [Fri, 27 Apr 2018 04:01:27 +0000 (21:01 -0700)] 
MINOR: Pin pip to 9.0.3 as 10 is not compatible with with system pip (#4937)

If not pinned, the following error will happen:
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    from pip import main
ImportError: cannot import name main

Reviewers: Guozhang Wang <wangguoz@gmail.com>

3 weeks agoKAFKA-6778; AdminClient.describeConfigs() should return error for non-existent topics...
Manikumar Reddy O [Thu, 26 Apr 2018 21:01:04 +0000 (02:31 +0530)] 
KAFKA-6778; AdminClient.describeConfigs() should return error for non-existent topics (#4866)

Reviewers: Ismael Juma <ismael@juma.me.uk>, Jason Gustafson <jason@confluent.io>

3 weeks agoMINOR: Remove deprecated streams config (#4906)
Guozhang Wang [Thu, 26 Apr 2018 20:16:51 +0000 (13:16 -0700)] 
MINOR: Remove deprecated streams config (#4906)

Removed the following: "zookeeper.connect", "key.serde", "value.serde", "timestamp.extractor"

Reviewers: Bill Bejeck <bill@confluent.io>, John Roesler <john@confluent.io>, Jason Gustafson <jason@confluent.io>

3 weeks agoKAFKA-6474: Rewrite tests to use new public TopologyTestDriver [partial] (#4832)
Filipe Agapito [Thu, 26 Apr 2018 18:30:42 +0000 (19:30 +0100)] 
KAFKA-6474: Rewrite tests to use new public TopologyTestDriver [partial] (#4832)

* Remove ProcessorTopologyTestDriver from TopologyTest
* Fix ProcessorTopologyTest
* Remove ProcessorTopologyTestDriver and InternalTopologyAccessor
* Partially refactored StreamsBuilderTest but missing one test
* Refactor KStreamBuilderTest
* Refactor AbstractStreamTest
* Further cleanup of AbstractStreamTest
* Refactor GlobalKTableJoinsTest
* Refactor InternalStreamsBuilderTest
* Fix circular dependency in build.gradle
* Refactor KGroupedStreamImplTest
* Partial modifications to KGroupedTableImplTest
* Refactor KGroupedTableImplTest
* Refactor KStreamBranchTest
* Refactor KStreamFilterTest
* Refactor KStreamFlatMapTest KStreamFlatMapValuesTest
* Refactor KStreamForeachTest
* Refactor KStreamGlobalKTableJoinTest
* Refactor KStreamGlobalKTableLeftJoinTest
* Refactor KStreamImplTest
* Refactor KStreamImplTest
* Refactor KStreamKStreamJoinTest
* Refactor KStreamKStreamLeftJoinTest
* Refactor KStreamKTableJoinTest
* Refactor KStreamKTableLeftJoinTest
* Refactor KStreamMapTest and KStreamMapValuesTest
* Refactor KStreamPeekTest and KStreamTransformTest
* Refactor KStreamSelectKeyTest
* Refactor KStreamTransformValuesTest
* Refactor KStreamWindowAggregateTest
* Add Depercation anotation to KStreamTestDriver and rollback failing tests in StreamsBuilderTest and KTableAggregateTest
* Refactor KTableFilterTest
* Refactor KTableForeachTest
* Add getter for ProcessorTopology, and simplify tests in StreamsBuilderTest
* Refactor KTableImplTest
* Remove unused imports
* Refactor KTableAggregateTest
* Fix style errors
* Fix gradle build
* Address reviewer comments:
  - Remove properties new instance
  - Remove extraneous line
  - Remove unnecessary TopologyTestDriver instances from StreamsBuilderTest
  - Move props.clear() to @After
  - Clarify use of timestamp in KStreamFlatMapValuesTest
  - Keep test using old Punctuator in KStreamTransformTest
  - Add comment to clarify clock advances in KStreamTransformTest
  - Add TopologyTestDriverWrapper class to access the protected constructor of TopologyTestDriver
  - Revert KTableImplTest.testRepartition to KStreamTestDriver to avoid exposing the TopologyTestDriver processor topology
  - Revert partially migrated classes: KTableAggregateTest, KTableFilterTest, and KTableImplTest
* Rebase on current trunk an fix conflicts

Reviewers: Matthias J Sax <matthias@confluentio>, Bill Bejeck <bill@confluent.io>, John Roesler <john@confluent.io>

3 weeks agoMINOR: use jdk8 to build/run system tests (#4925)
Jarek Rudzinski [Thu, 26 Apr 2018 17:50:22 +0000 (02:50 +0900)] 
MINOR: use jdk8 to build/run system tests (#4925)

Debian installer packages are no longer available for Java 7.

Also upgrade AMI to latest ubuntu/trusty 14 amd64 as the older
one is no longer available.

Note that this only changes the JDK used to build and run
the system tests. We still have Jenkins jobs that compile
and run the JUnit tests with Java 7 so that we don't use
features that are only available in newer Java versions.

3 weeks agoMINOR: Fixes for streams system tests (#4935)
Bill Bejeck [Thu, 26 Apr 2018 17:04:59 +0000 (13:04 -0400)] 
MINOR: Fixes for streams system tests (#4935)

This PR fixes some regressions introduced into streams system tests and sets the upgrade tests to ignore until PR #4636 is merged as it has the fixes for the upgrade tests.

Reviewers: Guozhang Wang <wangguoz@gmail.com>