Skip to content

Commit 5437990

Browse files
2 parents 0eba61d + 105694f commit 5437990

177 files changed

Lines changed: 3911 additions & 1246 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.build/build-bench.xml

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@
2020
xmlns:if="ant:if" xmlns:unless="ant:unless">
2121

2222
<property name="async-profiler.version" value="2.9"/>
23+
24+
<!-- TODO https://issues.apache.org/jira/browse/CASSANDRA-18873 -->
25+
<!-- Blacklist of broken benchmarks -->
26+
<property name="microbench.exclude.pattern" value="AtomicBTreePartitionUpdateBench|BTreeSearchIteratorBench|BTreeTransformBench|BTreeUpdateBench|CompactionWideRowBench|FastThreadLocalBench|KeyLookupBench|(instance.*Bench)|LatencyTrackingBench|MessageOutBench|MutationBench|ReadWriteBench|SSTablePipeCursorBench|SSTableReadingCursorBench|SSTableReadingFileBench|SSTableReadingFileCursorBench|ZeroCopyStreamingBench"/>
27+
2328
<condition property="async-profiler.suffix" value="linux-arm64">
2429
<and>
2530
<os arch="aarch64"/>
@@ -83,6 +88,7 @@
8388
<macrodef name="jmh">
8489
<element name="extra-args" optional="true"/>
8590
<sequential>
91+
<mkdir dir="${build.test.output.dir}"/>
8692
<java classname="org.openjdk.jmh.Main" fork="true" failonerror="true" >
8793
<classpath>
8894
<path refid="cassandra.classpath.test"/>
@@ -106,18 +112,17 @@
106112
<arg value="-rf"/>
107113
<arg value="json"/>
108114
<arg value="-rff"/>
109-
<arg value="${build.test.dir}/jmh-result.json"/>
115+
<arg value="${build.test.output.dir}/jmh-result.json"/>
110116
<arg value="-v"/>
111117
<arg value="EXTRA"/>
112118

113119
<arg line="${jmh.args}"/>
114120

115121
<extra-args/>
116122

117-
<!-- TODO https://issues.apache.org/jira/browse/CASSANDRA-18873 -->
118-
<!-- The classes listed below are broken, and so currently ignored, see CASSANDRA-18873 -->
123+
<!-- Exclude broken, see CASSANDRA-18873 -->
119124
<arg value="-e" if:blank="${benchmark.name}"/>
120-
<arg value="AtomicBTreePartitionUpdateBench|BTreeSearchIteratorBench|BTreeTransformBench|BTreeUpdateBench|CompactionWideRowBench|FastThreadLocalBench|KeyLookupBench|(instance.*Bench)|LatencyTrackingBench|MessageOutBench|MutationBench|ReadWriteBench|SSTablePipeCursorBench|SSTableReadingCursorBench|SSTableReadingFileBench|SSTableReadingFileCursorBench|ZeroCopyStreamingBench" if:blank="${benchmark.name}"/>
125+
<arg value="${microbench.exclude.pattern}" if:blank="${benchmark.name}"/>
121126

122127
<arg value=".*microbench.*${benchmark.name}"/>
123128
</java>

.build/docker/almalinux-build.docker

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -81,27 +81,6 @@ RUN sh -c '\
8181
# Install Antora for documentation generation
8282
RUN npm i -g @antora/cli@2.3 @antora/site-generator-default@2.3 @djencks/asciidoctor-openblock
8383

