Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
179 commits
Select commit Hold shift + click to select a range
7946b2f
MINOR: Remove unused constructor param from ProcessorStateManager
dguy Jan 16, 2017
621dff2
KAFKA-4363; Documentation for sasl.jaas.config property
rajinisivaram Jan 17, 2017
e3f4cdd
KAFKA-4590; SASL/SCRAM system tests
rajinisivaram Jan 17, 2017
2b19ad9
KAFKA-4580; Use sasl.jaas.config for some system tests
rajinisivaram Jan 17, 2017
60d759a
MINOR: Some cleanups and additional testing for KIP-88
hachikuji Jan 17, 2017
c9b9acf
KAFKA-4588: Wait for topics to be created in QueryableStateIntegratio…
dguy Jan 17, 2017
6f72a5a
KAFKA-3452 Follow-up: Refactoring StateStore hierarchies
dguy Jan 17, 2017
eb62e56
KAFKA-4591; Create Topic Policy follow-up
ijuma Jan 18, 2017
e38794e
KAFKA-3502; move RocksDB options construction to init()
guozhangwang Jan 18, 2017
919548b
KAFKA-4568; Simplify test code for multiple SASL mechanisms
rajinisivaram Jan 18, 2017
9b751f0
MINOR: Fix javadoc typos in KStream#process
dguy Jan 18, 2017
638a82b
HOTFIX: ChangeLoggingKeyValueStore.name() returns null
dguy Jan 18, 2017
dbca4a3
MINOR: refactor streams system test class hierachy
mjsax Jan 18, 2017
866b33c
KAFKA-4457; Add BrokerApiVersionsCommand
cmccabe Jan 18, 2017
5562d63
KAFKA-4060; Follow-up: Throw exceptions when internal topics to creat…
Jan 18, 2017
ae5591a
KAFKA-4589; SASL/SCRAM documentation
rajinisivaram Jan 19, 2017
770bab3
KAFKA-4614; Forcefully unmap mmap of OffsetIndex to prevent long GC p…
kawamuray Jan 19, 2017
17dd4db
KAFKA-4547; Avoid incorrect reset of paused partitions to the committ…
vahidhashemian Jan 20, 2017
3e1abac
KAFKA-4432; Added support to supply custom message payloads to perf-p…
SandeshKarkera Jan 20, 2017
0523736
MINOR: reduce verbosity of cache flushes
xvrl Jan 20, 2017
c3f923c
KAFKA-3209: KIP-66: more single message transforms
shikhar Jan 21, 2017
db57c1a
KAFKA-4060 and KAFKA-4476 follow up: remove unnecessary InternalTopic…
mjsax Jan 21, 2017
e393c99
KAFKA-4672; fix source compatibility for lambda expressions
xvrl Jan 21, 2017
f0449d3
MINOR: Pass RecordingLevel to MetricConfig in the broker
enothereska Jan 23, 2017
afde878
HOTFIX: KAFKA-4060 and KAFKA-4476 follow up
mjsax Jan 23, 2017
80ceb75
KAFKA-4060 Follow-up: update docs accordingly
Jan 23, 2017
0f87991
KAFKA-4633; Always using regex pattern subscription in StreamThread
guozhangwang Jan 23, 2017
4218c02
KAFKA-4671: Fix Streams window retention policy
mjsax Jan 24, 2017
928f69c
KAFKA-4576; Log segments close to max size break on fetch
huxihx Jan 24, 2017
b676f51
KAFKA-4688; Kafka 0.10.1.1 should be available in system tests
cmccabe Jan 24, 2017
90b9a8a
MINOR: Add expected Error Codes to ProduceResponse documentation
dpkp Jan 24, 2017
740abdb
MINOR: rework JavaDoc for windowing related public API
mjsax Jan 24, 2017
f34831c
KAFKA-3896: Fix KStreamRepartitionJoinTest
guozhangwang Jan 24, 2017
5dbb4b8
KAFKA-4548; Add ClientCompatibilityTest to verify features against ol…
cmccabe Jan 24, 2017
f8b8edd
KAFKA-4687; Fix InvalidTopicException due to topic creation race cond…
Jan 24, 2017
cd30407
KAFKA-4673: Fix thread-safety of Python VerifiableConsumer class
ewencp Jan 24, 2017
3a16983
KAFKA-4229; Controller can't start after several zk expired event
pengwei-li Jan 24, 2017
c1c680e
trivial change to clarify comments in KAFKA-4229
junrao Jan 24, 2017
3633489
MINOR: close state store in CachingSessionStoreTest
dguy Jan 24, 2017
218a765
MINOR: Update consumer group describe output in the documentation
vahidhashemian Jan 25, 2017
d2d92b7
KAFKA-3835; Streams is creating two ProducerRecords for each send via…
jeyhunkarimov Jan 25, 2017
87bd754
MINOR: remove ZK from system tests
mjsax Jan 18, 2017
e0eefdd
HOTIFX: streams system test do not start up correctly
mjsax Jan 25, 2017
f0388d9
KAFKA-4596; Throttled reassignment should support partial JSON file
benstopford Jan 25, 2017
b0742c2
KAFKA-2000; Delete topic should also delete consumer offsets.
omkreddy Jan 25, 2017
ec39759
KAFKA-3502: KStreamTestDriver needs to be closed after the test case
guozhangwang Jan 25, 2017
1d24266
HOTFIX: KIP-104 follow-up: remove duplicated per-processor-node throu…
enothereska Jan 25, 2017
94c0da2
KAFKA-4698; VerifyError in kafka/client/ClientUtils due to -target:jv…
ijuma Jan 26, 2017
e74a924
KAFKA-4597; RecordMetadata should return log append time when appropr…
ijuma Jan 26, 2017
47154d8
KAFKA-4684: add kafka-configs.bat for Windows boxes
huxihx Jan 26, 2017
d54855a
MINOR: Clarify misleading comment in WordCount example
gwenshap Jan 26, 2017
6493e5d
MINOR: Fix typo in WordCountProcessorDemo
wmarshall484 Jan 26, 2017
d8f9e18
MINOR: Refactor partition lag metric for cleaner encapsulation
hachikuji Jan 26, 2017
8812d15
KAFKA-4630; Implement RecordTooLargeException when communicating with…
cmccabe Jan 26, 2017
29bc890
KAFKA-4699; Invoke producer callbacks before completing the future
ijuma Jan 26, 2017
e2cc886
HOTFIX: Consumer offsets not properly loaded on coordinator failover
hachikuji Jan 26, 2017
1f4f9c7
MINOR: Update kafka-run-class.bat to handle spaces in classpath
jonfreedman Jan 26, 2017
4f61359
KAFKA-4700: Don't drop security configs in `StreamsKafkaClient`
ijuma Jan 26, 2017
f68c7e0
MINOR: Escape '<' and '>' symbols in quickstart streams code snippet
vahidhashemian Jan 26, 2017
af4f4df
MINOR: Change logging level for ignored maybeAddMetric from debug to …
guozhangwang Jan 27, 2017
5f1ab14
MINOR: Update JavaDoc for DSL PAPI-API
mjsax Jan 27, 2017
b2bcef7
MINOR: Close create topics policy during shutdown and more tests
ijuma Jan 27, 2017
890b4ac
MINOR: Add Streams system test for broker backwards compatibility
mjsax Jan 27, 2017
a2a3e9d
MINOR: Streams API JavaDoc improvements
mjsax Jan 27, 2017
fcdfe8e
KAFKA-4578; Upgrade notes for 0.10.2.0
ijuma Jan 27, 2017
02a516f
MINOR: Include more detail in `ConfigDef.parseType` exception message
kamalcph Jan 27, 2017
e992aca
MINOR: Update KTable JavaDoc
mjsax Jan 27, 2017
634c167
KAFKA-4644: Improve test coverage of StreamsPartitionAssignor
dguy Jan 27, 2017
063fe5e
MINOR: Replace for within for each; replace if-elseif with match
Jan 27, 2017
f328f77
KAFKA-4704; Coordinator cache loading fails if groupId is reused for …
hachikuji Jan 27, 2017
f0f5c34
KAFKA-4664; Update docs/protocol.html with KIP-97 information
cmccabe Jan 27, 2017
b81f311
MINOR: Update copyright year in the NOTICE file.
ewencp Jan 27, 2017
05b1ebd
KAFKA-4557; Handle Producer.send correctly in expiry callbacks
rajinisivaram Jan 27, 2017
903548f
MINOR: update JavaDocs for Kafka Streams DSL helpers
mjsax Jan 28, 2017
6829d96
KAFKA-4635; Client Compatibility follow-ups
cmccabe Jan 28, 2017
6cb76b9
KAFKA-4450; Add upgrade tests for 0.10.1 and rename TRUNK to DEV_BRAN…
ewencp Jan 28, 2017
1434b61
KAFKA-4679: Remove unstable markers from Connect APIs
baluchicken Jan 28, 2017
ba64b91
MINOR: JavaDoc markup cleanup
mjsax Jan 29, 2017
619a9b0
KAFKA-4613: Treat null-key records the same way for joins and aggreat…
jeyhunkarimov Jan 30, 2017
61024c9
KAFKA-4613: Follow-up to fix JavaDocs
mjsax Jan 31, 2017
a506352
MINOR: Logging improvements in consumer internals
hachikuji Jan 31, 2017
54512cb
KAFKA-4717: Use absolute paths to files in root directory so all jars…
ewencp Feb 1, 2017
9cf6f97
MINOR: Update docs for version 0.10.2.0
ewencp Feb 1, 2017
dfd34ae
MINOR: Update Streams docs: quickstart and concepts
guozhangwang Feb 2, 2017
7b5bcee
KAFKA-4719: Consumption timeout should take into account producer req…
hachikuji Feb 2, 2017
d952d94
MINOR: added upgrade and API changes to docs
mjsax Feb 3, 2017
0578e29
HOTFIX: Verifiable producer request timeout needs conversion to milli…
hachikuji Feb 3, 2017
e321cd4
KAFKA-4558; throttling_test fails if the producer starts too fast
apurvam Feb 5, 2017
f4276b7
KAFKA-4728; KafkaConsumer#commitSync should copy its input
o2-be-build Feb 6, 2017
13a0955
KAFKA-4441; Monitoring incorrect during topic creation and deletion
edoardocomar Feb 6, 2017
588c566
MINOR: Fix import for streams broker compatibility test to use new DE…
ewencp Feb 6, 2017
7bb1d2a
MINOR: fixed some JavaDoc typos
mjsax Feb 7, 2017
6bdc0da
KAFKA-4727; A Production server configuration needs to be updated
huxihx Feb 7, 2017
aca8187
KAFKA-4734; Trim the time index on old segments
becketqin Feb 7, 2017
bec105d
KAFKA-4725; Stop leaking messages in produce request body when reques…
halorgium Feb 7, 2017
b75d37a
HOTFIX: renamed test so it is picked up by ducktape
Feb 8, 2017
39f1a7d
MINOR: changes to the production broker configuration docs.
alexlod Feb 9, 2017
bad631a
KAFKA-4716: Fix case when controller cannot be reached
Feb 9, 2017
b117684
MINOR: add architecture section and configure / execution for streams
guozhangwang Feb 10, 2017
415df00
MINOR: add GlobalKTable doc to streams.html
dguy Feb 10, 2017
3ac10d5
MINOR: Fix quickstart in docs
vahidhashemian Feb 10, 2017
dfbe944
KAFKA-4756; The auto-generated broker id should be passed to MetricRe…
cmccabe Feb 13, 2017
71a511c
KAFKA-4761; Fix producer regression handling small or zero batch size
hachikuji Feb 13, 2017
576d93a
Bump version to 0.10.2.0
ewencp Feb 14, 2017
f622677
HOTFIX: fixed section incompatible Steams API changes
mjsax Feb 15, 2017
f6d07e2
MINOR: Stream metrics documentation
Feb 16, 2017
167d5a3
MINOR: add session windows doc to streams.html
dguy Feb 16, 2017
5d1bb0a
MINOR: fix indention in <pre> tags
mjsax Feb 16, 2017
0790b35
MINOR: Increase consumer init timeout in throttling test
Feb 18, 2017
d421592
Merge tag '0.10.2.0' into 0.10.2
ewencp Feb 21, 2017
ddde79a
Bump version to 0.10.2.1-SNAPSHOT
ewencp Feb 21, 2017
0cdf5c9
MINOR: Fix NPE handling unknown APIs in NodeApiVersions.toString
hachikuji Feb 21, 2017
c231f52
HOTFIX: Fix version in __init__.py
ijuma Feb 22, 2017
ba4eafa
KAFKA-4786; Wait for heartbeat thread to terminate in consumer close
rajinisivaram Feb 22, 2017
9c6fa25
KAFKA-4788: Revert "KAFKA-4092: retention.bytes should not be allowed…
ijuma Feb 23, 2017
e044719
HOTFIX: add js template to upgrade.html
guozhangwang Feb 23, 2017
11b637e
KAFKA-4198; Fix race condition in KafkaServer.shutdown()
original-brownbear Feb 24, 2017
ac05c34
KAFKA-4779; Fix security upgrade system test to be non-disruptive
rajinisivaram Feb 24, 2017
a9f4b67
MINOR: Ensure consumer calls poll() if requests are outstanding
hachikuji Feb 24, 2017
8488b81
MINOR: Use API hyperlinks in 'Kafka Protocol Guide' to facilitate nav…
vahidhashemian Feb 26, 2017
35684ac
KAFKA-4806; Prevent double logging of ConsumerConfig
Gacko Feb 27, 2017
53a39bb
KAFKA-4809: docker/run_tests.sh should set up /opt/kafka-dev to be th…
cmccabe Feb 28, 2017
46e6081
KAFKA-4800: Streams State transition ASCII diagrams need fixing and p…
Mar 2, 2017
0b04d4e
MINOR: Fix tests/docker/Dockerfile
cmccabe Mar 4, 2017
46e6601
HOTFIX: fix broken link for wordcount demo example
mjsax Mar 6, 2017
a05c541
KAFKA-4851: only search available segments during Segments.segments(f…
dguy Mar 7, 2017
3445ed0
KAFKA-4864; added correct zookeeper nodes for security migrator
simplesteph Mar 9, 2017
beb0d57
KAFKA-4861; GroupMetadataManager record is rejected if broker configu…
ijuma Mar 10, 2017
f9660e1
MINOR: increase RocksDb parallelism
Mar 10, 2017
928789b
MINOR: incorrect javadoc formatting
acoburn Mar 11, 2017
94938f3
KAFKA-4631; Request metadata in consumer if topic/partitions unavailable
rajinisivaram Mar 3, 2017
4a019bd
MINOR: Increase Throttle lower bound assertion in throttling_test
benstopford Mar 17, 2017
77bfe78
MINOR: Fix zookeeper-security-migration documentation example
rnpridgeon Mar 21, 2017
3d29453
KAFKA-4863: Querying window store may return unwanted keys. Backport …
dguy Mar 21, 2017
6e2698b
MINOR: remove unused log field from KStreamTransformValuesProcessor
dguy Mar 21, 2017
51ffddc
MINOR: updated incorrect JavaDocs for joins
mjsax Mar 21, 2017
b3f5f95
MINOR: improve hanging ResetIntegrationTest
mjsax Mar 22, 2017
cf310ec
MINOR: MyProcessor doc example should implement, not extend `Processor`
Mar 22, 2017
75df53f
MINOR: log state store restore offsets
dguy Mar 22, 2017
eb0dbe8
MINOR: Adding example to SMT documentation
gwenshap Mar 23, 2017
c966352
KAFKA-4919: Document that stores must not be closed when Processors a…
dguy Mar 23, 2017
1e4cab7
MINOR: only log first exception in RecordCollectorImpl producer callback
dguy Mar 23, 2017
2397269
KAFKA-4959; Remove controller concurrent access to non-threadsafe Net…
onurkaraman Mar 28, 2017
4b8c736
KAFKA-4791: unable to add state store with regex matched topics
bbejeck Mar 30, 2017
e3c5f41
KAFKA-4689; Disable system tests for consumer hard failures
hachikuji Mar 30, 2017
76f8028
MINOR: Increase max.poll time for streams consumers
Mar 30, 2017
5b8541e
MINOR: Add jenkins.sh to 0.10.2 branch
mjsax Apr 1, 2017
d9db9ee
KAFKA-4878: Improved Invalid Connect Config Error Message
original-brownbear Apr 3, 2017
8c00057
KAFKA-4837: Fix class name comparison in connector-plugins REST endpoint
kkonstantine Apr 4, 2017
444110e
MINOR: don't throw CommitFailedException during suspendTasksAndState
Apr 4, 2017
5a57913
MINOR: improve MinTimestampTrackerTest and fix NPE when null element
Apr 4, 2017
d640259
HOTFIX: Fix checkstyle indentation error in ConnectorPluginsResource
ijuma Apr 5, 2017
65c8f68
HOTFIX: WindowedStreamPartitioner does not provide topic name to seri…
mjsax Apr 5, 2017
2dfeff0
MINOR: Improve log4j on stream thread and stream process
enothereska Apr 6, 2017
8e35721
MINOR: Improve topic management instructions for Kafka Streams examples
Apr 6, 2017
7028384
MINOR: Clarify ReadOnlyWindowStore's time range behaviour
dguy Apr 6, 2017
5edb09f
KAFKA-4929: Transformation Key/Value type references should be to cla…
Mar 22, 2017
4def30c
KAFKA-4901; Make ProduceRequest thread-safe
ijuma Apr 6, 2017
0950994
KAFKA-5003; StreamThread should catch InvalidTopicException
mjsax Apr 6, 2017
51ae9c2
KAFKA-4916: test streams with brokers failing
Apr 6, 2017
47f9e8f
KAFKA-5040; Increase number of retries from the default of 0
Apr 7, 2017
08a5b64
KAFKA-4943: Make /config/users with SCRAM credentials not world-readable
rajinisivaram Apr 7, 2017
629ee94
HOTFIX: Use a true sentinel for `UseDefaultAcls`
ijuma Apr 10, 2017
2adaa50
MINOR: Document ordering contract of iterator for window stores and s…
Apr 11, 2017
5a68fa7
MINOR: Added changes in 0.10.2.1
Apr 12, 2017
5f72853
HOTFIX: HTML formatting error in upgrade docs
gwenshap Apr 12, 2017
8638675
KAFKA-5038; Throw correct exception of locking of state directory fails
enothereska Apr 12, 2017
a267316
KAFKA-5075; Defer exception to the next pollOnce() if consumer's fetc…
lindong28 Apr 17, 2017
2aa6155
KAFKA-5097; Fix regression in consumer caused by unsafe access to pot…
enothereska Apr 20, 2017
b9dadae
MINOR: reduce commit interval and cache size for integration test
mjsax Apr 20, 2017
0731d35
KAFKA-5095: Adjust accepted overhead for ThreadCacheTest
Apr 20, 2017
495cdbd
KAFKA-4980: testReprocessingFromScratch unit test failure
mjsax Mar 30, 2017
e89bffd
Bump version to 0.10.2.1
gwenshap Apr 21, 2017
7ba26ef
KAFKA-4755: Cherry-pick streams tests fixes from trunk
enothereska Apr 24, 2017
760cffd
Merge tag '0.10.2.1-rc3' into 0.10.2
gwenshap Apr 26, 2017
d7850a4
Post 0.10.2.1 release version bumping
gwenshap Apr 26, 2017
0e8b084
KAFKA-5174: Have at least 2 threads for compaction and flushing in Ro…
enothereska May 8, 2017
bce189f
HOTFIX: Increase kafkatest startup wait time on ConnectDistributed se…
kkonstantine May 9, 2017
b3440c4
backport from trunk
dguy Feb 17, 2017
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
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion NOTICE
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Apache Kafka
Copyright 2016 The Apache Software Foundation.
Copyright 2017 The Apache Software Foundation.

This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).
Expand Down
17 changes: 17 additions & 0 deletions bin/kafka-broker-api-versions.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#!/bin/bash
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

