Skip to content
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

Update #1

Merged
merged 166 commits into from
Dec 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
166 commits
Select commit Hold shift + click to select a range
447b8c2
ci: Bump build-push-action to v6 (#2367)
aleksraiden Jun 29, 2024
ee69364
feat(config): add compaction-checker-cron to extend original compacti…
PragmaTwice Jun 30, 2024
e2cd4b1
chore: protect release branches in .asf.yaml (#2385)
PragmaTwice Jun 30, 2024
6feb0f5
fix(.asf.yaml): branch protection cannot be created (#2386)
PragmaTwice Jun 30, 2024
12067d9
ci: use official typos github action (#2388)
shoothzj Jul 1, 2024
f1c5acb
chore(ci): drop CentOS7 in CI since it's EOL now (#2393)
git-hulk Jul 2, 2024
5712cbd
refactor: rename variable names for clarity in LCS method (#2392)
shoothzj Jul 2, 2024
7ed512e
chore: Bump fmtlib to 11.0.0. (#2391)
aleksraiden Jul 2, 2024
5ff2d54
chore: Bump fmtlib to 11.0.1 (#2394)
aleksraiden Jul 6, 2024
dcb4075
chore: Bump rocksdb to v9.3.1 (#2380)
aleksraiden Jul 6, 2024
7dd0248
chore: Bump oneTBB to 2021.13.0 (#2375)
aleksraiden Jul 7, 2024
51569ad
feat: add `iter->status()` check for loop iterators (#2395)
LindaSummer Jul 7, 2024
e2c5b97
chore(.asf.yaml): add release branch 2.9 to protected branches (#2396)
PragmaTwice Jul 9, 2024
02e9707
fix(stream): NOGROUP/BUSYGROUP error message should return without 'E…
git-hulk Jul 10, 2024
121b780
chore(test): bump dependencies of go test (#2400)
aleksraiden Jul 10, 2024
12269d7
feat(search): Add HNSW encoding index & insertion/deletion algorithm …
Beihao-Zhou Jul 13, 2024
e49a8e1
perf(conn): skip index matching when index map is empty (#2405)
PragmaTwice Jul 13, 2024
3206206
chore(test): bump dependencies of go-redis (#2407)
aleksraiden Jul 13, 2024
ffdce20
chore(resp): extract RESP functions from Connection (#2406)
PragmaTwice Jul 13, 2024
d3115ba
fix: Add timeouts to go-redis client and ping on client creation (#2404)
torwig Jul 13, 2024
504322c
chore: bump RocksDB to v9.4.0 (#2408)
aleksraiden Jul 14, 2024
fd4b6e0
ci: Update MacOS runner to macos13 (#2324)
aleksraiden Jul 14, 2024
bfde458
ci: update runner os from ubuntu 20 to 22 (#2409)
PragmaTwice Jul 14, 2024
6473d6c
chore(x.py): improve style of commit message for release (#2410)
PragmaTwice Jul 14, 2024
beb1979
feat(cluster): support migrate slot range (#2389)
PokIsemaine Jul 14, 2024
79d53a1
chore(x.py): revert gotest timeout to 1800sec (#2413)
aleksraiden Jul 14, 2024
2b9fd53
chore: bump googletest to v1.15.0 (#2430)
aleksraiden Jul 16, 2024
e55ac72
feat(config): change redis-cursor-compatible default value to yes (#2…
jihuayu Jul 16, 2024
40be51e
chore: bump cpptrace to v0.6.3 (#2412)
aleksraiden Jul 16, 2024
a2a3826
refactor(stream): change the encoding of stream consumer group (#2384)
Yangsx-1 Jul 17, 2024
f6640f6
chore: fix complier warning in cluster and HNSW indexing (#2436)
jjz921024 Jul 18, 2024
ec3d903
fix(search): misidentify DESC token in SQL parser (#2439)
PragmaTwice Jul 21, 2024
68523ac
feat(stream): add support of XPENDING command (#2387)
Yangsx-1 Jul 21, 2024
6b23c5a
chore: bump fmtlib to v11.0.2 (#2440)
aleksraiden Jul 22, 2024
9bd993c
feat(json): add support of JSON.RESP command (#2390)
jackyyyyyssss Jul 23, 2024
45ba475
feat(search): support query parameters in SQL and RediSearch query (#…
PragmaTwice Jul 24, 2024
79a740c
feat(search): Hnsw Vector Search Plan Operator & Executor (#2434)
Beihao-Zhou Jul 24, 2024
de64c47
chore: bump lz4 to v1.10.0 (#2441)
aleksraiden Jul 24, 2024
5d287de
feat(config): allow to change the max length of the bulk string (#2444)
git-hulk Jul 25, 2024
a9c1a34
docs: add build debug kvrocks doc (#2431)
xiaobiaozhao Jul 25, 2024
406ed6e
docs: optimize the building section in README (#2447)
xiaobiaozhao Jul 26, 2024
e571925
feat(config): implement integer config option with unit (#2448)
PragmaTwice Jul 28, 2024
727bec2
feat(hyperloglog): add support of the Hyperloglog data structure (#2142)
tutububug Jul 31, 2024
f436ebc
feat(ci): integrate Rocky Linux environment into the CI workflow (#2451)
SpiffyEight77 Jul 31, 2024
b919343
build(cmake): update compiler version requirement (#2455)
PragmaTwice Jul 31, 2024
a3863f9
feat(hyperloglog): Add support of PFMERGE command (#2457)
mapleFU Aug 1, 2024
0f5f18e
feat(search): implement vector query for sql/redisearch parser & tran…
Beihao-Zhou Aug 2, 2024
f9d7297
chore(hyperloglog): add go test cases and minor optimizations/bugfixe…
mapleFU Aug 4, 2024
bf56a05
chore: improve the style and document for SlotMigration (#2465)
mapleFU Aug 5, 2024
76cb42d
chore: bump googletest to v1.15.2 (#2460)
aleksraiden Aug 6, 2024
edcb706
feat(search): Hnsw Vector Search Optimizaton Pass (#2466)
Beihao-Zhou Aug 7, 2024
01f353d
chore(storage): Remove speedb due to lack of active (#2476)
git-hulk Aug 7, 2024
7f812c7
feat(search): add support of HNSW vector fields for FT.CREATE (#2477)
Beihao-Zhou Aug 8, 2024
275ab32
feat(command): Implement the new command POLLUPDATES for polling upda…
git-hulk Aug 9, 2024
0d3898b
feat(command): add category enum for every command (#2479)
PragmaTwice Aug 9, 2024
9335032
chore(dockerfile): add binutils for addr2line in dockerfile (#2480)
PragmaTwice Aug 10, 2024
2d2d981
fix: monitor dumps 0xffffff prefix for signed char (#2482)
PragmaTwice Aug 10, 2024
5ace37d
chore: use `StringJoin` in `EnumField::Set` (#2485)
PragmaTwice Aug 10, 2024
a63d48e
feat(conn): add arguments for unknown command message (#2483)
PragmaTwice Aug 10, 2024
3408318
feat(search): allow to omit `ON HASH|JSON` in FT.CREATE (#2484)
PragmaTwice Aug 10, 2024
89b6a11
chore(dockerfile): use non-root user in Docker image (#2488)
kinoute Aug 14, 2024
a86d317
feat(script): support script flags of Eval script and Function (#2446)
PokIsemaine Aug 14, 2024
f38557b
feat: add slow flags for commands with heavy disk I/O (#2494)
jonathanc-n Aug 19, 2024
afd0a1b
fix(config): wrong rocksdb config name max_sub_compactions (#2499)
ChrisZMF Aug 21, 2024
111d4e8
chore: Bump cpptrace to v0.7.0 (#2501)
aleksraiden Aug 23, 2024
a1e0957
refactor: Improve consistency and isolation semantics by adding Conte…
PokIsemaine Aug 24, 2024
756777c
chore: Bump rocksdb to v9.5.2 (#2502)
aleksraiden Aug 25, 2024
39aeefe
fix(configuration): wrong comment line about the pidfile in configura…
git-hulk Aug 25, 2024
fa3290c
chore: Enable -Werror=unused-parameter flag (#2507)
c8ef Aug 27, 2024
6e7476f
ci: add Debian environment to CI workflow (#2510)
c8ef Aug 30, 2024
6c85004
feat(config): add `txn_context_enabled` to allow to enable the transa…
PokIsemaine Aug 31, 2024
0329170
fix(test): remove meaningless `list-max-ziplist-size` (#2517)
PokIsemaine Sep 2, 2024
ab41cbb
fix(replication): potential deadlock when switching master frequentl…
git-hulk Sep 2, 2024
68516e5
fix(typo): `filed -> field` (#2519)
AntiTopQuark Sep 2, 2024
c75ad64
feat: support limit WriteBatch size (#2508)
AntiTopQuark Sep 4, 2024
2836bf0
chore(tests): add basic test case for the full+partial sync (#2522)
git-hulk Sep 6, 2024
1d450ee
chore: bump rocksdb to v9.6.1 (#2525)
aleksraiden Sep 8, 2024
a29df09
fix(namespace): didn't reload namespaces from DB after the full sync …
git-hulk Sep 8, 2024
9fc8ffa
test: add go test cases for `txn-context-enabled` config (#2530)
PokIsemaine Sep 10, 2024
5110486
feat: add support of Bitmap type DUMP/RESTORE command support (#2535)
poipoiPIO Sep 14, 2024
28fc474
chore: bump cpptrace to v0.7.1 (#2536)
aleksraiden Sep 15, 2024
399961d
chore: bump PEGTL to v3.2.8 (#2537)
aleksraiden Sep 15, 2024
89c5b24
chore(tests): add basic tests for the stream consumer group (#2533)
jonathanc-n Sep 17, 2024
2a0c57a
chore(tests): enhance the namespace replication to prevent flaky test…
git-hulk Sep 17, 2024
a7dbd74
chore(tests): refactor and enhance test cases to prevent flaky test f…
git-hulk Sep 20, 2024
f402be0
fix(replication): didn't resume the db status after restarting full s…
git-hulk Sep 21, 2024
8c42aa0
fix(rdb): incorrect type conversion during RDB loads the int8 encodin…
fstd2 Sep 21, 2024
f2bc224
fix: add more check in cluster node parsing (#2538)
jonathanc-n Sep 22, 2024
b8cf118
fix(test): use fixed seed to improve reproducibility. (#2557)
LindaSummer Sep 27, 2024
1266227
ci: disable kvrocks2redis test for archlinux (#2575)
PragmaTwice Oct 3, 2024
e3211c1
feat(command): add slow flag to more commands (#2570)
PragmaTwice Oct 3, 2024
b6b4cbe
feat(json): change default max_nesting_depth to 1024 (#2572)
PragmaTwice Oct 3, 2024
91f6992
chore: bump jsoncons to v0.177.0 (#2493)
aleksraiden Oct 3, 2024
149d4fb
fix(stream): change XREADGROUP response for empty read response (#2569)
jonathanc-n Oct 3, 2024
8365087
feat(search): add field options and definition part to FT.INFO (#2571)
PragmaTwice Oct 4, 2024
290012e
fix(stream): Fix XPENDING serialization issue (#2566)
nathanlo-hrt Oct 4, 2024
0a43bad
feat(search): support the FT.TAGVALS command (#2564)
jonathanc-n Oct 4, 2024
3b8dcf6
fix(stream): fix `XINFO` group metadata key overlapping (#2576)
LindaSummer Oct 4, 2024
0d5f851
fix(json): JSON.MSET handles different paths for the same key incorre…
poipoiPIO Oct 5, 2024
b8788bc
chore(search): update README to add some references for KQIR (#2581)
PragmaTwice Oct 5, 2024
efb489f
ci: update github actions (#2584)
aleksraiden Oct 6, 2024
f2c4233
chore: Bump cpptrace to v0.7.2 (#2585)
aleksraiden Oct 7, 2024
57b5857
docs: Add Zulip URL to README (#2588)
PragmaTwice Oct 9, 2024
6eb923a
refactor: promote the `engine::Context` in the `Execute` (#2586)
PokIsemaine Oct 11, 2024
ff32f95
fix: some rocksdb properties are counted multiple times (#2589)
sryanyuan Oct 11, 2024
9219363
chore: add branch 2.10 as a protected branch in .asf.yaml (#2591)
PragmaTwice Oct 11, 2024
4fb0489
feat(config): support retrieving configuration fields using glob patt…
sryanyuan Oct 12, 2024
45b46d9
docs: remove the Slack invitation link from README.md (#2593)
git-hulk Oct 12, 2024
80b7d85
refactor: move rdb related code to `storage/rdb` folder (#2595)
LindaSummer Oct 13, 2024
94eb31c
fix: should remove the db lock from the context to prevent blocking u…
git-hulk Oct 14, 2024
fdf044d
fix: better checking for prefix matches (#2599)
nathanlo-hrt Oct 15, 2024
1d77232
chore: bump rocksdb to v9.7.2 (#2600)
aleksraiden Oct 17, 2024
576c431
feat(worker): Allow passing a socket FD to dup and listen on (#2598)
nathanlo-hrt Oct 18, 2024
4709734
feat(config): add `rocksdb.wal_compression` to allow enable wal compr…
paragor Oct 18, 2024
6ee4190
feat(conn): move time-consuming ops out of ExecuteCommand for context…
PragmaTwice Oct 19, 2024
313a1d9
fix(rocksdb): downgrade RocksDB to v9.3.1 due to a blobdb issue (#2614)
git-hulk Oct 20, 2024
e0de934
feat(config): add `rocksdb.compression_start_level` to allow configur…
paragor Oct 21, 2024
a738122
feat(config): Minor update comment for compression_start_level error …
mapleFU Oct 22, 2024
c525d7a
feat(cmd): avoid to use CommandAttributes::flags directly (#2619)
PragmaTwice Oct 24, 2024
5fccd57
feat(cmd): make key range fields private in CommandAttributes (#2621)
PragmaTwice Oct 24, 2024
c4664b1
fix(command): wrong key range in commands: DISK/MEMORY/DUMP (#2623)
git-hulk Oct 26, 2024
c7b6b22
fix(cmd): add exclusive flag to FLUSHDB/FLUSHALL (#2624)
PragmaTwice Oct 26, 2024
4aa36ec
feat(scan): Support arbitrary glob patterns (#2608)
nathanlo-hrt Oct 29, 2024
3a51869
feat(resp): optimize simple string "OK" construction (#2627)
RiversJin Oct 31, 2024
a7d5f4f
feat(status): support rocksdb::Status fowarding in GET_OR_RET (#2630)
PragmaTwice Oct 31, 2024
3a5eb97
chore: bump oneTBB to v2022.0.0 (#2632)
aleksraiden Nov 1, 2024
3a6a4be
chore: bump jsoncons to v0.178.0 (#2631)
aleksraiden Nov 1, 2024
8cf3162
chore: Add devcontainer config for Kvrocks (#2634)
what-is-me Nov 2, 2024
7a3cc8c
feat(cmd): add blocking flag and remove useless flags (#2637)
PragmaTwice Nov 2, 2024
4b50c9b
chore: bump rocksdb to v9.7.4 (#2639)
aleksraiden Nov 3, 2024
2f520f9
chore(cmd): add comments for command flags (#2641)
PragmaTwice Nov 3, 2024
55e99f2
fix(script): avoid SetCurrentConnection on read-only scripting (#2640)
PragmaTwice Nov 3, 2024
c701b98
fix(cluster): should remove the master if it's not node in the cluste…
git-hulk Nov 4, 2024
d66e827
ci: update crate-ci/typos to 1.27.0 (#2645)
aleksraiden Nov 4, 2024
1e25be6
refactor: hoist key mutexes to ExecuteCommands (#2620)
PokIsemaine Nov 4, 2024
c01b00e
fix(bugfix): for txn_write_batch creation (#2648)
mapleFU Nov 5, 2024
4de82cd
ci: update sonarcloud-github-c-cpp to v3 (#2646)
aleksraiden Nov 5, 2024
2fa2de7
feat(search): add mutex to HNSW index updating (#2649)
PragmaTwice Nov 7, 2024
e86444d
chore(search): improve code structure of IndexManager (#2650)
PragmaTwice Nov 8, 2024
1bb65c0
fix(log): fix rocksdb stall condition string output (#2651)
mapleFU Nov 8, 2024
7f1c3f7
ci: update deps in gotest (#2653)
aleksraiden Nov 9, 2024
01ce0e1
feat(search): print properties for vector field in FT.INFO (#2655)
PragmaTwice Nov 10, 2024
79f4d52
feat(cluster): add support of the JSON type in cluster migration (#2654)
git-hulk Nov 12, 2024
a4ccc21
feat(config): make rocksdb.dump_malloc_stats configurable (#2658)
nathanlo-hrt Nov 13, 2024
1974d98
chore(enhancement): rename is_txn_mode to txn_context_enabled (#2644)
mapleFU Nov 14, 2024
6747b8d
fix(cmd): args should be parsed before retrieving keys in COMMAND GET…
PragmaTwice Nov 14, 2024
91b5478
fix(stream): add `KeyRangeGen` for `XRead` and `XReadGroup` (#2657)
LindaSummer Nov 15, 2024
e26c54a
fix(cmd): always print ok log when get full data file info failed (#2…
sryanyuan Nov 15, 2024
185bfc6
refactor: initialize google logger after parsing options (#2664)
aleksraiden Nov 16, 2024
cc4f63d
feat(cmd): all blocking commands should be no-script (#2666)
PragmaTwice Nov 16, 2024
eb4de5c
feat(cmd): add the auth flag for authentication checking (#2669)
PragmaTwice Nov 16, 2024
5e9db79
fix(replication): slave blocks until keepalive timer is reached when …
sryanyuan Nov 16, 2024
c6d9ad2
feat(conn): avoid to check the command name directly (#2668)
PragmaTwice Nov 17, 2024
1dbd7d3
chore: bump cpptrace to v0.7.3 (#2670)
aleksraiden Nov 17, 2024
7611d73
fix(string): should reset the value of expired key for INCRBY cmd (#…
FishYoung Nov 18, 2024
88ac233
chore: bump glog to 0.7.1 (#2106)
aleksraiden Nov 19, 2024
f98cb0c
feat(cmd): add more information to shutdown log (#2672)
PragmaTwice Nov 19, 2024
fcf3b7b
feat(conn): allow CONFIG in stale-data replica (#2677)
PragmaTwice Nov 23, 2024
00dfc7c
feat(cmd, config): support REPLICAOF command and replicaof config opt…
PragmaTwice Nov 24, 2024
fbea2a5
ci: bump crate-ci/typos to 1.28 (#2680)
aleksraiden Nov 26, 2024
857eadf
ci: bump redis-py to 5.2.0 (#2681)
aleksraiden Nov 27, 2024
5cdc8c3
ci: bump gotest testify to v1.10.0 (#2682)
aleksraiden Nov 30, 2024
1ed45bc
fix(string): reset the value of expired key for SETRANGE cmd (#2686)
weim0000 Dec 3, 2024
b7e8195
chore: bump rocksdb to v9.8.4 (#2687)
aleksraiden Dec 4, 2024
d3bca42
feat: skip block cache deallocation to make shutdown fast (#2683)
wanghenshui Dec 5, 2024
698c3d4
feat(config): add the `partition_filters` option to disable the parti…
fukua95 Dec 6, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .asf.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,18 @@ github:
strict: true
contexts:
- Required
'1.3': {}
'2.0': {}
'2.1': {}
'2.2': {}
'2.3': {}
'2.4': {}
'2.5': {}
'2.6': {}
'2.7': {}
'2.8': {}
'2.9': {}
'2.10': {}

notifications:
commits: [email protected]
Expand Down
9 changes: 9 additions & 0 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
FROM ubuntu:noble
RUN apt update \
&& apt install -y \
git build-essential cmake libtool python3 libssl-dev python3-pip \
wget curl clang-format-14 clang-tidy-14 golang-go ninja-build \
redis-tools vim python3-redis redis-server clang lld mold gdb fish
RUN BUILD_DIR=$(pwd) && git clone https://github.com/jsha/minica /opt/minica \
&& cd /opt/minica && git checkout 96a5c93723cf3d34b50b3e723a9f05cd3765bc67 && go build && cd $BUILD_DIR \
&& echo 'export PATH=/opt/minica:$PATH' >> $HOME/.bashrc
5 changes: 5 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"build": {
"dockerfile": "Dockerfile"
}
}
5 changes: 5 additions & 0 deletions .github/config/typos.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,11 @@ extend-exclude = [
".git/",
"src/vendor/",
"tests/gocase/util/slot.go",

# Uses short strings for testing glob matching
"tests/cppunit/string_util_test.cc",
"tests/gocase/unit/keyspace/keyspace_test.go",
"tests/gocase/unit/scan/scan_test.go",
]
ignore-hidden = false

Expand Down
170 changes: 97 additions & 73 deletions .github/workflows/kvrocks.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ jobs:
docs_only: ${{ steps.result.outputs.docs_only }}
steps:
- uses: actions/checkout@v4
- uses: dorny/paths-filter@v3.0.0
- uses: dorny/paths-filter@v3
id: changes
with:
filters: .github/config/changes.yml
Expand All @@ -57,10 +57,10 @@ jobs:
FORCE_COLOR: 1
steps:
- uses: actions/checkout@v4
- name: Install typos
run: curl -LsSf https://github.com/crate-ci/typos/releases/download/v1.18.2/typos-v1.18.2-x86_64-unknown-linux-musl.tar.gz | tar zxf - -C ${CARGO_HOME:-~/.cargo}/bin
- name: Run typos check
run: typos --config .github/config/typos.toml
- name: Check typos
uses: crate-ci/typos@v1.28.0
with:
config: .github/config/typos.toml

check-and-lint:
name: Lint and check code
Expand Down Expand Up @@ -110,48 +110,48 @@ jobs:
fail-fast: false
matrix:
include:
# FIXME: update macos-11 to macos-12/13
# - name: Darwin Clang
# os: macos-11
# compiler: auto
- name: Darwin Clang
os: macos-13
compiler: auto
- name: Darwin Clang arm64
os: macos-14
compiler: auto
# - name: Darwin Clang without Jemalloc
# os: macos-11
# compiler: auto
# without_jemalloc: -DDISABLE_JEMALLOC=ON
# - name: Darwin Clang with OpenSSL
# os: macos-11
# compiler: auto
# with_openssl: -DENABLE_OPENSSL=ON
# - name: Darwin Clang without luaJIT
# os: macos-11
# compiler: auto
# without_luajit: -DENABLE_LUAJIT=OFF
- name: Darwin Clang without Jemalloc
os: macos-13
compiler: auto
without_jemalloc: -DDISABLE_JEMALLOC=ON
- name: Darwin Clang with OpenSSL
os: macos-13
compiler: auto
with_openssl: -DENABLE_OPENSSL=ON
- name: Darwin Clang without luaJIT
os: macos-13
compiler: auto
without_luajit: -DENABLE_LUAJIT=OFF
- name: Ubuntu GCC
os: ubuntu-20.04
os: ubuntu-22.04
compiler: gcc
- name: SonarCloud with Coverage
os: ubuntu-22.04
compiler: gcc
sonarcloud: -DCMAKE_CXX_FLAGS=--coverage
- name: Ubuntu Clang
os: ubuntu-20.04
compiler: clang
- name: Ubuntu 22 GCC
os: ubuntu-22.04
compiler: gcc
- name: Ubuntu 22 Clang
os: ubuntu-22.04
compiler: clang
# FIXME: https://github.com/apache/kvrocks/issues/2411
# - name: Ubuntu 24 GCC
# os: ubuntu-24.04
# compiler: gcc
# - name: Ubuntu 24 Clang
# os: ubuntu-24.04
# compiler: clang
- name: Ubuntu GCC ASan
os: ubuntu-20.04
os: ubuntu-22.04
without_jemalloc: -DDISABLE_JEMALLOC=ON
with_sanitizer: -DENABLE_ASAN=ON
compiler: gcc
- name: Ubuntu Clang ASan
os: ubuntu-20.04
os: ubuntu-22.04
with_sanitizer: -DENABLE_ASAN=ON
without_jemalloc: -DDISABLE_JEMALLOC=ON
compiler: clang
Expand All @@ -162,57 +162,54 @@ jobs:
compiler: gcc
ignore_when_tsan: -tags="ignore_when_tsan"
- name: Ubuntu Clang TSan
os: ubuntu-20.04
os: ubuntu-22.04
with_sanitizer: -DENABLE_TSAN=ON
without_jemalloc: -DDISABLE_JEMALLOC=ON
compiler: clang
ignore_when_tsan: -tags="ignore_when_tsan"
- name: Ubuntu Clang UBSAN
os: ubuntu-20.04
os: ubuntu-22.04
with_sanitizer: -DENABLE_UBSAN=ON
without_jemalloc: -DDISABLE_JEMALLOC=ON
compiler: clang
- name: Ubuntu GCC Ninja
os: ubuntu-20.04
os: ubuntu-22.04
with_ninja: --ninja
compiler: gcc
- name: Ubuntu GCC with OpenSSL
os: ubuntu-20.04
os: ubuntu-22.04
compiler: gcc
with_openssl: -DENABLE_OPENSSL=ON
- name: Ubuntu Clang with OpenSSL
os: ubuntu-22.04
compiler: clang
with_openssl: -DENABLE_OPENSSL=ON
- name: Ubuntu GCC without luaJIT
os: ubuntu-20.04
os: ubuntu-22.04
without_luajit: -DENABLE_LUAJIT=OFF
compiler: gcc
- name: Ubuntu Clang without luaJIT
os: ubuntu-20.04
os: ubuntu-22.04
without_luajit: -DENABLE_LUAJIT=OFF
compiler: clang
- name: Ubuntu GCC with old encoding
os: ubuntu-20.04
os: ubuntu-22.04
compiler: gcc
new_encoding: -DENABLE_NEW_ENCODING=FALSE
- name: Ubuntu Clang with old encoding
os: ubuntu-22.04
compiler: clang
new_encoding: -DENABLE_NEW_ENCODING=FALSE
- name: Ubuntu GCC with speedb enabled
os: ubuntu-20.04
compiler: gcc
with_speedb: -DENABLE_SPEEDB=ON

runs-on: ${{ matrix.os }}
env:
SONARCLOUD_OUTPUT_DIR: sonarcloud-data
FORCE_JAVASCRIPT_ACTIONS_TO_NODE20: true
steps:
- name: Setup macOS
if: ${{ startsWith(matrix.os, 'macos') }}
run: |
brew install cmake gcc autoconf automake libtool openssl
brew install --quiet --formula cmake gcc autoconf automake libtool openssl coreutils
echo "NPROC=$(sysctl -n hw.ncpu)" >> $GITHUB_ENV
echo "CMAKE_EXTRA_DEFS=-DOPENSSL_ROOT_DIR=/usr/local/opt/openssl" >> $GITHUB_ENV
- name: Setup Linux
Expand Down Expand Up @@ -261,15 +258,15 @@ jobs:
if: ${{ matrix.sonarcloud }}

- name: Install sonar-scanner and build-wrapper
uses: SonarSource/sonarcloud-github-c-cpp@v2
uses: SonarSource/sonarcloud-github-c-cpp@v3
if: ${{ matrix.sonarcloud }}

- name: Build Kvrocks
if: ${{ !matrix.sonarcloud }}
run: |
./x.py build -j$NPROC --unittest --compiler ${{ matrix.compiler }} ${{ matrix.without_jemalloc }} \
${{ matrix.without_luajit }} ${{ matrix.with_ninja }} ${{ matrix.with_sanitizer }} ${{ matrix.with_openssl }} \
${{ matrix.new_encoding }} ${{ matrix.with_speedb }} ${{ env.CMAKE_EXTRA_DEFS }}
${{ matrix.new_encoding }} ${{ env.CMAKE_EXTRA_DEFS }}

- name: Build Kvrocks (SonarCloud)
if: ${{ matrix.sonarcloud }}
Expand Down Expand Up @@ -310,7 +307,7 @@ jobs:
./x.py test go build $GOCASE_RUN_ARGS ${{ matrix.ignore_when_tsan}}

- name: Install redis-py
run: pip3 install redis==4.3.6
run: pip3 install redis==5.2.0

- name: Run kvrocks2redis Test
# Currently, when enabling Tsan/Asan or running in macOS 11/14, the value mismatch in destination redis server.
Expand Down Expand Up @@ -390,7 +387,7 @@ jobs:
- uses: actions/checkout@v4
- name: Get core numbers
run: echo "NPROC=$(nproc)" >> $GITHUB_ENV
- uses: docker/build-push-action@v5
- uses: docker/build-push-action@v6
with:
context: .
build-args: MORE_BUILD_ARGS=-j${{ env.NPROC }}
Expand Down Expand Up @@ -420,31 +417,26 @@ jobs:
fail-fast: false
matrix:
include:
- name: CentOS 7
image: centos:7
compiler: gcc
- name: openSUSE Leap 15
image: opensuse/leap:15
compiler: gcc
- name: ArchLinux
image: archlinux:base
compiler: gcc
- name: Rocky Linux 8
image: rockylinux:8
compiler: gcc
- name: Rocky Linux 9
image: rockylinux:9
compiler: gcc
- name: Debian 12
image: debian:12
compiler: gcc

runs-on: ubuntu-22.04
container:
image: ${{ matrix.image }}
steps:
- name: Setup CentOS
if: ${{ startsWith(matrix.image, 'centos') }}
run: |
yum install -y centos-release-scl-rh
yum install -y devtoolset-11 python3 python3-pip autoconf automake wget git gcc gcc-c++
echo "NPROC=$(nproc)" >> $GITHUB_ENV
mv /usr/bin/gcc /usr/bin/gcc-4.8.5
ln -s /opt/rh/devtoolset-11/root/bin/gcc /usr/bin/gcc
mv /usr/bin/g++ /usr/bin/g++-4.8.5
ln -s /opt/rh/devtoolset-11/root/bin/g++ /usr/bin/g++

- name: Setup ArchLinux
if: ${{ startsWith(matrix.image, 'archlinux') }}
run: |
Expand All @@ -462,40 +454,65 @@ jobs:
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 100
echo "NPROC=$(nproc)" >> $GITHUB_ENV

- name: Setup Rocky Linux 8
if: ${{ startsWith(matrix.image, 'rockylinux:8') }}
run: |
dnf install -y epel-release
dnf config-manager --set-enabled powertools
dnf install -y git gcc-toolset-12 autoconf automake libtool libstdc++-static python3 python3-pip openssl-devel which cmake
source /opt/rh/gcc-toolset-12/enable
update-alternatives --install /usr/bin/g++ g++ /opt/rh/gcc-toolset-12/root/usr/bin/g++ 100
update-alternatives --install /usr/bin/cc cc /opt/rh/gcc-toolset-12/root/usr/bin/gcc 100
update-alternatives --install /usr/bin/c++ c++ /opt/rh/gcc-toolset-12/root/usr/bin/g++ 100
echo "NPROC=$(nproc)" >> $GITHUB_ENV

- name: Setup Rocky Linux 9
if: ${{ startsWith(matrix.image, 'rockylinux:9') }}
run: |
dnf install -y epel-release
dnf config-manager --set-enabled crb
dnf install -y git gcc-toolset-12 autoconf automake libtool libstdc++-static python3 python3-pip openssl-devel which cmake
source /opt/rh/gcc-toolset-12/enable
update-alternatives --install /usr/bin/g++ g++ /opt/rh/gcc-toolset-12/root/usr/bin/g++ 100
update-alternatives --install /usr/bin/cc cc /opt/rh/gcc-toolset-12/root/usr/bin/gcc 100
update-alternatives --install /usr/bin/c++ c++ /opt/rh/gcc-toolset-12/root/usr/bin/g++ 100
echo "NPROC=$(nproc)" >> $GITHUB_ENV

- name: Setup Debian 12
if: ${{ startsWith(matrix.image, 'debian') }}
run: |
apt update
apt install -y bash build-essential cmake curl git libssl-dev libtool python3 python3-pip wget
echo "NPROC=$(nproc)" >> $GITHUB_ENV

- name: Cache redis
id: cache-redis
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: |
~/local/bin/redis-cli
key: ${{ matrix.image }}-redis-cli

- name: Cache redis server
id: cache-redis-server
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: |
~/local/bin/redis-server
key: ${{ matrix.image }}-redis-server

- name: Install redis
if: ${{ steps.cache-redis.outputs.cache-hit != 'true' || steps.cache-redis-server.outputs.cache-hit != 'true' }}
shell: bash
run: |
curl -O https://download.redis.io/releases/redis-6.2.14.tar.gz
tar -xzvf redis-6.2.14.tar.gz
mkdir -p $HOME/local/bin
pushd redis-6.2.14 && USE_JEMALLOC=no make -j$NPROC redis-cli && mv src/redis-cli $HOME/local/bin/ && popd
pushd redis-6.2.14 && USE_JEMALLOC=no make -j$NPROC redis-server && mv src/redis-server $HOME/local/bin/ && popd

- name: Install cmake
if: ${{ startsWith(matrix.image, 'centos') }}
run: |
VERSION=3.26.4
wget https://github.com/Kitware/CMake/releases/download/v$VERSION/cmake-$VERSION-linux-x86_64.sh
bash cmake-$VERSION-linux-x86_64.sh --skip-license --prefix=/usr

- uses: actions/checkout@v3 #v4 use Node 20 and not working at CentOS 7
- uses: actions/setup-go@v4 #v5 use Node 20 too
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
if: ${{ !startsWith(matrix.image, 'opensuse') }}
with:
go-version-file: 'tests/gocase/go.mod'
Expand All @@ -515,11 +532,18 @@ jobs:
GOCASE_RUN_ARGS=""
./x.py test go build $GOCASE_RUN_ARGS

- name: Install redis-py
if: ${{ !startsWith(matrix.image, 'archlinux') }} # already installed
- name: Install redis-py for openSUSE and Rocky
if: ${{ !startsWith(matrix.image, 'archlinux') && !startsWith(matrix.image, 'debian') }}
run: pip3 install redis==4.3.6

- name: Install redis-py for Debian
if: ${{ startsWith(matrix.image, 'debian') }}
run: apt install -y python3-redis

- name: Run kvrocks2redis Test
# FIXME: https://github.com/apache/kvrocks/issues/2574
if: ${{ !startsWith(matrix.image, 'archlinux') }}
shell: bash
run: |
$HOME/local/bin/redis-server --daemonize yes
mkdir -p kvrocks2redis-ci-data
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/nightly.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ jobs:
type=sha,prefix=nightly-{{date 'YYYYMMDD'}}-,format=short
type=raw,value=nightly

- uses: docker/build-push-action@v5
- uses: docker/build-push-action@v6
with:
context: .
platforms: linux/amd64, linux/arm64
Expand Down
Loading
Loading