Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
346 commits
Select commit Hold shift + click to select a range
eda321b
extract rpn build process into separate class
arthurpassos May 23, 2024
74a6b62
do not get parquet reader from arrow
arthurpassos May 27, 2024
87e902f
early return for no row groups
arthurpassos May 28, 2024
4dfa16d
remove a.ref
arthurpassos May 28, 2024
4a4e3b4
specify a few types instead of auto
arthurpassos Jun 10, 2024
f6911dd
add missing file
arthurpassos Jun 10, 2024
9bde5f4
settings history..
arthurpassos Jul 5, 2024
133249b
try to use keycondition instead
arthurpassos Jul 18, 2024
368d556
rmv debug var
arthurpassos Jul 18, 2024
7dc41da
extern bad arguments
arthurpassos Jul 19, 2024
8e8cc43
style check
arthurpassos Jul 23, 2024
6813b7c
minor typo
arthurpassos Jul 23, 2024
7c8f7e0
minor fix
arthurpassos Jul 23, 2024
52a77d1
drop support for array types
arthurpassos Jul 23, 2024
b11b87b
move parquet bf stuff out of keycondition
arthurpassos Jul 23, 2024
df0f81a
error codes
arthurpassos Jul 23, 2024
3847ff3
few fixes
arthurpassos Jul 24, 2024
a7f5cdf
remove unnecessary code
arthurpassos Jul 24, 2024
0d93b15
delete unused files
arthurpassos Jul 24, 2024
17d3ac2
progress on re-using keycondition and implementing in_set
arthurpassos Aug 2, 2024
1c67418
minor stuff
arthurpassos Aug 3, 2024
b8fdb1b
evaluate rpn only once
arthurpassos Aug 3, 2024
a487337
fix issue when in_set columns do not have bf
arthurpassos Aug 12, 2024
ea6118b
only get bloom filters for filtering columns
arthurpassos Aug 17, 2024
73e985e
get bf reader in non optimal way
arthurpassos Aug 17, 2024
a976f26
only calculate filtering columns if key_condition and bloom fliter is…
arthurpassos Aug 19, 2024
baf4386
get bf reader in optimal way
arthurpassos Aug 19, 2024
9d82991
Delete
arthurpassos Aug 19, 2024
7d4a169
some improvements, altho code looks odd
arthurpassos Aug 21, 2024
ac13d5d
Update SettingsChangesHistory.cpp
arthurpassos Aug 22, 2024
d6a64c8
function_unknown instead of function_true in some cases
arthurpassos Aug 22, 2024
7097e0c
put reader properties in a variable
arthurpassos Aug 22, 2024
450d34c
process in_set even if one of the columns do not have bf
arthurpassos Aug 22, 2024
bc76d06
simplify index mapping a bit
arthurpassos Aug 23, 2024
68315c7
vector instead of map.. need to remember order of insertion is important
arthurpassos Aug 28, 2024
ad21e64
safe guard around bf across row groups
arthurpassos Aug 28, 2024
3d5eeac
progress
arthurpassos Aug 29, 2024
bf09d39
simplify getfilteringcolumns
arthurpassos Aug 29, 2024
559057a
remove unused type alias
arthurpassos Aug 30, 2024
c411cbd
support only basic types with no special encodingwq
arthurpassos Sep 13, 2024
26d3d2c
small fixes, I need to improve testing
arthurpassos Sep 15, 2024
fb89ce6
tmp
arthurpassos Sep 17, 2024
a6b909b
handle nullable on tuple
arthurpassos Sep 18, 2024
0a9d143
progress
arthurpassos Sep 19, 2024
2488537
fix conflicts
arthurpassos Sep 20, 2024
2e2ccfa
fix steyle
arthurpassos Sep 20, 2024
385b9cf
tryconvertfieldtotype
arthurpassos Sep 20, 2024
9509c19
update tests to new dataset
arthurpassos Sep 23, 2024
fa0d11e
grab Field from ordered set columns and rely on convertfieldtotype
arthurpassos Sep 25, 2024
c86ad1d
tmp
arthurpassos Sep 25, 2024
27686aa
update tests
arthurpassos Sep 25, 2024
b91bf3b
add proper uint64 tests
arthurpassos Sep 26, 2024
96a8ed8
add uint8 and uuid tests
arthurpassos Sep 26, 2024
bc5c397
simplify logic to use vector of uint64 instead of columnptr. Fixes ms…
arthurpassos Sep 27, 2024
68132a8
undo hashstring modification
arthurpassos Sep 27, 2024
8442c0b
address some coments
arthurpassos Oct 1, 2024
a9ef415
simplify maybeTrueOnBloomFilter
arthurpassos Oct 1, 2024
bef2412
progress
arthurpassos Oct 4, 2024
6b7ee88
safe guards around index mapping
arthurpassos Oct 4, 2024
080fd53
some structural changes
arthurpassos Oct 4, 2024
0af5d54
progress
arthurpassos Oct 7, 2024
5a7c27b
move setting to 24.10
arthurpassos Oct 8, 2024
65a3a17
add test for ipv6
arthurpassos Oct 8, 2024
2ec54ed
rmv ssh key
arthurpassos Oct 8, 2024
45fb149
add new test file
arthurpassos Oct 8, 2024
a847b9b
minor improvements
arthurpassos Oct 9, 2024
0111428
few comments adressed
arthurpassos Oct 11, 2024
bc81f7d
assert parquet column size is 16 bytes when hashing ipv6
arthurpassos Oct 11, 2024
6bec838
simplify parquet bf rpn by removing function_equals
arthurpassos Oct 11, 2024
0f2eca4
fix in with invalid conversion
arthurpassos Oct 15, 2024
3446260
docs change
arthurpassos Oct 15, 2024
009ae77
f_unknown if monotonic_functions not empty
arthurpassos Oct 15, 2024
e76924c
updt
arthurpassos Dec 12, 2024
c153fdc
updt
arthurpassos Dec 12, 2024
65af160
updt
arthurpassos Dec 12, 2024
7240a19
updt
arthurpassos Dec 12, 2024
dfb68e2
updt
arthurpassos Dec 12, 2024
3d1b1ba
updt
arthurpassos Dec 12, 2024
8c7b87a
updt
arthurpassos Dec 12, 2024
0a66ca0
Update FormatFactory.cpp
arthurpassos Dec 12, 2024
d30eaeb
Update ParquetBlockInputFormat.cpp
arthurpassos Dec 12, 2024
42c5aa7
draft
arthurpassos Oct 24, 2024
17d95ba
tests
arthurpassos Oct 25, 2024
afbe322
progress
arthurpassos Oct 28, 2024
b2bccff
getbatch
arthurpassos Oct 29, 2024
0babc4f
fix msan issue
arthurpassos Oct 30, 2024
912373b
remove unrelated file
arthurpassos Oct 30, 2024
79d7ceb
remove unrelated file
arthurpassos Oct 30, 2024
59c896d
readPageV2
arthurpassos Oct 17, 2024
b04a4d8
add silly tests
arthurpassos Oct 17, 2024
850aa41
update test
arthurpassos Oct 17, 2024
d37c9b4
add some comments
arthurpassos Oct 17, 2024
ecf4e0f
address a few comments
arthurpassos Oct 18, 2024
bb82ae1
address some more comments
arthurpassos Oct 18, 2024
01b508b
remove unused rep level decoder
arthurpassos Oct 18, 2024
2198c54
Merge pull request #555 from Altinity/24.8_easier_versioning
Enmk Dec 13, 2024
6e48f8a
Merge pull request #63781 from ClickHouse/ft-chunked-protocol
yakov-olkhovskiy Aug 14, 2024
5b62afa
New metrics for ThreadPool
filimonov Jan 26, 2024
ca42ff6
add one more metric
filimonov Feb 9, 2024
5995004
Mark LocalThread metrics obsolete due to https://github.com/ClickHous…
filimonov Aug 20, 2024
943f059
make jobs queue in the ThreadPool stable (i.e. FIFO for the same prio…
filimonov Aug 20, 2024
01838c6
fix style
filimonov Aug 21, 2024
b48e249
Merge pull request #64448 from ClickHouse/pr-local-plan
devcrafter Sep 11, 2024
f1cf4fc
Merge pull request #69602 from ClickHouse/rm_explicit_initial_announc…
nickitat Sep 14, 2024
06a4050
Merge pull request #68424 from ClickHouse/adaptive_parallel_replicas
nickitat Sep 17, 2024
556c04a
Merge pull request #69744 from ClickHouse/fix_pr_protocol
nickitat Sep 19, 2024
bd014e1
Merge pull request #69706 from ClickHouse/pror_events_for_pr
nickitat Sep 19, 2024
19481de
Merge pull request #68355 from zvonand/tryfix-65762-again
Algunenano Sep 20, 2024
7e6b90c
Merge pull request #63151 from ClickHouse/parallel-replicas-beta
nikitamikhaylov Sep 25, 2024
162807b
Merge pull request #70900 from filimonov/linux_capabilities
antonio2368 Oct 28, 2024
611d1d4
Merge pull request #70332 from zvonand/ldap-remote-roles
pufit Nov 19, 2024
d2b3dc0
Merge pull request #72759 from zvonand/hotfix-72756
yariks5s Dec 6, 2024
3cf834b
fix build pt. 1
zvonand Dec 17, 2024
9d7b3d7
Merge pull request #65832 from CurtizJ/add-mutations-snapshot
CurtizJ Sep 5, 2024
1ec0a09
Merge branch 'customizations/24.8.8' into backports/24.8/remote-roles…
zvonand Dec 18, 2024
0c348a2
Small test fix
ianton-ru Dec 17, 2024
3d95afd
Add iptables in intergation-test image, some tests use it
ianton-ru Dec 18, 2024
ebb898b
Merge pull request #570 from Altinity/24.8-altinity-test-fix
Enmk Dec 18, 2024
237858a
Merge branch 'customizations/24.8.8' into backports/24.8/remote-roles…
zvonand Dec 18, 2024
b0cbccb
remove non existing settings from settingschanges
zvonand Dec 18, 2024
ca5b435
Merge branch 'backports/24.8/remote-roles-push' of github.com:Altinit…
zvonand Dec 18, 2024
170bf37
Merge pull request #567 from Altinity/backports/24.8.8/thread_pool_me…
Enmk Dec 19, 2024
98768e4
Merge pull request #556 from Altinity/backports/24.8.8/parquet_bloom_…
Enmk Dec 19, 2024
c73183a
Merge pull request #557 from Altinity/backports/24.8.8/parquet-native…
Enmk Dec 19, 2024
d8cceb3
Merge pull request #68694 from filimonov/thread_pool_thread_creation_…
serxa Oct 5, 2024
4bd65c0
Merge pull request #558 from Altinity/backports/24.8.8/parquet-page-h…
Enmk Dec 19, 2024
b2109be
Merge pull request #568 from Altinity/backports/24.8/70900_EPEM_numactl
Enmk Dec 20, 2024
1a6b755
Merge pull request #69582 from ClickHouse/keeper-better-ssl-support
antonio2368 Sep 17, 2024
15de750
Merge pull request #573 from Altinity/backports/24.8.8/thread_pool_th…
Enmk Dec 20, 2024
25c11de
Merge pull request #566 from Altinity/backports/24.8/69582_keeper_bet…
Enmk Dec 22, 2024
26b194b
Merge pull request #63781 from ClickHouse/ft-chunked-protocol
yakov-olkhovskiy Aug 14, 2024
14e8bd2
Merge pull request #64448 from ClickHouse/pr-local-plan
devcrafter Sep 11, 2024
049c2f6
Merge pull request #69602 from ClickHouse/rm_explicit_initial_announc…
nickitat Sep 14, 2024
cdc6380
Merge pull request #68424 from ClickHouse/adaptive_parallel_replicas
nickitat Sep 17, 2024
b5cf09b
Merge pull request #69744 from ClickHouse/fix_pr_protocol
nickitat Sep 19, 2024
95a19e9
Merge pull request #69706 from ClickHouse/pror_events_for_pr
nickitat Sep 19, 2024
2c94409
Merge pull request #68355 from zvonand/tryfix-65762-again
Algunenano Sep 20, 2024
72afb16
Merge pull request #63151 from ClickHouse/parallel-replicas-beta
nikitamikhaylov Sep 25, 2024
cc34cd2
Merge pull request #70332 from zvonand/ldap-remote-roles
pufit Nov 19, 2024
5103af7
Merge pull request #72759 from zvonand/hotfix-72756
yariks5s Dec 6, 2024
e283f07
fix build pt. 1
zvonand Dec 17, 2024
764d5bb
Merge pull request #65832 from CurtizJ/add-mutations-snapshot
CurtizJ Sep 5, 2024
a558b75
remove non existing settings from settingschanges
zvonand Dec 18, 2024
20ca816
Enable Fuzzers and ARM integration tests
MyroTk Jan 6, 2025
867e269
Update run-fuzzer.sh to use Altinity/ClickHouse repo
MyroTk Jan 7, 2025
55248c6
Add missing configuration in ClientSettings Object
stamsekar Dec 24, 2024
7fff7ad
Merge pull request #72584 from ClickHouse/update-nuraft
antonio2368 Dec 2, 2024
b7d75ce
Merge pull request #72730 from ClickHouse/fix-keeper-internal-ssl
antonio2368 Dec 4, 2024
fafa0a4
Merge branch 'customizations/24.8.8' into customizations/24.8.11
Enmk Jan 9, 2025
6439fec
Update mongo_cert.pem
ianton-ru Jan 9, 2025
fc34cb3
Merge pull request #585 from Altinity/altinity_24.8.8-new_mongo_cert
Enmk Jan 14, 2025
82b2557
kitware gpg fix
MyroTk Jan 14, 2025
819d04f
Update release_branches.yml
MyroTk Jan 14, 2025
95d9d7c
Update integration images to not be amd only
MyroTk Jan 15, 2025
6b58e78
Merge pull request #580 from Altinity/backport/24.8/73777
Enmk Jan 16, 2025
1a4645d
Merge branch 'customizations/24.8.11' into backports/24.8/remote-role…
zvonand Jan 16, 2025
331b418
impl
arthurpassos Jan 16, 2025
4a49154
Merge branch 'customizations/24.8.11' into backports/24.8.11/parquet_…
arthurpassos Jan 16, 2025
361c305
attempt to fix forrmat settings
arthurpassos Jan 17, 2025
4d9bd54
Merge branch 'customizations/24.8.11' into 24.8.8_cicd-tests
MyroTk Jan 17, 2025
7132c15
Merge pull request #579 from Altinity/backport/24.8/72730
Enmk Jan 20, 2025
c65cd3e
Merge branch 'backports/24.8/remote-roles-push' of github.com:Altinit…
zvonand Jan 20, 2025
2702361
fix typo
devcrafter Dec 24, 2024
821803e
Merge pull request #542 from Altinity/backports/24.8/remote-roles-push
Enmk Jan 21, 2025
2700034
Attempt to fix build
Enmk Jan 21, 2025
4aa941c
Merge branch 'customizations/24.8.11' into 24.8.8_cicd-tests
MyroTk Jan 21, 2025
ddf159e
Merge pull request #593 from Altinity/backports/24.8.11/parquet_compr…
Enmk Jan 21, 2025
8fad014
Merge branch 'customizations/24.8.11' into 24.8.8_cicd-tests
MyroTk Jan 21, 2025
036e0e3
Use test_name to determine ipv6 subnet
MyroTk Jan 22, 2025
a022d43
move the env var due
MyroTk Jan 22, 2025
cac1ac4
Enable azure s3 regression tests
MyroTk Dec 18, 2024
7737ad8
Update regression hash
MyroTk Dec 18, 2024
63bb078
Update clickhouse-regression tests to 81564a41aee34004b96df755e777b06…
MyroTk Jan 14, 2025
82be061
Update regression hash and runner labels
MyroTk Jan 17, 2025
1303a26
Update release_branches.yml
MyroTk Jan 17, 2025
781deeb
Merge pull request #576 from Altinity/24.8.8_cicd-tests
Enmk Jan 23, 2025
598238b
Merge pull request #597 from Altinity/24.8_split_docker_ipv6
Enmk Jan 23, 2025
aafbe56
Merge pull request #571 from Altinity/24.8.8_regression
Enmk Jan 23, 2025
6fa7aaa
Using altinity/clickhouse-server:24.3.5.47.altinitystable for aarch64
Enmk Jan 24, 2025
b728176
Merge pull request #604 from Altinity/24.8-fix-integration-test_backw…
Enmk Jan 26, 2025
32cf34b
Merge pull request #582 from Altinity/customizations/24.8.11
Enmk Jan 27, 2025
43bdb6c
Do not associate run with random PR if there is no PR
Enmk Jan 27, 2025
04bb9f2
Using proper path to report if head_ref contains '/'
Enmk Jan 28, 2025
70a7c76
Some debugging and also do not fail the job
Enmk Jan 28, 2025
1b5f6d8
Copying changes for test crossout from other branch
strtgbb Jan 28, 2025
6ea4a4d
Triggering workflow by tag + fixed generating version from tag
Enmk Jan 28, 2025
43ea2f7
Merge pull request #606 from Altinity/24.8-fix-version-from-tag
Enmk Jan 28, 2025
07c1db1
Merge branch 'releases/24.8.11' into customizations/24.8.11
Enmk Jan 28, 2025
2cabb61
see if it's possible to cross out 'server died' fail
strtgbb Jan 29, 2025
1b4c7cb
update broken_tests.json with known fails
strtgbb Jan 29, 2025
271e7f3
try to suppress server died and job timeout fails
strtgbb Jan 29, 2025
0687512
split stateless known fails from analyzer fails
strtgbb Jan 29, 2025
f140fa0
Properly turn Job Timeout into a skip for integration
strtgbb Jan 30, 2025
9c39933
Merge branch 'customizations/24.8.11' into 24.8_override_broken_tests
strtgbb Jan 30, 2025
1c95855
Prevent Service died and Job Timeout setting the result state to failure
strtgbb Jan 30, 2025
4467165
Move 02181_format_describe_query to bugs
strtgbb Jan 30, 2025
05a7853
try forcing troublesome ubsan tests into sequential mode
strtgbb Jan 30, 2025
fe8032f
Now suspect 03222_pr_asan_index_granularity for ubsan fails, undo pre…
strtgbb Jan 31, 2025
8e83532
revert no longer needed server died changes
strtgbb Jan 31, 2025
fae9690
increase timeout for integration asan
strtgbb Jan 31, 2025
362a3c5
fix syntax
strtgbb Jan 31, 2025
32709cc
Revert setting timeout fail to skipped. Will rely on increased timeout
strtgbb Jan 31, 2025
8cc8349
Merge pull request #605 from Altinity/24.8_override_broken_tests
MyroTk Feb 3, 2025
09110de
unmark previously broken ubsan tests
strtgbb Feb 3, 2025
a80413a
proof of concept for regression tests in ci_running
strtgbb Feb 4, 2025
41c2b02
add back missing base_ref and head_ref
strtgbb Feb 4, 2025
ffaf474
Use the correct sha and report url
strtgbb Feb 4, 2025
3ac6e46
Merge branch 'customizations/24.8.11' into 24.8-fix-db-upload
strtgbb Feb 4, 2025
3d665e2
fix quoting
strtgbb Feb 4, 2025
ca2661c
set status and description for all regression tests
strtgbb Feb 4, 2025
3173413
fix file name
strtgbb Feb 5, 2025
216130c
update hash to use requests instead of pygithub
strtgbb Feb 5, 2025
3f1d1b6
update hash to use shorter status message
strtgbb Feb 5, 2025
25be027
update regression hash again
strtgbb Feb 5, 2025
d689c26
update regression hash again
strtgbb Feb 5, 2025
64606a9
fix regression not differentiating architecture in ci_running
strtgbb Feb 5, 2025
fb3ab1f
Merge branch 'customizations/24.8.11' into 24.8_override_broken_tests
MyroTk Feb 5, 2025
db8940c
Merge pull request #609 from Altinity/24.8_override_broken_tests
MyroTk Feb 5, 2025
3b9f85e
Merge pull request #611 from Altinity/24.8-fix-db-upload
MyroTk Feb 5, 2025
f2c71ca
Merge branch 'customizations/24.8.11' into add_regression_to_ci_running
MyroTk Feb 5, 2025
14bc97f
enable uploads to regression db
strtgbb Feb 6, 2025
1f8be1f
increase integration tests timeout
strtgbb Feb 7, 2025
4cf2f86
script for creating combined ci report
strtgbb Feb 7, 2025
00230a1
venv not installed by default, try without
strtgbb Feb 8, 2025
176b1a7
fix typo
strtgbb Feb 8, 2025
7bf0f0a
another typo
strtgbb Feb 9, 2025
ee93267
need to isntall dependencies explicitly
strtgbb Feb 9, 2025
d53c213
need to specify secrets
strtgbb Feb 9, 2025
2365916
cleanup
strtgbb Feb 10, 2025
adba730
fix typo
strtgbb Feb 10, 2025
ed49677
Account for regression reruns
strtgbb Feb 10, 2025
12e717f
change title
strtgbb Feb 10, 2025
d49fede
rename actions-job-url to actions-run-url because that's what it real…
strtgbb Feb 10, 2025
7655591
fix regression query
strtgbb Feb 11, 2025
420d17c
add toc and order by
strtgbb Feb 11, 2025
73af40e
docstrings
strtgbb Feb 11, 2025
e116e0d
working table sorting
strtgbb Feb 11, 2025
896c2b9
better line wrapping of test names and layout tweak
strtgbb Feb 11, 2025
948640c
increase timeout for arm integration tests
strtgbb Feb 11, 2025
66f7c1c
more responsive table size
strtgbb Feb 11, 2025
e45724a
little tweaks
strtgbb Feb 11, 2025
03590fe
adjust column order
strtgbb Feb 11, 2025
4ab146d
drop redundant rows from the regression fails table
strtgbb Feb 11, 2025
b7e8e4d
increase arm integration timeout again
strtgbb Feb 12, 2025
691d580
Merge pull request #610 from Altinity/add_regression_to_ci_running
MyroTk Feb 12, 2025
1c21448
Add Known Fails section to automated report
strtgbb Feb 12, 2025
cfb1c75
Remove trailing spaces in sql
strtgbb Feb 12, 2025
ccfc6cf
Merge pull request #624 from Altinity/24.8_known_fails_report
MyroTk Feb 13, 2025
5c23fa3
Merge remote-tracking branch 'altinity/customizations/24.8.11' into c…
Enmk Feb 18, 2025
4268672
Fix CI: Not adding compare url in case of tag
Enmk Jan 29, 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: 4 additions & 0 deletions .github/actionlint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ self-hosted-runner:
- func-tester
- func-tester-aarch64
- fuzzer-unit-tester
- altinity-on-demand
- altinity-type-cpx51
- altinity-in-ash
- altinity-image-x86-system-ubuntu-22.04
- style-checker
- style-checker-aarch64
- release-maker
10 changes: 10 additions & 0 deletions .github/actions/common_setup/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,16 @@ runs:
run: |
# to remove every leftovers
sudo rm -fr "$TEMP_PATH" && mkdir -p "$TEMP_PATH"
- name: Setup zram
shell: bash
run: |
sudo modprobe zram
MemTotal=$(grep -Po "(?<=MemTotal:)\s+\d+" /proc/meminfo) # KiB
Percent=200
ZRAM_SIZE=$(($MemTotal / 1024 / 1024 * $Percent / 100)) # Convert to GiB
.github/retry.sh 30 2 sudo zramctl --size ${ZRAM_SIZE}GiB --algorithm zstd /dev/zram0
sudo mkswap /dev/zram0 && sudo swapon -p 100 /dev/zram0
sudo sysctl vm.swappiness=200
- name: Tune vm.mmap_rnd_bits for sanitizers
shell: bash
run: |
Expand Down
31 changes: 31 additions & 0 deletions .github/actions/docker_setup/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: Docker setup
description: Setup docker
inputs:
test_name:
description: name of the test, used in determining ipv6 configs.
default: None
type: string
runs:
using: "composite"
steps:
- name: Docker IPv6 configuration
shell: bash
env:
ipv6_subnet: ${{ contains(inputs.test_name, 'Integration') && '2001:db8:1::/64' || '2001:3984:3989::/64' }}
run: |
# make sure docker uses proper IPv6 config
sudo touch /etc/docker/daemon.json
sudo chown ubuntu:ubuntu /etc/docker/daemon.json
sudo cat <<EOT > /etc/docker/daemon.json
{
"ipv6": true,
"fixed-cidr-v6": "${{ env.ipv6_subnet }}"
}
EOT
sudo chown root:root /etc/docker/daemon.json
sudo systemctl restart docker
sudo systemctl status docker
- name: Docker info
shell: bash
run: |
docker info
290 changes: 290 additions & 0 deletions .github/create_combined_ci_report.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,290 @@
#!/usr/bin/env python3
import argparse
import os
from pathlib import Path
from itertools import combinations
import json

import requests
from clickhouse_driver import Client
import boto3
from botocore.exceptions import NoCredentialsError

DATABASE_HOST_VAR = "CHECKS_DATABASE_HOST"
DATABASE_USER_VAR = "CHECKS_DATABASE_USER"
DATABASE_PASSWORD_VAR = "CHECKS_DATABASE_PASSWORD"
S3_BUCKET = "altinity-build-artifacts"


def get_checks_fails(client: Client, job_url: str):
"""
Get tests that did not succeed for the given job URL.
Exclude checks that have status 'error' as they are counted in get_checks_errors.
"""
columns = (
"check_status, check_name, test_status, test_name, report_url as results_link"
)
query = f"""SELECT {columns} FROM `gh-data`.checks
WHERE task_url='{job_url}'
AND test_status IN ('FAIL', 'ERROR')
AND check_status!='error'
ORDER BY check_name, test_name
"""
return client.query_dataframe(query)


def get_checks_known_fails(client: Client, job_url: str, known_fails: dict):
"""
Get tests that are known to fail for the given job URL.
"""
columns = (
"check_status, check_name, test_status, test_name, report_url as results_link"
)
query = f"""SELECT {columns} FROM `gh-data`.checks
WHERE task_url='{job_url}'
AND test_status='BROKEN'
AND test_name IN ({','.join(f"'{test}'" for test in known_fails.keys())})
ORDER BY check_name, test_name
"""

df = client.query_dataframe(query)

df.insert(
len(df.columns) - 1,
"reason",
df["test_name"]
.cat.remove_unused_categories()
.apply(
lambda test_name: known_fails[test_name].get("reason", "No reason given")
),
)

return df


def get_checks_errors(client: Client, job_url: str):
"""
Get checks that have status 'error' for the given job URL.
"""
columns = (
"check_status, check_name, test_status, test_name, report_url as results_link"
)
query = f"""SELECT {columns} FROM `gh-data`.checks
WHERE task_url='{job_url}'
AND check_status=='error'
ORDER BY check_name, test_name
"""
return client.query_dataframe(query)


def drop_prefix_rows(df, column_to_clean):
"""
Drop rows from the dataframe if:
- the row matches another row completely except for the specified column
- the specified column of that row is a prefix of the same column in another row
"""
to_drop = set()
reference_columns = [col for col in df.columns if col != column_to_clean]
for (i, row_1), (j, row_2) in combinations(df.iterrows(), 2):
if all(row_1[col] == row_2[col] for col in reference_columns):
if row_2[column_to_clean].startswith(row_1[column_to_clean]):
to_drop.add(i)
elif row_1[column_to_clean].startswith(row_2[column_to_clean]):
to_drop.add(j)
return df.drop(to_drop)


def get_regression_fails(client: Client, job_url: str):
"""
Get regression tests that did not succeed for the given job URL.
"""
# If you rename the alias for report_url, also update the formatters in format_results_as_html_table
query = f"""SELECT arch, status, test_name, results_link
FROM (
SELECT
architecture as arch,
test_name,
argMax(result, start_time) AS status,
job_url,
report_url as results_link
FROM `gh-data`.clickhouse_regression_results
GROUP BY architecture, test_name, job_url, report_url, start_time
ORDER BY start_time DESC, length(test_name) DESC
)
WHERE job_url='{job_url}'
AND status IN ('Fail', 'Error')
"""
df = client.query_dataframe(query)
df = drop_prefix_rows(df, "test_name")
return df


def url_to_html_link(url: str) -> str:
if not url:
return ""
text = url.split("/")[-1]
if not text:
text = "results"
return f'<a href="{url}">{text}</a>'


def format_test_name_for_linewrap(text: str) -> str:
"""Tweak the test name to improve line wrapping."""
return text.replace(".py::", "/")


def format_results_as_html_table(results) -> str:
if len(results) == 0:
return "<p>Nothing to report</p>"
results.columns = [col.replace("_", " ").title() for col in results.columns]
html = (
results.to_html(
index=False,
formatters={
"Results Link": url_to_html_link,
"Test Name": format_test_name_for_linewrap,
},
escape=False,
) # tbody/thead tags interfere with the table sorting script
.replace("<tbody>\n", "")
.replace("</tbody>\n", "")
.replace("<thead>\n", "")
.replace("</thead>\n", "")
.replace('<table border="1"', '<table style="min-width: min(900px, 98vw);"')
)
return html


def parse_args() -> argparse.Namespace:
parser = argparse.ArgumentParser(description="Create a combined CI report.")
parser.add_argument(
"--actions-run-url", required=True, help="URL of the actions run"
)
parser.add_argument(
"--pr-number", required=True, help="Pull request number for the S3 path"
)
parser.add_argument(
"--commit-sha", required=True, help="Commit SHA for the S3 path"
)
parser.add_argument(
"--no-upload", action="store_true", help="Do not upload the report"
)
parser.add_argument(
"--known-fails", type=str, help="Path to the file with known fails"
)
parser.add_argument(
"--mark-preview", action="store_true", help="Mark the report as a preview"
)
return parser.parse_args()


def main():
args = parse_args()

db_client = Client(
host=os.getenv(DATABASE_HOST_VAR),
user=os.getenv(DATABASE_USER_VAR),
password=os.getenv(DATABASE_PASSWORD_VAR),
port=9440,
secure="y",
verify=False,
settings={"use_numpy": True},
)

s3_path = (
f"https://s3.amazonaws.com/{S3_BUCKET}/{args.pr_number}/{args.commit_sha}/"
)
report_destination_url = s3_path + "combined_report.html"
ci_running_report_url = s3_path + "ci_running.html"

response = requests.get(ci_running_report_url)
if response.status_code == 200:
ci_running_report: str = response.text
else:
print(
f"Failed to download CI running report. Status code: {response.status_code}, Response: {response.text}"
)
exit(1)

fail_results = {
"checks_fails": get_checks_fails(db_client, args.actions_run_url),
"checks_known_fails": [],
"checks_errors": get_checks_errors(db_client, args.actions_run_url),
"regression_fails": get_regression_fails(db_client, args.actions_run_url),
}

if args.known_fails:
if not os.path.exists(args.known_fails):
print(f"Known fails file {args.known_fails} not found.")
exit(1)

with open(args.known_fails) as f:
known_fails = json.load(f)

if known_fails:
fail_results["checks_known_fails"] = get_checks_known_fails(
db_client, args.actions_run_url, known_fails
)

combined_report = (
ci_running_report.replace("ClickHouse CI running for", "Combined CI Report for")
.replace(
"<table>",
f"""<h2>Table of Contents</h2>
{'<p style="font-weight: bold;color: #F00;">This is a preview. FinishCheck has not completed.</p>' if args.mark_preview else ""}
<ul>
<li><a href="#ci-jobs-status">CI Jobs Status</a></li>
<li><a href="#checks-fails">Checks Fails</a> ({len(fail_results['checks_fails'])})</li>
<li><a href="#checks-known-fails">Checks Known Fails</a> ({len(fail_results['checks_known_fails'])})</li>
<li><a href="#checks-errors">Checks Errors</a> ({len(fail_results['checks_errors'])})</li>
<li><a href="#regression-fails">Regression Fails</a> ({len(fail_results['regression_fails'])})</li>
</ul>

<h2 id="ci-jobs-status">CI Jobs Status</h2>
<table>""",
1,
)
.replace(
"</table>",
f"""</table>

<h2 id="checks-fails">Checks Fails</h2>
{format_results_as_html_table(fail_results['checks_fails'])}

<h2 id="checks-known-fails">Checks Known Fails</h2>
{format_results_as_html_table(fail_results['checks_known_fails'])}

<h2 id="checks-errors">Checks Errors</h2>
{format_results_as_html_table(fail_results['checks_errors'])}

<h2 id="regression-fails">Regression Fails</h2>
{format_results_as_html_table(fail_results['regression_fails'])}
""",
1,
)
)
report_path = Path("combined_report.html")
report_path.write_text(combined_report, encoding="utf-8")

if args.no_upload:
print(f"Report saved to {report_path}")
exit(0)

# Upload the report to S3
s3_client = boto3.client("s3")

try:
s3_client.put_object(
Bucket=S3_BUCKET,
Key=f"{args.pr_number}/{args.commit_sha}/combined_report.html",
Body=combined_report,
ContentType="text/html; charset=utf-8",
)
except NoCredentialsError:
print("Credentials not available for S3 upload.")

print(report_destination_url)


if __name__ == "__main__":
main()
22 changes: 22 additions & 0 deletions .github/retry.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#!/bin/bash
# Execute command until exitcode is 0 or
# maximum number of retries is reached
# Example:
# ./retry <retries> <delay> <command>
retries=$1
delay=$2
command="${@:3}"
exitcode=0
try=0
until [ "$try" -ge $retries ]
do
echo "$command"
eval "$command"
exitcode=$?
if [ $exitcode -eq 0 ]; then
break
fi
try=$((try+1))
sleep $2
done
exit $exitcode
Loading
Loading