exec $(dirname $0)/kafka-run-class.sh kafka.admin.BrokerApiVersionsCommand "$@"
17 changes: 17 additions & 0 deletions bin/windows/kafka-configs.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
@echo off
rem Licensed to the Apache Software Foundation (ASF) under one or more
rem contributor license agreements. See the NOTICE file distributed with
rem this work for additional information regarding copyright ownership.
rem The ASF licenses this file to You under the Apache License, Version 2.0
rem (the "License"); you may not use this file except in compliance with
rem the License. You may obtain a copy of the License at
rem
rem http://www.apache.org/licenses/LICENSE-2.0
rem
rem Unless required by applicable law or agreed to in writing, software
rem distributed under the License is distributed on an "AS IS" BASIS,
rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
rem See the License for the specific language governing permissions and
rem limitations under the License.

%~dp0kafka-run-class.bat kafka.admin.ConfigCommand %*
10 changes: 6 additions & 4 deletions bin/windows/kafka-run-class.bat
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,9 @@ for %%p in (api runtime file json tools) do (
)

rem Classpath addition for release
call :concat %BASE_DIR%\libs\*
for %%i in (%BASE_DIR%\libs\*) do (
call :concat %%i
)

rem Classpath addition for core
for %%i in (%BASE_DIR%\core\build\libs\kafka_%SCALA_BINARY_VERSION%*.jar) do (
Expand Down Expand Up @@ -174,7 +176,7 @@ IF ["%CLASSPATH%"] EQU [""] (
EXIT /B 2
)

set COMMAND=%JAVA% %KAFKA_HEAP_OPTS% %KAFKA_JVM_PERFORMANCE_OPTS% %KAFKA_JMX_OPTS% %KAFKA_LOG4J_OPTS% -cp %CLASSPATH% %KAFKA_OPTS% %*
set COMMAND=%JAVA% %KAFKA_HEAP_OPTS% %KAFKA_JVM_PERFORMANCE_OPTS% %KAFKA_JMX_OPTS% %KAFKA_LOG4J_OPTS% -cp "%CLASSPATH%" %KAFKA_OPTS% %*
rem echo.
rem echo %COMMAND%
rem echo.
Expand All @@ -184,7 +186,7 @@ rem echo.
goto :eof
:concat
IF ["%CLASSPATH%"] EQU [""] (
set CLASSPATH="%1"
set "CLASSPATH=%1"
) ELSE (
set CLASSPATH=%CLASSPATH%;"%1"
set "CLASSPATH=%CLASSPATH%;%1"
)
52 changes: 29 additions & 23 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -177,21 +177,21 @@ subprojects {
}

jar {
from '../LICENSE'
from '../NOTICE'
from "$rootDir/LICENSE"
from "$rootDir/NOTICE"
}

task srcJar(type: Jar) {
classifier = 'sources'
from '../LICENSE'
from '../NOTICE'
from "$rootDir/LICENSE"
from "$rootDir/NOTICE"
from sourceSets.main.allSource
}

task javadocJar(type: Jar, dependsOn: javadoc) {
classifier 'javadoc'
from '../LICENSE'
from '../NOTICE'
from "$rootDir/LICENSE"
from "$rootDir/NOTICE"
from javadoc.destinationDir
}

Expand All @@ -213,15 +213,15 @@ subprojects {
if(!sourceSets.test.allSource.isEmpty()) {
task testJar(type: Jar) {
classifier = 'test'
from '../LICENSE'
from '../NOTICE'
from "$rootDir/LICENSE"
from "$rootDir/NOTICE"
from sourceSets.test.output
}

task testSrcJar(type: Jar, dependsOn: testJar) {
classifier = 'test-sources'
from '../LICENSE'
from '../NOTICE'
from "$rootDir/LICENSE"
from "$rootDir/NOTICE"
from sourceSets.test.allSource
}

Expand All @@ -234,8 +234,8 @@ subprojects {
plugins.withType(ScalaPlugin) {
task scaladocJar(type:Jar) {
classifier = 'scaladoc'
from '../LICENSE'
from '../NOTICE'
from "$rootDir/LICENSE"
from "$rootDir/NOTICE"
from scaladoc.destinationDir
}

Expand All @@ -252,7 +252,6 @@ subprojects {
"-deprecation",
"-unchecked",
"-encoding", "utf8",
"-target:jvm-${sourceCompatibility}".toString(),
"-Xlog-reflective-calls",
"-feature",
"-language:postfixOps",
Expand Down Expand Up @@ -508,22 +507,22 @@ project(':core') {

task siteDocsTar(dependsOn: ['genProtocolErrorDocs', 'genProtocolApiKeyDocs', 'genProtocolMessageDocs',
'genProducerConfigDocs', 'genConsumerConfigDocs', 'genKafkaConfigDocs',
'genTopicConfigDocs', ':connect:runtime:genConnectConfigDocs',
'genTopicConfigDocs', ':connect:runtime:genConnectConfigDocs', ':connect:runtime:genConnectTransformationDocs',
':streams:genStreamsConfigDocs'], type: Tar) {
classifier = 'site-docs'
compression = Compression.GZIP
from project.file("../docs")
from project.file("$rootDir/docs")
into 'site-docs'
duplicatesStrategy 'exclude'
}

tasks.create(name: "releaseTarGz", dependsOn: configurations.archives.artifacts, type: Tar) {
into "kafka_${versions.baseScala}-${version}"
compression = Compression.GZIP
from(project.file("../bin")) { into "bin/" }
from(project.file("../config")) { into "config/" }
from '../LICENSE'
from '../NOTICE'
from(project.file("$rootDir/bin")) { into "bin/" }
from(project.file("$rootDir/config")) { into "config/" }
from "$rootDir/LICENSE"
from "$rootDir/NOTICE"
from(configurations.runtime) { into("libs/") }
from(configurations.archives.artifacts.files) { into("libs/") }
from(project.siteDocsTar) { into("site-docs/") }
Expand Down Expand Up @@ -607,12 +606,12 @@ project(':clients') {
task determineCommitId {
ext.commitId = "unknown"
def takeFromHash = 16
if (file("../.git/HEAD").exists()) {
def headRef = file("../.git/HEAD").text
if (file("$rootDir/.git/HEAD").exists()) {
def headRef = file("$rootDir/.git/HEAD").text
if (headRef.contains('ref: ')) {
headRef = headRef.replaceAll('ref: ', '').trim()
if (file("../.git/$headRef").exists()) {
commitId = file("../.git/$headRef").text.trim().take(takeFromHash)
if (file("$rootDir/.git/$headRef").exists()) {
commitId = file("$rootDir/.git/$headRef").text.trim().take(takeFromHash)
}
} else {
commitId = headRef.trim().take(takeFromHash)
Expand Down Expand Up @@ -948,6 +947,13 @@ project(':connect:runtime') {
if( !generatedDocsDir.exists() ) { generatedDocsDir.mkdirs() }
standardOutput = new File(generatedDocsDir, "connect_config.html").newOutputStream()
}

task genConnectTransformationDocs(type: JavaExec) {
classpath = sourceSets.main.runtimeClasspath
main = 'org.apache.kafka.connect.tools.TransformationDoc'
if( !generatedDocsDir.exists() ) { generatedDocsDir.mkdirs() }
standardOutput = new File(generatedDocsDir, "connect_transforms.html").newOutputStream()
}
}

project(':connect:file') {
Expand Down
1 change: 1 addition & 0 deletions checkstyle/import-control.xml
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,7 @@

<subpackage name="integration">
<allow pkg="kafka.admin" />
<allow pkg="kafka.api" />
<allow pkg="kafka.server" />
<allow pkg="kafka.tools" />
<allow pkg="kafka.utils" />
Expand Down
18 changes: 15 additions & 3 deletions clients/src/main/java/org/apache/kafka/clients/Metadata.java
Original file line number Diff line number Diff line change
Expand Up @@ -195,8 +195,13 @@ public synchronized boolean containsTopic(String topic) {
/**
* Updates the cluster metadata. If topic expiry is enabled, expiry time
* is set for topics if required and expired topics are removed from the metadata.
*
* @param cluster the cluster containing metadata for topics with valid metadata
* @param unavailableTopics topics which are non-existent or have one or more partitions whose
* leader is not known
* @param now current time in milliseconds
*/
public synchronized void update(Cluster cluster, long now) {
public synchronized void update(Cluster cluster, Set<String> unavailableTopics, long now) {
Objects.requireNonNull(cluster, "cluster should not be null");

this.needUpdate = false;
Expand All @@ -219,7 +224,7 @@ else if (expireMs <= now) {
}

for (Listener listener: listeners)
listener.onMetadataUpdate(cluster);
listener.onMetadataUpdate(cluster, unavailableTopics);

String previousClusterId = cluster.clusterResource().clusterId();

Expand Down Expand Up @@ -302,7 +307,14 @@ public synchronized void removeListener(Listener listener) {
* MetadataUpdate Listener
*/
public interface Listener {
void onMetadataUpdate(Cluster cluster);
/**
* Callback invoked on metadata update.
*
* @param cluster the cluster containing metadata for topics with valid metadata
* @param unavailableTopics topics which are non-existent or have one or more partitions whose
* leader is not known
*/
void onMetadataUpdate(Cluster cluster, Set<String> unavailableTopics);
}

private synchronized void requestUpdateForNewTopics() {
Expand Down
34 changes: 23 additions & 11 deletions clients/src/main/java/org/apache/kafka/clients/NetworkClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@

import org.apache.kafka.common.Cluster;
import org.apache.kafka.common.Node;
import org.apache.kafka.common.errors.ObsoleteBrokerException;
import org.apache.kafka.common.errors.UnsupportedVersionException;
import org.apache.kafka.common.network.NetworkReceive;
import org.apache.kafka.common.network.Selectable;
Expand Down Expand Up @@ -289,20 +288,17 @@ private void doSend(ClientRequest clientRequest, boolean isInternalRequest, long
// the case when sending the initial ApiVersionRequest which fetches the version
// information itself. It is also the case when discoverBrokerVersions is set to false.
if (versionInfo == null) {
if ((!discoverBrokerVersions) && (log.isTraceEnabled()))
log.trace("No version information found when sending message of type {} to node {}",
clientRequest.apiKey(), nodeId);
if (discoverBrokerVersions && log.isTraceEnabled())
log.trace("No version information found when sending message of type {} to node {}. " +
"Assuming version {}.", clientRequest.apiKey(), nodeId, builder.version());
} else {
short version = versionInfo.usableVersion(clientRequest.apiKey());
if (log.isTraceEnabled())
log.trace("When sending message of type {} to node {}, the best usable version is {}",
clientRequest.apiKey(), nodeId, version);
builder.setVersion(version);
}
// The call to build may also throw UnsupportedVersionException, if there are essential
// fields that cannot be represented in the chosen version.
request = builder.build();
} catch (ObsoleteBrokerException | UnsupportedVersionException e) {
} catch (UnsupportedVersionException e) {
// If the version is not supported, skip sending the request over the wire.
// Instead, simply add it to the local queue of aborted requests.
log.debug("Version mismatch when attempting to send {} to {}",
Expand All @@ -314,8 +310,15 @@ private void doSend(ClientRequest clientRequest, boolean isInternalRequest, long
return;
}
RequestHeader header = clientRequest.makeHeader();
if (log.isTraceEnabled())
log.trace("Sending {} to node {}", request, nodeId);
if (log.isDebugEnabled()) {
int latestClientVersion = ProtoUtils.latestVersion(clientRequest.apiKey().id);
if (header.apiVersion() == latestClientVersion) {
log.trace("Sending {} to node {}.", request, nodeId);
} else {
log.debug("Using older server API v{} to send {} to node {}.",
header.apiVersion(), request, nodeId);
}
}
Send send = request.toSend(nodeId, header);
InFlightRequest inFlightRequest = new InFlightRequest(
header,
Expand Down Expand Up @@ -424,14 +427,23 @@ public Node leastLoadedNode(long now) {
int currInflight = this.inFlightRequests.inFlightRequestCount(node.idString());
if (currInflight == 0 && this.connectionStates.isReady(node.idString())) {
// if we find an established connection with no in-flight requests we can stop right away
log.trace("Found least loaded node {} connected with no in-flight requests", node);
return node;
} else if (!this.connectionStates.isBlackedOut(node.idString(), now) && currInflight < inflight) {
// otherwise if this is the best we have found so far, record that
inflight = currInflight;
found = node;
} else if (log.isTraceEnabled()) {
log.trace("Removing node {} from least loaded node selection: is-blacked-out: {}, in-flight-requests: {}",
node, this.connectionStates.isBlackedOut(node.idString(), now), currInflight);
}
}

if (found != null)
log.trace("Found least loaded node {}", found);
else
log.trace("Least loaded node selection failed to find an available node");

return found;
}

Expand Down Expand Up @@ -697,7 +709,7 @@ public void handleCompletedMetadataResponse(RequestHeader requestHeader, long no
// don't update the cluster if there are no valid nodes...the topic we want may still be in the process of being
// created which means we will get errors and no nodes until it exists
if (cluster.nodes().size() > 0) {
this.metadata.update(cluster, now);
this.metadata.update(cluster, response.unavailableTopics(), now);
} else {
log.trace("Ignoring empty metadata response with correlation id {}.", requestHeader.correlationId());
this.metadata.failedUpdate(now);
Expand Down
Loading