Skip to content
代码片段 群组 项目
  1. 7月 06, 2022
    • Divij Vaidya's avatar
      KAFKA-13943; Make `LocalLogManager` implementation consistent with the... · 5e4c8f70
      Divij Vaidya 创作于
      KAFKA-13943; Make `LocalLogManager` implementation consistent with the `RaftClient` contract (#12224)
      
      Fixes two issues in the implementation of `LocalLogManager`:
      
      - As per the interface contract for `RaftClient.scheduleAtomicAppend()`, it should throw a `NotLeaderException` exception when the provided current leader epoch does not match the current epoch. However, the current `LocalLogManager`'s implementation of the API returns a LONG_MAX instead of throwing an exception. This change fixes the behaviour and makes it consistent with the interface contract.
      -  As per the interface contract for `RaftClient.resign(epoch)`if the parameter epoch does not match the current epoch, this call will be ignored. But in the current `LocalLogManager` implementation the leader epoch might change when the thread is waiting to acquire a lock on `shared.tryAppend()` (note that tryAppend() is a synchronized method). In such a case, if a NotALeaderException is thrown (as per code change in above), then resign should be ignored.
      
      Reviewers: José Armando García Sancio <jsancio@users.noreply.github.com>, Tom Bentley <tbentley@redhat.com>, Jason Gustafson <jason@confluent.io>
      5e4c8f70
    • Chris Egerton's avatar
      KAFKA-10000: Integration tests (#11782) · 3ae1afa4
      Chris Egerton 创作于
      Implements embedded end-to-end integration tests for KIP-618, and brings together previously-decoupled logic from upstream PRs.
      
      Reviewers: Luke Chen <showuon@gmail.com>, Tom Bentley <tbentley@redhat.com>, Mickael Maison <mickael.maison@gmail.com>
      3ae1afa4
    • dengziming's avatar
      KAFKA-13228; Ensure ApiVersionRequest is properly handled KRaft co-resident mode (#11784) · 448441a3
      dengziming 创作于
      When brokers are co-resident with controllers using kraft, we incorrectly determine the supported API versions on the controller using `NodeApiVersions.create()`. The patch fixes the problem by using the versions from the sent `ApiVersions` request even when connecting to the local node.
      
      The patch also improves integration tests by adding support for co-resident mode.
      
      Reviewers: Justine Olshan <jolshan@confluent.io>, Jason Gustafson <jason@confluent.io>
      448441a3
  2. 7月 05, 2022
    • Viktor Somogyi-Vass's avatar
      KAFKA-6945: Add docs about KIP-373 (#12346) · 277c4c2e
      Viktor Somogyi-Vass 创作于
      Reviewers: Manikumar Reddy
      277c4c2e
    • Chris Egerton's avatar
      KAFKA-13613: Remove hard dependency on HmacSHA256 algorithm for Connect (#11894) · ec22af94
      Chris Egerton 创作于
      Reviewers: Mickael Maison <mickael.maison@gmail.com>

, Tom Bentley <tbentley@redhat.com>
      ec22af94
    • Thomas Cooper's avatar
      Upgrade Netty and Jackson versions for CVE fixes [KAFKA-14044] (#12376) · aa735062
      Thomas Cooper 创作于
      Reviewers: Luke Chen <showuon@gmail.com>
      aa735062
    • Matthew de Detrich's avatar
      KAFKA-13957: Fix flaky shouldQuerySpecificActivePartitionStores test (#12289) · 4e6326f8
      Matthew de Detrich 创作于
      
      Currently the tests fail because there is a missing predicate in the retrievableException which causes the test to fail, i.e. the current predicates
      
      containsString("Cannot get state store source-table because the stream thread is PARTITIONS_ASSIGNED, not RUNNING"),
      containsString("The state store, source-table, may have migrated to another instance"),
      containsString("Cannot get state store source-table because the stream thread is STARTING, not RUNNING")
      
      wasn't complete. Another one needed to be added, namely "The specified partition 1 for store source-table does not exist.". This is because its possible for
      
      assertThat(getStore(kafkaStreams2, storeQueryParam2).get(key), is(nullValue()));
      
      or
      
      assertThat(getStore(kafkaStreams1, storeQueryParam2).get(key), is(nullValue()));
      
      (depending on which branch) to be thrown, i.e. see
      
      org.apache.kafka.streams.errors.InvalidStateStorePartitionException: The specified partition 1 for store source-table does not exist.
      
      	at org.apache.kafka.streams.state.internals.WrappingStoreProvider.stores(WrappingStoreProvider.java:63)
      	at org.apache.kafka.streams.state.internals.CompositeReadOnlyKeyValueStore.get(CompositeReadOnlyKeyValueStore.java:53)
      	at org.apache.kafka.streams.integration.StoreQueryIntegrationTest.lambda$shouldQuerySpecificActivePartitionStores$5(StoreQueryIntegrationTest.java:223)
      	at org.apache.kafka.streams.integration.StoreQueryIntegrationTest.retryUntil(StoreQueryIntegrationTest.java:579)
      	at org.apache.kafka.streams.integration.StoreQueryIntegrationTest.shouldQuerySpecificActivePartitionStores(StoreQueryIntegrationTest.java:186)
      
      This happens when the stream hasn't been initialized yet. I have run the test around 12k times using Intellij's JUnit testing framework without any flaky failures. The PR also does some minor refactoring regarding moving the list of predicates into their own functions.
      
      Co-authored-by: default avatarBruno Cadonna <cadonna@apache.org>
      
      Reviewer: Bruno Cadonna <cadonna@apache.org>
      4e6326f8
  3. 7月 04, 2022
  4. 7月 03, 2022
  5. 7月 02, 2022
  6. 7月 01, 2022
  7. 6月 30, 2022
    • Guozhang Wang's avatar
      MINOR: Use mock time in DefaultStateUpdaterTest (#12344) · 3faa6cf6
      Guozhang Wang 创作于
      For most tests we would need an auto-ticking mock timer to work with draining-with-timeout functions.
      For tests that check for never checkpoint we need no auto-ticking timer to control exactly how much time elapsed.
      
      Reviewers: Bruno Cadonna <cadonna@apache.org>
      3faa6cf6
    • Guozhang Wang's avatar
      [9/N][Emit final] Emit final for session window aggregations (#12204) · ababc426
      Guozhang Wang 创作于
      * Add a new API for session windows to range query session window by end time (KIP related).
      * Augment session window aggregator with emit strategy.
      * Minor: consolidated some dup classes.
      * Test: unit test on session window aggregator.
      
      Reviewers: Guozhang Wang <wangguoz@gmail.com>
      ababc426
  8. 6月 29, 2022
  9. 6月 28, 2022
  10. 6月 26, 2022
  11. 6月 25, 2022
    • Bruno Cadonna's avatar
      KAFKA-10199: Expose tasks in state updater (#12312) · 1ceaf300
      Bruno Cadonna 创作于
      This PR exposes the tasks managed by the state updater. The state updater manages all tasks that were added to the state updater and that have not yet been removed from it by draining one of the output queues.
      
      Reviewers: Guozhang Wang <wangguoz@gmail.com>
      1ceaf300
  12. 6月 24, 2022
  13. 6月 23, 2022
    • David Arthur's avatar
      KAFKA-13966 Prepend bootstrap metadata to controller queue (#12269) · c6c9da02
      David Arthur 创作于
      Also fixes flaky QuorumControllerTest#testInvalidBootstrapMetadata
      
      Reviewers: Jason Gustafson <jason@confluent.io>
      c6c9da02
    • Chris Egerton's avatar
      KAFKA-13987: Isolate REST request timeout changes in Connect integration tests (#12291) · d00b7875
      Chris Egerton 创作于
      This causes the artificial reductions in the Connect REST request timeout to be more isolated. Specifically, they now only take place in the tests that need them (instead of any tests that happen to be running after the reduction has taken place and before it has been reset), and they are only performed for the requests that are expected to time out, before being immediately reset. This should help reduce spurious test failures (especially in slow environments like Jenkins) for all Connect integration tests that interact with the REST API, not just the BlockingConnectorTest test suite.
      
      Reviewers: Bruno Cadonna <cadonna@apache.org>
      d00b7875
    • Bruno Cadonna's avatar
      MINOR: Fix static mock usage in NamedCacheMetricsTest (#12322) · 8026a0ed
      Bruno Cadonna 创作于
      Before this PR the call to `StreamsMetricsImpl.addAvgAndMinAndMaxToSensor()`
      was just a call and not a verification on the mock. This miss happened
      during the switch from EasyMock to Mockito.
      
      Reviewers: John Roesler <vvcephei@apache.org>, Guozhang Wang <wangguoz@gmail.com>
      8026a0ed
    • Bruno Cadonna's avatar
      MINOR: Fix static mock usage in ProcessorNodeMetricsTest (#12323) · 269277f7
      Bruno Cadonna 创作于
      Before this PR the calls to StreamsMetricsImpl.addInvocationRateAndCountToSensor()
      were just calls and not a verification on the mock. This miss happened
      during the switch from EasyMock to Mockito.
      
      Reviewers: John Roesler <vvcephei@apache.org>, Guozhang Wang <wangguoz@gmail.com>
      269277f7
    • Bruno Cadonna's avatar
      MINOR: Fix static mock usage in StateStoreMetricsTest (#12325) · 6f5843da
      Bruno Cadonna 创作于
      Before this PR the calls to the static methods on
      StreamsMetricsImpl were just calls and not a verification
      on the mock. This miss happened during the switch from
      EasyMock to Mockito.
      
      Reviewers: John Roesler <vvcephei@apache.org>, Guozhang Wang <wangguoz@gmail.com>
      6f5843da
    • Jason Gustafson's avatar
      MINOR: Add ineligible replica reason to log message (#12328) · ead66451
      Jason Gustafson 创作于
      It's useful if the message about ineligible replicas explains the reason the replica is ineligible.
      
      Reviewers: David Jacot <djacot@confluent.io>
      ead66451
  14. 6月 22, 2022
    • David Jacot's avatar
      MINOR: Fix AlterPartitionManager topic id handling in response handler (#12317) · 3072b3d2
      David Jacot 创作于
      https://github.com/apache/kafka/commit/f83d95d9a28267f7ef7a7b1e584dcdb4aa842210 introduced topic ids in the AlterPartitionRequest/Response and we just found a bug in the request handling logic. The issue is the following.
      
      When the `AlterPartitionManager` receives the response, it builds the `partitionResponses` mapping `TopicIdPartition` to its result. `TopicIdPartition` is built from the response. Therefore if version < 2 is used, `TopicIdPartition` will have the `ZERO` topic id. Then the `AlterPartitionManager` iterates over the item sent to find their response. If an item has a topic id in its `TopicIdPartition` and version < 2 was used, it cannot find it because one has it and the other one has not.
      
      This patch fixes the issue by using `TopicPartition` as a key in the `partitionResponses` map. This ensures that the result can be found regardless of the topic id being set or not.
      
      Note that the case where version 2 is used is handled correctly because we already have logic to get back the topic name from the topic id in order to construct the `TopicPartition`.
      
      `testPartialTopicIds` test was supposed to catch this but it didn't due to the ignorable topic id field being present. This patch fixes the test as well.
      
      Reviewers: Kvicii <42023367+Kvicii@users.noreply.github.com>, Jason Gustafson <jason@confluent.io>
      3072b3d2
  15. 6月 21, 2022
  16. 6月 20, 2022
  17. 6月 18, 2022
    • Guozhang Wang's avatar
      KAFKA-13880: Remove DefaultPartitioner from StreamPartitioner (#12304) · cfdd5679
      Guozhang Wang 创作于
      There are some considerata embedded in this seemingly straight-forward PR that I'd like to explain here. The StreamPartitioner is used to send records to three types of topics:
      
      1) repartition topics, where key should never be null.
      2) changelog topics, where key should never be null.
      3) sink topics, where only non-windowed key could be null and windowed key should still never be null.
      Also, the StreamPartitioner is used as part of the IQ to determine which host contains a certain key, as determined by the case 2) above.
      
      This PR's main goal is to remove the deprecated producer's default partitioner, while with those things in mind such that:
      
      We want to make sure for not-null keys, the default murmur2 hash behavior of the streams' partitioner stays consistent with producer's new built-in partitioner.
      For null-keys (which is only possible for non-window default stream partition, and is never used for IQ), we would fix the issue that we may never rotate to a new partitioner by setting the partition as null hence relying on the newly introduced built-in partitioner.
      
      Reviewers: Artem Livshits <84364232+artemlivshits@users.noreply.github.com>, Matthias J. Sax <matthias@confluent.io>
      cfdd5679
  18. 6月 17, 2022
加载中