84-
# install golang. GO_VERSION_SHA must be updated with VERSION
85-
86-
RUN sh -c '\
87-
set -ex ;\
88-
GO_VERSION="1.26.1" ;\
89-
GO_VERSION_SHAS="031f088e5d955bab8657ede27ad4e3bc5b7c1ba281f05f245bcc304f327c987a a290581cfe4fe28ddd737dde3095f3dbeb7f2e4065cab4eae44dfc53b760c2f7 65773dab2f8cc4cd23d93ba6d0a805de150ca0b78378879292be0b903b8cdd08 353df43a7811ce284c8938b5f3c7df40b7bfb6f56cb165b150bc40b5e2dd541f" ;\
90-
GO_OS=linux ;\
91-
[ $(uname) = "Darwin" ] && GO_OS=darwin ;\
92-
GO_PLATFORM=amd64 ;\
93-
[ $(uname -m) = "aarch64" ] && GO_PLATFORM=arm64 ;\
94-
GO_TAR="go${GO_VERSION}.${GO_OS}-${GO_PLATFORM}.tar.gz" ;\
95-
curl -L --fail --silent --retry 2 --retry-delay 5 --max-time 3600 https://go.dev/dl/$GO_TAR -o $GO_TAR ;\
96-
GO_SHA="$(sha256sum $GO_TAR | cut -d" " -f2)" ;\
97-
echo "$GO_VERSION_SHAS" | sed "s/ /\n/g" | grep -q "$GO_SHA" || { echo "SHA256 mismatch for $GO_TAR $GO_SHA"; exit 1; } ;\
98-
tar -C /usr/local -xzf $GO_TAR ;\
99-
rm $GO_TAR'
100-
101-
ENV GOROOT="/usr/local/go"
102-
ENV GOPATH="$BUILD_HOME/go"
103-
ENV PATH="$PATH:/usr/local/go/bin"
104-
10584
# Prepopulate Maven repository with dependencies from all branches. see _create_user.sh
10685
COPY docker/_prepopulate_maven_deps.sh /tmp/_prepopulate_maven_deps.sh
10786
RUN alternatives --set java $(alternatives --display java | grep "family java-11-openjdk" | cut -d' ' -f1)

.build/docker/debian-build.docker

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -87,23 +87,6 @@ RUN sh -c '\
8787
# Install Antora for documentation generation
8888
RUN npm i -g @antora/cli@2.3 @antora/site-generator-default@2.3 @djencks/asciidoctor-openblock
8989

90-
# install golang. GO_VERSION_SHA must be updated with VERSION
91-
RUN sh -c '\
92-
set -ex ;\
93-
GO_VERSION="1.26.1" ;\
94-
GO_VERSION_SHAS="031f088e5d955bab8657ede27ad4e3bc5b7c1ba281f05f245bcc304f327c987a a290581cfe4fe28ddd737dde3095f3dbeb7f2e4065cab4eae44dfc53b760c2f7 65773dab2f8cc4cd23d93ba6d0a805de150ca0b78378879292be0b903b8cdd08 353df43a7811ce284c8938b5f3c7df40b7bfb6f56cb165b150bc40b5e2dd541f" ;\
95-
GO_OS=linux ;\
96-
GO_TAR="go${GO_VERSION}.${GO_OS}-$(dpkg --print-architecture).tar.gz" ;\
97-
curl -L --fail --silent --retry 2 --retry-delay 5 --max-time 3600 https://go.dev/dl/$GO_TAR -o $GO_TAR ;\
98-
GO_SHA="$(sha256sum $GO_TAR | cut -d" " -f2)" ;\
99-
echo "$GO_VERSION_SHAS" | sed "s/ /\n/g" | grep -q "$GO_SHA" || { echo "SHA256 mismatch for $GO_TAR $GO_SHA"; exit 1; } ;\
100-
tar -C /usr/local -xzf $GO_TAR ;\
101-
rm $GO_TAR'
102-
103-
ENV GOROOT="/usr/local/go"
104-
ENV GOPATH="$BUILD_HOME/go"
105-
ENV PATH="$PATH:/usr/local/go/bin"
106-
10790
# allow lower UIDs and GIDs
10891
RUN sed -i 's/UID_MIN 1000/UID_MIN 100/' /etc/login.defs
10992
RUN sed -i 's/UID_MIN 1000/UID_MIN 10/' /etc/login.defs

