15 hours agoMINOR: Small update docs/design.html grammar and typo (#12691) trunk
Chase Thomas [Tue, 27 Sep 2022 18:46:25 +0000 (11:46 -0700)] 
MINOR: Small update docs/design.html grammar and typo (#12691)

Reviewers: Jason Gustafson <jason@confluent.io>

20 hours agoMINOR: Improve unit test coverage of LeaderAndIsr class (#12689)
Orsák Maroš [Tue, 27 Sep 2022 14:08:05 +0000 (16:08 +0200)] 
MINOR: Improve unit test coverage of LeaderAndIsr class (#12689)

32 hours agoMINOR: Add section on listener configuration (including kraft) to security docs ...
Jason Gustafson [Tue, 27 Sep 2022 02:33:32 +0000 (19:33 -0700)] 
MINOR: Add section on listener configuration (including kraft) to security docs (#12682)

This patch adds a section in security.html about listener configuration. This includes the basics of how to define the security mapping of each listener as well as the configurations to control inter-cluster traffic.

Reviewers: José Armando García Sancio <jsancio@users.noreply.github.com>, Luke Chen <showuon@gmail.com>

38 hours agoMINOR: Update design docs to avoid zookeeper-specific assumptions (#12690)
Jason Gustafson [Mon, 26 Sep 2022 20:01:07 +0000 (13:01 -0700)] 
MINOR: Update design docs to avoid zookeeper-specific assumptions (#12690)

Update a few cases in the documentation which do not make sense for KRaft.

Reviewers: José Armando García Sancio <jsancio@users.noreply.github.com>

40 hours agoKAFKA-10199: Fix switching to updating standbys if standby is removed (#12687)
Bruno Cadonna [Mon, 26 Sep 2022 18:34:09 +0000 (20:34 +0200)] 
KAFKA-10199: Fix switching to updating standbys if standby is removed (#12687)

When the state updater only contains standby tasks and then a
standby task is removed, an IllegalStateException is thrown
because the changelog reader does not allow to switch to standby
updating mode more than once in a row.

This commit fixes this bug by checking that the removed task is
an active one before trying to switch to standby updating mode.
If the task to remove is a standby task then either we are already
in standby updating mode and we should not switch to it again or
we are not in standby updating mode which implies that there are
still active tasks that would prevent us to switch to standby
updating mode.

Reviewer: Guozhang Wang <wangguoz@gmail.com>

40 hours agoKAFKA-14207; KRaft Operations documentation (#12642)
José Armando García Sancio [Mon, 26 Sep 2022 18:19:48 +0000 (11:19 -0700)] 
KAFKA-14207; KRaft Operations documentation (#12642)

Reviewers: Colin Patrick McCabe <cmccabe@apache.org>, Chase Thomas <forlack@users.noreply.github.com>

2 days agoMINOR: Adding KRaft Monitoring Related Metrics to docs/ops.html (#12679)
Niket [Mon, 26 Sep 2022 06:25:36 +0000 (23:25 -0700)] 
MINOR: Adding KRaft Monitoring Related Metrics to docs/ops.html (#12679)

This commit adds KRaft monitoring related metrics to the Kafka docs (docs/ops.html).

Reviewers: Jason Gustafson <jason@confluent.io>, Luke Chen <showuon@gmail.com>

4 days agoKAFKA-14239: Merge StateRestorationIntegrationTest into RestoreIntegrationTest (...
Ahmed Sobeh [Sat, 24 Sep 2022 00:15:25 +0000 (02:15 +0200)] 
KAFKA-14239: Merge StateRestorationIntegrationTest into RestoreIntegrationTest (#12670)

This PR makes the following changes:

* Moves the only test in StateRestorationIntegrationTest into RestoreIntegrationTest
* Deletes StateRestorationIntegrationTest

Reviewers: Guozhang Wang <wangguoz@gmail.com>

4 days agoKAFKA-14259: BrokerRegistration#toString throws an exception, terminating metadata...
Colin Patrick McCabe [Fri, 23 Sep 2022 22:39:50 +0000 (15:39 -0700)] 
KAFKA-14259: BrokerRegistration#toString throws an exception, terminating metadata replay (#12681)

Previously, BrokerRegistration#toString sould throw an exception, terminating metadata replay,
because the sorted() method is used on an entry set rather than a key set.

Reviewers: David Arthur <mumrah@gmail.com>

4 days agoKAFKA-14132: Replace PowerMock/Easymock with Mockito for WorkerMetricsGroupTest ...
Divij Vaidya [Fri, 23 Sep 2022 20:14:09 +0000 (22:14 +0200)] 
KAFKA-14132: Replace PowerMock/Easymock with Mockito for WorkerMetricsGroupTest (#12677)

Reviewers: Chris Egerton <chrise@aiven.io>

5 days agoKAFKA-13725: KIP-768 OAuth code mixes public and internal classes in same package...
Kirk True [Fri, 23 Sep 2022 07:45:15 +0000 (00:45 -0700)] 
KAFKA-13725: KIP-768 OAuth code mixes public and internal classes in same package (#12039)

* KAFKA-13725: KIP-768 OAuth code mixes public and internal classes in same package

Move classes into a sub-package of "internal" named "secured" that
matches the layout more closely of the "unsecured" package.

Replaces the concrete implementations in the former packages with
sub-classes of the new package layout and marks them as deprecated. If
anyone is already using the newer OAuth code, this should still work.

* Fix checkstyle and spotbugs violations

Co-authored-by: Kirk True <kirk@mustardgrain.com>
Reviewers: Manikumar Reddy <manikumar.reddy@gmail.com>

5 days agoKAFKA-14097: Make producer ID expiration a dynamic config (#12643)
Justine Olshan [Fri, 23 Sep 2022 07:19:48 +0000 (00:19 -0700)] 
KAFKA-14097: Make producer ID expiration a dynamic config (#12643)

Make `producer.id.expiration.ms` a dynamic configuration as described in KIP-854.

Reviewers: David Jacot <djacot@confluent.io>

5 days agoKAFKA-14209: Change Topology optimization to accept list of rules 1/3 (#12641)
Vicky Papavasileiou [Thu, 22 Sep 2022 16:20:37 +0000 (17:20 +0100)] 
KAFKA-14209: Change Topology optimization to accept list of rules 1/3 (#12641)

This PR is part of a series implementing the self-join rewriting. As part of it, we decided to clean up the TOPOLOGY_OPTIMIZATION_CONFIG and make it a list of optimization rules. Acceptable values are: NO_OPTIMIZATION, OPTIMIZE which applies all optimization rules or a comma separated list of specific optimizations.

Reviewers: Guozhang Wang <guozhang@apache.org>, John Roesler <vvcephei@apache.org>

6 days agoMINOR: Update security docs for kraft Authorizer configuration (#12673)
Jason Gustafson [Thu, 22 Sep 2022 02:38:59 +0000 (19:38 -0700)] 
MINOR: Update security docs for kraft Authorizer configuration (#12673)

Update security documentation to describe how to configure the KRaft `Authorizer` implementation and include a note about principal forwarding.

Additionally, this patch renames `KafkaConfig.Defaults.DefaultPrincipalSerde` to `DefaultPrincipalBuilder` since the former is somewhat misleading.

Reviewers: David Arthur <mumrah@gmail.com>

6 days agoMINOR: use addExact to avoid overflow and some cleanup (#12660)
Luke Chen [Thu, 22 Sep 2022 01:22:58 +0000 (09:22 +0800)] 
MINOR: use addExact to avoid overflow and some cleanup (#12660)

What changes in this PR:
1. Use addExact to avoid overflow in BatchAccumulator#bytesNeeded. We did use addExact in bytesNeededForRecords method, but forgot that when returning the result.
2. javadoc improvement

Reviewers: Jason Gustafson <jason@confluent.io>

6 days agoKAFKA-14236; ListGroups request produces too much Denied logs in authorizer (#12652)
aLeX [Thu, 22 Sep 2022 00:42:30 +0000 (02:42 +0200)] 
KAFKA-14236; ListGroups request produces too much Denied logs in authorizer (#12652)

Avoid `is Denied Operation` logs when calling ListGroups api, by adding `logIfDenied = false` to `authorize` calls.

Reviewers: Jason Gustafson <jason@confluent.io>

6 days agoMINOR: Mention deprecation of authorizer flags in security documentation (#12668)
Jason Gustafson [Wed, 21 Sep 2022 16:34:17 +0000 (09:34 -0700)] 
MINOR: Mention deprecation of authorizer flags in security documentation (#12668)

The following options are deprecated in kafka-acls.sh: `--authorizer`, `--authorizer-properties`, and `--zk-tls-config-file`. This patch updates the security documentation to mention the deprecation and changes examples to use `--bootstrap-server` when possible.

Reviewers: Luke Chen <showuon@gmail.com>

6 days agoMINOR: Add configurable max receive size for SASL authentication requests
Manikumar Reddy [Mon, 16 May 2022 13:55:02 +0000 (19:25 +0530)] 
MINOR: Add configurable max receive size for SASL authentication requests

This adds a new configuration `sasl.server.max.receive.size` that sets the maximum receive size for requests before and during authentication.

Reviewers: Tom Bentley <tbentley@redhat.com>, Mickael Maison <mickael.maison@gmail.com>

Co-authored-by: Manikumar Reddy <manikumar.reddy@gmail.com>
Co-authored-by: Mickael Maison <mickael.maison@gmail.com>
6 days ago MINOR: Add more validation during KRPC deserialization
Colin Patrick McCabe [Fri, 20 May 2022 22:23:12 +0000 (15:23 -0700)] 
MINOR: Add more validation during KRPC deserialization

    When deserializing KRPC (which is used for RPCs sent to Kafka, Kafka Metadata records, and some
    other things), check that we have at least N bytes remaining before allocating an array of size N.

    Remove DataInputStreamReadable since it was hard to make this class aware of how many bytes were
    remaining. Instead, when reading an individual record in the Raft layer, simply create a
    ByteBufferAccessor with a ByteBuffer containing just the bytes we're interested in.

    Add SimpleArraysMessageTest and ByteBufferAccessorTest. Also add some additional tests in

    Reviewers: Tom Bentley <tbentley@redhat.com>, Mickael Maison <mickael.maison@gmail.com>, Colin McCabe <colin@cmccabe.xyz>

Co-authored-by: Colin McCabe <colin@cmccabe.xyz>
Co-authored-by: Manikumar Reddy <manikumar.reddy@gmail.com>
Co-authored-by: Mickael Maison <mickael.maison@gmail.com>
6 days agoMINOR: Fix ConsumerPerformanceTest to work with non-default locales (#12623)
Divij Vaidya [Wed, 21 Sep 2022 13:54:25 +0000 (15:54 +0200)] 
MINOR: Fix ConsumerPerformanceTest to work with non-default locales (#12623)

ConsumerPerformanceTest fails when running on a machine with a Locale where decimal is represented by a comma. E.g. in locale of Germany, one point two is written as 1,2 and not 1.2 as with the default locale.

The test fails because it validates that each header has a corresponding value by assuming that comma is a separator between values & headers. This assumption fails for Germany Locale because comma could be part of a float number.

Reviewers: David Jacot <djacot@confluent.io>

7 days agoMINOR: Fix typo in info message (#12665)
Philipp Trulson [Wed, 21 Sep 2022 02:05:15 +0000 (04:05 +0200)] 
MINOR: Fix typo in info message (#12665)

Reviewers: Luke Chen <showuon@gmail.com>

7 days agoKAFKA-14214: Introduce read-write lock to StandardAuthorizer for consistent ACL reads...
Akhilesh C [Tue, 20 Sep 2022 20:54:18 +0000 (13:54 -0700)] 
KAFKA-14214: Introduce read-write lock to StandardAuthorizer for consistent ACL reads. (#12628)

Fixes an issue with StandardAuthorizer#authorize that allowed inconsistent results. The underlying
concurrent data structure (ConcurrentSkipListMap) had weak consistency guarantees. This meant
that a concurrent update to the authorizer data could result in the authorize function processing
ACL updates out of order.

This patch replaces the concurrent data structures with regular non-thread safe equivalents and uses
a read/write lock for thread safety and strong consistency.

Reviewers: David Arthur <mumrah@gmail.com>, Jason Gustafson <jason@confluent.io>, Colin P. McCabe <cmccabe@apache.org>, Luke Chen <showuon@gmail.com>

7 days agoKAFKA-14243: Temporarily disable unsafe downgrade (#12664)
Colin Patrick McCabe [Tue, 20 Sep 2022 19:32:52 +0000 (12:32 -0700)] 
KAFKA-14243: Temporarily disable unsafe downgrade (#12664)

Reviewers: David Arthur <mumrah@gmail.com>

7 days agoKAFKA-13927: Fix sink task offset tracking during exception retries (#12566)
Jordan Bull [Tue, 20 Sep 2022 17:46:35 +0000 (10:46 -0700)] 
KAFKA-13927: Fix sink task offset tracking during exception retries (#12566)

Reviewers: Chris Egerton <chrise@aiven.io>

7 days agoMINOR: Log controller id/epoch when LeaderAndIsr, StopReplica and UpdateMetadata...
David Jacot [Tue, 20 Sep 2022 13:26:37 +0000 (15:26 +0200)] 
MINOR: Log controller id/epoch when LeaderAndIsr, StopReplica and UpdateMetadata requests are fenced (#12645)

Reviewers: Luke Chen <showuon@gmail.com>

8 days agoMINOR: Fixes in release.py (#12648)
Lucas Brutschy [Tue, 20 Sep 2022 10:26:11 +0000 (12:26 +0200)] 
MINOR: Fixes in release.py (#12648)

1. Permissions for mkdir set incorrectly, probably because it used incorrect python3 syntax (octals should use 0o prefix).

2. JAVA_HOME logic didn't seem to hold up to its promise. The original logic was broken when user input was empty. It was supposed to use JAVA_HOME system property to find java, but it wouldn't set jdk_java_home, so the following version check

java_version = cmd_output("%s/bin/java -version" % jdk_java_home, env=jdk_env)

would access /bin/java which does not exist on any system I know.

Reviewer: Bruno Cadonna <cadonna@apache.org>

8 days agoKAFKA-14212: Enhance HttpAccessTokenRetriever to retrieve error message (#12651)
Sushant Mahajan [Tue, 20 Sep 2022 07:03:19 +0000 (12:33 +0530)] 
KAFKA-14212: Enhance HttpAccessTokenRetriever to retrieve error message (#12651)

Currently HttpAccessTokenRetriever client side class does not retrieve error response from the token e/p. As a result, seemingly trivial config issues could take a lot of time to diagnose and fix. For example, client could be sending invalid client secret, id or scope.
This PR aims to remedy the situation by retrieving the error response, if present and logging as well as appending to any exceptions thrown.
New unit tests have also been added.

Reviewers: Manikumar Reddy <manikumar.reddy@gmail.com>

8 days agoKAFKA-14240; Validate kraft snapshot state on startup (#12653)
Jason Gustafson [Mon, 19 Sep 2022 18:52:48 +0000 (11:52 -0700)] 
KAFKA-14240; Validate kraft snapshot state on startup (#12653)

We should prevent the metadata log from initializing in a known bad state. If the log start offset of the first segment is greater than 0, then must be a snapshot an offset greater than or equal to it order to ensure that the initialized state is complete.

Reviewers: José Armando García Sancio <jsancio@users.noreply.github.com>

8 days agoKAFKA-10199: Adapt restoration integration tests to state updater (#12650)
Bruno Cadonna [Mon, 19 Sep 2022 17:27:17 +0000 (19:27 +0200)] 
KAFKA-10199: Adapt restoration integration tests to state updater (#12650)

Transforms the integration test that verifies restoration in a
parametrized test. The parametrized test runs once with
state updater enabled and once with state updater disabled.

Reviewer: Guozhang Wang <wangguoz@gmail.com>

8 days agoMINOR: Update offset.storage.topic description (#12656)
Federico Valeri [Mon, 19 Sep 2022 17:21:59 +0000 (19:21 +0200)] 
MINOR: Update offset.storage.topic description (#12656)

Reviewers: Chris Egerton <chrise@aiven.io>

8 days agoKAFKA-12878: Support --bootstrap-server in kafka-streams-application-reset tool ...
Nikolay [Mon, 19 Sep 2022 17:20:41 +0000 (20:20 +0300)] 
KAFKA-12878: Support --bootstrap-server in kafka-streams-application-reset tool (#12632)

Reviewers: Chris Egerton <chrise@aiven.io>

8 days agoMINOR: Bump latest 2.8 version to 2.8.2
Manikumar Reddy [Sun, 11 Sep 2022 15:20:07 +0000 (20:50 +0530)] 
MINOR: Bump latest 2.8 version to 2.8.2

8 days agoMINOR: Update release versions for upgrade tests with 3.0.2, 3.1.2, 3.2.3 release...
Tom Bentley [Mon, 19 Sep 2022 11:43:40 +0000 (12:43 +0100)] 
MINOR: Update release versions for upgrade tests with 3.0.2, 3.1.2, 3.2.3 release (#12661)

Updates release versions in files that are used for upgrade test with the 3.0.2, 3.1.2, 3.2.3 release version.

9 days agoKAFKA-14233: disable testReloadUpdatedFilesWithoutConfigChange first to fix the build...
Luke Chen [Mon, 19 Sep 2022 04:22:25 +0000 (12:22 +0800)] 
KAFKA-14233: disable testReloadUpdatedFilesWithoutConfigChange first to fix the build (#12658)

disable testReloadUpdatedFilesWithoutConfigChange first to fix the build

Reviewers: Jason Gustafson <jason@confluent.io>

9 days agoMINOR: Set display granularity in gradle test logging (#12657)
Jason Gustafson [Mon, 19 Sep 2022 01:24:27 +0000 (18:24 -0700)] 
MINOR: Set display granularity in gradle test logging (#12657)

We sometimes see build failures where the code encounters an exit condition and fails abruptly. For example:
[2022-09-18T10:01:25.947Z] * What went wrong:
[2022-09-18T10:01:25.947Z] Execution failed for task ':core:unitTest'.
[2022-09-18T10:01:25.947Z] > Process 'Gradle Test Executor 116' finished with non-zero exit value 1
When this happens, it can be difficult to track the failure back to a specific test from the build output because we don't know which test was executing on 'Gradle Test Executor 116.'

There is a test logging property in gradle called `displayGranularity`, which lets us see the executor for each test run: https://docs.gradle.org/current/dsl/org.gradle.api.tasks.testing.logging.TestLogging.html#org.gradle.api.tasks.testing.logging.TestLogging:displayGranularity.  When `displayGranularity` is set to 2 (the default), we get the following:
AdminZkClientTest > testGetBrokerMetadatas() PASSED
When set to 0, it looks like this instead:
Gradle Test Run :core:test > Gradle Test Executor 76 > AdminZkClientTest > testGetBrokerMetadatas() PASSED
Having this extra information should make it easier to debug failures.

Reviewers: Luke Chen <showuon@gmail.com>, David Jacot <djacot@confluent.io>

10 days agoKAFKA-14238; KRaft metadata log should not delete segment past the latest snapshot...
José Armando García Sancio [Sat, 17 Sep 2022 13:30:50 +0000 (06:30 -0700)] 
KAFKA-14238;  KRaft metadata log should not delete segment past the latest snapshot (#12655)

Disable segment deletion based on size and time by setting the KRaft metadata log's `RetentionMsProp` and `RetentionBytesProp` to `-1`. This will cause `UnifiedLog.deleteRetentionMsBreachedSegments` and `UnifiedLog.deleteRetentionSizeBreachedSegments` to short circuit instead of deleting segments.

Without this changes the included test would fail. This happens because `deleteRetentionMsBreachedSegments` is able to delete past the `logStartOffset`. Deleting past the `logStartOffset` would violate the invariant that if the `logStartOffset` is greater than 0 then there is a snapshot with an end offset greater than or equal to the log start offset.

Reviewers: Luke Chen <showuon@gmail.com>, Jason Gustafson <jason@confluent.io>

12 days agoKAFKA-10199: Register and unregister changelog topics in state updater (#12638)
Bruno Cadonna [Fri, 16 Sep 2022 07:05:11 +0000 (09:05 +0200)] 
KAFKA-10199: Register and unregister changelog topics in state updater (#12638)

Registering and unregistering the changelog topics in the
changelog reader outside of the state updater leads to
race conditions between the stream thread and the state
updater thread. Thus, this PR moves registering and
unregistering of changelog topics in the changelog
reader into the state updater if the state updater
is enabled.

Reviewers: Guozhang Wang <wangguoz@gmail.com>, Hao Li <1127478+lihaosky@users.noreply.github.com>

12 days agoMINOR: replace deprecated egrep in kafka-run-class (#12649)
Matthew Stidham [Fri, 16 Sep 2022 06:32:53 +0000 (23:32 -0700)] 
MINOR: replace deprecated egrep in kafka-run-class (#12649)

The egrep is deprecated in 2007 and be replaced with grep -E

Signed-off-by: Matthew Stidham <stidmatt@gmail.com>
Reviewers: Luke Chen <showuon@gmail.com>

12 days agoKAFKA-13985: Skip committing MirrorSourceTask records without metadata (#12602)
Rens Groothuijsen [Thu, 15 Sep 2022 13:55:44 +0000 (15:55 +0200)] 
KAFKA-13985: Skip committing MirrorSourceTask records without metadata (#12602)

Reviewers: Chris Egerton <chrise@aiven.io>

13 days agoKAFKA-14156: Built-in partitioner may create suboptimal batches (#12570)
Artem Livshits [Thu, 15 Sep 2022 00:39:14 +0000 (17:39 -0700)] 
KAFKA-14156: Built-in partitioner may create suboptimal batches (#12570)

Now the built-in partitioner defers partition switch (while still
accounting produced bytes) if there is no ready batch to send, thus
avoiding switching partitions and creating fractional batches.

Reviewers: Jun Rao <jun@confluent.io>

13 days agoMINOR; Add missing li end tag (#12640)
José Armando García Sancio [Wed, 14 Sep 2022 15:55:28 +0000 (08:55 -0700)] 
MINOR; Add missing li end tag (#12640)

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

13 days agoMINOR: Mention that kraft is production ready in upgrade notes (#12635)
Ismael Juma [Wed, 14 Sep 2022 15:30:39 +0000 (08:30 -0700)] 
MINOR: Mention that kraft is production ready in upgrade notes (#12635)

Reviewers: José Armando García Sancio <jsancio@apache.org>

13 days agoKAFKA-14132: Migrate some Connect tests from EasyMock/PowerMock to Mockito (#12615)
Yash Mayya [Wed, 14 Sep 2022 15:00:32 +0000 (20:30 +0530)] 
KAFKA-14132: Migrate some Connect tests from EasyMock/PowerMock to Mockito (#12615)

Reviewers: Chris Egerton <chrise@aiven.io>

13 days agoMINOR: Use MessageDigest equals when comparing signature (#11516)
Nandini Anagondi [Wed, 14 Sep 2022 13:06:43 +0000 (18:36 +0530)] 
MINOR: Use MessageDigest equals when comparing signature (#11516)

The motivation for this change is to guard against timing attacks when using InternalRequestSignature.equals()

Pros of this PR

    if the InternalRequestSignature.equal() method could be used for a timing attack, then this PR fixes a security vulnerability

Cons of this PR

    MessageDigest.isEquals() is slower than Arrays.equal since the former is time constant i.e. it runs for a fixed time irrespective of the length of original signature. The execution time of MessageDigest.isEquals() is a function of length of the byte array that it is being tested against.

Even if InternalRequestSignature.equals() is not being used anywhere in code today where it may cause a timing attack, we should still guard against the possibility where a future change might start using it (especially in an open source project where changes might be contributed & reviewed by multiple group of people). The downside of slower equality comparison over a signature is risk worth accepting given the upside we get to safeguard future use cases.

Co-authored-by: Nandini Krishna Anagondi <nandini@mac.local>
Reviewers: Luke Chen <showuon@gmail.com>, Divij Vaidya <diviv@amazon.com>,  Karan Kumar <karankumar1100@gmail.com>, Andrew Eugene Choi <andrew.choi@uwaterloo.ca>

2 weeks agoKAFKA-10199: Suspend tasks in the state updater on revocation (#12600)
Bruno Cadonna [Wed, 14 Sep 2022 07:03:43 +0000 (09:03 +0200)] 
KAFKA-10199: Suspend tasks in the state updater on revocation (#12600)

In the first attempt to handle revoked tasks in the state updater
we removed the revoked tasks from the state updater and added it to
the set of pending tasks to close cleanly. This is not correct since
a revoked task that is immediately reassigned to the same stream thread
would neither be re-added to the state updater nor be created again.
Also a revoked active task might be added to more than one bookkeeping
set in the tasks registry since it might still be returned from
stateUpdater.getTasks() after it was removed from the state updater.
The reason is that the removal from the state updater is done

This PR solves this issue by introducing a new bookkeeping set
in the tasks registry to bookkeep revoked active tasks (actually
suspended active tasks).

Additionally this PR closes some testing holes around the modified

Reviewers: Guozhang Wang <wangguoz@gmail.com>, Hao Li <1127478+lihaosky@users.noreply.github.com>

2 weeks agoMINOR: Add upgrade note regarding the Strictly Uniform Sticky Partitioner (KIP-794...
Artem Livshits [Tue, 13 Sep 2022 18:56:44 +0000 (11:56 -0700)] 
MINOR: Add upgrade note regarding the Strictly Uniform Sticky Partitioner (KIP-794)  (#12630)

Reviewers: Ismael Juma <ismael@juma.me.uk>, David Jacot <djacot@confluent.io>

2 weeks agoMINOR: Small cleanups in FetcherTest following KAFKA-14196 (#12629)
Philip Nee [Tue, 13 Sep 2022 18:10:41 +0000 (11:10 -0700)] 
MINOR: Small cleanups in FetcherTest following KAFKA-14196 (#12629)

Minor cleanups in `FetcherTest` following https://github.com/apache/kafka/pull/12603.

Reviewers: Luke Chen <showuon@gmail.com>, Jason Gustafson <jason@confluent.io>

2 weeks agoKAFKA-14073; Log the reason for snapshot (#12414)
Ashmeet Lamba [Tue, 13 Sep 2022 17:03:47 +0000 (22:33 +0530)] 
KAFKA-14073; Log the reason for snapshot (#12414)

When a snapshot is taken it is due to either of the following reasons -

    Max bytes were applied
    Metadata version was changed

Once the snapshot process is started, it will log the reason that initiated the process.

Updated existing tests to include code changes required to log the reason. I was not able to check the logs when running tests - could someone guide me on how to enable logs when running a specific test case.

Reviewers: dengziming <dengziming1993@gmail.com>, José Armando García Sancio <jsancio@apache.org>

2 weeks agoKAFKA-14222; KRaft's memory pool should always allocate a buffer (#12625)
José Armando García Sancio [Tue, 13 Sep 2022 15:04:40 +0000 (08:04 -0700)] 
KAFKA-14222; KRaft's memory pool should always allocate a buffer (#12625)

Because the snapshot writer sets a linger ms of Integer.MAX_VALUE it is
possible for the memory pool to run out of memory if the snapshot is
greater than 5 * 8MB.

This change allows the BatchMemoryPool to always allocate a buffer when
requested. The memory pool frees the extra allocated buffer when released if
the number of pooled buffers is greater than the configured maximum

Reviewers: Jason Gustafson <jason@confluent.io>

2 weeks agoKAFKA-14208; Do not raise wakeup in consumer during asynchronous offset commits ...
Jason Gustafson [Tue, 13 Sep 2022 07:43:09 +0000 (00:43 -0700)] 
KAFKA-14208; Do not raise wakeup in consumer during asynchronous offset commits (#12626)

Asynchronous offset commits may throw an unexpected WakeupException following #11631 and #12244. This patch fixes the problem by passing through a flag to ensureCoordinatorReady to indicate whether wakeups should be disabled. This is used to disable wakeups in the context of asynchronous offset commits. All other uses leave wakeups enabled.

Note: this patch builds on top of #12611.

Co-Authored-By: Guozhang Wang wangguoz@gmail.com
Reviewers: Luke Chen <showuon@gmail.com>

2 weeks agoKAFKA-14196; Do not continue fetching partitions awaiting auto-commit prior to revoca...
Philip Nee [Tue, 13 Sep 2022 04:02:13 +0000 (21:02 -0700)] 
KAFKA-14196; Do not continue fetching partitions awaiting auto-commit prior to revocation (#12603)

When auto-commit is enabled with the "eager" rebalance strategy, the consumer will commit all offsets prior to revocation. Following recent changes, this offset commit is done asynchronously, which means there is an opportunity for fetches to continue returning data to the application. When this happens, the progress is lost following revocation, which results in duplicate consumption. This patch fixes the problem by adding a flag in `SubscriptionState` to ensure that partitions which are awaiting revocation will not continue being fetched.

Reviewers: Luke Chen <showuon@gmail.com>, Jason Gustafson <jason@confluent.io>

2 weeks agoKAFKA-14215; Ensure forwarded requests are applied to broker request quota (#12624)
Jason Gustafson [Tue, 13 Sep 2022 03:50:33 +0000 (20:50 -0700)] 
KAFKA-14215; Ensure forwarded requests are applied to broker request quota (#12624)

Currently forwarded requests are not applied to any quotas on either the controller or the broker. The controller-side throttling requires the controller to apply the quota changes from the log to the quota managers, which will be done separately. In this patch, we change the response logic on the broker side to also apply the broker's request quota. The enforced throttle time is the maximum of the throttle returned from the controller (which is 0 until we fix the aforementioned issue) and the broker's request throttle time.

Reviewers: David Arthur <mumrah@gmail.com>

2 weeks agoMINOR: Replace usage of File.createTempFile() with TestUtils.tempFile() (#12591)
Divij Vaidya [Tue, 13 Sep 2022 00:44:21 +0000 (02:44 +0200)] 
MINOR: Replace usage of File.createTempFile() with TestUtils.tempFile() (#12591)

Current set of integration tests leak files in the /tmp directory which makes it cumbersome if you don't restart the machine often.

Replace the usage of File.createTempFile with existing TestUtils.tempFile method across the test files. TestUtils.tempFile automatically performs a clean up of the temp files generated in /tmp/ folder.

Reviewers: Luke Chen <showuon@gmail.com>, Ismael Juma <mlists@juma.me.uk>

2 weeks agoKAFKA-14205; Document how to replace the disk for the KRaft Controller (#12597)
José Armando García Sancio [Mon, 12 Sep 2022 23:57:54 +0000 (16:57 -0700)] 
KAFKA-14205; Document how to replace the disk for the KRaft Controller (#12597)

Document process for recovering and formatting the metadata log directory for the KRaft controller.

Reviewers: Colin Patrick McCabe <cmccabe@apache.org>, Jason Gustafson <jason@confluent.io>

2 weeks agoKAFKA-14203 Disable snapshot generation on broker after metadata errors (#12596)
David Arthur [Mon, 12 Sep 2022 21:40:29 +0000 (17:40 -0400)] 
KAFKA-14203 Disable snapshot generation on broker after metadata errors (#12596)

2 weeks agoKAFKA-14198: Define separate configuration for Swagger (#12616)
Chris Egerton [Mon, 12 Sep 2022 16:33:13 +0000 (12:33 -0400)] 
KAFKA-14198: Define separate configuration for Swagger (#12616)

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

2 weeks agoKAFKA-14216: Remove ZK reference from org.apache.kafka.server.quota.ClientQuotaCallba...
Colin Patrick McCabe [Mon, 12 Sep 2022 15:34:46 +0000 (08:34 -0700)] 
KAFKA-14216: Remove ZK reference from org.apache.kafka.server.quota.ClientQuotaCallback javadoc (#12617)

Reviewers: Luke Chen <showuon@gmail.com>

2 weeks agoKAFKA-14217: app-reset-tool.html should not show --zookeeper flag that no longer...
Colin Patrick McCabe [Mon, 12 Sep 2022 15:33:01 +0000 (08:33 -0700)] 
KAFKA-14217: app-reset-tool.html should not show --zookeeper flag that no longer exists (#12618)

Reviewers: Luke Chen <showuon@gmail.com>

2 weeks agoMINOR: Update Scalafmt to latest version (#12475)
Matthew de Detrich [Mon, 12 Sep 2022 14:05:15 +0000 (16:05 +0200)] 
MINOR: Update Scalafmt to latest version (#12475)

Reviewers: Divij Vaidya <diviv@amazon.com>, Chris Egerton <fearthecellos@gmail.com>

2 weeks agoKAFKA-14198; swagger-jaxrs2 dependency should be compileOnly (#12609)
Ismael Juma [Fri, 9 Sep 2022 14:49:29 +0000 (07:49 -0700)] 
KAFKA-14198; swagger-jaxrs2 dependency should be compileOnly (#12609)

Verified that the artifact generated by `releaseTarGz` no longer includes
swagger-jaxrs2 or its dependencies (like snakeyaml).

Reviewers: José Armando García Sancio <jsancio@users.noreply.github.com>, Chris Egerton <fearthecellos@gmail.com>

2 weeks agoMINOR; Remove redundant version system test (#12612)
Jason Gustafson [Fri, 9 Sep 2022 01:13:59 +0000 (18:13 -0700)] 
MINOR; Remove redundant version system test (#12612)

This patch removes test_kafka_version.py, which contains two tests at the moment. The first test verifies we can start a 0.8.2 cluster. The second verifies we can start a cluster with one node on 0.8.2 and another on the latest. These test are covered in greater depth by upgrade_test.py and downgrade_test.py.

Reviewers: José Armando García Sancio <jsancio@users.noreply.github.com>

2 weeks agoKAFKA-14188; Getting started for Kafka with KRaft (#12604)
José Armando García Sancio [Thu, 8 Sep 2022 23:22:09 +0000 (16:22 -0700)] 
KAFKA-14188; Getting started for Kafka with KRaft (#12604)

Update the quickstart HTML pages for Kafka and Kafka Stream to include how to quickly start and
experiment with a Kafka cluster using KRaft in addition to ZooKeeper.

Reviews: Colin Patrick McCabe <cmccabe@apache.org>,  Chase Thomas <forlack@users.noreply.github.com>, Luke Chen <showuon@gmail.com>

2 weeks agoKAFKA-14201; Consumer should not send group instance ID if committing with empty...
David Jacot [Thu, 8 Sep 2022 22:05:40 +0000 (00:05 +0200)] 
KAFKA-14201; Consumer should not send group instance ID if committing with empty member ID (#12599)

The consumer group instance ID is used to support a notion of "static" consumer groups. The idea is to be able to identify the same group instance across restarts so that a rebalance is not needed. However, if the user sets `group.instance.id` in the consumer configuration, but uses "simple" assignment with `assign()`, then the instance ID nevertheless is sent in the OffsetCommit request to the coordinator. This may result in a surprising UNKNOWN_MEMBER_ID error.

This PR fixes the issue on the client side by not setting the group instance id if the member id is empty (no generation).

Reviewers: Jason Gustafson <jason@confluent.io>

2 weeks agoKAFKA-14201; Consumer should not send group instance ID if committing with empty...
David Jacot [Thu, 8 Sep 2022 21:35:59 +0000 (23:35 +0200)] 
KAFKA-14201; Consumer should not send group instance ID if committing with empty member ID (server side) (#12598)

The consumer group instance ID is used to support a notion of "static" consumer groups. The idea is to be able to identify the same group instance across restarts so that a rebalance is not needed. However, if the user sets `group.instance.id` in the consumer configuration, but uses "simple" assignment with `assign()`, then the instance ID nevertheless is sent in the OffsetCommit request to the coordinator. This may result in a surprising UNKNOWN_MEMBER_ID error.

This PR attempts to fix this issue for existing consumers by relaxing the validation in this case. One way is to simply ignore the member id and the static id when the generation id is -1. -1 signals that the request comes from either the admin client or a consumer which does not use the group management. This does not apply to transactional offsets commit.

Reviewers: Jason Gustafson <jason@confluent.io>

2 weeks agoKAFKA-14204: QuorumController must correctly handle overly large batches (#12595)
Colin Patrick McCabe [Thu, 8 Sep 2022 21:21:29 +0000 (14:21 -0700)] 
KAFKA-14204: QuorumController must correctly handle overly large batches (#12595)

Originally, the QuorumController did not try to limit the number of records in a batch that it sent
to the Raft layer.  This caused two problems. Firstly, we were not correctly handling the exception
that was thrown by the Raft layer when a batch of records was too large to apply atomically. This
happened because the Raft layer threw an exception which was a subclass of ApiException. Secondly,
by letting the Raft layer split non-atomic batches, we were not able to create snapshots at each of
the splits. This led to O(N) behavior during controller failovers.

This PR fixes both of these issues by limiting the number of records in a batch. Atomic batches
that are too large will fail with a RuntimeException which will cause the active controller to
become inactive and revert to the last committed state. Non-atomic batches will be split into
multiple batches with a fixed number of records in each.

Reviewers: Luke Chen <showuon@gmail.com>, José Armando García Sancio <jsancio@gmail.com>

2 weeks agoKAFKA-14143: Exactly-once source connector system tests (#11783)
Chris Egerton [Thu, 8 Sep 2022 19:13:43 +0000 (15:13 -0400)] 
KAFKA-14143: Exactly-once source connector system tests (#11783)

Also includes a minor quality-of-life improvement to clarify why some internal REST requests to workers may fail while that worker is still starting up.

Reviewers: Tom Bentley <tbentley@redhat.com>, Luke Chen <showuon@gmail.com>, José Armando García Sancio <jsancio@gmail.com>, Mickael Maison <mickael.maison@gmail.com>

2 weeks agoMINOR; Retry on test failure for branch builds and increase max test retry to 10...
Ismael Juma [Thu, 8 Sep 2022 15:00:16 +0000 (08:00 -0700)] 
MINOR; Retry on test failure for branch builds and increase max test retry to 10 (#12601)

Originally, we only enabled retries for PR builds to avoid hiding timing
related issues. In practice, however, the results are too noisy without
any retry due to various environmental issues.

Enable 1 retry for all builds and increase the max test retry to 10.

Reviewers: José Armando García Sancio <jsancio@users.noreply.github.com>

2 weeks agoKAFKA-13952 fix RetryWithToleranceOperator to respect infinite retries configuration...
Yash Mayya [Thu, 8 Sep 2022 14:14:04 +0000 (19:44 +0530)] 
KAFKA-13952 fix RetryWithToleranceOperator to respect infinite retries configuration (#12478)

Reviewers: Chris Egerton <chrise@aiven.io>

2 weeks agoMINOR: Fix usage of @see in IncrementalCooperativeAssignor doc comments (#12606)
Yash Mayya [Thu, 8 Sep 2022 09:27:06 +0000 (14:57 +0530)] 
MINOR: Fix usage of @see in IncrementalCooperativeAssignor doc comments (#12606)

Reviewers: Mickael Maison <mickael.maison@gmail.com>

2 weeks agoMINOR; Remove end html tag from upgrade (#12605)
José Armando García Sancio [Thu, 8 Sep 2022 00:51:15 +0000 (17:51 -0700)] 
MINOR; Remove end html tag from upgrade (#12605)

The </html> tag doesn't have a matching <html> tag. Those tags are added by
the server side include and are not needed in docs/upgrade.html

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

2 weeks agoRemove the html end tag from upgrade.html
José Armando García Sancio [Wed, 7 Sep 2022 23:04:19 +0000 (16:04 -0700)] 
Remove the html end tag from upgrade.html

2 weeks agoKAFKA-14200: kafka-features.sh must exit with non-zero error code on error (#12586)
Colin Patrick McCabe [Wed, 7 Sep 2022 16:03:55 +0000 (09:03 -0700)] 
KAFKA-14200: kafka-features.sh must exit with non-zero error code on error (#12586)

kafka-features.sh must exit with a non-zero error code on error. We must do this in order to catch
regressions like KAFKA-13990.

Reviewers: David Arthur <mumrah@gmail.com>

2 weeks agoKAFKA-10199: Separate state updater from old restore (#12583)
Bruno Cadonna [Wed, 7 Sep 2022 12:21:36 +0000 (14:21 +0200)] 
KAFKA-10199: Separate state updater from old restore (#12583)

Separates the code path for the new state updater from
the code path of the old restoration.

Ensures that with the state updater tasks are processed
before all tasks are running.

Reviewers: Guozhang Wang <wangguoz@gmail.com>, Walker Carlson <wcarlson@confluent.io

3 weeks agoKAFKA-14133: Replace EasyMock with Mockito in streams tests (#12492)
Christo Lolov [Wed, 7 Sep 2022 08:25:31 +0000 (09:25 +0100)] 
KAFKA-14133: Replace EasyMock with Mockito in streams tests (#12492)

Batch 1 of the tests detailed in https://issues.apache.org/jira/browse/KAFKA-14133 which use EasyMock and need to be moved to Mockito.

Reviewers: Dalibor Plavcic, Matthew de Detrich <mdedetrich@gmail.com>, Bruno Cadonna <cadonna@apache.org>

3 weeks agoMINOR: Enable "abort previous builds" for PRs (#12588)
Ismael Juma [Wed, 7 Sep 2022 03:20:22 +0000 (20:20 -0700)] 
MINOR: Enable "abort previous builds" for PRs (#12588)

When a new commit is pushed to a PR, we should abort the build
and start a new one instead of queuing one build per commit.
This reduces wasted resources and provides the desired feedback
faster (since we only care about the build results for the last
commit in the PR).

Reviewers: Luke Chen <showuon@gmail.com>

3 weeks agoMINOR: Fix comment in Exit.java to refer to the right method (#12592)
Ismael Juma [Wed, 7 Sep 2022 03:12:55 +0000 (20:12 -0700)] 
MINOR: Fix comment in Exit.java to refer to the right method (#12592)

Reviewers: Rajini Sivaram <rajinisivaram@googlemail.com>

3 weeks agoMINOR; Fix LICENSE-binary based on the 3.3 dependencies (#12579)
José Armando García Sancio [Tue, 6 Sep 2022 16:32:33 +0000 (09:32 -0700)] 
MINOR; Fix LICENSE-binary based on the 3.3 dependencies (#12579)

The following commands don't show any missings licenses

$ ./gradlewAll clean releaseTarGz
$ tar xzf core/build/distributions/kafka_2.13-3.3.0-SNAPSHOT.tgz
$ cd kafka_2.13-3.3.0-SNAPSHOT/
$ for f in $(ls libs | grep -v "^kafka\|connect\|trogdor"); do if ! grep -q ${f%.*} LICENSE; then echo "${f%.*} is missing in license file"; fi; done

3 weeks agoKAFKA-14015: Reconfigure tasks if configs have been changed for restarted connectors...
Yash Mayya [Tue, 6 Sep 2022 13:05:21 +0000 (18:35 +0530)] 
KAFKA-14015: Reconfigure tasks if configs have been changed for restarted connectors in standalone mode(#12568)

Reviewers: Chris Egerton <chrise@aiven.io>

3 weeks agoKAFKA-14194: Fix NPE in Cluster.nodeIfOnline (#12584)
Andrew Dean [Mon, 5 Sep 2022 07:56:23 +0000 (02:56 -0500)] 
KAFKA-14194: Fix NPE in Cluster.nodeIfOnline (#12584)

When utilizing the rack-aware consumer configuration and rolling updates are being applied to the Kafka brokers the metadata updates can be in a transient state and a given topic-partition can be missing from the metadata. This seems to resolve itself after a bit of time but before it can resolve the `Cluster.nodeIfOnline` method throws an NPE. This patch checks to make sure that a given topic-partition has partition info available before using that partition info.

Reviewers: David Jacot <djacot@confluent.io>

3 weeks agoKAFKA-10199: Handle exceptions from state updater (#12519)
Guozhang Wang [Sat, 3 Sep 2022 00:50:23 +0000 (17:50 -0700)] 
KAFKA-10199: Handle exceptions from state updater (#12519)

1. In state updater, when handling task corrupted exception due to invalid restoring offset, first delete the affected partitions from the checkpoint before reporting it back to the stream thread. This is to mimic the same behavior in stream threads's StateManager#handleCorruption#closeDirtyAndRevive. It's cleaner to do so inside the restore thread, plus it enables us to optimize by only deleting those corrupted partitions, and not all.
2. In the state manager, handle the drained exceptions as follows (this is the same as handling all exceptions from handleAssignment): 1) Task-migrated, throw all the way to stream-thread as handleTaskMigrated, 2) any fatal Streams exception, throw all the way to stream-thread to trigger exception handler, 3) Task-corrupted, throw to the stream-thread as handleCorruption. Note that for 3), we would specially distinguish if the corrupted-tasks are already closed (when they are thrown from handleAssignment or not (when they are thrown from the state updater).

Reviewers: Bruno Cadonna <cadonna@apache.org>

3 weeks agoHOTFIX: fix PriorityQueue iteration to assign warmups in priority order (#12585)
A. Sophie Blee-Goldman [Fri, 2 Sep 2022 10:14:34 +0000 (03:14 -0700)] 
HOTFIX: fix PriorityQueue iteration to assign warmups in priority order (#12585)

Based on a patch submitted to the confluentinc fork & then abandoned. Needed some updates and minor expansion but more or less just re-applied the changes proposed in confluentinc#697.

Original PR has a very detailed justification for these changes but the tl;dr of it is that apparently the PriorityQueue's iterator does not actually guarantee to return elements in priority order.

Reviewer: Luke Chen <showuon@gmail.com>

3 weeks agoKAFKA-14195: Fix KRaft AlterConfig policy usage for Legacy/Full case (#12578)
Ron Dagostino [Thu, 1 Sep 2022 22:59:17 +0000 (18:59 -0400)] 
KAFKA-14195: Fix KRaft AlterConfig policy usage for Legacy/Full case (#12578)

#12374 adjusted the invocation of the alter configs policy check in KRaft to match the behavior in ZooKeeper, which is to only provide the configs that were explicitly sent in the request. While the code was correct for the incremental alter configs case, the code actually included the implicit deletions for the legacy/non-incremental alter configs case, and those implicit deletions are not included in the ZooKeeper-based invocation. This patch adds a test to check for this and adjusts ConfigurationControlManager code so that the test passes -- the adjusted test is confirmed to fail locally otherwise. We also add a log statement to emit any unexpected stack traces in the alter config code path.

Reviewers: José Armando García Sancio <jsancio@gmail.com>, Colin P. McCabe <cmccabe@apache.org>

3 weeks agoMINOR: Demystify rebalance schedule log (#12582)
John Roesler [Thu, 1 Sep 2022 21:34:03 +0000 (16:34 -0500)] 
MINOR: Demystify rebalance schedule log (#12582)

Reviewers: Bruno Cadonna <cadonna@apache.org>, Bill Bejeck <bbejeck@apache.org>

3 weeks agoKAFKA-10199: Remove changelog unregister from state updater (#12573)
Bruno Cadonna [Thu, 1 Sep 2022 12:29:39 +0000 (14:29 +0200)] 
KAFKA-10199: Remove changelog unregister from state updater (#12573)

Changelogs are already unregistered when tasks are closed.
There is no need to also unregister them in the state

In future, when we will only have the state updater without
the old code path, we should consider registering and
unregistering the changelogs within the state updater.

Reviewer: Guozhang Wang <wangguoz@gmail.com>

3 weeks agoUpdate expected task configs for FileStream source and sink connectors in ConnectRest...
Yash Mayya [Wed, 31 Aug 2022 20:34:00 +0000 (02:04 +0530)] 
Update expected task configs for FileStream source and sink connectors in ConnectRestApiTest (#12576)

Reviewer: Chris Egerton <chrise@aiven.io>

3 weeks agoKAFKA-10199: Shutdown state updater on task manager shutdown (#12569)
Bruno Cadonna [Wed, 31 Aug 2022 18:45:53 +0000 (20:45 +0200)] 
KAFKA-10199: Shutdown state updater on task manager shutdown (#12569)

When the task manager is shutdown, the state updater should also
shutdown. After the shutdown of the state updater, the tasks
in its output queues should be closed.

Reviewer: Guozhang Wang <wangguoz@gmail.com>

3 weeks agoKAFKA-13990: KRaft controller should return right features in ApiVersionResponse...
dengziming [Wed, 31 Aug 2022 18:35:58 +0000 (02:35 +0800)] 
KAFKA-13990: KRaft controller should return right features in ApiVersionResponse (#12294)

Previously, the KRaft controller was incorrectly reporting an empty feature set in
ApiVersionResponse. This was preventing any multi-node clusters from being upgraded via
kafka-features.sh, since they would incorrectly believe that metadata.version was not a supported
feature. This PR adds a regression test for this bug, KRaftClusterTest.testUpdateMetadataVersion.

Reviewers: José Armando García Sancio <jsancio@gmail.com>, Colin P. McCabe <cmccabe@apache.org>

4 weeks agoMINOR: Enable testUpdateFeaturesWithForwarding (#12059)
dengziming [Wed, 31 Aug 2022 07:06:21 +0000 (15:06 +0800)] 
MINOR: Enable testUpdateFeaturesWithForwarding (#12059)

This test was removed in #11667 since UpdateFeatures is not properly handled in KRaft mode, now we can bring it back since UpdateFeatures is properly handled after #12036.

Reviewers: Luke Chen <showuon@gmail.com>

4 weeks agoKAFKA-14187: kafka-features.sh: add support for --metadata (#12571)
Colin Patrick McCabe [Tue, 30 Aug 2022 23:56:03 +0000 (16:56 -0700)] 
KAFKA-14187: kafka-features.sh: add support for --metadata (#12571)

This PR adds support to kafka-features.sh for the --metadata flag, as specified in KIP-778.  This
flag makes it possible to upgrade to a new metadata version without consulting a table mapping
version names to short integers. Change --feature to use a key=value format.

FeatureCommandTest.scala: make most tests here true unit tests (that don't start brokers) in order
to improve test run time, and allow us to test more cases. For the integration test part, test both
KRaft and ZK-based clusters. Add support for mocking feature operations in MockAdminClient.java.

upgrade.html: add a section describing how the metadata.version should be upgraded in KRaft

Add kraft_upgrade_test.py to test upgrades between KRaft versions.

Reviewers: David Arthur <mumrah@gmail.com>, dengziming <dengziming1993@gmail.com>, José Armando García Sancio <jsancio@gmail.com>

4 weeks agoKAFKA-13036: Replace EasyMock and PowerMock with Mockito for RocksDBMetricsRecorderTe...
Divij Vaidya [Tue, 30 Aug 2022 17:25:26 +0000 (19:25 +0200)] 
KAFKA-13036: Replace EasyMock and PowerMock with Mockito for RocksDBMetricsRecorderTest (#12459)

- Migrate to Mockito
- Add more assertive checks using verify
- Minor indentation fixes

Reviewers: Dalibor Plavcic <dalibor.os@proton.me>, Bruno Cadonna <cadonna@apache.org>

4 weeks agoMINOR: Add KRaft broker api to protocol docs (#11786)
dengziming [Tue, 30 Aug 2022 06:40:11 +0000 (14:40 +0800)] 
MINOR: Add KRaft broker api to protocol docs (#11786)

Add KRaft broker api to protocol docs

Reviewers: Luke Chen <showuon@gmail.com>

4 weeks agoMINOR: Displaying default entity name in MetadataShell (#12053)
dengziming [Tue, 30 Aug 2022 03:28:49 +0000 (11:28 +0800)] 
MINOR: Displaying default entity name in MetadataShell (#12053)

When debugging some bugs related to configs, I find we are unable to show default broker/topic entity name since the resourceName="". Changed it to similar to how we trait default client quotas.

Reviewers: Luke Chen <showuon@gmail.com>

4 weeks agoMINOR: MINOR: Remove redundant error log in ChannelBuilder (#12539)
RivenSun [Tue, 30 Aug 2022 03:24:58 +0000 (11:24 +0800)] 
MINOR:  MINOR: Remove redundant error log in ChannelBuilder (#12539)

Remove redundant error log in ChannelBuilder

Reviewers: Luke Chen <showuon@gmail.com>

4 weeks agoKAFKA-10199: Remove tasks from state updater on shutdown (#12562)
Bruno Cadonna [Mon, 29 Aug 2022 16:29:21 +0000 (18:29 +0200)] 
KAFKA-10199: Remove tasks from state updater on shutdown (#12562)

The state updater removes its updating and paused task on shutdown.
The removed tasks are added to the output queue for removed tasks.

Reviewers: Guozhang Wang <wangguoz@gmail.com>, Walker Carlson <wcarlson@confluent.io>

4 weeks agoKAFKA-10199: Handle restored tasks output by state updater (#12554)
Bruno Cadonna [Mon, 29 Aug 2022 16:26:02 +0000 (18:26 +0200)] 
KAFKA-10199: Handle restored tasks output by state updater (#12554)

Once the state updater restored an active task it puts it
into an output queue. The stream thread reads the restored
active task from the output queue and after it verified
that the task is still owned by the stream thread it transits
it to RUNNING.

Reviewers: Guozhang Wang <wangguoz@gmail.com>, Walker Carlson <wcarlson@confluent.io>

4 weeks agoMINOR: Small code cleanups in GroupCoordinator (#12563)
David Jacot [Mon, 29 Aug 2022 09:37:24 +0000 (11:37 +0200)] 
MINOR: Small code cleanups in GroupCoordinator (#12563)

Reviewers: Jeff Kim <jeff.kim@confluent.io>, Luke Chen <showuon@gmail.com>

4 weeks agoMINOR: Small javadoc/code cleanups in connect api and transforms (#12558)
Mickael Maison [Mon, 29 Aug 2022 07:44:56 +0000 (09:44 +0200)] 
MINOR: Small javadoc/code cleanups in connect api and transforms (#12558)

Reviewers: Luke Chen <showuon@gmail.com>, Divij Vaidya <diviv@amazon.com>

4 weeks agoKAFKA-14183; Cluster metadata bootstrap file should use header/footer (#12565)
José Armando García Sancio [Sun, 28 Aug 2022 02:11:06 +0000 (19:11 -0700)] 
KAFKA-14183; Cluster metadata bootstrap file should use header/footer (#12565)

The boostrap.checkpoint files should include a control record batch for
the SnapshotHeaderRecord at the start of the file. It should also
include a control record batch for the SnapshotFooterRecord at the end
of the file.

The snapshot header record is important because it versions the rest of
the bootstrap file.

Reviewers: David Arthur <mumrah@gmail.com>

4 weeks agoMINOR: Fix config name and remove hard coded values (#12564)
Justine Olshan [Sat, 27 Aug 2022 07:36:33 +0000 (00:36 -0700)] 
MINOR: Fix config name and remove hard coded values (#12564)

Fix config name and remove hard coded values

Reviewers: Luke Chen <showuon@gmail.com>

4 weeks agoMINOR: Adds KRaft versions of most streams system tests (#12458)
Alan Sheinberg [Fri, 26 Aug 2022 21:11:19 +0000 (14:11 -0700)] 
MINOR: Adds KRaft versions of most streams system tests (#12458)

Migrates Streams sustem tests to either use kraft brokers or to use both kraft and zk in a testing matrix.

This skips tests which use various forms of Kafka versioning since those seem to have issues with KRaft at the moment. Running these tests with KRaft will require a followup PR.

Reviewers: Guozhang Wang <guozhang@apache.org>, John Roesler <vvcephei@apache.org>