Skip to content

Feature/openj9 integration #20197

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 468 commits into
base: trunk
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
468 commits
Select commit Hold shift + click to select a range
4ce4ac7
KAFKA-14552: Assume a baseline of 3.0 for server protocol versions (#…
ijuma Jan 20, 2025
0384006
KAFKA-18583; Fix getPartitionReplicaEndpoints for KRaft (#18635)
dimitarndimitrov Jan 21, 2025
fa0475b
KAFKA-18487; Remove ReplicaManager#stopReplicas (#18647)
dajac Jan 21, 2025
c6d452b
KAFKA-17561: add processId tag to thread-state metric (#18581)
mjsax Jan 21, 2025
6612dd5
KAFKA-8862: Improve Producer error message for failed metadata update…
mjsax Jan 21, 2025
7f9cf89
KAFKA-17402: DefaultStateUpdated should transite task atomically (#18…
mjsax Jan 21, 2025
6fefeb9
KAFKA-18484 [1/N]; Handle exceptions from deferred events in coordina…
squah-confluent Jan 22, 2025
6877a2a
KAFKA-18595: Remove AuthorizerUtils#sessionToRequestContext (#18631)
frankvicky Jan 20, 2025
e13268c
KAFKA-18598: Remove ControllerMetadataMetrics ZK-related Metrics (#18…
m1a2st Jan 21, 2025
ac87155
KAFKA-18229: Move configs out of "kraft" directory (#18389)
frankvicky Jan 22, 2025
7fc59b0
KAFKA-18519: Remove Json.scala, cleanup AclEntry.scala (#18614)
m1a2st Jan 22, 2025
fd8556b
KAFKA-18517: Enable ConsumerBounceTest to run for new async consumer …
lianetm Jan 22, 2025
82ccf75
KAFKA-18575: Transaction Version 2 doesn't correctly handle race con…
jolshan Jan 22, 2025
6a6e628
MINOR: add the removed topic metrics to zk2kraft (#18658)
m1a2st Jan 23, 2025
c5a51ab
KAFKA-18486; [1/2] Update LocalLeaderEndPointTest (#18666)
dajac Jan 23, 2025
3fe33f8
KAFKA-18484 [2/2]; Handle exceptions during coordinator unload (#18667)
squah-confluent Jan 23, 2025
448b93b
KAFKA-18599: Remove Optional wrapping for forwardingManager in ApiVer…
mingyen066 Jan 22, 2025
9c996f7
KAFKA-18474: Remove zkBroker listener (#18477)
m1a2st Jan 24, 2025
f1b3634
KAFKA-18592 Cleanup ReplicaManager (#18621)
frankvicky Jan 23, 2025
5f3b175
KAFKA-18630: Clean ReplicaManagerBuilder (#18687)
frankvicky Jan 24, 2025
3ee4508
KAFKA-18533 Remove KafkaConfig zookeeper related logic (#18547)
m1a2st Jan 25, 2025
8d5bd25
KAFKA-18631 Remove ZkConfigs (#18693)
mingyen066 Jan 25, 2025
9aa21cc
KAFKA-18454 Publish build scans to develocity.apache.org (#18539)
clayburn Jan 21, 2025
54c3310
KAFKA-17792: Efficiently parse decimals with large exponents in Conne…
msillence Jan 27, 2025
7f9e3a3
KAFKA-17587 Refactor test infrastructure (#18602)
mumrah Jan 27, 2025
aeb9acc
KAFKA-18528: MultipleListenersWithSameSecurityProtocolBaseTest and Gs…
TaiJuWu Jan 27, 2025
7139bf0
KAFKA-18648: Add back support for metadata version 0-3 (#18716)
ijuma Jan 29, 2025
52280cd
KAFKA-18619: New consumer topic metadata events should set requireMet…
frankvicky Jan 29, 2025
e6cf82b
KAFKA-18646: Null records in fetch response breaks librdkafka (#18726)
ijuma Jan 29, 2025
c61cf07
KAFKA-18662: Return CONCURRENT_TRANSACTIONS on produce request in TV2…
CalvinConfluent Jan 29, 2025
ffb99a4
KAFKA-18383 Remove reserved.broker.max.id and broker.id.generation.en…
FrankYang0529 Jan 29, 2025
4eb35a4
KAFKA-16339: Add Kafka Streams migrating guide from transform to proc…
fonsdant Jan 29, 2025
90573b4
KAFKA-18569: New consumer close may wait on unneeded FindCoordinator …
frankvicky Jan 29, 2025
a2d88f8
KAFKA-18441: Fix flaky KafkaAdminClientTest#testAdminClientApisAuthen…
FrankYang0529 Jan 30, 2025
244be63
KAFKA-18570: Update documentation to add remainingLogsToRecover, rema…
mehbey Jan 30, 2025
9be3cb3
MINOR: fix typo in HTML docs (#18742)
agavra Jan 30, 2025
58a7fab
MINOR: prevent exception from HdrHistogram (#18674)
jeffkbkim Jan 29, 2025
37503cf
MINOR: remove close from contextual processors javadoc
fonsdant Jan 30, 2025
1f18753
KAFKA-18034: CommitRequestManager should fail pending requests on fat…
lianetm Jan 30, 2025
072c325
MINOR: Clean up for sasl endpoints (#18519)
showuon Jan 31, 2025
78057eb
KAFKA-18677; Update ConsoleConsumerTest system test (#18763)
frankvicky Jan 31, 2025
7eed1fc
KAFKA-18146; tests/kafkatest/tests/core/upgrade_test.py needs to be r…
dajac Jan 31, 2025
9c02072
KAFKA-17182: Consumer fetch sessions are evicted too quickly with Asy…
kirktrue Jan 30, 2025
a2d2556
KAFKA-18320; Ensure that assignors are at the right place (#18750)
dajac Jan 31, 2025
685ce7b
KAFKA-18660: Transactions Version 2 doesn't handle epoch overflow cor…
jolshan Jan 31, 2025
fc3dca4
Revert "KAFKA-17182: Consumer fetch sessions are evicted too quickly …
lianetm Jan 31, 2025
0e01d38
KAFKA-18659: librdkafka compressed produce fails unless api versions …
ijuma Feb 2, 2025
563d729
KAFKA-18674 Document the incompatible changes in parsing --bootstrap-…
mingyen066 Feb 3, 2025
67b29e1
KAFKA-18678 Update TestVerifiableProducer system test (#18768)
FrankYang0529 Feb 3, 2025
2c7a841
MINOR: add removed controller metrics to zk2kraft (#18654)
FrankYang0529 Jan 25, 2025
a9a535d
MINOR: Remove the test for ZooKeeper metrics used by ZooKeeperClient …
Yunyung Feb 3, 2025
844d2c0
KAFKA-17631 Convert SaslApiVersionsRequestTest to kraft (#18330)
FrankYang0529 Feb 3, 2025
9fb43fc
KAFKA-18676; Update Benchmark system tests (#18785)
FrankYang0529 Feb 3, 2025
b49c573
KAFKA-18685: Cleanup DynamicLogConfig constructor (#18764)
m1a2st Feb 3, 2025
dd40efb
KAFKA-18655: Implement the consumer group size counter with scheduled…
dongnuo123 Feb 3, 2025
00630ce
KAFKA-18672; CoordinatorRecordSerde must validate value version (4.0)…
dajac Feb 3, 2025
85bd059
KAFKA-18545: Remove Zookeeper logic from LogManager (#18592)
m1a2st Feb 3, 2025
d119864
KAFKA-18654 [1/2]: Transaction Version 2 performance regression due t…
jolshan Feb 3, 2025
53aa8de
MINOR: fix NPE in KS `Topology` for new `AutoOffsetReset` (#18780)
mjsax Feb 4, 2025
593c99b
MINOR: Fix Benchmark sys tests (#18796)
dajac Feb 4, 2025
ff798dc
MINOR: Fix PerformanceService sys test (#18797)
dajac Feb 4, 2025
fe258c7
MINOR: Fix TestBounce sys test (#18798)
dajac Feb 4, 2025
8026d6b
KAFKA-18230: Handle not controller or not leader error in admin clien…
showuon Feb 4, 2025
64a26f9
KAFKA-18691: Flaky test testFencingOnTransactionExpiration (#18793)
jolshan Feb 4, 2025
dbf4cef
KAFKA-18690: Keep leader metadata for RE2J-assigned partitions (#18777)
squah-confluent Feb 4, 2025
32064d5
KAFKA-18305: validate controller.listener.names is not in inter.broke…
kevin-wu24 Dec 19, 2024
ef9f6fb
KAFKA-18131: Improve logs for voters (#18028)
frankvicky Jan 6, 2025
0d2fd09
KAFKA-16446: Improve controller event duration logging (#15622)
mumrah Jan 6, 2025
501043f
KAFKA-16540: enforce min.insync.replicas config invariants for ELR (#…
CalvinConfluent Jan 8, 2025
ffc5742
KAFKA-16540: Clear ELRs when min.insync.replicas is changed. (#18148)
CalvinConfluent Jan 24, 2025
eb352ff
KAFKA-18649: complete ClearElrRecord handling (#18708)
CalvinConfluent Jan 29, 2025
226532a
KAFKA-18635: reenable the unclean shutdown detection (#18277)
CalvinConfluent Feb 4, 2025
98d238a
KAFKA-16524; Metrics for KIP-853 (#18304)
kevin-wu24 Jan 30, 2025
5d3d725
KAFKA-18675 Add tests for valid and invalid broker addresses (#18781)
mingyen066 Feb 5, 2025
6684319
KAFKA-18645: New consumer should align close timeout handling with cl…
frankvicky Feb 5, 2025
4c9d335
KAFKA-18206: EmbeddedKafkaCluster must set features (#18189)
brandboat Feb 5, 2025
a9b1549
MINOR: Removing share module from settings (#18806)
apoorvmittal10 Feb 5, 2025
10105f9
MINOR: Fix wrong config property in KafkaConfigTest (#18815)
mingyen066 Feb 6, 2025
8b0ef93
KAFKA-18499 Clean up zookeeper from LogConfig (#18583)
mingdaoy Jan 25, 2025
f3d2607
MINOR: Remove unused QuotaConfgHandler (#18617)
frankvicky Jan 20, 2025
cf8d3ac
KAFKA-18530 Remove ZooKeeperInternals (#18641)
m1a2st Feb 6, 2025
b6e6a3c
KAFKA-18360 Remove zookeeper configurations (#18566)
cmccabe Feb 6, 2025
0c487c2
KAFKA-18741 document the removal of `inter.broker.protocol.version` (…
Rancho-7 Feb 6, 2025
5bacdbe
MINOR: add missing <li> to upgrade.html (#18817)
FrankYang0529 Feb 6, 2025
dcc27ec
MINOR: update Kafka Streams `Topology` JavaDocs (#18814)
mjsax Feb 6, 2025
b3837f8
KAFKA-17833: Convert DescribeAuthorizedOperationsTest to use KRaft (#…
FrankYang0529 Feb 7, 2025
54eadda
MINOR: Fix streams smoke test flush records (#18830)
lucasbru Feb 7, 2025
562ecf4
MINOR: make leaking public member in StreamsConfig non-private
mjsax Feb 8, 2025
c3ca56e
MINOR: Accept specifying consumer group assignors by their short name…
dajac Feb 10, 2025
ad6db09
KAFKA-18225 ClientQuotaCallback#updateClusterMetadata is unsupported …
m1a2st Feb 10, 2025
2452d67
KAFKA-18743 Remove leader.imbalance.per.broker.percentage as it is no…
Yunyung Feb 10, 2025
8e8423f
KAFKA-18366 Remove KafkaConfig.interBrokerProtocolVersion (#18820)
m1a2st Feb 10, 2025
438fbf5
KAFKA-18396: Migrate log4j1 configuration to log4j2 in KafkaDockerWra…
frankvicky Feb 11, 2025
7fb3879
KAFKA-18758: NullPointerException in shutdown following InvalidConfi…
edoardocomar Feb 11, 2025
57f7944
MINOR: Fix log compaction system test (#18857)
dajac Feb 11, 2025
c1953c4
MINOR: Fix reassign partitions system test (#18860)
dajac Feb 11, 2025
da641dc
KAFKA-18771: fix Flaky test KRaftClusterTest .testDescribeQuorumReque…
FrankYang0529 Feb 12, 2025
44a0dce
KAFKA-15443: Upgrade RocksDB to 9.7.3 (#18275)
swikarpat Jan 9, 2025
f5f58e8
KAFKA-17298: Update upgrade notes for 4.0 KIP-848 (#18756)
lianetm Feb 13, 2025
720f4f4
KAFKA-18654[2/2]: Transction V2 retry add partitions on the server si…
CalvinConfluent Feb 13, 2025
b60d05c
KAFKA-17182: Consumer fetch sessions are evicted too quickly with Asy…
kirktrue Feb 13, 2025
91958fc
MINOR: Adjust javadoc to reflect the correct status of standby task T…
bbejeck Feb 13, 2025
ba067ca
KAFKA-18634: Fix ELR metadata version issues (#18680)
CalvinConfluent Feb 14, 2025
ffa2810
MINOR: Add KIP-848's metric to the doc (#18890)
dajac Feb 14, 2025
e37af20
MINOR: Mark IBP_4_0_IV3 as production ready! (#18902)
dajac Feb 14, 2025
eddae2e
MINOR: TransactionManager logs the epoch bump less frequently. (#18895)
CalvinConfluent Feb 14, 2025
e6609d3
MINOR: Add release notes for Transactions Server Side Defense (KIP-89…
jolshan Feb 14, 2025
6abb477
KAFKA-18790 Fix testCustomQuotaCallback (#18906)
mingyen066 Feb 14, 2025
8797c90
KAFKA-18803 The acls would appear at the wrong level of the metadata …
Yunyung Feb 16, 2025
c4ea05f
KAFKA-18784 Fix ConsumerWithLegacyMessageFormatIntegrationTest (#18889)
FrankYang0529 Feb 17, 2025
7a749b5
HOTFIX: StoreChangelogReader should require stable consumer group (#1…
mjsax Feb 17, 2025
8aea5d5
MINOR: Remove dropwizard metrics from dependencies.gradle (#18932)
dajac Feb 18, 2025
e0580b1
KAFKA-18807; Fix thread idle ratio metric (#18934)
squah-confluent Feb 18, 2025
10c849f
MINOR: add docs for "org.apache.kafka.sasl.oauthbearer.allowed.urls" …
showuon Feb 18, 2025
e050a1f
MINOR: Add verify_license tool (#18931)
dajac Feb 18, 2025
421b9a6
MINOR: Update LICENSE-binary (#18943)
dajac Feb 18, 2025
546d9ce
KAFKA-18773 Migrate the log4j1 config to log4j 2 for native image and…
FrankYang0529 Feb 18, 2025
b91f64c
MINOR: Fix the missing and updated licenses (#18950)
Parkerhiphop Feb 18, 2025
6f1e188
MINOR: Tweak default group coordinator config & upgrade notes (#18948)
dajac Feb 18, 2025
bfb0f78
MINOR: Java version and TLS documentation improvements (#18822)
ijuma Feb 10, 2025
3fbbd0a
KAFKA-18601: Assume a baseline of 3.3 for server protocol versions (#…
ijuma Feb 19, 2025
eacdb09
Add TransactionAbortableException and Timeout Exception handling inst…
k-raina Feb 19, 2025
909fae1
MINOR: Fix incorrect return value from upgradeFeatures #18958
CalvinConfluent Feb 19, 2025
ba52124
MINOR: Fix typo in ClusterControlManager (#18886)
johnny94 Feb 13, 2025
8a08ca6
MINOR: Deflake EligibleLeaderReplicasIntegrationTest (#18923)
CalvinConfluent Feb 20, 2025
35a372c
KAFKA-18641: AsyncKafkaConsumer could lose records with auto offset c…
frankvicky Feb 20, 2025
d3791c3
KAFKA-18831 Migrating to log4j2 introduce behavior changes of adjusti…
frankvicky Feb 21, 2025
c7db98e
KAFKA-18829: Added check before converting to IMPLICIT mode (#18964) …
ShivsundarR Feb 21, 2025
ad89f9e
MINOR: Rearrange configs in GroupCoordinatorConfigs (#18970)
dajac Feb 21, 2025
2f181c9
KAFKA-18737 KafkaDockerWrapper setup functions fails due to storage f…
frankvicky Feb 21, 2025
f026b1c
KAFKA-18813: [2/N] Client support for TopicAuthException in HB path (…
lianetm Feb 21, 2025
8383c88
MINOR: Move the ELR default version to 4.1 (#18954)
CalvinConfluent Feb 21, 2025
364479c
KAFKA-18813: [3/N] Client support for TopicAuthException in DescribeC…
lianetm Feb 21, 2025
bb89151
MINOR: Update release script for 4.0 (#18999)
dajac Feb 21, 2025
169712d
Revert "KAFKA-16803: Change fork, update ShadowJavaPlugin to 8.1.7 (#…
apoorvmittal10 Feb 22, 2025
3a2af72
MINOR: Fix fail e2e TransactionsMixedVersionsTest#test_transactions_m…
m1a2st Feb 22, 2025
2a9241b
MINOR: Fix fail e2e TestUpgrade#test_combined_mode_upgrade and test_i…
frankvicky Feb 22, 2025
9c279e7
MINOR: Update version is doc (#19006)
dajac Feb 22, 2025
104b097
MINOR: Fix fail e2e transactions_upgrade_test.py::TransactionsUpgrade…
m1a2st Feb 22, 2025
44495e4
KAFKA-15583 doc update for the "strict min ISR" rule (#18880)
CalvinConfluent Feb 23, 2025
da8f390
MINOR: Update upgrade notes for 4.0.0 (#18960)
ijuma Feb 19, 2025
4e9d2fe
MINOR: Remove request log space added inadvertently (#19011)
ijuma Feb 23, 2025
e8cc75b
KIP-966 part 1 release doc (#18898)
CalvinConfluent Feb 24, 2025
6cad956
MINOR: update truncation test (#18952)
CalvinConfluent Feb 24, 2025
eacf49f
KAFKA-18281: Kafka is improperly validating non-advertised listeners …
FrankYang0529 Feb 25, 2025
da3b8e8
MINOR: Add a separate page for zk2kraft.html (#18961)
frankvicky Feb 25, 2025
ed23f6b
KAFKA-18839: Drop EAGER rebalancing support in Kafka Streams (#18988)
ableegoldman Feb 26, 2025
d864240
MINOR: Remove old message format documentation (#19033)
ijuma Feb 26, 2025
8e44ddc
KAFKA-18813: ConsumerGroupHeartbeat API and ConsumerGroupDescribe API…
dongnuo123 Feb 26, 2025
32d012f
KAFKA-18869 add remote storage threads to "Updating Thread Configs" s…
gongxuanzhang Feb 27, 2025
242573d
KAFKA-18850 Fix the docs of org.apache.kafka.automatic.config.provide…
Rancho-7 Feb 27, 2025
2f9da46
KAFKA-18849 Add "strict min ISR" to the docs of "min.insync.replicas"…
clarkwtc Feb 27, 2025
e7a13f7
KAFKA-18860 Remove Missing Features section (#19048)
frankvicky Feb 27, 2025
ae798f1
KAFKA-18868 add the "default value" explanation to the docs of num.re…
LoganZhuZzz Mar 1, 2025
d8bfd80
KAFKA-18908 Document that the size of appended value can't be larger …
frankvicky Mar 2, 2025
d91fbc7
HOTFIX: Revert "KAFKA-18067: Kafka Streams can leak Producer client u…
cadonna Mar 3, 2025
9516b3b
KAFKA-18864:remove the Evolving tag from stable public interfaces (#1…
gongxuanzhang Feb 28, 2025
6918648
KAFKA-18844: Stale features information in QuorumController#registerB…
FrankYang0529 Feb 27, 2025
145789a
MINOR: Don't print cleaning group metadata log if empty (#19080)
dajac Mar 3, 2025
dadd02d
HOTFIX: remove PageView example to support Java11 for :streams:exampl…
mjsax Mar 3, 2025
1b424d2
KAFKA-18916; Resolved regular expressions must update the group by to…
dajac Mar 4, 2025
1075021
KAFKA-18876 4.0 documentation improvement (#19065)
mingdaoy Mar 4, 2025
9ef4d5a
KAFKA-18917: TransformValues throws NPE (#19089)
lucasbru Mar 4, 2025
6146436
KAFKA-18422 add link of KIP-1124 to "rolling upgrade" section (#19097)
brandboat Mar 4, 2025
bae0426
MINOR: Fix grammar and clarity in zk2kraft.html (#19096)
MahsaSeifikar Mar 4, 2025
43a7a3a
MINOR: Prevent broker fencing by adjusting resendExponentialBackoff i…
MahsaSeifikar Mar 3, 2025
9311a25
KAFKA-18886 add behavior change of CreateTopicPolicy and AlterConfigP…
LoganZhuZzz Mar 5, 2025
80cc279
KAFKA-18876: 4.0 docs follow-up (#19103)
mingdaoy Mar 5, 2025
22d79b2
KAFKA-18919 Clarify that KafkaPrincipalBuilder classes must also impl…
johnny94 Mar 5, 2025
4a50041
Revert "KAFKA-18246 Fix ConnectRestApiTest.test_rest_api by adding mu…
chia7712 Mar 6, 2025
43897f8
MINOR: Update upgrade steps (#19132)
dajac Mar 6, 2025
4ffe09d
MINOR: Update log4j2 to 2.24.3 (#19135)
ijuma Mar 6, 2025
dccd69f
KAFKA-18648: Make `records` in `FetchResponse` nullable again (#19131)
ijuma Mar 6, 2025
dfbeae8
MINOR: reduce per-batch logging to TRACE level (#19101)
mjsax Mar 6, 2025
20fa27c
MINOR: zk2kraft: add more information about kafka-configs.sh (#19100)
cmccabe Mar 7, 2025
cf269be
KAFKA-18046; High CPU usage when using Log4j2 (#19138)
dajac Mar 7, 2025
5c0b8be
KAFKA-18920: The kcontrollers must set kraft.version in ApiVersionsRe…
cmccabe Mar 7, 2025
d671e7d
KAFKA-18940: fix electionWasClean (#19156)
CalvinConfluent Mar 7, 2025
ed43537
MINOR: Fix missing argument in kafka-features.sh upgrade doc (#19160)
MahsaSeifikar Mar 7, 2025
2e6fe07
HOTFIX: Add missing file from KAFKA-18920 commit.
cmccabe Mar 7, 2025
42cac5a
MINOR: Adjust ToC of zk2kraft and fix wrong section number of docker …
frankvicky Mar 9, 2025
5df681b
MINOR: improve upgrade to v4.0.0 doc (#19172)
showuon Mar 11, 2025
8f0ce72
KAFKA-18195: Fix Kafka Streams broker compatibility matrix (#18258)
FrankYang0529 Mar 12, 2025
aba4f5e
KAFKA-18074: Add kafka client compatibility matrix (#18091)
m1a2st Mar 12, 2025
8f765a1
KAFKA-18422 Adjust Kafka client upgrade path section (#19119)
mingdaoy Mar 12, 2025
4990c97
KAFKA-18979; Report correct kraft.version in ApiVersions (#19205)
jsancio Mar 13, 2025
3e791d7
KAFKA-18943: Kafka Streams incorrectly commits TX during task revokat…
mjsax Mar 13, 2025
985bc99
Bump version to 4.0.0
dajac Mar 14, 2025
9139079
adding Dockerfile and Jenkinsfile plus modified kafka-run-class.sh bu…
Jul 29, 2025
a01d348
updated the Dockerfile to use the IBM Semeru JDK and not the JRE to h…
JTSweet Jul 29, 2025
963613c
updated the Dockerfile to build the image from a stable base OS and i…
JTSweet Jul 29, 2025
db7ded1
updated the Jenksinsfile to include dynamic agent selection, specify …
JTSweet Jul 29, 2025
37d004c
updated the Jenkinsfile to resolve issue agent label by using if stat…
JTSweet Jul 29, 2025
9680a35
corrected the DOCKER_CREDENTIALS_ID in the Jenkinsfile
JTSweet Jul 29, 2025
212c918
fix the post section of the Jenkins file to use the same label as the…
JTSweet Jul 29, 2025
1f71e11
corrected Docker hub repository url
JTSweet Jul 29, 2025
a01aa86
corrected post block of Jenkinsfile
JTSweet Jul 29, 2025
d832ace
another fix for the post block of the Jenkinsfile
JTSweet Jul 29, 2025
9ec67f6
set org.gradle.workers.max=10 in gradle.properties
JTSweet Jul 29, 2025
19cdf47
set org.gradle.workers.max=1 in hopes to workaround native OOM issue …
JTSweet Jul 29, 2025
27bc409
updated subprojects with Java properties for scala compilation
JTSweet Jul 29, 2025
67dca68
updated the Java properties for OpenJ9 to included -Xtune:virtualized…
JTSweet Jul 29, 2025
226764a
update package artifacts stage to be more precise with its sh step
JTSweet Jul 29, 2025
ed7e602
made a fix to the post block when defining/initializing the agent
JTSweet Jul 29, 2025
32234a0
added -Dscala.concurrent.context.numThreads=1 to the openj9 Java prop…
JTSweet Jul 29, 2025
b800ee5
added -Xjit:adaptiveParallelismFactor=1 to the JVM arguments in the s…
JTSweet Jul 30, 2025
e02c87d
removed the -Xjit:adaptiveParallelismFactor as it is not supported in…
JTSweet Jul 30, 2025
23c9e00
Lowering to -Xjit:optlevel=cold
JTSweet Jul 30, 2025
4ee5d3b
setting -Xjit:optlevel=noOpt
JTSweet Jul 30, 2025
dbae715
set -Xjit:count=5 and -Xjt:optlevel=noOpt
JTSweet Jul 30, 2025
80ef37c
set -Xjit:count=15 and still have -Xjit:optlevel=noOpt
JTSweet Jul 30, 2025
389e8c4
set -Xjit:count=150 and still have -Xjit:optlevel=noOpt
JTSweet Jul 30, 2025
746b8f4
removed -Xjit:count and -Xjit:optlevel and set -Xnojit
JTSweet Jul 30, 2025
86413f7
moving JVM arguments into OpenJ9 environment variable in Jenkinsfile …
JTSweet Jul 30, 2025
050fa21
set agent to 200~dual_xeon_ibm_openj9_jdk21 and added an export line …
JTSweet Jul 30, 2025
11b1226
corrected agent label syntax
JTSweet Jul 30, 2025
26f42b1
set Xjit:count=5000,-Xjit:optlevel=noOpt in the subprojects block
JTSweet Jul 30, 2025
31bb1ee
fixed syntax error with -Xjit in subprojects block
JTSweet Jul 30, 2025
92c1423
disabling JIT for scala compilation
JTSweet Jul 30, 2025
ae059a8
setting no JIT to test for a successful build
JTSweet Jul 30, 2025
9e30510
forcing a truly sequential build with no forking and no JIT compilation
JTSweet Jul 30, 2025
5e7bcab
removing -Xnojit and the forcing of the sequential build, added Java …
Aug 1, 2025
76640b6
lowering the scala worker heap size from 4g to 2g to leave more nativ…
Aug 1, 2025
8309b31
updated Jenkinsfile to include shell step for outputing ulimits and s…
Aug 1, 2025
fa859da
add taskset -c 0-9 to the gradlew commands to limit the number of cor…
JTSweet Aug 1, 2025
c1fe59e
adding taskset -c 0-9 to one of the gradlew commands that I missed
JTSweet Aug 1, 2025
8b68d1d
set -XX:ActiveProcessorCount=10 in the JAVA_TOOLS_OPTION
JTSweet Aug 1, 2025
f85bf07
adding -XX:ActiveProcessorCount=10 to gradle.properties and build.gradle
JTSweet Aug 1, 2025
7fdb782
updated options.forkOptions.jvmArgs with += instead of =
JTSweet Aug 2, 2025
a2b47c6
added -Djava.util.concurrent.ForkJoinPool.common.parallelism=4 to the…
JTSweet Aug 2, 2025
b797d8a
set -Xmx2G in the ScalaCompile and JavaCompile blocks of the subproje…
JTSweet Aug 2, 2025
ff45f38
set the default gradle JVM arguments to match other sections
JTSweet Aug 2, 2025
3247c69
added -Djava.util.concurrent.ForkJoinPool.common.parallelism=4 to def…
JTSweet Aug 2, 2025
2cc6ce4
commented out JAVA_TOOLS_OPTION for IBM J9 to rely on build.gradle su…
JTSweet Aug 2, 2025
2942165
updated Jenkins file to run strace on the gradlew command
JTSweet Aug 2, 2025
ddfb77a
uncommented JAVA_TOOLS_OPTION but will make it blank during build
JTSweet Aug 2, 2025
f55e4d7
updated ScalaCompile and JavaComplie blocks to use -Xss256k
JTSweet Aug 2, 2025
5ccb92d
added --no-daemon to gradle args for testing
JTSweet Aug 2, 2025
9dccb0f
reducing heap size for the forked ScalaCompile and JavaCompile
JTSweet Aug 4, 2025
24636a4
increasing -XX:ActiveProcessorCount to 20 (previously 10)
JTSweet Aug 4, 2025
e2d47d2
increased -Xmx to 1536M from 1GB in the ScalaCompile and JavaCompile …
JTSweet Aug 4, 2025
63e55db
reducing -XX:ActiveProcessorCount to 4 from 20 to resolve native memo…
JTSweet Aug 4, 2025
986afec
set heap back to 2G and Xss512k for ScalaCompile and JavaCompile bloc…
JTSweet Aug 4, 2025
27e63c3
adding an updated strace command to further investigate native OOM in…
JTSweet Aug 4, 2025
9c444f9
lowering ActiveProcessorCount to 2 and ForkJoinPool.common.parallelis…
JTSweet Aug 4, 2025
78cce95
corrected Dockerfile and Jenkinsfile to the current version, build.gr…
JTSweet Aug 7, 2025
3553961
set max heap to 2G for gradle
JTSweet Aug 7, 2025
1db5b2a
increase Java heap to 3G for gradle
JTSweet Aug 7, 2025
a6f0801
setting max heap for gradle to 4gb
JTSweet Aug 7, 2025
5a7e948
bumping gradlew maximum heap to 5g to address java heap out of memory…
JTSweet Aug 7, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions .github/actions/run-gradle/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@
# under the License.
#
---
name: "Gradle Setup"
description: "Setup Java and Gradle"
name: "Run Tests with Gradle"
description: "Run specified Gradle test tasks with configuration for timeout and test catalog."
inputs:
# Composite actions do not support typed parameters. Everything is treated as a string
# See: https://github.com/actions/runner/issues/2238
Expand Down
35 changes: 16 additions & 19 deletions .github/scripts/develocity_reports.py
Original file line number Diff line number Diff line change
Expand Up @@ -314,7 +314,7 @@ def get_build_info(self, build_ids: List[str], project: str, test_type: str, que

# Remove already found builds from the search list
build_ids = [bid for bid in build_ids if bid not in builds]

if not build_ids:
logger.info("All builds found in cache")
return builds
Expand Down Expand Up @@ -733,7 +733,7 @@ def print_summary(problematic_tests: Dict[str, Dict], flaky_regressions: Dict[st

# Combine and sort all test cases by failure rate
all_problem_cases = []

# Process problematic quarantined tests
if len(problematic_tests) > 0:
print(f"Found {len(problematic_tests)} tests that have been quarantined for a while and are still flaky.")
Expand All @@ -742,15 +742,15 @@ def print_summary(problematic_tests: Dict[str, Dict], flaky_regressions: Dict[st
total_runs = test_case.outcome_distribution.total
method_name = test_case.name.split('.')[-1]
if total_runs > 0:
failure_rate = (test_case.outcome_distribution.failed +
failure_rate = (test_case.outcome_distribution.failed +
test_case.outcome_distribution.flaky) / total_runs
all_problem_cases.append({
'class': full_class_name,
'method': method_name,
'failure_rate': failure_rate,
'total_runs': total_runs
})

# Process flaky regressions
if len(flaky_regressions) > 0:
print(f"Found {len(flaky_regressions)} tests that have started recently failing.")
Expand All @@ -763,8 +763,8 @@ def print_summary(problematic_tests: Dict[str, Dict], flaky_regressions: Dict[st
})

# Sort by failure rate descending
sorted_cases = sorted(all_problem_cases,
key=lambda x: x['failure_rate'],
sorted_cases = sorted(all_problem_cases,
key=lambda x: x['failure_rate'],
reverse=True)

# Group by class
Expand All @@ -790,15 +790,12 @@ def main():
token = None
if os.environ.get("DEVELOCITY_ACCESS_TOKEN"):
token = os.environ.get("DEVELOCITY_ACCESS_TOKEN")
elif os.environ.get("GE_ACCESS_TOKEN"):
# Special case for when we run in GHA
token = os.environ.get("GE_ACCESS_TOKEN").removeprefix("ge.apache.org=")
else:
print("No auth token was specified. You must set DEVELOCITY_ACCESS_TOKEN to your personal access token.")
exit(1)

# Configuration
BASE_URL = "https://ge.apache.org"
BASE_URL = "https://develocity.apache.org"
PROJECT = "kafka"
QUARANTINE_THRESHOLD_DAYS = 7
MIN_FAILURE_RATE = 0.1
Expand Down Expand Up @@ -862,7 +859,7 @@ def main():
print(f"\nRecent Executions (last {len(details['recent_executions'])} runs):")
for entry in sorted(details['recent_executions'], key=lambda x: x.timestamp)[-5:]:
print(f" {entry.timestamp.strftime('%Y-%m-%d %H:%M')} - {entry.outcome}")

# Print Cleared Tests
print("\n## Cleared Tests (Ready for Unquarantine)")
if not cleared_tests:
Expand All @@ -881,19 +878,19 @@ def main():
print(f"\nRecent Executions (last {len(details['recent_executions'])} runs):")
for entry in sorted(details['recent_executions'], key=lambda x: x.timestamp):
print(f" {entry.timestamp.strftime('%Y-%m-%d %H:%M')} - {entry.outcome}")

# Print Defective Tests
print("\n## High-Priority Quarantined Tests")
if not problematic_tests:
print("No high-priority quarantined tests found.")
else:
print("These are tests which have been quarantined for several days and need attention.")
sorted_tests = sorted(
problematic_tests.items(),
problematic_tests.items(),
key=lambda x: (x[1]['failure_rate'], x[1]['days_quarantined']),
reverse=True
)

print(f"\nFound {len(sorted_tests)} high-priority quarantined test classes:")
for full_class_name, details in sorted_tests:
class_result = details['container_result']
Expand All @@ -916,21 +913,21 @@ def main():
key=lambda x: (x.outcome_distribution.failed + x.outcome_distribution.flaky) / x.outcome_distribution.total if x.outcome_distribution.total > 0 else 0,
reverse=True
)

for test_method in sorted_methods:
total_runs = test_method.outcome_distribution.total
if total_runs > 0:
failure_rate = (test_method.outcome_distribution.failed + test_method.outcome_distribution.flaky) / total_runs

# Extract the method name from the full test name
method_name = test_method.name.split('.')[-1]

print(f"\n → {method_name}")
print(f" Failure Rate: {failure_rate:.2%}")
print(f" Runs: {total_runs:3d} | Failed: {test_method.outcome_distribution.failed:3d} | "
f"Flaky: {test_method.outcome_distribution.flaky:3d} | "
f"Passed: {test_method.outcome_distribution.passed:3d}")

# Show test method timeline
if test_method.timeline:
print(f"\n Recent Executions (last {min(3, len(test_method.timeline))} of {len(test_method.timeline)} runs):")
Expand All @@ -939,7 +936,7 @@ def main():
for entry in sorted(test_method.timeline, key=lambda x: x.timestamp)[-3:]:
date_str = entry.timestamp.strftime('%Y-%m-%d %H:%M')
print(f" {date_str:<17} {entry.outcome:<10} {entry.build_id}")

except Exception as e:
logger.exception("Error occurred during report generation")
print(f"Error occurred: {str(e)}")
Expand Down
24 changes: 18 additions & 6 deletions .github/scripts/junit.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,10 @@ class TestSuite:
def clean_test_name(test_name: str) -> str:
cleaned = test_name.strip("\"").rstrip("()")
m = method_matcher.match(cleaned)
return m.group(1)
if m is None:
raise ValueError(f"Could not parse test name '{test_name}'. Expected a valid Java method name.")
else:
return m.group(1)


class TestCatalogExporter:
Expand Down Expand Up @@ -402,10 +405,19 @@ def split_report_path(base_path: str, report_path: str) -> Tuple[str, str]:
print("<hr/>")

# Print special message if there was a timeout
exit_code = get_env("GRADLE_EXIT_CODE", int)
if exit_code == 124:
test_exit_code = get_env("GRADLE_TEST_EXIT_CODE", int)
quarantined_test_exit_code = get_env("GRADLE_QUARANTINED_TEST_EXIT_CODE", int)

if test_exit_code == 124 or quarantined_test_exit_code == 124:
# Special handling for timeouts. The exit code 124 is emitted by 'timeout' command used in build.yml.
# A watchdog script "thread-dump.sh" will use jstack to force a thread dump for any Gradle process
# still running after the timeout. We capture the exit codes of the two test tasks and pass them to
# this script. If either "test" or "quarantinedTest" fails due to timeout, we want to fail the overall build.
thread_dump_url = get_env("THREAD_DUMP_URL")
logger.debug(f"Gradle command timed out. These are partial results!")
if test_exit_code == 124:
logger.debug(f"Gradle task for 'test' timed out. These are partial results!")
else:
logger.debug(f"Gradle task for 'quarantinedTest' timed out. These are partial results!")
logger.debug(summary)
if thread_dump_url:
print(f"\nThe JUnit tests were cancelled due to a timeout. Thread dumps were generated before the job was cancelled. "
Expand All @@ -414,7 +426,7 @@ def split_report_path(base_path: str, report_path: str) -> Tuple[str, str]:
else:
logger.debug(f"Failing this step because the tests timed out. Thread dumps were not archived, check logs in JUnit step.")
exit(1)
elif exit_code in (0, 1):
elif test_exit_code in (0, 1):
logger.debug(summary)
if total_failures > 0:
logger.debug(f"Failing this step due to {total_failures} test failures")
Expand All @@ -425,5 +437,5 @@ def split_report_path(base_path: str, report_path: str) -> Tuple[str, str]:
else:
exit(0)
else:
logger.debug(f"Gradle had unexpected exit code {exit_code}. Failing this step")
logger.debug(f"Gradle had unexpected exit code {test_exit_code}. Failing this step")
exit(1)
41 changes: 25 additions & 16 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,10 @@ name: Check and Test
on:
workflow_call:
inputs:
gradle-cache-read-only:
description: "Should the Gradle cache be read-only?"
is-trunk:
description: "Is this a trunk build?"
default: true
type: boolean
gradle-cache-write-only:
description: "Should the Gradle cache be write-only?"
default: false
type: boolean
is-public-fork:
description: "Is this CI run from a public fork?"
default: true
Expand Down Expand Up @@ -105,9 +101,9 @@ jobs:
uses: ./.github/actions/setup-gradle
with:
java-version: 23
gradle-cache-read-only: ${{ inputs.gradle-cache-read-only }}
gradle-cache-write-only: ${{ inputs.gradle-cache-write-only }}
develocity-access-key: ${{ secrets.GE_ACCESS_TOKEN }}
gradle-cache-read-only: ${{ !inputs.is-trunk }}
gradle-cache-write-only: ${{ inputs.is-trunk }}
develocity-access-key: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
- name: Compile and validate
env:
SCAN_ARG: ${{ inputs.is-public-fork && '--no-scan' || '--scan' }}
Expand All @@ -117,7 +113,7 @@ jobs:
# --scan: Publish the build scan. This will only work on PRs from apache/kafka and trunk
# --no-scan: For public fork PRs, we won't attempt to publish the scan
run: |
./gradlew --build-cache --info $SCAN_ARG check -x test
./gradlew --build-cache --info $SCAN_ARG check siteDocTar -x test
- name: Archive check reports
if: always()
uses: actions/upload-artifact@v4
Expand All @@ -137,6 +133,16 @@ jobs:
run: python .github/scripts/rat.py
env:
GITHUB_WORKSPACE: ${{ github.workspace }}
- name: Check generated documentation
# Check if there are any empty files under ./site-docs/generated, If any empty files are found, print an error
# message and list the empty files
run: |
tar zxvf core/build/distributions/kafka_2.13-$(./gradlew properties | grep version: | awk '{print $NF}' | head -n 1)-site-docs.tgz
if find ./site-docs/generated -type f -exec grep -L "." {} \; | grep -q "."; then
echo "One or more documentation files are empty!" >&2
find ./site-docs/generated -type f -exec grep -L "." {} \; >&2
exit 1
fi

test:
needs: [validate, load-catalog]
Expand All @@ -146,6 +152,8 @@ jobs:
fail-fast: false
matrix:
java: [ 23, 17 ] # If we change these, make sure to adjust ci-complete.yml
outputs:
timed-out: ${{ (steps.junit-test.outputs.gradle-exitcode == '124' || steps.junit-quarantined-test.outputs.gradle-exitcode == '124') }}
name: JUnit tests Java ${{ matrix.java }}
steps:
- name: Checkout code
Expand All @@ -158,9 +166,9 @@ jobs:
uses: ./.github/actions/setup-gradle
with:
java-version: ${{ matrix.java }}
gradle-cache-read-only: ${{ inputs.gradle-cache-read-only }}
gradle-cache-write-only: ${{ inputs.gradle-cache-write-only }}
develocity-access-key: ${{ secrets.GE_ACCESS_TOKEN }}
gradle-cache-read-only: ${{ !inputs.is-trunk }}
gradle-cache-write-only: ${{ inputs.is-trunk }}
develocity-access-key: ${{ secrets.DEVELOCITY_ACCESS_KEY }}

# If the load-catalog job failed, we won't be able to download the artifact. Since we don't want this to fail
# the overall workflow, so we'll continue here without a test catalog.
Expand All @@ -176,7 +184,7 @@ jobs:
uses: ./.github/actions/run-gradle
with:
test-task: quarantinedTest
timeout-minutes: 30
timeout-minutes: 180
test-catalog-path: ${{ steps.load-test-catalog.outputs.download-path }}/combined-test-catalog.txt
build-scan-artifact-name: build-scan-quarantined-test-${{ matrix.java }}

Expand Down Expand Up @@ -225,7 +233,8 @@ jobs:
GITHUB_WORKSPACE: ${{ github.workspace }}
JUNIT_REPORT_URL: ${{ steps.junit-upload-artifact.outputs.artifact-url }}
THREAD_DUMP_URL: ${{ steps.thread-dump-upload-artifact.outputs.artifact-url }}
GRADLE_EXIT_CODE: ${{ steps.junit-test.outputs.gradle-exitcode }}
GRADLE_TEST_EXIT_CODE: ${{ steps.junit-test.outputs.gradle-exitcode }}
GRADLE_QUARANTINED_TEST_EXIT_CODE: ${{ steps.junit-quarantined-test.outputs.gradle-exitcode }}

- name: Archive Test Catalog
if: ${{ always() && matrix.java == '23' }}
Expand All @@ -239,7 +248,7 @@ jobs:
update-test-catalog:
name: Update Test Catalog
needs: test
if: ${{ always() && !inputs.is-public-fork }}
if: ${{ always() && inputs.is-trunk && needs.test.outputs.timed-out == 'false' }}
runs-on: ubuntu-latest
permissions:
contents: write
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/ci-complete.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ run-name: Build Scans for ${{ github.event.workflow_run.display_title}}
#
# This "workflow_run" triggered workflow is run in a privileged context and so does have access to
# the repository secrets. Here we can download the build scan files produced by a PR and publish
# them to ge.apache.org.
# them to develocity.apache.org.
#
# If we need to do things like comment on, label, or otherwise modify PRs from public forks. This
# workflow is the place to do it. PR number is ${{ github.event.workflow_run.pull_requests[0].number }}
Expand Down Expand Up @@ -59,7 +59,7 @@ jobs:
uses: ./.github/actions/setup-gradle
with:
java-version: ${{ matrix.java }}
develocity-access-key: ${{ secrets.GE_ACCESS_TOKEN }}
develocity-access-key: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
- name: Download build scan archive
id: download-build-scan
uses: actions/download-artifact@v4
Expand Down
7 changes: 4 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ on:
push:
branches:
- 'trunk'
- '4.0'

schedule:
- cron: '0 0 * * 6,0' # Run on Saturday and Sunday at midnight UTC
Expand All @@ -27,17 +28,17 @@ on:
types: [ opened, synchronize, ready_for_review, reopened ]
branches:
- 'trunk'
- '4.0'

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/trunk' }}
cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }}

jobs:
build:
uses: ./.github/workflows/build.yml
with:
gradle-cache-read-only: ${{ github.ref != 'refs/heads/trunk' }}
gradle-cache-write-only: ${{ github.ref == 'refs/heads/trunk' }}
is-trunk: ${{ github.ref == 'refs/heads/trunk' }}
is-public-fork: ${{ github.event.pull_request.head.repo.fork || false }}
secrets:
inherit
2 changes: 1 addition & 1 deletion .github/workflows/deflake.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ jobs:
with:
java-version: ${{ inputs.java-version }}
gradle-cache-read-only: true
develocity-access-key: ${{ secrets.GE_ACCESS_TOKEN }}
develocity-access-key: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
- name: Test
timeout-minutes: 60
id: junit-test
Expand Down
Loading