.build/git/install-git-defaults.sh

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,18 @@ install_hook() {
6363
installed=false
6464
fi
6565
fi
66+
# Resolve the source hooks directory. When git is configured with
67+
# core.symlinks=false (e.g. for security reasons, or on filesystems that
68+
# don't support symlinks), a symlinked hooks dir such as post-switch is
69+
# checked out as a plain text file whose contents are the link target.
70+
# Follow that indirection so the build works regardless of core.symlinks.
71+
local src_dir="$bin/git-hooks/${name}"
72+
while [[ -f "$src_dir" ]]; do
73+
src_dir="$(dirname "$src_dir")/$(cat "$src_dir")"
74+
done
75+
6676
# install all hooks
67-
cp "$bin"/git-hooks/"${name}"/* "$d_dir"/
77+
cp "$src_dir"/* "$d_dir"/
6878

6979
# install coordinator hook
7080
install_template_script "$script_name" "$d_dir"

.build/run-tests.sh

Lines changed: 74 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -284,16 +284,86 @@ _run_testlist() {
284284
[ "${_test_iterations}" -eq 1 ] || printf "––––\nfailure rate: ${failures}/${_test_iterations}\n"
285285
}
286286

287+
_list_microbench_tests() {
288+
# Extract blacklist from build-bench.xml property (see CASSANDRA-18873)
289+
local blacklist_pattern=$(grep 'name="microbench.exclude.pattern"' .build/build-bench.xml | sed -n 's/.*value="\([^"]*\)".*/\1/p')
290+
291+
# Find all *Bench.java files, strip prefix, sort, and filter out blacklisted ones
292+
find "test/microbench" -name '*Bench.java' | \
293+
sed "s;^test/microbench/;;g" | \
294+
sort | \
295+
grep -vE "(${blacklist_pattern})\.java$"
296+
}
297+
298+
_run_microbench() {
299+
local _target=$1
300+
local _test_name_regexp=$2
301+
local _split_chunk=$3
302+
local testlist=""
303+
304+
# Assert no *Test.java files exist under test/microbench
305+
# uncomment once CachingBenchTest and GcCompactionBenchTest are rewritten to JMH benchmarks
306+
#_list_tests "microbench" | grep -q 'Test\.java$' && error 1 "Found *Test.java files under test/microbench, these should be moved to test/unit"
307+
308+
# Build test list from either regexp or split
309+
if [ -n "${_test_name_regexp}" ]; then
310+
echo "Running tests: ${_test_name_regexp}"
311+
# test regexp can come in csv
312+
for i in ${_test_name_regexp//,/ }; do
313+
[ -n "${testlist}" ] && testlist="${testlist}"$'\n'
314+
testlist="${testlist}$( _list_microbench_tests | _split_tests "${i}")"
315+
done
316+
[[ -z "${testlist}" ]] && error 1 "No tests found in test name regexp: ${_test_name_regexp}"
317+
else
318+
[ -n "${_split_chunk}" ] || { error 1 "Neither name regexp or split chunk defined"; }
319+
echo "Running split: ${_split_chunk}"
320+
testlist="$( _list_microbench_tests | _split_tests "${_split_chunk}")"
321+
if [[ -z "${testlist}" ]]; then
322+
echo "No microbench tests in split ${_split_chunk}, skipping"
323+
return 0
324+
fi
325+
fi
326+
327+
# Convert file paths to the JMH classname pattern
328+
local benchmark_pattern=$(echo "${testlist}" | sed 's/\.java$//g' | sed 's|^org/apache/cassandra/test/microbench/||g' | sed 's/\//./g' | tr '\n' '|' | sed 's/|$//')
329+
echo "Running benchmarks: ${benchmark_pattern}"
330+
331+
# override build.test.output.dir, adding jdk and arch to output path for report separation
332+
local -r java_version="$(java -version 2>&1 | awk -F '"' '/version/ {print $2}' | awk -F. '{print $1}')"
333+
local -r arch="$(uname -m)"
334+
local -r output_dir="${DIST_DIR}/test/output/${_target}/jdk${java_version}/${arch}/${_split_chunk//\//_}"
335+
336+
ant $_target ${ANT_TEST_OPTS} -Dbuild.test.output.dir=${output_dir} -Dbenchmark.name="${benchmark_pattern}" -Dmaven.test.failure.ignore=true
337+
338+
# Post-process jmh-result.json to add jdk and arch parameters
339+
local jmh_result="${output_dir}/jmh-result.json"
340+
if [ -f "${jmh_result}" ]; then
341+
python3 -c "
342+
import json,sys
343+
with open('${jmh_result}','r') as f:
344+
data=json.load(f)
345+
for r in (data if isinstance(data,list) else [data]):
346+
if 'params' not in r:
347+
r['params']={}
348+
r['params']['jdk']='${java_version}'
349+
r['params']['arch']='${arch}'
350+
with open('${jmh_result}','w') as f:
351+
json.dump(data,f)
352+
"
353+
fi
354+
}
355+
287356
_main() {
288357
# parameters
289358
local -r target="${test_target/-repeat/}"
290-
local -r split_chunk="${chunk:-'1/1'}" # Chunks formatted as "K/N" for the Kth chunk of N chunks
359+
local -r split_chunk="${chunk:-1/1}" # Chunks formatted as "K/N" for the Kth chunk of N chunks
291360

292361
# check split_chunk is compatible with target (if not a regexp)
293362
if [[ "${_split_chunk}" =~ ^\d+/\d+$ ]] && [[ "1/1" != "${split_chunk}" ]] ; then
294363
case ${target} in
295-
"stress-test" | "fqltool-test" | "sstableloader-test" | "microbench" | "cqlsh-test")
296-
error 1 "Target ${target} does not support splits."
364+
"stress-test" | "fqltool-test" | "cqlsh-test" | "sstableloader-test")
365+
echo "Target ${target} does not support splits."
366+
exit 1
297367
;;
298368
*)
299369
;;
@@ -357,8 +427,7 @@ _main() {
357427
ant $target ${ANT_TEST_OPTS} || echo "failed ${target} ${split_chunk}"
358428
;;
359429
"microbench" | "microbench-test")
360-
[[ "x${test_name_regexp}" != "x" ]] && test_name_regexp="-Dbenchmark.name=${test_name_regexp}"
361-
ant $target ${ANT_TEST_OPTS} ${test_name_regexp} -Dmaven.test.failure.ignore=true
430+
_run_microbench "$target" "${test_name_regexp}" "${split_chunk}"
362431
;;
363432
"test")
364433
_run_testlist "unit" "testclasslist" "${test_name_regexp}" "${split_chunk}" "$(_timeout_for 'test.timeout')" "${repeat_count}"

.jenkins/Jenkinsfile

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -216,9 +216,9 @@ def tasks() {
216216
'dtest-upgrade-novnode': [splits: 160, size: 'large'],
217217
'dtest-upgrade-large': [splits: 40, size: 'large'],
218218
'dtest-upgrade-large-novnode': [splits: 40, size: 'large'],
219-
'microbench-test': [splits: 1, size: 'large', timeout_hours: 2], // TODO implement splits
219+
'microbench-test': [splits: 4, size: 'large', timeout_hours: 2],
220220
// performance tests need 'cassandra-*large-dedicated' nodes
221-
'microbench': [splits: 1, size: 'large', timeout_hours: 6, benchmark: true],
221+
'microbench': [splits: 4, size: 'large', timeout_hours: 6, benchmark: true],
222222
]
223223
testSteps.each() {
224224
it.value.put('type', 'test')
@@ -470,8 +470,8 @@ def test(command, cell) {
470470
find test/output -type f -name "*.xml" -print0 | xargs -0 -r -n1 -P"\$(nproc)" xz -f
471471
echo "test result files compressed"; find test/output -type f -name "*.xml.xz" | wc -l
472472
"""
473-
archiveArtifacts artifacts: "test/logs/**,test/**/TEST-*.xml.xz,test/**/cqlshlib*.xml.xz,test/**/nosetests*.xml.xz,test/jmh-result.json", fingerprint: true
474-
copyToNightlies("${logfile}, test/logs/**", "${cell.step}/${cell.arch}/jdk${cell.jdk}/python${cell.python}/cython_${cell.cython}/" + "split_${cell.split}_${splits}".replace("/", "_"))
473+
archiveArtifacts artifacts: "test/logs/**,test/**/TEST-*.xml.xz,test/**/cqlshlib*.xml.xz,test/**/nosetests*.xml.xz,test/**/jmh-result.json", fingerprint: true
474+
copyToNightlies("${logfile},test/logs/**,test/**/jmh-result.json", "${cell.step}/${cell.arch}/jdk${cell.jdk}/python${cell.python}/cython_${cell.cython}/" + "split_${cell.split}_${splits}".replace("/", "_"))
475475
}
476476
} finally {
477477
cleanAgent(cell.step)
@@ -619,9 +619,10 @@ def generateTestReports() {
619619
unzip -x -d build/test -q output.zip ) ${teeSuffix}
620620
"""
621621
} else {
622-
copyArtifacts filter: 'test/**/TEST-*.xml.xz,test/**/cqlshlib*.xml.xz,test/**/nosetests*.xml.xz,test/jmh-result.json', fingerprintArtifacts: true, projectName: env.JOB_NAME, selector: specific(env.BUILD_NUMBER), target: "build/", optional: true
622+
copyArtifacts filter: 'test/**/TEST-*.xml.xz,test/**/cqlshlib*.xml.xz,test/**/nosetests*.xml.xz,test/**/jmh-result.json', fingerprintArtifacts: true, projectName: env.JOB_NAME, selector: specific(env.BUILD_NUMBER), target: "build/", optional: true
623623
}
624-
if (fileExists('build/test/output')) {
624+
// merge and summarise test reports
625+
if (fileExists('build/test/output') && sh(script: 'test -n "$(find build/test/output -type f -name "*.xml.xz" -print -quit)"', returnStatus: true) == 0) {
625626
// merge splits for each target's test report, other axes are kept separate
626627
// TODO parallelised for loop
627628
// TODO results_details.tar.xz needs to include all logs for failed tests
@@ -647,11 +648,31 @@ def generateTestReports() {
647648

648649
dir('build/') {
649650
archiveArtifacts artifacts: "ci_summary.html,results_details.tar.xz,${logfile}", fingerprint: true
650-
copyToNightlies('ci_summary.html,results_details.tar.xz,${logfile},test/jmh-result.json')
651+
copyToNightlies('ci_summary.html,results_details.tar.xz,${logfile}')
651652
}
652653
}
653-
if (fileExists('build/test/jmh-result.json')) {
654-
jmhReport('build/test/jmh-result.json')
654+
processJmhReports()
655+
}
656+
}
657+
658+
def processJmhReports() {
659+
if (fileExists('build/test/output') && sh(script: 'test -n "$(find build/test/output -type f -name jmh-result.json -print -quit)"', returnStatus: true) == 0) {
660+
sh ''' python3 -c "
661+
import glob,json
662+
m=[]
663+
for f in glob.glob('build/test/output/**/jmh-result.json',recursive=True):
664+
d=json.load(open(f))
665+
m.extend(d if isinstance(d,list) else [d])
666+
o=open('build/test/output/combined-result.json','w')
667+
json.dump(m,o)
668+
o.close()
669+
print(f'combined {len(m)} results')
670+
"
671+
'''
672+
jmhReport('build/test/output/combined-result.json')
673+
dir('build/') {
674+
archiveArtifacts artifacts: "test/output/combined-result.json", fingerprint: true
675+
copyToNightlies('test/output/combined-result.json')
655676
}
656677
}
657678
}

CHANGES.txt

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,19 @@
11
6.0-alpha2
22
* Support direct I/O for background SSTable writes (CASSANDRA-21134)
3+
* Report cancelled read command execution to coordinator as a RequestFailure.TIMEOUT (CASSANDRA-21468)
4+
* Fix TCM log catchup from peer with snapshots and gaps in the log sequence (CASSANDRA-21455)
5+
* Speed up nodetool doc generation by producing all command help in a single jvm (CASSANDRA-21444)
6+
* Always send TCM commit failures as Messaging failures (CASSANDRA-21457)
7+
* Fix ReadCommand serializedSize() using incorrect epoch (CASSANDRA-21438)
8+
* Allocation improvements in ProtocolVersion, StorageProxy and MerkleTree (CASSANDRA-21199)
9+
* Don’t leave autocompaction disabled during bootstrap and replace (CASSANDRA-21236)
10+
* Make nodetool abortbootstrap more robust (CASSANDRA-21235)
11+
* Don't clear prepared statement cache on nodetool cms initialize (CASSANDRA-21234)
12+
* Improve performance when deserializing cluster metadata (CASSANDRA-21224)
13+
* Minor TokenMap performance improvement (CASSANDRA-21223)
14+
* Handle lost response when committing PrepareMove (CASSANDRA-21222)
15+
* SEPExecutor.maybeExecuteImmediately does not always execute tasks immediately despite available worker capacity (CASSANDRA-21429)
16+
* Safely regain ranges and delete retired command stores (CASSANDRA-21212)
317
* Reduce memory allocations in miscellaneous places along read path (CASSANDRA-21360)
418
* Avoid ByteBuffer wrapping in cql3.selection.Selector.InputRow to reduce memory allocation rate (CASSANDRA-21362)
519
* Reduce cost to calculate BTreeRow.minDeletionTime (CASSANDRA-21414)
@@ -40,13 +54,21 @@
4054
* Fix a removed TTLed row re-appearance in a materialized view after a cursor compaction (CASSANDRA-21152)
4155
* Rework ZSTD dictionary compression logic to create a trainer per training (CASSANDRA-21209)
4256
Merged from 5.0:
57+
* putShortVolatile is not volatile in InMemoryTrie (CASSANDRA-21353)
58+
* Fix RequestFailureReason serializer and nits in a few others (CASSANDRA-21437)
59+
* Remove golang dependency in gen-doc and replace with python implementation (CASSANDRA-21432)
4360
* Use estimated compressed size for tables to check if there is enough free space for a compaction (CASSANDRA-21245)
4461
* Fix failing select on system_views.settings for non-string keys (CASSANDRA-21348)
4562
* Ensure SAI sends range tombstones to the coordinator for queries on static columns (CASSANDRA-21332)
4663
Merged from 4.1:
4764
* Add Paxos v2 option and informatin in cassandra.yaml (CASSANDRA-21316)
4865
* Harden data resurrection startup check with atomic heartbeat file write with fallback (CASSANDRA-21290)
4966
Merged from 4.0:
67+
* Rename conflicting nodetool import --copy-data short option from -p to -cd (CASSANDRA-20214)
68+
* Fix PasswordObfuscator failing to obfuscate certain passwords (CASSANDRA-21113)
69+
* Fix negative memtable allocator ownership when an update is shadowed by an existing row deletion (CASSANDRA-21469)
70+
* Consider first token of SSTable when calculating SSTable intersection in LeveledScanner (CASSANDRA-21369)
71+
* Remove inFlightEcho entry on ECHO_REQ failure (CASSANDRA-21428)
5072
* Validate snapshot names (CASSANDRA-21389)
5173
* BTree.FastBuilder.reset() fails to clear savedBuffer and savedNextKey, causing ClassCastException and SSTable header corruption during schema disagreement (CASSANDRA-21216, CASSANDRA-21260)
5274
* Backport CASSANDRA-17810 fix and improve RTBoundValidator error messages (CASSANDRA-18282)

build.xml

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -605,7 +605,29 @@
605605
</wikitext-to-html>
606606
</target>
607607

608-
<target name="gen-asciidoc" description="Generate dynamic asciidoc pages" depends="jar" unless="ant.gen-doc.skip">
608+
<target name="gen-nodetool-text" description="Generate nodetool command help text files consumed by the docs" depends="jar" unless="ant.gen-doc.skip">
609+
<property name="nodetool.help.outdir" location="${doc.dir}/modules/cassandra/examples/TEXT/NODETOOL"/>
610+
<property name="nodetool.help.classes" location="${build.dir}/nodetool-helpgen"/>
611+
<mkdir dir="${nodetool.help.outdir}"/>
612+
<mkdir dir="${nodetool.help.classes}"/>
613+
<javac srcdir="${test.unit.src}" includes="org/apache/cassandra/tools/nodetool/NodetoolHelpGenerator.java"
614+
destdir="${nodetool.help.classes}" includeantruntime="false" classpathref="cassandra.classpath"/>
615+
<java classname="org.apache.cassandra.tools.nodetool.NodetoolHelpGenerator" fork="true" failonerror="true">
616+
<classpath>
617+
<pathelement location="${nodetool.help.classes}"/>
618+
<pathelement location="${basedir}/conf"/>
619+
<path refid="cassandra.classpath"/>
620+
</classpath>
621+
<jvmarg line="${java-jvmargs}"/>
622+
<sysproperty key="logback.configurationFile" value="logback-tools.xml"/>
623+
<sysproperty key="cassandra.cli.layout" value="airline"/>
624+
<arg value="--dir"/>
625+
<arg value="${nodetool.help.outdir}"/>
626+
<arg value="--txt"/>
627+
</java>
628+
</target>
629+
630+
<target name="gen-asciidoc" description="Generate dynamic asciidoc pages" depends="jar,gen-nodetool-text" unless="ant.gen-doc.skip">
609631
<exec executable="make" osfamily="unix" dir="${doc.dir}" failonerror="true">
610632
<arg value="gen-asciidoc"/>
611633
</exec>
@@ -1135,7 +1157,7 @@
11351157
<exclude name="tools/bin/*.in.sh" />
11361158
<include name=".build/**/*.sh"/>
11371159
<include name="${accord.dir}/gradlew" />
1138-
<include name="doc/scripts/process-native-protocol-specs-in-docker.sh"/>
1160+
<include name="doc/scripts/gen-native-protocol-docs.sh"/>
11391161
</tarfileset>
11401162
</tar>
11411163

0 commit comments

Comments
 (0)