Diff of the two buildlogs: -- --- b1/build.log 2025-10-13 06:30:53.129020180 +0000 +++ b2/build.log 2025-10-13 07:55:46.631475247 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Sat Nov 14 23:58:55 -12 2026 -I: pbuilder-time-stamp: 1794743935 +I: Current time: Mon Oct 13 20:30:54 +14 2025 +I: pbuilder-time-stamp: 1760337054 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/forky-reproducible-base.tgz] I: copying local configuration @@ -31,53 +31,85 @@ dpkg-source: info: applying 0007-CVE-2025-49112.patch I: Not using root during the build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/1260551/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/3766490/tmp/hooks/D01_modify_environment starting +debug: Running on ionos11-amd64. +I: Changing host+domainname to test build reproducibility +I: Adding a custom variable just for the fun of it... +I: Changing /bin/sh to bash +'/bin/sh' -> '/bin/bash' +lrwxrwxrwx 1 root root 9 Oct 13 06:31 /bin/sh -> /bin/bash +I: Setting pbuilder2's login shell to /bin/bash +I: Setting pbuilder2's GECOS to second user,second room,second work-phone,second home-phone,second other +I: user script /srv/workspace/pbuilder/3766490/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/3766490/tmp/hooks/D02_print_environment starting I: set - BUILDDIR='/build/reproducible-path' - BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' - BUILDUSERNAME='pbuilder1' - BUILD_ARCH='amd64' - DEBIAN_FRONTEND='noninteractive' - DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=42 ' - DISTRIBUTION='forky' - HOME='/root' - HOST_ARCH='amd64' + BASH=/bin/sh + BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath + BASH_ALIASES=() + BASH_ARGC=() + BASH_ARGV=() + BASH_CMDS=() + BASH_LINENO=([0]="12" [1]="0") + BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:. + BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") + BASH_VERSINFO=([0]="5" [1]="3" [2]="3" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu") + BASH_VERSION='5.3.3(1)-release' + BUILDDIR=/build/reproducible-path + BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' + BUILDUSERNAME=pbuilder2 + BUILD_ARCH=amd64 + DEBIAN_FRONTEND=noninteractive + DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=40 ' + DIRSTACK=() + DISTRIBUTION=forky + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=x86_64 + HOST_ARCH=amd64 IFS=' ' - INVOCATION_ID='09f9df03f73140c4beb36d240d0fcba3' - LANG='C' - LANGUAGE='en_US:en' - LC_ALL='C' - MAIL='/var/mail/root' - OPTIND='1' - PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games' - PBCURRENTCOMMANDLINEOPERATION='build' - PBUILDER_OPERATION='build' - PBUILDER_PKGDATADIR='/usr/share/pbuilder' - PBUILDER_PKGLIBDIR='/usr/lib/pbuilder' - PBUILDER_SYSCONFDIR='/etc' - PPID='1260551' - PS1='# ' - PS2='> ' + INVOCATION_ID=9c4d3c4379ad4789abf9c12226d8022b + LANG=C + LANGUAGE=et_EE:et + LC_ALL=C + MACHTYPE=x86_64-pc-linux-gnu + MAIL=/var/mail/root + OPTERR=1 + OPTIND=1 + OSTYPE=linux-gnu + PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path + PBCURRENTCOMMANDLINEOPERATION=build + PBUILDER_OPERATION=build + PBUILDER_PKGDATADIR=/usr/share/pbuilder + PBUILDER_PKGLIBDIR=/usr/lib/pbuilder + PBUILDER_SYSCONFDIR=/etc + PIPESTATUS=([0]="0") + POSIXLY_CORRECT=y + PPID=3766490 PS4='+ ' - PWD='/' - SHELL='/bin/bash' - SHLVL='2' - SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.lTF8fYHN/pbuilderrc_cNRa --distribution forky --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/forky-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.lTF8fYHN/b1 --logfile b1/build.log redict_7.3.6+ds-1.dsc' - SUDO_GID='110' - SUDO_HOME='/var/lib/jenkins' - SUDO_UID='105' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - _='/usr/bin/systemd-run' - http_proxy='http://213.165.73.152:3128' + PWD=/ + SHELL=/bin/bash + SHELLOPTS=braceexpand:errexit:hashall:interactive-comments:posix + SHLVL=3 + SUDO_COMMAND='/usr/bin/timeout -k 24.1h 24h /usr/bin/ionice -c 3 /usr/bin/nice -n 11 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.lTF8fYHN/pbuilderrc_Pn3E --distribution forky --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/forky-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.lTF8fYHN/b2 --logfile b2/build.log redict_7.3.6+ds-1.dsc' + SUDO_GID=111 + SUDO_HOME=/var/lib/jenkins + SUDO_UID=106 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' + http_proxy=http://46.16.76.132:3128 I: uname -a - Linux ionos5-amd64 6.12.48+deb13-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.48-1 (2025-09-20) x86_64 GNU/Linux + Linux i-capture-the-hostname 6.12.48+deb13-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.48-1 (2025-09-20) x86_64 GNU/Linux I: ls -l /bin - lrwxrwxrwx 1 root root 7 Aug 10 2025 /bin -> usr/bin -I: user script /srv/workspace/pbuilder/1260551/tmp/hooks/D02_print_environment finished + lrwxrwxrwx 1 root root 7 Aug 10 12:30 /bin -> usr/bin +I: user script /srv/workspace/pbuilder/3766490/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -199,7 +231,7 @@ Get: 58 http://deb.debian.org/debian forky/main amd64 tcl8.6 amd64 8.6.17+dfsg-1 [121 kB] Get: 59 http://deb.debian.org/debian forky/main amd64 tcl amd64 8.6.16 [4096 B] Get: 60 http://deb.debian.org/debian forky/main amd64 tcl-tls amd64 1.8.0-2 [65.1 kB] -Fetched 22.2 MB in 0s (139 MB/s) +Fetched 22.2 MB in 10s (2122 kB/s) Preconfiguring packages ... Selecting previously unselected package tzdata. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 19898 files and directories currently installed.) @@ -401,8 +433,8 @@ Setting up tzdata (2025b-5) ... Current default time zone: 'Etc/UTC' -Local time is now: Sun Nov 15 11:59:38 UTC 2026. -Universal Time is now: Sun Nov 15 11:59:38 UTC 2026. +Local time is now: Mon Oct 13 06:33:34 UTC 2025. +Universal Time is now: Mon Oct 13 06:33:34 UTC 2025. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up libjemalloc-dev (5.3.0-3) ... @@ -464,7 +496,11 @@ Building tag database... -> Finished parsing the build-deps I: Building the package -I: Running cd /build/reproducible-path/redict-7.3.6+ds/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S > ../redict_7.3.6+ds-1_source.changes +I: user script /srv/workspace/pbuilder/3766490/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for forky +I: user script /srv/workspace/pbuilder/3766490/tmp/hooks/A99_set_merged_usr finished +hostname: Name or service not known +I: Running cd /build/reproducible-path/redict-7.3.6+ds/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-genchanges -S > ../redict_7.3.6+ds-1_source.changes dpkg-buildpackage: info: source package redict dpkg-buildpackage: info: source version 7.3.6+ds-1 dpkg-buildpackage: info: source distribution unstable @@ -474,7 +510,7 @@ debian/rules clean dh clean --with=installsysusers dh_auto_clean - make -j42 distclean + make -j40 distclean make[1]: Entering directory '/build/reproducible-path/redict-7.3.6+ds' make -C src distclean make[2]: Entering directory '/build/reproducible-path/redict-7.3.6+ds/src' @@ -483,11 +519,11 @@ (cd ../deps && make distclean) make[3]: Entering directory '/build/reproducible-path/redict-7.3.6+ds/deps' (cd hiredict && make clean) > /dev/null || true -/bin/sh: 1: cd: can't cd to hiredict +/bin/sh: line 1: cd: hiredict: No such file or directory (cd linenoise && make clean) > /dev/null || true (cd lua && make clean) > /dev/null || true (cd jemalloc && [ -f Makefile ] && make distclean) > /dev/null || true -/bin/sh: 1: cd: can't cd to jemalloc +/bin/sh: line 1: cd: jemalloc: No such file or directory (cd hdr_histogram && make clean) > /dev/null || true (cd fpconv && make clean) > /dev/null || true (rm -f .make-*) @@ -512,7 +548,7 @@ debian/rules override_dh_auto_build make[1]: Entering directory '/build/reproducible-path/redict-7.3.6+ds' dh_auto_build -- V=1 USE_SYSTEM_JEMALLOC=yes USE_SYSTEMD=yes USE_JEMALLOC=yes USE_SYSTEM_HIREDICT=yes - make -j42 INSTALL="install --strip-program=true" V=1 USE_SYSTEM_JEMALLOC=yes USE_SYSTEMD=yes USE_JEMALLOC=yes USE_SYSTEM_HIREDICT=yes + make -j40 INSTALL="install --strip-program=true" V=1 USE_SYSTEM_JEMALLOC=yes USE_SYSTEMD=yes USE_JEMALLOC=yes USE_SYSTEM_HIREDICT=yes make[2]: Entering directory '/build/reproducible-path/redict-7.3.6+ds' make -C src all make[3]: Entering directory '/build/reproducible-path/redict-7.3.6+ds/src' @@ -562,18 +598,18 @@ cd linenoise && make MAKE hdr_histogram cd lua/src && make all CFLAGS="-Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -DLUA_USE_MKSTEMP -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/redict-7.3.6+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -I/usr/include/liblzf -O2" MYLDFLAGS="-Wl,-z,relro -Wl,-z,now -Wl,-no-as-needed -ldl -latomic -llzf" AR="ar rc" -cd hdr_histogram && make MAKE fpconv +cd hdr_histogram && make cd fpconv && make make[5]: Entering directory '/build/reproducible-path/redict-7.3.6+ds/deps/linenoise' cc -Wall -Os -g -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/redict-7.3.6+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -I/usr/include/liblzf -Wdate-time -D_FORTIFY_SOURCE=2 -c linenoise.c -make[5]: Entering directory '/build/reproducible-path/redict-7.3.6+ds/deps/hdr_histogram' -cc -std=c99 -Wall -Os -g -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/redict-7.3.6+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -I/usr/include/liblzf -Wdate-time -D_FORTIFY_SOURCE=2 -DHDR_MALLOC_INCLUDE=\"hdr_redis_malloc.h\" -c hdr_histogram.c make[5]: Entering directory '/build/reproducible-path/redict-7.3.6+ds/deps/lua/src' cc -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -DLUA_USE_MKSTEMP -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/redict-7.3.6+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -I/usr/include/liblzf -O2 -Wdate-time -D_FORTIFY_SOURCE=2 -c -o lapi.o lapi.c make[5]: Entering directory '/build/reproducible-path/redict-7.3.6+ds/deps/fpconv' cc -Wall -Os -g -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/redict-7.3.6+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -I/usr/include/liblzf -c fpconv_dtoa.c cc -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -DLUA_USE_MKSTEMP -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/redict-7.3.6+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -I/usr/include/liblzf -O2 -Wdate-time -D_FORTIFY_SOURCE=2 -c -o lcode.o lcode.c +make[5]: Entering directory '/build/reproducible-path/redict-7.3.6+ds/deps/hdr_histogram' +cc -std=c99 -Wall -Os -g -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/redict-7.3.6+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -I/usr/include/liblzf -Wdate-time -D_FORTIFY_SOURCE=2 -DHDR_MALLOC_INCLUDE=\"hdr_redis_malloc.h\" -c hdr_histogram.c cc -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -DLUA_USE_MKSTEMP -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/redict-7.3.6+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -I/usr/include/liblzf -O2 -Wdate-time -D_FORTIFY_SOURCE=2 -c -o ldebug.o ldebug.c cc -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -DLUA_USE_MKSTEMP -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/redict-7.3.6+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -I/usr/include/liblzf -O2 -Wdate-time -D_FORTIFY_SOURCE=2 -c -o ldo.o ldo.c cc -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -DLUA_USE_MKSTEMP -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/redict-7.3.6+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -I/usr/include/liblzf -O2 -Wdate-time -D_FORTIFY_SOURCE=2 -c -o ldump.o ldump.c @@ -614,8 +650,8 @@ make[5]: Leaving directory '/build/reproducible-path/redict-7.3.6+ds/deps/fpconv' ar rcs libhdrhistogram.a hdr_histogram.o make[5]: Leaving directory '/build/reproducible-path/redict-7.3.6+ds/deps/hdr_histogram' -make[5]: Leaving directory '/build/reproducible-path/redict-7.3.6+ds/deps/linenoise' ar rc liblua.a lapi.o lcode.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o lundump.o lvm.o lzio.o strbuf.o fpconv.o lauxlib.o lbaselib.o ldblib.o liolib.o lmathlib.o loslib.o ltablib.o lstrlib.o loadlib.o linit.o lua_cjson.o lua_struct.o lua_cmsgpack.o lua_bit.o # DLL needs all object files +make[5]: Leaving directory '/build/reproducible-path/redict-7.3.6+ds/deps/linenoise' ranlib liblua.a cc -o lua -Wl,-z,relro -Wl,-z,now -Wl,-no-as-needed -ldl -latomic -llzf lua.o liblua.a -lm cc -o luac -Wl,-z,relro -Wl,-z,now -Wl,-no-as-needed -ldl -latomic -llzf luac.o print.o liblua.a -lm @@ -755,16 +791,16 @@ Certificate request self-signature ok subject=O=Redict Test, CN=Generic-cert Generating DH parameters, 2048 bit long safe prime -..........................................................................................................................+.........................................................................................................................................................................................................................................................................................................................................................................................................................+.......................................................+.......................................................................+....................................................................................................................................................................................+....................................................................+....................................................................................................................................................................................................................................................................................................................+.............................................................................................................................+........................................................+....................................................................................................+..................................................................................................................................................................................................+................................................................................................+...........................................................................+................................................+..................................................................................................................................................................................................+....................................................................................................................................................................................+....................................................................................................................................................................................................................................+....................+.................................................................................................................................................................................................................................................................................................................................................................................................+.........................................................................................+........................................................................................+.................................................................................................................................................................................................+........................+.....+..........................................................................+............................+.......................................+.......................................................................+....+.........+...........................+................+.....................................................................................................+.................................................................................................+.............................................+............+...............................................................................................................+....................................................................................+......................................+..............................................+.......................................................................................................................................................................................+.........................................................+..................................................................................................................................+......+............................................+........................................................................................................................++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++* +................................................................................................................................................+...........................................................+..........................................+............................................................................................................................................................................................................................................+...........................+..........+..................................................................................+.........................................+..........+.......+...........................+................................................................................................................................................................................................................................................................................................................................+...............................................................................................................................................................................................................................................................................................................................................+............................................................................................................+........................................................................................................................................................+.......................................................+...................................................................................................................................................................+...................................................................+...........................+.............................................................................................................................................................................................................................+..........+............................................+..............................................................................................................................................................................................................+....................+............................................................................................................................................................................................+....................................................+......+..+.......+...............+..................................................................................................................................................................................................................................................................+...............+..............................................................................+..........................................+................................................................+..............................................+...............................................................................+.................................................................................................................................................................................+.................................................................................................................................................................................................................+...........................................................................................+.....................................................................................................................................................................................................+................................................................................................................................................+..........................................................+...........................................................................................................................................................................................................................................................................................................................................................................................+..+...............................................................................................................+...............................................................................................+.....................................................................................................................................................................................................................................................++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++*++* # Avoid race conditions in upstream testsuite ./runtest --clients 1 --verbose --dump-logs --tls || true Cleanup: may take some time... OK Starting test server at port 21079 -[ready]: 1270394 +[ready]: 3812712 Testing unit/printver === () Starting server 127.0.0.1:21111 ok Testing Redict version 7.3.6 (00000000) -[1/91 done]: unit/printver (0 seconds) +[1/91 done]: unit/printver (1 seconds) Testing unit/dump === (dump) Starting server 127.0.0.1:21113 ok [ok]: DUMP / RESTORE are able to serialize / unserialize a simple key (1 ms) @@ -777,59 +813,4593 @@ [ok]: RESTORE returns an error of the key already exists (0 ms) [ok]: RESTORE can overwrite an existing key with REPLACE (2 ms) [ok]: RESTORE can detect a syntax error for unrecognized options (0 ms) -[ok]: RESTORE should not store key that are already expired, with REPLACE will propagate it as DEL or UNLINK (761 ms) +[ok]: RESTORE should not store key that are already expired, with REPLACE will propagate it as DEL or UNLINK (880 ms) [ok]: DUMP of non existing key returns nil (0 ms) === (repl) Starting server 127.0.0.1:21115 ok -[ok]: MIGRATE is caching connections (315 ms) -[ok]: MIGRATE cached connections are released after some time (15003 ms) +[ok]: MIGRATE is caching connections (341 ms) +[ok]: MIGRATE cached connections are released after some time (15002 ms) === (repl) Starting server 127.0.0.1:21117 ok -[ok]: MIGRATE is able to migrate a key between two instances (235 ms) +[ok]: MIGRATE is able to migrate a key between two instances (227 ms) === (repl) Starting server 127.0.0.1:21119 ok -[ok]: MIGRATE is able to copy a key between two instances (226 ms) +[ok]: MIGRATE is able to copy a key between two instances (227 ms) === (repl) Starting server 127.0.0.1:21121 ok [ok]: MIGRATE will not overwrite existing keys, unless REPLACE is used (227 ms) === (repl) Starting server 127.0.0.1:21123 ok -[ok]: MIGRATE propagates TTL correctly (224 ms) +[ok]: MIGRATE propagates TTL correctly (227 ms) === (repl) Starting server 127.0.0.1:21125 ok -[ok]: MIGRATE can correctly transfer large values (12754 ms) +[ok]: MIGRATE can correctly transfer large values (12222 ms) === (repl) Starting server 127.0.0.1:21127 ok -[ok]: MIGRATE can correctly transfer hashes (233 ms) +[ok]: MIGRATE can correctly transfer hashes (530 ms) === (repl) Starting server 127.0.0.1:21129 ok -[ok]: MIGRATE timeout actually works (1077 ms) +[ok]: MIGRATE timeout actually works (1176 ms) === (repl) Starting server 127.0.0.1:21131 ok -[ok]: MIGRATE can migrate multiple keys at once (283 ms) +[ok]: MIGRATE can migrate multiple keys at once (526 ms) [ok]: MIGRATE with multiple keys must have empty key arg (1 ms) === (repl) Starting server 127.0.0.1:21133 ok -[ok]: MIGRATE with multiple keys migrate just existing ones (336 ms) +[ok]: MIGRATE with multiple keys migrate just existing ones (252 ms) === (repl) Starting server 127.0.0.1:21135 ok -[ok]: MIGRATE with multiple keys: stress command rewriting (526 ms) +[ok]: MIGRATE with multiple keys: stress command rewriting (553 ms) === (repl) Starting server 127.0.0.1:21137 ok -[ok]: MIGRATE with multiple keys: delete just ack keys (611 ms) +[ok]: MIGRATE with multiple keys: delete just ack keys (225 ms) === (repl) Starting server 127.0.0.1:21139 ok -[ok]: MIGRATE AUTH: correct and wrong password cases (328 ms) -[2/91 done]: unit/dump (34 seconds) +[ok]: MIGRATE AUTH: correct and wrong password cases (529 ms) +[2/91 done]: unit/dump (33 seconds) Testing unit/auth === (auth external:skip) Starting server 127.0.0.1:21141 ok [ok]: AUTH fails if there is no password configured server side (0 ms) -[ok]: Arity check for auth command (1 ms) +[ok]: Arity check for auth command (0 ms) === (auth external:skip) Starting server 127.0.0.1:21143 ok -[ok]: AUTH fails when a wrong password is given (5 ms) +[ok]: AUTH fails when a wrong password is given (6 ms) [ok]: Arbitrary command gives an error when AUTH is required (0 ms) [ok]: AUTH succeeds when the right password is given (0 ms) -[ok]: Once AUTH succeeded we can actually send commands to the server (0 ms) -[ok]: For unauthenticated clients multibulk and bulk length are limited (104 ms) +[ok]: Once AUTH succeeded we can actually send commands to the server (1 ms) +[ok]: For unauthenticated clients multibulk and bulk length are limited (13 ms) +[ok]: For unauthenticated clients output buffer is limited (3076 ms) +=== (auth_binary_password external:skip) Starting server 127.0.0.1:21145 ok +[ok]: AUTH fails when binary password is wrong (1 ms) +[ok]: AUTH succeeds when binary password is correct (0 ms) +=== (masterauth) Starting server 127.0.0.1:21147 ok +[ok]: MASTERAUTH test with binary password (1874 ms) +[3/91 done]: unit/auth (7 seconds) +Testing unit/protocol +=== (protocol network) Starting server 127.0.0.1:21149 ok +[ok]: Handle an empty query (47 ms) +[ok]: Negative multibulk length (49 ms) +[ok]: Out of range multibulk length (7 ms) +[ok]: Wrong multibulk payload header (6 ms) +[ok]: Negative multibulk payload length (7 ms) +[ok]: Out of range multibulk payload length (7 ms) +[ok]: Non-number multibulk payload length (6 ms) +[ok]: Multi bulk request not followed by bulk arguments (7 ms) +[ok]: Generic wrong number of args (6 ms) +[ok]: Unbalanced number of quotes (6 ms) +[ok]: Protocol desync regression test #1 (101 ms) +[ok]: Protocol desync regression test #2 (129 ms) +[ok]: Protocol desync regression test #3 (171 ms) +[ok]: raw protocol response (0 ms) +[ok]: raw protocol response - deferred (0 ms) +[ok]: raw protocol response - multiline (0 ms) +[ok]: RESP3 attributes (0 ms) +[ok]: RESP3 attributes readraw (0 ms) +[ok]: RESP3 attributes on RESP2 (1 ms) +[ok]: test big number parsing (0 ms) +[ok]: test bool parsing (1 ms) +[ok]: test verbatim str parsing (0 ms) +[ok]: test large number of args (18 ms) +[ok]: test argument rewriting - issue 9598 (1 ms) +=== (regression) Starting server 127.0.0.1:21151 ok +[ok]: Regression for a crash with blocking ops and pipelining (7 ms) +[4/91 done]: unit/protocol (2 seconds) +Testing unit/keyspace +=== (keyspace) Starting server 127.0.0.1:21153 ok +[ok]: DEL against a single item (1 ms) +[ok]: Vararg DEL (1 ms) +[ok]: Untagged multi-key commands (1 ms) +[ok]: KEYS with pattern (1 ms) +[ok]: KEYS to get all keys (0 ms) +[ok]: DBSIZE (1 ms) +[ok]: KEYS with hashtag (1 ms) +[ok]: DEL all keys (2 ms) +[ok]: DEL against expired key (1101 ms) +[ok]: EXISTS (1 ms) +[ok]: Zero length value in key. SET/GET/EXISTS (0 ms) +[ok]: Commands pipelining (0 ms) +[ok]: Non existing command (0 ms) +[ok]: RENAME basic usage (1 ms) +[ok]: RENAME source key should no longer exist (0 ms) +[ok]: RENAME against already existing key (0 ms) +[ok]: RENAMENX basic usage (1 ms) +[ok]: RENAMENX against already existing key (0 ms) +[ok]: RENAMENX against already existing key (2) (1 ms) +[ok]: RENAME against non existing source key (0 ms) +[ok]: RENAME where source and dest key are the same (existing) (0 ms) +[ok]: RENAMENX where source and dest key are the same (existing) (1 ms) +[ok]: RENAME where source and dest key are the same (non existing) (0 ms) +[ok]: RENAME with volatile key, should move the TTL as well (2 ms) +[ok]: RENAME with volatile key, should not inherit TTL of target key (1 ms) +[ok]: DEL all keys again (DB 0) (1 ms) +[ok]: DEL all keys again (DB 1) (1 ms) +[ok]: COPY basic usage for string (1 ms) +[ok]: COPY for string does not replace an existing key without REPLACE option (1 ms) +[ok]: COPY for string can replace an existing key with REPLACE option (0 ms) +[ok]: COPY for string ensures that copied data is independent of copying data (3 ms) +[ok]: COPY for string does not copy data to no-integer DB (0 ms) +[ok]: COPY can copy key expire metadata as well (1 ms) +[ok]: COPY does not create an expire if it does not exist (1 ms) +[ok]: COPY basic usage for list - quicklist (44 ms) +[ok]: COPY basic usage for list - listpack (1 ms) +[ok]: COPY basic usage for $type set (1 ms) +[ok]: COPY basic usage for $type set (1 ms) +[ok]: COPY basic usage for $type set (25 ms) +[ok]: COPY basic usage for listpack sorted set (2 ms) +[ok]: COPY basic usage for skiplist sorted set (17 ms) +[ok]: COPY basic usage for listpack hash (1 ms) +[ok]: COPY basic usage for hashtable hash (16 ms) +[ok]: COPY basic usage for stream (142 ms) +[ok]: COPY basic usage for stream-cgroups (6 ms) +[ok]: MOVE basic usage (1 ms) +[ok]: MOVE against key existing in the target DB (0 ms) +[ok]: MOVE against non-integer DB (#1428) (0 ms) +[ok]: MOVE can move key expire metadata as well (1 ms) +[ok]: MOVE does not create an expire if it does not exist (1 ms) +[ok]: SET/GET keys in different DBs (1 ms) +[ok]: RANDOMKEY (10 ms) +[ok]: RANDOMKEY against empty DB (0 ms) +[ok]: RANDOMKEY regression 1 (0 ms) +[ok]: KEYS * two times with long key, Github issue #1208 (0 ms) +[ok]: Regression for pattern matching long nested loops (0 ms) +[ok]: Regression for pattern matching very long nested loops (89 ms) +[ok]: Coverage: basic SWAPDB test and unhappy path (2 ms) +[ok]: Coverage: SWAPDB and FLUSHDB (2 ms) +[5/91 done]: unit/keyspace (2 seconds) +Testing unit/scan +=== (scan network standalone) Starting server 127.0.0.1:21155 ok +[ok]: {standalone} SCAN basic (130 ms) +[ok]: {standalone} SCAN COUNT (149 ms) +[ok]: {standalone} SCAN MATCH (125 ms) +[ok]: {standalone} SCAN TYPE (170 ms) +[ok]: {standalone} SCAN unknown type (124 ms) +[ok]: {standalone} SCAN with expired keys (134 ms) +[ok]: {standalone} SCAN with expired keys with TYPE filter (134 ms) +[ok]: {standalone} SSCAN with encoding intset (1 ms) +[ok]: {standalone} SSCAN with encoding listpack (1 ms) +[ok]: {standalone} SSCAN with encoding hashtable (6 ms) +[ok]: {standalone} HSCAN with encoding listpack (2 ms) +[ok]: {standalone} HSCAN with encoding hashtable (83 ms) +[ok]: {standalone} ZSCAN with encoding listpack (2 ms) +[ok]: {standalone} ZSCAN with encoding skiplist (77 ms) +[ok]: {standalone} SCAN guarantees check under write load (39 ms) +[ok]: {standalone} SSCAN with integer encoded object (issue #1345) (0 ms) +[ok]: {standalone} SSCAN with PATTERN (0 ms) +[ok]: {standalone} HSCAN with PATTERN (1 ms) +[ok]: {standalone} HSCAN with NOVALUES (1 ms) +[ok]: {standalone} ZSCAN with PATTERN (0 ms) +[ok]: {standalone} ZSCAN scores: regression test for issue #2175 (84 ms) +[ok]: {standalone} SCAN regression test for issue #4906 (11808 ms) +[ok]: {standalone} SCAN MATCH pattern implies cluster slot (51 ms) +=== (external:skip cluster scan) Starting server 127.0.0.1:21157 ok +[ok]: {cluster} SCAN basic (136 ms) +[ok]: {cluster} SCAN COUNT (90 ms) +[ok]: {cluster} SCAN MATCH (71 ms) +[ok]: {cluster} SCAN TYPE (110 ms) +[ok]: {cluster} SCAN unknown type (73 ms) +[ok]: {cluster} SCAN with expired keys (77 ms) +[ok]: {cluster} SCAN with expired keys with TYPE filter (79 ms) +[ok]: {cluster} SSCAN with encoding intset (1 ms) +[ok]: {cluster} SSCAN with encoding listpack (1 ms) +[ok]: {cluster} SSCAN with encoding hashtable (4 ms) +[ok]: {cluster} HSCAN with encoding listpack (1 ms) +[ok]: {cluster} HSCAN with encoding hashtable (73 ms) +[ok]: {cluster} ZSCAN with encoding listpack (1 ms) +[ok]: {cluster} ZSCAN with encoding skiplist (71 ms) +[ok]: {cluster} SCAN guarantees check under write load (22 ms) +[ok]: {cluster} SSCAN with integer encoded object (issue #1345) (0 ms) +[ok]: {cluster} SSCAN with PATTERN (1 ms) +[ok]: {cluster} HSCAN with PATTERN (0 ms) +[ok]: {cluster} HSCAN with NOVALUES (0 ms) +[ok]: {cluster} ZSCAN with PATTERN (0 ms) +[ok]: {cluster} ZSCAN scores: regression test for issue #2175 (48 ms) +[ok]: {cluster} SCAN regression test for issue #4906 (9733 ms) +[ok]: {cluster} SCAN MATCH pattern implies cluster slot (30 ms) +[6/91 done]: unit/scan (28 seconds) +Testing unit/info +=== (info external:skip) Starting server 127.0.0.1:21159 ok +=== () Starting server 127.0.0.1:21161 ok +[ok]: latencystats: disable/enable (2 ms) +[ok]: latencystats: configure percentiles (3 ms) +[ok]: latencystats: bad configure percentiles (3 ms) +[ok]: latencystats: blocking commands (9 ms) +[ok]: latencystats: subcommands (2 ms) +[ok]: latencystats: measure latency (52 ms) +[ok]: errorstats: failed call authentication error (2 ms) +[ok]: errorstats: failed call within MULTI/EXEC (4 ms) +[ok]: errorstats: failed call within LUA (3 ms) +[ok]: errorstats: failed call NOSCRIPT error (2 ms) +[ok]: errorstats: failed call NOGROUP error (2 ms) +[ok]: errorstats: rejected call unknown command (2 ms) +[ok]: errorstats: rejected call within MULTI/EXEC (4 ms) +[ok]: errorstats: rejected call due to wrong arity (2 ms) +[ok]: errorstats: rejected call by OOM error (2 ms) +[ok]: errorstats: rejected call by authorization error (2 ms) +[ok]: errorstats: blocking commands (9 ms) +[ok]: errorstats: limit errors will not increase indefinitely (257 ms) +eventloop metrics cycle1: 1103, cycle2: 1105 +eventloop metrics el_sum1: 69661, el_sum2: 69907 +eventloop metrics cmd_sum1: 14988, cmd_sum2: 15011 +[ok]: stats: eventloop metrics (112 ms) +instantaneous metrics instantaneous_eventloop_cycles_per_sec: 8 +instantaneous metrics instantaneous_eventloop_duration_usec: 201 +[ok]: stats: instantaneous metrics (1604 ms) +[ok]: stats: debug metrics (113 ms) +[ok]: stats: client input and output buffer limit disconnections (112 ms) +[ok]: clients: pubsub clients (14 ms) +[ok]: clients: watching clients (12 ms) +=== (info external:skip) Starting server 127.0.0.1:21163 ok +[ok]: memory: database and pubsub overhead and rehashing dict count (5 ms) +[7/91 done]: unit/info (4 seconds) +Testing unit/info-command +=== (info and its relative command) Starting server 127.0.0.1:21165 ok +[ok]: info command with at most one sub command (2 ms) +[ok]: info command with one sub-section (1 ms) +[ok]: info command with multiple sub-sections (1 ms) +[8/91 done]: unit/info-command (0 seconds) +Testing unit/type/string +=== (string) Starting server 127.0.0.1:21167 ok +[ok]: SET and GET an item (1 ms) +[ok]: SET and GET an empty item (0 ms) +[ok]: Very big payload in GET/SET (57 ms) +[ok]: Very big payload random access (5468 ms) +[ok]: SET 10000 numeric keys and access all them in reverse order (3170 ms) +[ok]: DBSIZE should be 10000 now (0 ms) +[ok]: SETNX target key missing (1 ms) +[ok]: SETNX target key exists (0 ms) +[ok]: SETNX against not-expired volatile key (0 ms) +[ok]: SETNX against expired volatile key (3642 ms) +[ok]: GETEX EX option (1 ms) +[ok]: GETEX PX option (1 ms) +[ok]: GETEX EXAT option (1 ms) +[ok]: GETEX PXAT option (1 ms) +[ok]: GETEX PERSIST option (1 ms) +[ok]: GETEX no option (1 ms) +[ok]: GETEX syntax errors (0 ms) +[ok]: GETEX and GET expired key or not exist (3 ms) +[ok]: GETEX no arguments (0 ms) +[ok]: GETDEL command (1 ms) +[ok]: GETDEL propagate as DEL command to replica (1005 ms) +[ok]: GETEX without argument does not propagate to replica (102 ms) +[ok]: MGET (5 ms) +[ok]: MGET against non existing key (0 ms) +[ok]: MGET against non-string key (1 ms) +[ok]: GETSET (set new value) (0 ms) +[ok]: GETSET (replace old value) (1 ms) +[ok]: MSET base case (0 ms) +[ok]: MSET/MSETNX wrong number of args (0 ms) +[ok]: MSET with already existing - same key twice (1 ms) +[ok]: MSETNX with already existent key (0 ms) +[ok]: MSETNX with not existing keys (1 ms) +[ok]: MSETNX with not existing keys - same key twice (0 ms) +[ok]: MSETNX with already existing keys - same key twice (0 ms) +[ok]: STRLEN against non-existing key (0 ms) +[ok]: STRLEN against integer-encoded value (1 ms) +[ok]: STRLEN against plain string (0 ms) +[ok]: SETBIT against non-existing key (1 ms) +[ok]: SETBIT against string-encoded key (1 ms) +[ok]: SETBIT against integer-encoded key (1 ms) +[ok]: SETBIT against key with wrong type (1 ms) +[ok]: SETBIT with out of range bit offset (0 ms) +[ok]: SETBIT with non-bit argument (0 ms) +[ok]: SETBIT fuzzing (724 ms) +[ok]: GETBIT against non-existing key (0 ms) +[ok]: GETBIT against string-encoded key (2 ms) +[ok]: GETBIT against integer-encoded key (1 ms) +[ok]: SETRANGE against non-existing key (2 ms) +[ok]: SETRANGE against string-encoded key (2 ms) +[ok]: SETRANGE against integer-encoded key (3 ms) +[ok]: SETRANGE against key with wrong type (0 ms) +[ok]: SETRANGE with out of range offset (1 ms) +[ok]: GETRANGE against non-existing key (1 ms) +[ok]: GETRANGE against wrong key type (0 ms) +[ok]: GETRANGE against string value (1 ms) +[ok]: GETRANGE against integer-encoded value (1 ms) +[ok]: GETRANGE fuzzing (823 ms) +[ok]: Coverage: SUBSTR (1 ms) +[ok]: trim on SET with big value (87 ms) +[ok]: Extended SET can detect syntax errors (0 ms) +[ok]: Extended SET NX option (1 ms) +[ok]: Extended SET XX option (1 ms) +[ok]: Extended SET GET option (1 ms) +[ok]: Extended SET GET option with no previous value (0 ms) +[ok]: Extended SET GET option with XX (1 ms) +[ok]: Extended SET GET option with XX and no previous value (1 ms) +[ok]: Extended SET GET option with NX (0 ms) +[ok]: Extended SET GET option with NX and previous value (1 ms) +[ok]: Extended SET GET with incorrect type should result in wrong type error (1 ms) +[ok]: Extended SET EX option (1 ms) +[ok]: Extended SET PX option (1 ms) +[ok]: Extended SET EXAT option (0 ms) +[ok]: Extended SET PXAT option (1 ms) +[ok]: Extended SET using multiple options at once (1 ms) +[ok]: GETRANGE with huge ranges, Github issue #1844 (0 ms) +[ok]: LCS basic (1 ms) +[ok]: LCS len (1 ms) +[ok]: LCS indexes (1 ms) +[ok]: LCS indexes with match len (0 ms) +[ok]: LCS indexes with match len and minimum match len (1 ms) +[ok]: SETRANGE with huge offset (0 ms) +[ok]: APPEND modifies the encoding from int to raw (2 ms) +[9/91 done]: unit/type/string (15 seconds) +Testing unit/type/incr +=== (incr) Starting server 127.0.0.1:21169 ok +[ok]: INCR against non existing key (1 ms) +[ok]: INCR against key created by incr itself (0 ms) +[ok]: DECR against key created by incr (0 ms) +[ok]: DECR against key is not exist and incr (1 ms) +[ok]: INCR against key originally set with SET (0 ms) +[ok]: INCR over 32bit value (1 ms) +[ok]: INCRBY over 32bit value with over 32bit increment (0 ms) +[ok]: INCR fails against key with spaces (left) (1 ms) +[ok]: INCR fails against key with spaces (right) (0 ms) +[ok]: INCR fails against key with spaces (both) (1 ms) +[ok]: DECRBY negation overflow (0 ms) +[ok]: INCR fails against a key holding a list (1 ms) +[ok]: DECRBY over 32bit value with over 32bit increment, negative res (0 ms) +[ok]: DECRBY against key is not exist (1 ms) +[ok]: INCR uses shared objects in the 0-9999 range (1 ms) +[ok]: INCR can modify objects in-place (1 ms) +[ok]: INCRBYFLOAT against non existing key (1 ms) +[ok]: INCRBYFLOAT against key originally set with SET (1 ms) +[ok]: INCRBYFLOAT over 32bit value (0 ms) +[ok]: INCRBYFLOAT over 32bit value with over 32bit increment (1 ms) +[ok]: INCRBYFLOAT fails against key with spaces (left) (0 ms) +[ok]: INCRBYFLOAT fails against key with spaces (right) (1 ms) +[ok]: INCRBYFLOAT fails against key with spaces (both) (0 ms) +[ok]: INCRBYFLOAT fails against a key holding a list (1 ms) +[ok]: INCRBYFLOAT does not allow NaN or Infinity (0 ms) +[ok]: INCRBYFLOAT decrement (1 ms) +[ok]: string to double with null terminator (0 ms) +[ok]: No negative zero (0 ms) +[ok]: INCRBY INCRBYFLOAT DECRBY against unhappy path (2 ms) +[ok]: incr operation should update encoding from raw to int (1 ms) +[ok]: decr operation should update encoding from raw to int (1 ms) +[ok]: incrby operation should update encoding from raw to int (1 ms) +[ok]: decrby operation should update encoding from raw to int (2 ms) +[10/91 done]: unit/type/incr (1 seconds) +Testing unit/type/list +=== () Starting server 127.0.0.1:21171 ok +[ok]: packed node check compression with insert and pop (4 ms) +[ok]: packed node check compression combined with trim (1 ms) +[ok]: packed node check compression with lset (2 ms) +[ok]: plain node check compression with insert and pop (365 ms) +[ok]: plain node check compression combined with trim (142 ms) +[ok]: plain node check compression with lset (180 ms) +=== () Starting server 127.0.0.1:21173 ok +[ok]: Test LPUSH and LPOP on plain nodes (11 ms) +[ok]: Test LINDEX and LINSERT on plain nodes (3 ms) +[ok]: Test LTRIM on plain nodes (1 ms) +[ok]: Test LREM on plain nodes (2 ms) +[ok]: Test LPOS on plain nodes (2 ms) +[ok]: Test LMOVE on plain nodes (3 ms) +[ok]: Test LSET with packed / plain combinations (180 ms) +[ok]: Test LSET with packed is split in the middle (5 ms) +[ok]: Test LSET with packed consist only one item (190 ms) +[ok]: Crash due to delete entry from a compress quicklist node (2 ms) +[ok]: Crash due to split quicklist node wrongly (1 ms) +[ok]: Test LPUSH and LPOP on plain nodes (1258 ms) +[ok]: Test LINDEX and LINSERT on plain nodes (2 ms) +[ok]: Test LTRIM on plain nodes (2 ms) +[ok]: Test LREM on plain nodes (2 ms) +[ok]: Test LPOS on plain nodes (1 ms) +[ok]: Test LMOVE on plain nodes (3 ms) +[ok]: Test LSET with packed / plain combinations (176 ms) +[ok]: Test LSET with packed is split in the middle (4 ms) +[ok]: Test LSET with packed consist only one item (175 ms) +[ok]: Crash due to delete entry from a compress quicklist node (2 ms) +[ok]: Crash due to split quicklist node wrongly (2 ms) +=== () Starting server 127.0.0.1:21175 ok +[ignore]: Test LPUSH and LPOP on plain nodes over 4GB: large memory flag not provided +[ignore]: Test LINDEX and LINSERT on plain nodes over 4GB: large memory flag not provided +[ignore]: Test LTRIM on plain nodes over 4GB: large memory flag not provided +[ignore]: Test LREM on plain nodes over 4GB: large memory flag not provided +[ignore]: Test LSET on plain nodes over 4GB: large memory flag not provided +[ignore]: Test LSET on plain nodes with large elements under packed_threshold over 4GB: large memory flag not provided +[ignore]: Test LSET splits a quicklist node, and then merge: large memory flag not provided +[ignore]: Test LSET splits a LZF compressed quicklist node, and then merge: large memory flag not provided +[ignore]: Test LMOVE on plain nodes over 4GB: large memory flag not provided +=== (list) Starting server 127.0.0.1:21177 ok +[ok]: LPOS basic usage - quicklist (43 ms) +[ok]: LPOS RANK (positive, negative and zero rank) option (2 ms) +[ok]: LPOS COUNT option (1 ms) +[ok]: LPOS COUNT + RANK option (0 ms) +[ok]: LPOS non existing key (1 ms) +[ok]: LPOS no match (0 ms) +[ok]: LPOS MAXLEN (1 ms) +[ok]: LPOS when RANK is greater than matches (1 ms) +[ok]: LPUSH, RPUSH, LLENGTH, LINDEX, LPOP - quicklist (87 ms) +[ok]: LPOP/RPOP with wrong number of arguments (0 ms) +[ok]: RPOP/LPOP with the optional count argument - quicklist (43 ms) +[ok]: LPOS basic usage - listpack (0 ms) +[ok]: LPOS RANK (positive, negative and zero rank) option (1 ms) +[ok]: LPOS COUNT option (1 ms) +[ok]: LPOS COUNT + RANK option (0 ms) +[ok]: LPOS non existing key (1 ms) +[ok]: LPOS no match (0 ms) +[ok]: LPOS MAXLEN (1 ms) +[ok]: LPOS when RANK is greater than matches (1 ms) +[ok]: LPUSH, RPUSH, LLENGTH, LINDEX, LPOP - listpack (3 ms) +[ok]: LPOP/RPOP with wrong number of arguments (0 ms) +[ok]: RPOP/LPOP with the optional count argument - listpack (1 ms) +[ok]: LPOP/RPOP with the count 0 returns an empty array in RESP3 (1 ms) +[ok]: LPOP/RPOP against non existing key in RESP3 (0 ms) +[ok]: LPOP/RPOP with against non existing key in RESP3 (1 ms) +[ok]: LPOP/RPOP with the count 0 returns an empty array in RESP2 (0 ms) +[ok]: LPOP/RPOP against non existing key in RESP2 (1 ms) +[ok]: LPOP/RPOP with against non existing key in RESP2 (1 ms) +[ok]: Variadic RPUSH/LPUSH (1 ms) +[ok]: DEL a list (1 ms) +[ok]: BLPOP: single existing list - quicklist (53 ms) +[ok]: BLPOP: multiple existing lists - quicklist (96 ms) +[ok]: BLPOP: second list has an entry - quicklist (51 ms) +[ok]: BLMPOP_LEFT: single existing list - quicklist (53 ms) +[ok]: BLMPOP_LEFT: multiple existing lists - quicklist (100 ms) +[ok]: BLMPOP_LEFT: second list has an entry - quicklist (51 ms) +[ok]: BRPOPLPUSH - quicklist (52 ms) +[ok]: BLMOVE left left - quicklist (60 ms) +[ok]: BLMOVE left right - quicklist (52 ms) +[ok]: BLMOVE right left - quicklist (56 ms) +[ok]: BLMOVE right right - quicklist (52 ms) +[ok]: BLPOP: single existing list - listpack (8 ms) +[ok]: BLPOP: multiple existing lists - listpack (8 ms) +[ok]: BLPOP: second list has an entry - listpack (9 ms) +[ok]: BLMPOP_LEFT: single existing list - listpack (9 ms) +[ok]: BLMPOP_LEFT: multiple existing lists - listpack (9 ms) +[ok]: BLMPOP_LEFT: second list has an entry - listpack (8 ms) +[ok]: BRPOPLPUSH - listpack (10 ms) +[ok]: BLMOVE left left - listpack (9 ms) +[ok]: BLMOVE left right - listpack (9 ms) +[ok]: BLMOVE right left - listpack (10 ms) +[ok]: BLMOVE right right - listpack (11 ms) +[ok]: BLPOP, LPUSH + DEL should not awake blocked client (9 ms) +[ok]: BLPOP, LPUSH + DEL + SET should not awake blocked client (10 ms) +[ok]: BLMPOP_LEFT, LPUSH + DEL should not awake blocked client (9 ms) +[ok]: BLMPOP_LEFT, LPUSH + DEL + SET should not awake blocked client (8 ms) +[ok]: BLPOP with same key multiple times should work (issue #801) (9 ms) +[ok]: MULTI/EXEC is isolated from the point of view of BLPOP (8 ms) +[ok]: BLPOP with variadic LPUSH (7 ms) +[ok]: MULTI/EXEC is isolated from the point of view of BLMPOP_LEFT (7 ms) +[ok]: BLMPOP_LEFT with variadic LPUSH (8 ms) +[ok]: BRPOPLPUSH with zero timeout should block indefinitely (7 ms) +[ok]: BLMOVE left left with zero timeout should block indefinitely (7 ms) +[ok]: BLMOVE left right with zero timeout should block indefinitely (7 ms) +[ok]: BLMOVE right left with zero timeout should block indefinitely (7 ms) +[ok]: BLMOVE right right with zero timeout should block indefinitely (7 ms) +[ok]: BLMOVE (left, left) with a client BLPOPing the target list (216 ms) +[ok]: BLMOVE (left, right) with a client BLPOPing the target list (13 ms) +[ok]: BLMOVE (right, left) with a client BLPOPing the target list (15 ms) +[ok]: BLMOVE (right, right) with a client BLPOPing the target list (12 ms) +[ok]: BRPOPLPUSH with wrong source type (6 ms) +[ok]: BRPOPLPUSH with wrong destination type (15 ms) +[ok]: BRPOPLPUSH maintains order of elements after failure (8 ms) +[ok]: BRPOPLPUSH with multiple blocked clients (16 ms) +[ok]: BLMPOP with multiple blocked clients (31 ms) +[ok]: Linked LMOVEs (17 ms) +[ok]: Circular BRPOPLPUSH (16 ms) +[ok]: Self-referential BRPOPLPUSH (8 ms) +[ok]: BRPOPLPUSH inside a transaction (1 ms) +[ok]: PUSH resulting from BRPOPLPUSH affect WATCH (16 ms) +[ok]: BRPOPLPUSH does not affect WATCH while still blocked (17 ms) +[ok]: BRPOPLPUSH timeout (1028 ms) +[ok]: SWAPDB awakes blocked client (7 ms) +[ok]: SWAPDB wants to wake blocked client, but the key already expired (735 ms) +[ok]: MULTI + LPUSH + EXPIRE + DEBUG SLEEP on blocked client, key already expired (230 ms) +[ok]: BLPOP unblock but the key is expired and then block again - reprocessing command (1015 ms) +[ok]: BLPOP when new key is moved into place (9 ms) +[ok]: BLPOP when result key is created by SORT..STORE (9 ms) +[ok]: BLMPOP_LEFT when new key is moved into place (8 ms) +[ok]: BLMPOP_LEFT when result key is created by SORT..STORE (8 ms) +[ok]: BLPOP: timeout value out of range (0 ms) +[ok]: BLPOP: with single empty list argument (8 ms) +[ok]: BLPOP: with negative timeout (7 ms) +[ok]: BLPOP: with non-integer timeout (8 ms) +[ok]: BLPOP: with zero timeout should block indefinitely (8 ms) +[ok]: BLPOP: with 0.001 timeout should not block indefinitely (29 ms) +[ok]: BLPOP: second argument is not a list (8 ms) +[ok]: BLPOP: timeout (1106 ms) +[ok]: BLPOP: arguments are empty (10 ms) +[ok]: BRPOP: with single empty list argument (7 ms) +[ok]: BRPOP: with negative timeout (6 ms) +[ok]: BRPOP: with non-integer timeout (6 ms) +[ok]: BRPOP: with zero timeout should block indefinitely (6 ms) +[ok]: BRPOP: with 0.001 timeout should not block indefinitely (27 ms) +[ok]: BRPOP: second argument is not a list (7 ms) +[ok]: BRPOP: timeout (1038 ms) +[ok]: BRPOP: arguments are empty (9 ms) +[ok]: BLMPOP_LEFT: with single empty list argument (7 ms) +[ok]: BLMPOP_LEFT: with negative timeout (6 ms) +[ok]: BLMPOP_LEFT: with non-integer timeout (7 ms) +[ok]: BLMPOP_LEFT: with zero timeout should block indefinitely (7 ms) +[ok]: BLMPOP_LEFT: with 0.001 timeout should not block indefinitely (28 ms) +[ok]: BLMPOP_LEFT: second argument is not a list (7 ms) +[ok]: BLMPOP_LEFT: timeout (1037 ms) +[ok]: BLMPOP_LEFT: arguments are empty (10 ms) +[ok]: BLMPOP_RIGHT: with single empty list argument (8 ms) +[ok]: BLMPOP_RIGHT: with negative timeout (6 ms) +[ok]: BLMPOP_RIGHT: with non-integer timeout (7 ms) +[ok]: BLMPOP_RIGHT: with zero timeout should block indefinitely (7 ms) +[ok]: BLMPOP_RIGHT: with 0.001 timeout should not block indefinitely (28 ms) +[ok]: BLMPOP_RIGHT: second argument is not a list (7 ms) +[ok]: BLMPOP_RIGHT: timeout (1036 ms) +[ok]: BLMPOP_RIGHT: arguments are empty (346 ms) +[ok]: BLPOP inside a transaction (3 ms) +[ok]: BLMPOP_LEFT inside a transaction (1 ms) +[ok]: BLMPOP propagate as pop with count command to replica (192 ms) +[ok]: LPUSHX, RPUSHX - generic (1 ms) +[ok]: LPUSHX, RPUSHX - quicklist (47 ms) +[ok]: LINSERT - quicklist (49 ms) +[ok]: LPUSHX, RPUSHX - listpack (3 ms) +[ok]: LINSERT - listpack (3 ms) +[ok]: LINSERT raise error on bad syntax (0 ms) +[ok]: LINSERT against non-list value error (1 ms) +[ok]: LINSERT against non existing key (0 ms) +[ok]: LINDEX consistency test - listpack (116 ms) +[ok]: LINDEX random access - listpack (82 ms) +[ok]: Check if list is still ok after a DEBUG RELOAD - listpack (166 ms) +[ok]: LINDEX consistency test - listpack (236 ms) +[ok]: LINDEX random access - listpack (165 ms) +[ok]: Check if list is still ok after a DEBUG RELOAD - listpack (561 ms) +[ok]: LINDEX consistency test - quicklist (117 ms) +[ok]: LINDEX random access - quicklist (80 ms) +[ok]: Check if list is still ok after a DEBUG RELOAD - quicklist (699 ms) +[ok]: LINDEX consistency test - quicklist (230 ms) +[ok]: LINDEX random access - quicklist (163 ms) +[ok]: Check if list is still ok after a DEBUG RELOAD - quicklist (1043 ms) +[ok]: LLEN against non-list value error (0 ms) +[ok]: LLEN against non existing key (1 ms) +[ok]: LINDEX against non-list value error (0 ms) +[ok]: LINDEX against non existing key (0 ms) +[ok]: LPUSH against non-list value error (1 ms) +[ok]: RPUSH against non-list value error (0 ms) +[ok]: RPOPLPUSH base case - quicklist (45 ms) +[ok]: LMOVE left left base case - quicklist (47 ms) +[ok]: LMOVE left right base case - quicklist (47 ms) +[ok]: LMOVE right left base case - quicklist (44 ms) +[ok]: LMOVE right right base case - quicklist (44 ms) +[ok]: RPOPLPUSH with the same list as src and dst - quicklist (44 ms) +[ok]: LMOVE left left with the same list as src and dst - quicklist (47 ms) +[ok]: LMOVE left right with the same list as src and dst - quicklist (44 ms) +[ok]: LMOVE right left with the same list as src and dst - quicklist (48 ms) +[ok]: LMOVE right right with the same list as src and dst - quicklist (48 ms) +[ok]: RPOPLPUSH with quicklist source and existing target quicklist (88 ms) +[ok]: LMOVE left left with quicklist source and existing target quicklist (88 ms) +[ok]: LMOVE left right with quicklist source and existing target quicklist (92 ms) +[ok]: LMOVE right left with quicklist source and existing target quicklist (88 ms) +[ok]: LMOVE right right with quicklist source and existing target quicklist (88 ms) +[ok]: RPOPLPUSH with quicklist source and existing target listpack (44 ms) +[ok]: LMOVE left left with quicklist source and existing target listpack (44 ms) +[ok]: LMOVE left right with quicklist source and existing target listpack (44 ms) +[ok]: LMOVE right left with quicklist source and existing target listpack (44 ms) +[ok]: LMOVE right right with quicklist source and existing target listpack (44 ms) +[ok]: RPOPLPUSH base case - listpack (2 ms) +[ok]: LMOVE left left base case - listpack (1 ms) +[ok]: LMOVE left right base case - listpack (1 ms) +[ok]: LMOVE right left base case - listpack (2 ms) +[ok]: LMOVE right right base case - listpack (1 ms) +[ok]: RPOPLPUSH with the same list as src and dst - listpack (1 ms) +[ok]: LMOVE left left with the same list as src and dst - listpack (1 ms) +[ok]: LMOVE left right with the same list as src and dst - listpack (1 ms) +[ok]: LMOVE right left with the same list as src and dst - listpack (1 ms) +[ok]: LMOVE right right with the same list as src and dst - listpack (1 ms) +[ok]: RPOPLPUSH with listpack source and existing target quicklist (48 ms) +[ok]: LMOVE left left with listpack source and existing target quicklist (45 ms) +[ok]: LMOVE left right with listpack source and existing target quicklist (48 ms) +[ok]: LMOVE right left with listpack source and existing target quicklist (44 ms) +[ok]: LMOVE right right with listpack source and existing target quicklist (44 ms) +[ok]: RPOPLPUSH with listpack source and existing target listpack (1 ms) +[ok]: LMOVE left left with listpack source and existing target listpack (1 ms) +[ok]: LMOVE left right with listpack source and existing target listpack (1 ms) +[ok]: LMOVE right left with listpack source and existing target listpack (1 ms) +[ok]: LMOVE right right with listpack source and existing target listpack (1 ms) +[ok]: RPOPLPUSH against non existing key (0 ms) +[ok]: RPOPLPUSH against non list src key (1 ms) +[ok]: RPOPLPUSH against non list dst key - quicklist (44 ms) +[ok]: RPOPLPUSH against non list dst key - listpack (1 ms) +[ok]: RPOPLPUSH against non existing src key (0 ms) +[ok]: Basic LPOP/RPOP/LMPOP - quicklist (87 ms) +[ok]: Basic LPOP/RPOP/LMPOP - listpack (2 ms) +[ok]: LPOP/RPOP/LMPOP against empty list (1 ms) +[ok]: LPOP/RPOP/LMPOP NON-BLOCK or BLOCK against non list value (1 ms) +[ok]: Mass RPOP/LPOP - listpack (47 ms) +[ok]: Mass RPOP/LPOP - listpack (96 ms) +[ok]: LMPOP with illegal argument (2 ms) +[ok]: LMPOP single existing list - quicklist (133 ms) +[ok]: LMPOP multiple existing lists - quicklist (177 ms) +[ok]: LMPOP single existing list - listpack (4 ms) +[ok]: LMPOP multiple existing lists - listpack (5 ms) +[ok]: LMPOP propagate as pop with count command to replica (442 ms) +[ok]: LRANGE basics - quicklist (45 ms) +[ok]: LRANGE inverted indexes - quicklist (43 ms) +[ok]: LRANGE out of range indexes including the full list - quicklist (44 ms) +[ok]: LRANGE out of range negative end index - quicklist (44 ms) +[ok]: LRANGE basics - listpack (1 ms) +[ok]: LRANGE inverted indexes - listpack (2 ms) +[ok]: LRANGE out of range indexes including the full list - listpack (1 ms) +[ok]: LRANGE out of range negative end index - listpack (1 ms) +[ok]: LRANGE against non existing key (0 ms) +[ok]: LRANGE with start > end yields an empty array for backward compatibility (1 ms) +[ok]: LTRIM basics - quicklist (528 ms) +[ok]: LTRIM out of range negative end index - quicklist (88 ms) +[ok]: LSET - quicklist (44 ms) +[ok]: LSET out of range index - quicklist (0 ms) +[ok]: LTRIM basics - listpack (11 ms) +[ok]: LTRIM out of range negative end index - listpack (1 ms) +[ok]: LSET - listpack (1 ms) +[ok]: LSET out of range index - listpack (0 ms) +[ok]: LSET against non existing key (1 ms) +[ok]: LSET against non list value (0 ms) +[ok]: LREM remove all the occurrences - quicklist (44 ms) +[ok]: LREM remove the first occurrence - quicklist (0 ms) +[ok]: LREM remove non existing element - quicklist (1 ms) +[ok]: LREM starting from tail with negative count - quicklist (42 ms) +[ok]: LREM starting from tail with negative count (2) - quicklist (0 ms) +[ok]: LREM deleting objects that may be int encoded - quicklist (43 ms) +[ok]: LREM remove all the occurrences - listpack (2 ms) +[ok]: LREM remove the first occurrence - listpack (0 ms) +[ok]: LREM remove non existing element - listpack (1 ms) +[ok]: LREM starting from tail with negative count - listpack (2 ms) +[ok]: LREM starting from tail with negative count (2) - listpack (0 ms) +[ok]: LREM deleting objects that may be int encoded - listpack (1 ms) +[ok]: Regression for bug 593 - chaining BRPOPLPUSH with other blocking cmds (15 ms) +[ok]: BLPOP/BLMOVE should increase dirty (10 ms) +[ok]: client unblock tests (10 ms) +[ok]: client unblock tests (10 ms) +[ok]: List listpack -> quicklist encoding conversion (5 ms) +[ok]: List listpack -> quicklist encoding conversion (192 ms) +[ok]: List quicklist -> listpack encoding conversion (236 ms) +[ok]: List encoding conversion when RDB loading (1638 ms) +[ok]: List invalid list-max-listpack-size config (43 ms) +[ok]: List of various encodings (92 ms) +[ok]: List of various encodings - sanitize dump (2 ms) +[ok]: Unblock fairness is kept while pipelining (14 ms) +[ok]: Unblock fairness is kept during nested unblock (23 ms) +[ok]: Blocking command accounted only once in commandstats (9 ms) +[ok]: Blocking command accounted only once in commandstats after timeout (8 ms) +[ok]: Command being unblocked cause another command to get unblocked execution order test (1040 ms) +[11/91 done]: unit/type/list (27 seconds) +Testing unit/type/list-2 +=== (list) Starting server 127.0.0.1:21179 ok +[ok]: LTRIM stress testing - quicklist (9653 ms) +[ok]: LTRIM stress testing - listpack (9425 ms) +[12/91 done]: unit/type/list-2 (20 seconds) +Testing unit/type/list-3 +=== (list ziplist) Starting server 127.0.0.1:21181 ok +[ok]: Explicit regression for a list bug (1 ms) +[ok]: Regression for quicklist #3343 bug (142 ms) +[ok]: Check compression with recompress (91 ms) +[ok]: Crash due to wrongly recompress after lrem (218 ms) +[ok]: LINSERT correctly recompress full quicklistNode after inserting a element before it (43 ms) +[ok]: LINSERT correctly recompress full quicklistNode after inserting a element after it (44 ms) +[ok]: Stress tester for #3343-alike bugs comp: 2 (8765 ms) +[ok]: Stress tester for #3343-alike bugs comp: 1 (9866 ms) +[ok]: Stress tester for #3343-alike bugs comp: 0 (8653 ms) +[ok]: ziplist implementation: value encoding and backlink (12244 ms) +[ok]: ziplist implementation: encoding stress testing (14450 ms) +[13/91 done]: unit/type/list-3 (55 seconds) +Testing unit/type/set +=== (set) Starting server 127.0.0.1:21183 ok +[ok]: SADD, SCARD, SISMEMBER, SMISMEMBER, SMEMBERS basics - listpack (2 ms) +[ok]: SADD, SCARD, SISMEMBER, SMISMEMBER, SMEMBERS basics - hashtable (22 ms) +[ok]: SADD, SCARD, SISMEMBER, SMISMEMBER, SMEMBERS basics - intset (2 ms) +[ok]: SMISMEMBER SMEMBERS SCARD against non set (0 ms) +[ok]: SMISMEMBER SMEMBERS SCARD against non existing key (2 ms) +[ok]: SMISMEMBER requires one or more members (1 ms) +[ok]: SADD against non set (1 ms) +[ok]: SADD a non-integer against a small intset (1 ms) +[ok]: SADD a non-integer against a large intset (19 ms) +[ok]: SADD an integer larger than 64 bits (1 ms) +[ok]: SADD an integer larger than 64 bits to a large intset (21 ms) +[ok]: SADD overflows the maximum allowed integers in an intset - single (109 ms) +[ok]: SADD overflows the maximum allowed elements in a listpack - single (20 ms) +[ok]: SADD overflows the maximum allowed integers in an intset - multiple (44 ms) +[ok]: SADD overflows the maximum allowed elements in a listpack - multiple (1 ms) +[ok]: SADD overflows the maximum allowed integers in an intset - single_multiple (42 ms) +[ok]: SADD overflows the maximum allowed elements in a listpack - single_multiple (2 ms) +[ok]: Variadic SADD (1 ms) +[ok]: Set encoding after DEBUG RELOAD (268 ms) +[ok]: SREM basics - $type (1 ms) +[ok]: SREM basics - $type (21 ms) +[ok]: SREM basics - intset (1 ms) +[ok]: SREM with multiple arguments (0 ms) +[ok]: SREM variadic version with more args needed to destroy the key (0 ms) +[ok]: SINTERCARD with illegal arguments (2 ms) +[ok]: SINTERCARD against non-set should throw error (2 ms) +[ok]: SINTERCARD against non-existing key (0 ms) +[ok]: Generated sets must be encoded correctly - regular (1 ms) +[ok]: SINTER with two sets - regular (0 ms) +[ok]: SINTERCARD with two sets - regular (1 ms) +[ok]: SINTERSTORE with two sets - regular (1 ms) +[ok]: SINTERSTORE with two sets, after a DEBUG RELOAD - regular (9 ms) +[ok]: SUNION with two sets - regular (10 ms) +[ok]: SUNIONSTORE with two sets - regular (11 ms) +[ok]: SINTER against three sets - regular (0 ms) +[ok]: SINTERCARD against three sets - regular (1 ms) +[ok]: SINTERSTORE with three sets - regular (1 ms) +[ok]: SUNION with non existing keys - regular (11 ms) +[ok]: SDIFF with two sets - regular (0 ms) +[ok]: SDIFF with three sets - regular (1 ms) +[ok]: SDIFFSTORE with three sets - regular (0 ms) +[ok]: SINTER/SUNION/SDIFF with three same sets - regular (8 ms) +[ok]: Generated sets must be encoded correctly - intset (1 ms) +[ok]: SINTER with two sets - intset (0 ms) +[ok]: SINTERCARD with two sets - intset (1 ms) +[ok]: SINTERSTORE with two sets - intset (0 ms) +[ok]: SINTERSTORE with two sets, after a DEBUG RELOAD - intset (11 ms) +[ok]: SUNION with two sets - intset (5 ms) +[ok]: SUNIONSTORE with two sets - intset (6 ms) +[ok]: SINTER against three sets - intset (0 ms) +[ok]: SINTERCARD against three sets - intset (1 ms) +[ok]: SINTERSTORE with three sets - intset (0 ms) +[ok]: SUNION with non existing keys - intset (5 ms) +[ok]: SDIFF with two sets - intset (0 ms) +[ok]: SDIFF with three sets - intset (0 ms) +[ok]: SDIFFSTORE with three sets - intset (1 ms) +[ok]: SINTER/SUNION/SDIFF with three same sets - intset (4 ms) +[ok]: SINTERSTORE with two listpack sets where result is intset (2 ms) +[ok]: SINTERSTORE with two hashtable sets where result is intset (45 ms) +[ok]: SUNION hashtable and listpack (5 ms) +[ok]: SDIFF with first set empty (0 ms) +[ok]: SDIFF with same set two times (1 ms) +[ok]: SDIFF fuzzing (5041 ms) +[ok]: SDIFF against non-set should throw error (0 ms) +[ok]: SDIFF should handle non existing key as empty (0 ms) +[ok]: SDIFFSTORE against non-set should throw error (2 ms) +[ok]: SDIFFSTORE should handle non existing key as empty (1 ms) +[ok]: SINTER against non-set should throw error (1 ms) +[ok]: SINTER should handle non existing key as empty (1 ms) +[ok]: SINTER with same integer elements but different encoding (0 ms) +[ok]: SINTERSTORE against non-set should throw error (1 ms) +[ok]: SINTERSTORE against non existing keys should delete dstkey (1 ms) +[ok]: SUNION against non-set should throw error (0 ms) +[ok]: SUNION should handle non existing key as empty (1 ms) +[ok]: SUNIONSTORE against non-set should throw error (2 ms) +[ok]: SUNIONSTORE should handle non existing key as empty (1 ms) +[ok]: SUNIONSTORE against non existing keys should delete dstkey (1 ms) +[ok]: SPOP basics - listpack (1 ms) +[ok]: SPOP with =1 - listpack (1 ms) +[ok]: SRANDMEMBER - listpack (10 ms) +[ok]: SPOP basics - intset (1 ms) +[ok]: SPOP with =1 - intset (0 ms) +[ok]: SRANDMEMBER - intset (9 ms) +[ok]: SPOP integer from listpack set (1 ms) +[ok]: SPOP with - listpack (4 ms) +[ok]: SPOP with - intset (4 ms) +[ok]: SPOP with - hashtable (3 ms) +[ok]: SPOP using integers, testing Knuth's and Floyd's algorithm (4 ms) +[ok]: SPOP using integers with Knuth's algorithm (0 ms) +[ok]: SPOP new implementation: code path #1 intset (2 ms) +[ok]: SPOP new implementation: code path #2 intset (2 ms) +[ok]: SPOP new implementation: code path #3 intset (3 ms) +[ok]: SPOP new implementation: code path #1 listpack (2 ms) +[ok]: SPOP new implementation: code path #2 listpack (3 ms) +[ok]: SPOP new implementation: code path #3 listpack (3 ms) +[ok]: SPOP new implementation: code path #1 propagate as DEL or UNLINK (834 ms) +[ok]: SRANDMEMBER count of 0 is handled correctly (0 ms) +[ok]: SRANDMEMBER with against non existing key (0 ms) +[ok]: SRANDMEMBER count overflow (0 ms) +[ok]: SRANDMEMBER count of 0 is handled correctly - emptyarray (1 ms) +[ok]: SRANDMEMBER with against non existing key - emptyarray (0 ms) +[ok]: SRANDMEMBER with - listpack (31 ms) +[ok]: SRANDMEMBER with - intset (30 ms) +[ok]: SRANDMEMBER with - hashtable (30 ms) +[ok]: SRANDMEMBER histogram distribution - listpack (130 ms) +[ok]: SRANDMEMBER histogram distribution - intset (130 ms) +[ok]: SRANDMEMBER histogram distribution - hashtable (131 ms) + +Waiting for background save to finish... Hash table 0 stats (main hash table): + table size: 4096 + number of elements: 499 + different slots: 22 + max chain length: 30 + avg chain length (counted): 22.68 + avg chain length (computed): 22.68 + Chain length distribution: + 0: 4074 (99.46%) + 2: 1 (0.02%) + 18: 1 (0.02%) + 19: 1 (0.02%) + 21: 2 (0.05%) + 22: 4 (0.10%) + 23: 5 (0.12%) + 25: 2 (0.05%) + 26: 2 (0.05%) + 27: 2 (0.05%) + 29: 1 (0.02%) + 30: 1 (0.02%) + + +Waiting for background save to finish... +Waiting for background save to finish... [ok]: SRANDMEMBER with a dict containing long chain (16522 ms) +[ok]: SMOVE basics - from regular set to intset (3 ms) +[ok]: SMOVE basics - from intset to regular set (1 ms) +[ok]: SMOVE non existing key (2 ms) +[ok]: SMOVE non existing src set (1 ms) +[ok]: SMOVE from regular set to non existing destination set (2 ms) +[ok]: SMOVE from intset to non existing destination set (1 ms) +[ok]: SMOVE wrong src key type (0 ms) +[ok]: SMOVE wrong dst key type (1 ms) +[ok]: SMOVE with identical source and destination (0 ms) +[ok]: SMOVE only notify dstset when the addition is successful (8 ms) +[ok]: intsets implementation stress testing (1494 ms) +=== () Starting server 127.0.0.1:21185 ok +[ignore]: SADD, SCARD, SISMEMBER - large data: large memory flag not provided +[14/91 done]: unit/type/set (26 seconds) +Testing unit/type/zset +=== (zset) Starting server 127.0.0.1:21187 ok +[ok]: Check encoding - listpack (1 ms) +[ok]: ZSET basic ZADD and score update - listpack (1 ms) +[ok]: ZSET element can't be set to NaN with ZADD - listpack (0 ms) +[ok]: ZSET element can't be set to NaN with ZINCRBY - listpack (1 ms) +[ok]: ZADD with options syntax error with incomplete pair - listpack (1 ms) +[ok]: ZADD XX option without key - listpack (0 ms) +[ok]: ZADD XX existing key - listpack (0 ms) +[ok]: ZADD XX returns the number of elements actually added - listpack (1 ms) +[ok]: ZADD XX updates existing elements score - listpack (1 ms) +[ok]: ZADD GT updates existing elements when new scores are greater - listpack (1 ms) +[ok]: ZADD LT updates existing elements when new scores are lower - listpack (2 ms) +[ok]: ZADD GT XX updates existing elements when new scores are greater and skips new elements - listpack (1 ms) +[ok]: ZADD LT XX updates existing elements when new scores are lower and skips new elements - listpack (1 ms) +[ok]: ZADD XX and NX are not compatible - listpack (1 ms) +[ok]: ZADD NX with non existing key - listpack (0 ms) +[ok]: ZADD NX only add new elements without updating old ones - listpack (2 ms) +[ok]: ZADD GT and NX are not compatible - listpack (0 ms) +[ok]: ZADD LT and NX are not compatible - listpack (0 ms) +[ok]: ZADD LT and GT are not compatible - listpack (0 ms) +[ok]: ZADD INCR LT/GT replies with nill if score not updated - listpack (1 ms) +[ok]: ZADD INCR LT/GT with inf - listpack (3 ms) +[ok]: ZADD INCR works like ZINCRBY - listpack (1 ms) +[ok]: ZADD INCR works with a single score-elemenet pair - listpack (1 ms) +[ok]: ZADD CH option changes return value to all changed elements - listpack (0 ms) +[ok]: ZINCRBY calls leading to NaN result in error - listpack (1 ms) +[ok]: ZINCRBY against invalid incr value - listpack (1 ms) +[ok]: ZADD - Variadic version base case - listpack (0 ms) +[ok]: ZADD - Return value is the number of actually added items - listpack (1 ms) +[ok]: ZADD - Variadic version does not add nothing on single parsing err - listpack (0 ms) +[ok]: ZADD - Variadic version will raise error on missing arg - listpack (0 ms) +[ok]: ZINCRBY does not work variadic even if shares ZADD implementation - listpack (0 ms) +[ok]: ZCARD basics - listpack (0 ms) +[ok]: ZREM removes key after last element is removed - listpack (2 ms) +[ok]: ZREM variadic version - listpack (1 ms) +[ok]: ZREM variadic version -- remove elements after key deletion - listpack (0 ms) +[ok]: ZRANGE basics - listpack (4 ms) +[ok]: ZREVRANGE basics - listpack (3 ms) +[ok]: ZRANK/ZREVRANK basics - listpack (4 ms) +[ok]: ZRANK - after deletion - listpack (1 ms) +[ok]: ZINCRBY - can create a new sorted set - listpack (1 ms) +[ok]: ZINCRBY - increment and decrement - listpack (1 ms) +[ok]: ZINCRBY return value - listpack (1 ms) +[ok]: ZRANGEBYSCORE/ZREVRANGEBYSCORE/ZCOUNT basics - listpack (7 ms) +[ok]: ZRANGEBYSCORE with WITHSCORES - listpack (2 ms) +[ok]: ZRANGEBYSCORE with LIMIT - listpack (9 ms) +[ok]: ZRANGEBYSCORE with LIMIT and WITHSCORES - listpack (2 ms) +[ok]: ZRANGEBYSCORE with non-value min or max - listpack (1 ms) +[ok]: ZRANGEBYLEX/ZREVRANGEBYLEX/ZLEXCOUNT basics - listpack (5 ms) +[ok]: ZLEXCOUNT advanced - listpack (4 ms) +[ok]: ZRANGEBYLEX with LIMIT - listpack (9 ms) +[ok]: ZRANGEBYLEX with invalid lex range specifiers - listpack (1 ms) +[ok]: ZREMRANGEBYSCORE basics - listpack (19 ms) +[ok]: ZREMRANGEBYSCORE with non-value min or max - listpack (1 ms) +[ok]: ZREMRANGEBYRANK basics - listpack (9 ms) +[ok]: ZREMRANGEBYLEX basics - listpack (23 ms) +[ok]: ZUNIONSTORE against non-existing key doesn't set destination - listpack (0 ms) +[ok]: ZUNION/ZINTER/ZINTERCARD/ZDIFF against non-existing key - listpack (1 ms) +[ok]: ZUNIONSTORE with empty set - listpack (0 ms) +[ok]: ZUNION/ZINTER/ZINTERCARD/ZDIFF with empty set - listpack (1 ms) +[ok]: ZUNIONSTORE basics - listpack (2 ms) +[ok]: ZUNION/ZINTER/ZINTERCARD/ZDIFF with integer members - listpack (2 ms) +[ok]: ZUNIONSTORE with weights - listpack (0 ms) +[ok]: ZUNION with weights - listpack (1 ms) +[ok]: ZUNIONSTORE with a regular set and weights - listpack (1 ms) +[ok]: ZUNIONSTORE with AGGREGATE MIN - listpack (1 ms) +[ok]: ZUNION/ZINTER with AGGREGATE MIN - listpack (0 ms) +[ok]: ZUNIONSTORE with AGGREGATE MAX - listpack (1 ms) +[ok]: ZUNION/ZINTER with AGGREGATE MAX - listpack (0 ms) +[ok]: ZINTERSTORE basics - listpack (0 ms) +[ok]: ZINTER basics - listpack (0 ms) +[ok]: ZINTERCARD with illegal arguments (1 ms) +[ok]: ZINTERCARD basics - listpack (0 ms) +[ok]: ZINTER RESP3 - listpack (1 ms) +[ok]: ZINTERSTORE with weights - listpack (0 ms) +[ok]: ZINTER with weights - listpack (1 ms) +[ok]: ZINTERSTORE with a regular set and weights - listpack (1 ms) +[ok]: ZINTERSTORE with AGGREGATE MIN - listpack (0 ms) +[ok]: ZINTERSTORE with AGGREGATE MAX - listpack (1 ms) +[ok]: ZUNIONSTORE with +inf/-inf scores - listpack (3 ms) +[ok]: ZUNIONSTORE with NaN weights - listpack (1 ms) +[ok]: ZINTERSTORE with +inf/-inf scores - listpack (2 ms) +[ok]: ZINTERSTORE with NaN weights - listpack (0 ms) +[ok]: ZDIFFSTORE basics - listpack (1 ms) +[ok]: ZDIFF basics - listpack (0 ms) +[ok]: ZDIFFSTORE with a regular set - listpack (1 ms) +[ok]: ZDIFF subtracting set from itself - listpack (1 ms) +[ok]: ZDIFF algorithm 1 - listpack (1 ms) +[ok]: ZDIFF algorithm 2 - listpack (1 ms) +[ok]: ZDIFF fuzzing - listpack (3975 ms) +[ok]: ZPOPMIN with the count 0 returns an empty array (1 ms) +[ok]: ZPOPMIN with negative count (1 ms) +[ok]: ZPOPMAX with the count 0 returns an empty array (0 ms) +[ok]: ZPOPMAX with negative count (0 ms) +[ok]: Basic ZPOPMIN/ZPOPMAX with a single key - listpack (2 ms) +[ok]: ZPOPMIN/ZPOPMAX with count - listpack (1 ms) +[ok]: Basic ZMPOP_MIN/ZMPOP_MAX with a single key - listpack (2 ms) +[ok]: ZMPOP_MIN/ZMPOP_MAX with count - listpack (1 ms) +[ok]: BZPOPMIN/BZPOPMAX with a single existing sorted set - listpack (8 ms) +[ok]: BZPOPMIN/BZPOPMAX with multiple existing sorted sets - listpack (8 ms) +[ok]: BZPOPMIN/BZPOPMAX second sorted set has members - listpack (7 ms) +[ok]: BZMPOP_MIN/BZMPOP_MAX with a single existing sorted set - listpack (8 ms) +[ok]: BZMPOP_MIN/BZMPOP_MAX with multiple existing sorted sets - listpack (7 ms) +[ok]: BZMPOP_MIN/BZMPOP_MAX second sorted set has members - listpack (7 ms) +[ok]: Basic ZPOPMIN/ZPOPMAX - listpack RESP3 (1 ms) +[ok]: ZPOPMIN/ZPOPMAX with count - listpack RESP3 (1 ms) +[ok]: Basic ZMPOP_MIN/ZMPOP_MAX - listpack RESP3 (1 ms) +[ok]: ZMPOP_MIN/ZMPOP_MAX with count - listpack RESP3 (2 ms) +[ok]: BZPOPMIN/BZPOPMAX - listpack RESP3 (8 ms) +[ok]: BZMPOP_MIN/BZMPOP_MAX - listpack RESP3 (7 ms) +[ok]: Check encoding - skiplist (0 ms) +[ok]: ZSET basic ZADD and score update - skiplist (1 ms) +[ok]: ZSET element can't be set to NaN with ZADD - skiplist (1 ms) +[ok]: ZSET element can't be set to NaN with ZINCRBY - skiplist (0 ms) +[ok]: ZADD with options syntax error with incomplete pair - skiplist (0 ms) +[ok]: ZADD XX option without key - skiplist (1 ms) +[ok]: ZADD XX existing key - skiplist (0 ms) +[ok]: ZADD XX returns the number of elements actually added - skiplist (0 ms) +[ok]: ZADD XX updates existing elements score - skiplist (1 ms) +[ok]: ZADD GT updates existing elements when new scores are greater - skiplist (1 ms) +[ok]: ZADD LT updates existing elements when new scores are lower - skiplist (1 ms) +[ok]: ZADD GT XX updates existing elements when new scores are greater and skips new elements - skiplist (0 ms) +[ok]: ZADD LT XX updates existing elements when new scores are lower and skips new elements - skiplist (1 ms) +[ok]: ZADD XX and NX are not compatible - skiplist (1 ms) +[ok]: ZADD NX with non existing key - skiplist (0 ms) +[ok]: ZADD NX only add new elements without updating old ones - skiplist (1 ms) +[ok]: ZADD GT and NX are not compatible - skiplist (0 ms) +[ok]: ZADD LT and NX are not compatible - skiplist (1 ms) +[ok]: ZADD LT and GT are not compatible - skiplist (0 ms) +[ok]: ZADD INCR LT/GT replies with nill if score not updated - skiplist (1 ms) +[ok]: ZADD INCR LT/GT with inf - skiplist (2 ms) +[ok]: ZADD INCR works like ZINCRBY - skiplist (0 ms) +[ok]: ZADD INCR works with a single score-elemenet pair - skiplist (1 ms) +[ok]: ZADD CH option changes return value to all changed elements - skiplist (0 ms) +[ok]: ZINCRBY calls leading to NaN result in error - skiplist (1 ms) +[ok]: ZINCRBY against invalid incr value - skiplist (0 ms) +[ok]: ZADD - Variadic version base case - skiplist (1 ms) +[ok]: ZADD - Return value is the number of actually added items - skiplist (0 ms) +[ok]: ZADD - Variadic version does not add nothing on single parsing err - skiplist (1 ms) +[ok]: ZADD - Variadic version will raise error on missing arg - skiplist (0 ms) +[ok]: ZINCRBY does not work variadic even if shares ZADD implementation - skiplist (1 ms) +[ok]: ZCARD basics - skiplist (0 ms) +[ok]: ZREM removes key after last element is removed - skiplist (1 ms) +[ok]: ZREM variadic version - skiplist (1 ms) +[ok]: ZREM variadic version -- remove elements after key deletion - skiplist (0 ms) +[ok]: ZRANGE basics - skiplist (2 ms) +[ok]: ZREVRANGE basics - skiplist (3 ms) +[ok]: ZRANK/ZREVRANK basics - skiplist (2 ms) +[ok]: ZRANK - after deletion - skiplist (0 ms) +[ok]: ZINCRBY - can create a new sorted set - skiplist (1 ms) +[ok]: ZINCRBY - increment and decrement - skiplist (1 ms) +[ok]: ZINCRBY return value - skiplist (0 ms) +[ok]: ZRANGEBYSCORE/ZREVRANGEBYSCORE/ZCOUNT basics - skiplist (5 ms) +[ok]: ZRANGEBYSCORE with WITHSCORES - skiplist (1 ms) +[ok]: ZRANGEBYSCORE with LIMIT - skiplist (6 ms) +[ok]: ZRANGEBYSCORE with LIMIT and WITHSCORES - skiplist (1 ms) +[ok]: ZRANGEBYSCORE with non-value min or max - skiplist (0 ms) +[ok]: ZRANGEBYLEX/ZREVRANGEBYLEX/ZLEXCOUNT basics - skiplist (3 ms) +[ok]: ZLEXCOUNT advanced - skiplist (2 ms) +[ok]: ZRANGEBYLEX with LIMIT - skiplist (5 ms) +[ok]: ZRANGEBYLEX with invalid lex range specifiers - skiplist (1 ms) +[ok]: ZREMRANGEBYSCORE basics - skiplist (11 ms) +[ok]: ZREMRANGEBYSCORE with non-value min or max - skiplist (1 ms) +[ok]: ZREMRANGEBYRANK basics - skiplist (5 ms) +[ok]: ZREMRANGEBYLEX basics - skiplist (13 ms) +[ok]: ZUNIONSTORE against non-existing key doesn't set destination - skiplist (0 ms) +[ok]: ZUNION/ZINTER/ZINTERCARD/ZDIFF against non-existing key - skiplist (1 ms) +[ok]: ZUNIONSTORE with empty set - skiplist (1 ms) +[ok]: ZUNION/ZINTER/ZINTERCARD/ZDIFF with empty set - skiplist (1 ms) +[ok]: ZUNIONSTORE basics - skiplist (1 ms) +[ok]: ZUNION/ZINTER/ZINTERCARD/ZDIFF with integer members - skiplist (1 ms) +[ok]: ZUNIONSTORE with weights - skiplist (1 ms) +[ok]: ZUNION with weights - skiplist (0 ms) +[ok]: ZUNIONSTORE with a regular set and weights - skiplist (1 ms) +[ok]: ZUNIONSTORE with AGGREGATE MIN - skiplist (1 ms) +[ok]: ZUNION/ZINTER with AGGREGATE MIN - skiplist (0 ms) +[ok]: ZUNIONSTORE with AGGREGATE MAX - skiplist (1 ms) +[ok]: ZUNION/ZINTER with AGGREGATE MAX - skiplist (0 ms) +[ok]: ZINTERSTORE basics - skiplist (1 ms) +[ok]: ZINTER basics - skiplist (0 ms) +[ok]: ZINTERCARD with illegal arguments (1 ms) +[ok]: ZINTERCARD basics - skiplist (0 ms) +[ok]: ZINTER RESP3 - skiplist (1 ms) +[ok]: ZINTERSTORE with weights - skiplist (0 ms) +[ok]: ZINTER with weights - skiplist (1 ms) +[ok]: ZINTERSTORE with a regular set and weights - skiplist (0 ms) +[ok]: ZINTERSTORE with AGGREGATE MIN - skiplist (0 ms) +[ok]: ZINTERSTORE with AGGREGATE MAX - skiplist (0 ms) +[ok]: ZUNIONSTORE with +inf/-inf scores - skiplist (1 ms) +[ok]: ZUNIONSTORE with NaN weights - skiplist (1 ms) +[ok]: ZINTERSTORE with +inf/-inf scores - skiplist (2 ms) +[ok]: ZINTERSTORE with NaN weights - skiplist (0 ms) +[ok]: ZDIFFSTORE basics - skiplist (1 ms) +[ok]: ZDIFF basics - skiplist (0 ms) +[ok]: ZDIFFSTORE with a regular set - skiplist (1 ms) +[ok]: ZDIFF subtracting set from itself - skiplist (0 ms) +[ok]: ZDIFF algorithm 1 - skiplist (1 ms) +[ok]: ZDIFF algorithm 2 - skiplist (1 ms) +[ok]: ZDIFF fuzzing - skiplist (3545 ms) +[ok]: ZPOPMIN with the count 0 returns an empty array (0 ms) +[ok]: ZPOPMIN with negative count (1 ms) +[ok]: ZPOPMAX with the count 0 returns an empty array (0 ms) +[ok]: ZPOPMAX with negative count (0 ms) +[ok]: Basic ZPOPMIN/ZPOPMAX with a single key - skiplist (2 ms) +[ok]: ZPOPMIN/ZPOPMAX with count - skiplist (1 ms) +[ok]: Basic ZMPOP_MIN/ZMPOP_MAX with a single key - skiplist (1 ms) +[ok]: ZMPOP_MIN/ZMPOP_MAX with count - skiplist (1 ms) +[ok]: BZPOPMIN/BZPOPMAX with a single existing sorted set - skiplist (8 ms) +[ok]: BZPOPMIN/BZPOPMAX with multiple existing sorted sets - skiplist (7 ms) +[ok]: BZPOPMIN/BZPOPMAX second sorted set has members - skiplist (7 ms) +[ok]: BZMPOP_MIN/BZMPOP_MAX with a single existing sorted set - skiplist (7 ms) +[ok]: BZMPOP_MIN/BZMPOP_MAX with multiple existing sorted sets - skiplist (7 ms) +[ok]: BZMPOP_MIN/BZMPOP_MAX second sorted set has members - skiplist (7 ms) +[ok]: Basic ZPOPMIN/ZPOPMAX - skiplist RESP3 (1 ms) +[ok]: ZPOPMIN/ZPOPMAX with count - skiplist RESP3 (1 ms) +[ok]: Basic ZMPOP_MIN/ZMPOP_MAX - skiplist RESP3 (1 ms) +[ok]: ZMPOP_MIN/ZMPOP_MAX with count - skiplist RESP3 (1 ms) +[ok]: BZPOPMIN/BZPOPMAX - skiplist RESP3 (7 ms) +[ok]: BZMPOP_MIN/BZMPOP_MAX - skiplist RESP3 (8 ms) +[ok]: ZPOP/ZMPOP against wrong type (1 ms) +[ok]: ZMPOP with illegal argument (1 ms) +[ok]: ZMPOP propagate as pop with count command to replica (234 ms) +[ok]: ZPOPMIN/ZPOPMAX readraw in RESP3 (1 ms) +[ok]: BZPOPMIN/BZPOPMAX readraw in RESP3 (192 ms) +[ok]: ZMPOP readraw in RESP3 (2 ms) +[ok]: BZMPOP readraw in RESP3 (200 ms) +[ok]: ZPOPMIN/ZPOPMAX readraw in RESP2 (1 ms) +[ok]: BZPOPMIN/BZPOPMAX readraw in RESP2 (195 ms) +[ok]: ZMPOP readraw in RESP2 (2 ms) +[ok]: BZMPOP readraw in RESP2 (201 ms) +[ok]: ZINTERSTORE regression with two sets, intset+hashtable (1 ms) +[ok]: ZUNIONSTORE regression, should not create NaN in scores (0 ms) +[ok]: ZINTERSTORE #516 regression, mixed sets and ziplist zsets (1 ms) +[ok]: ZUNIONSTORE result is sorted (111 ms) +[ok]: ZUNIONSTORE/ZINTERSTORE/ZDIFFSTORE error if using WITHSCORES (0 ms) +[ok]: ZMSCORE retrieve (0 ms) +[ok]: ZMSCORE retrieve from empty set (1 ms) +[ok]: ZMSCORE retrieve with missing member (0 ms) +[ok]: ZMSCORE retrieve single member (1 ms) +[ok]: ZMSCORE retrieve requires one or more members (1 ms) +[ok]: ZSET commands don't accept the empty strings as valid score (0 ms) +[ok]: zunionInterDiffGenericCommand at least 1 input key (1 ms) +[ok]: ZSCORE - listpack (35 ms) +[ok]: ZMSCORE - listpack (28 ms) +[ok]: ZSCORE after a DEBUG RELOAD - listpack (45 ms) +[ok]: ZSET sorting stresser - listpack (34 ms) +[ok]: ZRANGEBYSCORE fuzzy test, 100 ranges in 128 element sorted set - listpack (2825 ms) +[ok]: ZRANGEBYLEX fuzzy test, 100 ranges in 128 element sorted set - listpack (163 ms) +[ok]: ZREMRANGEBYLEX fuzzy test, 100 ranges in 128 element sorted set - listpack (280 ms) +[ok]: ZSETs skiplist implementation backlink consistency test - listpack (46 ms) +[ok]: ZSETs ZRANK augmented skip list stress testing - listpack (1443 ms) +[ok]: BZPOPMIN, ZADD + DEL should not awake blocked client (8 ms) +[ok]: BZPOPMIN, ZADD + DEL + SET should not awake blocked client (7 ms) +[ok]: BZMPOP_MIN, ZADD + DEL should not awake blocked client (7 ms) +[ok]: BZMPOP_MIN, ZADD + DEL + SET should not awake blocked client (7 ms) +[ok]: BZPOPMIN unblock but the key is expired and then block again - reprocessing command (1015 ms) +[ok]: BZPOPMIN with same key multiple times should work (9 ms) +[ok]: MULTI/EXEC is isolated from the point of view of BZPOPMIN (8 ms) +[ok]: BZPOPMIN with variadic ZADD (7 ms) +[ok]: BZPOPMIN with zero timeout should block indefinitely (1011 ms) +[ok]: MULTI/EXEC is isolated from the point of view of BZMPOP_MIN (8 ms) +[ok]: BZMPOP_MIN with variadic ZADD (7 ms) +[ok]: BZMPOP_MIN with zero timeout should block indefinitely (1012 ms) +[ok]: ZSCORE - skiplist (33 ms) +[ok]: ZMSCORE - skiplist (33 ms) +[ok]: ZSCORE after a DEBUG RELOAD - skiplist (42 ms) +[ok]: ZSET sorting stresser - skiplist (40 ms) +[ok]: ZRANGEBYSCORE fuzzy test, 100 ranges in 100 element sorted set - skiplist (3204 ms) +[ok]: ZRANGEBYLEX fuzzy test, 100 ranges in 100 element sorted set - skiplist (168 ms) +[ok]: ZREMRANGEBYLEX fuzzy test, 100 ranges in 100 element sorted set - skiplist (218 ms) +[ok]: ZSETs skiplist implementation backlink consistency test - skiplist (25 ms) +[ok]: ZSETs ZRANK augmented skip list stress testing - skiplist (1284 ms) +[ok]: BZPOPMIN, ZADD + DEL should not awake blocked client (7 ms) +[ok]: BZPOPMIN, ZADD + DEL + SET should not awake blocked client (7 ms) +[ok]: BZMPOP_MIN, ZADD + DEL should not awake blocked client (7 ms) +[ok]: BZMPOP_MIN, ZADD + DEL + SET should not awake blocked client (7 ms) +[ok]: BZPOPMIN unblock but the key is expired and then block again - reprocessing command (1014 ms) +[ok]: BZPOPMIN with same key multiple times should work (9 ms) +[ok]: MULTI/EXEC is isolated from the point of view of BZPOPMIN (8 ms) +[ok]: BZPOPMIN with variadic ZADD (8 ms) +[ok]: BZPOPMIN with zero timeout should block indefinitely (1011 ms) +[ok]: MULTI/EXEC is isolated from the point of view of BZMPOP_MIN (8 ms) +[ok]: BZMPOP_MIN with variadic ZADD (8 ms) +[ok]: BZMPOP_MIN with zero timeout should block indefinitely (1011 ms) +[ok]: BZPOP/BZMPOP against wrong type (2 ms) +[ok]: BZMPOP with illegal argument (4 ms) +[ok]: BZMPOP with multiple blocked clients (29 ms) +[ok]: BZMPOP propagate as pop with count command to replica (782 ms) +[ok]: BZMPOP should not blocks on non key arguments - #10762 (16 ms) +[ok]: ZSET skiplist order consistency when elements are moved (1564 ms) +[ok]: ZRANGESTORE basic (1 ms) +[ok]: ZRANGESTORE RESP3 (1 ms) +[ok]: ZRANGESTORE range (1 ms) +[ok]: ZRANGESTORE BYLEX (0 ms) +[ok]: ZRANGESTORE BYSCORE (0 ms) +[ok]: ZRANGESTORE BYSCORE LIMIT (1 ms) +[ok]: ZRANGESTORE BYSCORE REV LIMIT (0 ms) +[ok]: ZRANGE BYSCORE REV LIMIT (1 ms) +[ok]: ZRANGESTORE - src key missing (0 ms) +[ok]: ZRANGESTORE - src key wrong type (1 ms) +[ok]: ZRANGESTORE - empty range (1 ms) +[ok]: ZRANGESTORE BYLEX - empty range (0 ms) +[ok]: ZRANGESTORE BYSCORE - empty range (1 ms) +[ok]: ZRANGE BYLEX (0 ms) +[ok]: ZRANGESTORE invalid syntax (1 ms) +[ok]: ZRANGESTORE with zset-max-listpack-entries 0 #10767 case (1 ms) +[ok]: ZRANGESTORE with zset-max-listpack-entries 1 dst key should use skiplist encoding (1 ms) +[ok]: ZRANGE invalid syntax (0 ms) +[ok]: ZRANDMEMBER - listpack (10 ms) +[ok]: ZRANDMEMBER - skiplist (10 ms) +[ok]: ZRANDMEMBER with RESP3 (1 ms) +[ok]: ZRANDMEMBER count of 0 is handled correctly (0 ms) +[ok]: ZRANDMEMBER with against non existing key (0 ms) +[ok]: ZRANDMEMBER count overflow (1 ms) +[ok]: ZRANDMEMBER count of 0 is handled correctly - emptyarray (0 ms) +[ok]: ZRANDMEMBER with against non existing key - emptyarray (0 ms) +[ok]: ZRANDMEMBER with - skiplist (236 ms) +[ok]: ZRANDMEMBER with - listpack (234 ms) +[ok]: zset score double range (0 ms) +[ok]: zunionInterDiffGenericCommand acts on SET and ZSET (15 ms) +[ok]: ZADD overflows the maximum allowed elements in a listpack - single (8 ms) +[ok]: ZADD overflows the maximum allowed elements in a listpack - multiple (1 ms) +[ok]: ZADD overflows the maximum allowed elements in a listpack - single_multiple (2 ms) +[15/91 done]: unit/type/zset (29 seconds) +Testing unit/type/hash +=== (hash) Starting server 127.0.0.1:21189 ok +[ok]: HSET/HLEN - Small hash creation (2 ms) +[ok]: Is the small hash encoded with a listpack? (0 ms) +[ok]: HRANDFIELD - listpack (15 ms) +[ok]: HRANDFIELD - hashtable (14 ms) +[ok]: HRANDFIELD with RESP3 (1 ms) +[ok]: HRANDFIELD count of 0 is handled correctly (1 ms) +[ok]: HRANDFIELD count overflow (1 ms) +[ok]: HRANDFIELD with against non existing key (0 ms) +[ok]: HRANDFIELD count of 0 is handled correctly - emptyarray (0 ms) +[ok]: HRANDFIELD with against non existing key - emptyarray (1 ms) +[ok]: HRANDFIELD with - hashtable (179 ms) +[ok]: HRANDFIELD with - listpack (175 ms) +[ok]: HSET/HLEN - Big hash creation (189 ms) +[ok]: Is the big hash encoded with an hash table? (0 ms) +[ok]: HGET against the small hash (1 ms) +[ok]: HGET against the big hash (155 ms) +[ok]: HGET against non existing key (1 ms) +[ok]: HSET in update and insert mode (1 ms) +[ok]: HSETNX target key missing - small hash (0 ms) +[ok]: HSETNX target key exists - small hash (1 ms) +[ok]: HSETNX target key missing - big hash (0 ms) +[ok]: HSETNX target key exists - big hash (1 ms) +[ok]: HSET/HMSET wrong number of args (0 ms) +[ok]: HMSET - small hash (1 ms) +[ok]: HMSET - big hash (53 ms) +[ok]: HMGET against non existing key and fields (0 ms) +[ok]: Hash commands against wrong type (3 ms) +[ok]: HMGET - small hash (0 ms) +[ok]: HMGET - big hash (50 ms) +[ok]: HKEYS - small hash (0 ms) +[ok]: HKEYS - big hash (8 ms) +[ok]: HVALS - small hash (0 ms) +[ok]: HVALS - big hash (1 ms) +[ok]: HGETALL - small hash (0 ms) +[ok]: HGETALL - big hash (22 ms) +[ok]: HGETALL against non-existing key (0 ms) +[ok]: HDEL and return value (2 ms) +[ok]: HDEL - more than a single value (1 ms) +[ok]: HDEL - hash becomes empty before deleting all specified fields (0 ms) +[ok]: HEXISTS (0 ms) +[ok]: Is a ziplist encoded Hash promoted on big payload? (1 ms) +[ok]: HINCRBY against non existing database key (1 ms) +[ok]: HINCRBY HINCRBYFLOAT against non-integer increment value (1 ms) +[ok]: HINCRBY against non existing hash key (1 ms) +[ok]: HINCRBY against hash key created by hincrby itself (0 ms) +[ok]: HINCRBY against hash key originally set with HSET (0 ms) +[ok]: HINCRBY over 32bit value (1 ms) +[ok]: HINCRBY over 32bit value with over 32bit increment (1 ms) +[ok]: HINCRBY fails against hash value with spaces (left) (1 ms) +[ok]: HINCRBY fails against hash value with spaces (right) (0 ms) +[ok]: HINCRBY can detect overflows (0 ms) +[ok]: HINCRBYFLOAT against non existing database key (1 ms) +[ok]: HINCRBYFLOAT against non existing hash key (1 ms) +[ok]: HINCRBYFLOAT against hash key created by hincrby itself (1 ms) +[ok]: HINCRBYFLOAT against hash key originally set with HSET (0 ms) +[ok]: HINCRBYFLOAT over 32bit value (0 ms) +[ok]: HINCRBYFLOAT over 32bit value with over 32bit increment (1 ms) +[ok]: HINCRBYFLOAT fails against hash value with spaces (left) (1 ms) +[ok]: HINCRBYFLOAT fails against hash value with spaces (right) (1 ms) +[ok]: HINCRBYFLOAT fails against hash value that contains a null-terminator in the middle (0 ms) +[ok]: HSTRLEN against the small hash (2 ms) +[ok]: HSTRLEN against the big hash (148 ms) +[ok]: HSTRLEN against non existing field (1 ms) +[ok]: HSTRLEN corner cases (4 ms) +[ok]: HINCRBYFLOAT over hash-max-listpack-value encoded with a listpack (4 ms) +[ok]: Hash ziplist regression test for large keys (0 ms) +[ok]: Hash fuzzing #1 - 10 fields (44 ms) +[ok]: Hash fuzzing #2 - 10 fields (33 ms) +[ok]: Hash fuzzing #1 - 512 fields (1753 ms) +[ok]: Hash fuzzing #2 - 512 fields (1370 ms) +[ok]: Stress test the hash ziplist -> hashtable encoding conversion (1508 ms) +[ok]: Test HINCRBYFLOAT for correct float representation (issue #2846) (0 ms) +[ok]: Hash ziplist of various encodings (89 ms) +[ok]: Hash ziplist of various encodings - sanitize dump (2 ms) +[ok]: HINCRBYFLOAT does not allow NaN or Infinity (1 ms) +[16/91 done]: unit/type/hash (6 seconds) +Testing unit/type/stream +=== (stream) Starting server 127.0.0.1:21191 ok +[ok]: XADD wrong number of args (1 ms) +[ok]: XADD can add entries into a stream that XRANGE can fetch (1 ms) +[ok]: XADD IDs are incremental (0 ms) +[ok]: XADD IDs are incremental when ms is the same as well (0 ms) +[ok]: XADD IDs correctly report an error when overflowing (0 ms) +[ok]: XADD auto-generated sequence is incremented for last ID (1 ms) +[ok]: XADD auto-generated sequence is zero for future timestamp ID (0 ms) +[ok]: XADD auto-generated sequence can't be smaller than last ID (0 ms) +[ok]: XADD auto-generated sequence can't overflow (1 ms) +[ok]: XADD 0-* should succeed (0 ms) +[ok]: XADD with MAXLEN option (173 ms) +[ok]: XADD with MAXLEN option and the '=' argument (161 ms) +[ok]: XADD with MAXLEN option and the '~' argument (166 ms) +[ok]: XADD with NOMKSTREAM option (1 ms) +[ok]: XADD with MINID option (180 ms) +[ok]: XTRIM with MINID option (2 ms) +[ok]: XTRIM with MINID option, big delta from master record (1 ms) +[ok]: XADD mass insertion and XLEN (2400 ms) +[ok]: XADD with ID 0-0 (0 ms) +[ok]: XADD with LIMIT delete entries no more than limit (1 ms) +[ok]: XRANGE COUNT works as expected (0 ms) +[ok]: XREVRANGE COUNT works as expected (1 ms) +[ok]: XRANGE can be used to iterate the whole stream (278 ms) +[ok]: XREVRANGE returns the reverse of XRANGE (1313 ms) +[ok]: XRANGE exclusive ranges (5 ms) +[ok]: XREAD with non empty stream (1 ms) +[ok]: Non blocking XREAD with empty streams (0 ms) +[ok]: XREAD with non empty second stream (1228 ms) +[ok]: Blocking XREAD waiting new data (7 ms) +[ok]: Blocking XREAD waiting old data (6 ms) +[ok]: Blocking XREAD will not reply with an empty array (56 ms) +[ok]: Blocking XREAD for stream that ran dry (issue #5299) (102 ms) +[ok]: XREAD last element from non-empty stream (1 ms) +[ok]: XREAD last element from empty stream (1 ms) +[ok]: XREAD last element blocking from empty stream (7 ms) +[ok]: XREAD last element blocking from non-empty stream (0 ms) +[ok]: XREAD last element from multiple streams (1 ms) +[ok]: XREAD last element with count > 1 (0 ms) +[ok]: XREAD: XADD + DEL should not awake client (6 ms) +[ok]: XREAD: XADD + DEL + LPUSH should not awake client (6 ms) +[ok]: XREAD with same stream name multiple times should work (6 ms) +[ok]: XREAD + multiple XADD inside transaction (7 ms) +[ok]: XDEL basic test (1 ms) +[ok]: XDEL multiply id test (1 ms) +[ok]: XDEL fuzz test (1616 ms) +[ok]: XRANGE fuzzing (5045 ms) +[ok]: XREVRANGE regression test for issue #5006 (2 ms) +[ok]: XREAD streamID edge (no-blocking) (1 ms) +[ok]: XREAD streamID edge (blocking) (8 ms) +[ok]: XADD streamID edge (0 ms) +[ok]: XTRIM with MAXLEN option basic test (163 ms) +[ok]: XADD with LIMIT consecutive calls (17 ms) +[ok]: XTRIM with ~ is limited (18 ms) +[ok]: XTRIM without ~ is not limited (18 ms) +[ok]: XTRIM without ~ and with LIMIT (17 ms) +[ok]: XTRIM with LIMIT delete entries no more than limit (1 ms) +=== (stream needs:debug) Starting server 127.0.0.1:21193 ok +[ok]: XADD with MAXLEN > xlen can propagate correctly (18 ms) +=== (stream needs:debug) Starting server 127.0.0.1:21195 ok +[ok]: XADD with MINID > lastid can propagate correctly (17 ms) +=== (stream needs:debug) Starting server 127.0.0.1:21197 ok +[ok]: XADD with ~ MAXLEN can propagate correctly (19 ms) +=== (stream needs:debug) Starting server 127.0.0.1:21199 ok +[ok]: XADD with ~ MAXLEN and LIMIT can propagate correctly (19 ms) +=== (stream needs:debug) Starting server 127.0.0.1:21201 ok +[ok]: XADD with ~ MINID can propagate correctly (20 ms) +=== (stream needs:debug) Starting server 127.0.0.1:21203 ok +[ok]: XADD with ~ MINID and LIMIT can propagate correctly (19 ms) +=== (stream needs:debug) Starting server 127.0.0.1:21205 ok +[ok]: XTRIM with ~ MAXLEN can propagate correctly (18 ms) +=== (stream) Starting server 127.0.0.1:21207 ok +[ok]: XADD can CREATE an empty stream (0 ms) +[ok]: XSETID can set a specific ID (1 ms) +[ok]: XSETID cannot SETID with smaller ID (1 ms) +[ok]: XSETID cannot SETID on non-existent key (0 ms) +[ok]: XSETID cannot run with an offset but without a maximal tombstone (0 ms) +[ok]: XSETID cannot run with a maximal tombstone but without an offset (1 ms) +[ok]: XSETID errors on negstive offset (0 ms) +[ok]: XSETID cannot set the maximal tombstone with larger ID (1 ms) +[ok]: XSETID cannot set the offset to less than the length (1 ms) +[ok]: XSETID cannot set smaller ID than current MAXDELETEDID (1 ms) +=== (stream) Starting server 127.0.0.1:21209 ok +[ok]: XADD advances the entries-added counter and sets the recorded-first-entry-id (2 ms) +[ok]: XDEL/TRIM are reflected by recorded first entry (3 ms) +[ok]: Maximum XDEL ID behaves correctly (2 ms) +[ok]: XADD with artial ID with maximal seq (1 ms) +=== (stream needs:debug) Starting server 127.0.0.1:21211 ok + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: Empty stream can be rewrite into AOF correctly (141 ms) + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: Stream can be rewrite into AOF correctly after XDEL lastid (113 ms) +=== (stream) Starting server 127.0.0.1:21213 ok +[ok]: XGROUP HELP should not have unexpected options (1 ms) +[ok]: XINFO HELP should not have unexpected options (0 ms) +[17/91 done]: unit/type/stream (19 seconds) +Testing unit/type/stream-cgroups +=== (stream) Starting server 127.0.0.1:21215 ok +[ok]: XGROUP CREATE: creation and duplicate group name detection (1 ms) +[ok]: XGROUP CREATE: with ENTRIESREAD parameter (2 ms) +[ok]: XGROUP CREATE: automatic stream creation fails without MKSTREAM (0 ms) +[ok]: XGROUP CREATE: automatic stream creation works with MKSTREAM (0 ms) +[ok]: XREADGROUP will return only new elements (0 ms) +[ok]: XREADGROUP can read the history of the elements we own (2 ms) +[ok]: XPENDING is able to return pending items (0 ms) +[ok]: XPENDING can return single consumer items (1 ms) +[ok]: XPENDING only group (0 ms) +[ok]: XPENDING with IDLE (21 ms) +[ok]: XPENDING with exclusive range intervals works as expected (1 ms) +[ok]: XACK is able to remove items from the consumer/group PEL (1 ms) +[ok]: XACK can't remove the same item multiple times (0 ms) +[ok]: XACK is able to accept multiple arguments (0 ms) +[ok]: XACK should fail if got at least one invalid ID (1 ms) +[ok]: PEL NACK reassignment after XGROUP SETID event (2 ms) +[ok]: XREADGROUP will not report data on empty history. Bug #5577 (2 ms) +[ok]: XREADGROUP history reporting of deleted entries. Bug #5570 (2 ms) +[ok]: Blocking XREADGROUP will not reply with an empty array (29 ms) +[ok]: Blocking XREADGROUP: key deleted (8 ms) +[ok]: Blocking XREADGROUP: key type changed with SET (8 ms) +[ok]: Blocking XREADGROUP: key type changed with transaction (8 ms) +[ok]: Blocking XREADGROUP: flushed DB (8 ms) +[ok]: Blocking XREADGROUP: swapped DB, key doesn't exist (8 ms) +[ok]: Blocking XREADGROUP: swapped DB, key is not a stream (8 ms) +[ok]: XREAD and XREADGROUP against wrong parameter (1 ms) +[ok]: Blocking XREAD: key deleted (8 ms) +[ok]: Blocking XREAD: key type changed with SET (9 ms) +[ok]: Blocking XREADGROUP for stream that ran dry (issue #5299) (52 ms) +[ok]: Blocking XREADGROUP will ignore BLOCK if ID is not > (12 ms) +[ok]: Blocking XREADGROUP for stream key that has clients blocked on list (16 ms) +[ok]: Blocking XREADGROUP for stream key that has clients blocked on stream - avoid endless loop (21 ms) +[ok]: Blocking XREADGROUP for stream key that has clients blocked on stream - reprocessing command (1059 ms) +[ok]: XGROUP DESTROY should unblock XREADGROUP with -NOGROUP (9 ms) +[ok]: RENAME can unblock XREADGROUP with data (8 ms) +[ok]: RENAME can unblock XREADGROUP with -NOGROUP (8 ms) +[ok]: XCLAIM can claim PEL items from another consumer (607 ms) +[ok]: XCLAIM without JUSTID increments delivery count (405 ms) +[ok]: XCLAIM same consumer (204 ms) +[ok]: XAUTOCLAIM can claim PEL items from another consumer (609 ms) +[ok]: XAUTOCLAIM as an iterator (204 ms) +[ok]: XAUTOCLAIM COUNT must be > 0 (0 ms) +[ok]: XCLAIM with XDEL (2 ms) +[ok]: XCLAIM with trimming (2 ms) +[ok]: XAUTOCLAIM with XDEL (1 ms) +[ok]: XAUTOCLAIM with XDEL and count (3 ms) +[ok]: XAUTOCLAIM with out of range count (0 ms) +[ok]: XCLAIM with trimming (2 ms) +[ok]: XINFO FULL output (4 ms) +[ok]: Consumer seen-time and active-time (206 ms) +[ok]: XGROUP CREATECONSUMER: create consumer if does not exist (3 ms) +[ok]: XGROUP CREATECONSUMER: group must exist (0 ms) +=== (stream needs:debug) Starting server 127.0.0.1:21217 ok +[ok]: XREADGROUP with NOACK creates consumer (1454 ms) + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: Consumer without PEL is present in AOF after AOFRW (1606 ms) +[ok]: Consumer group read counter and lag in empty streams (1 ms) +[ok]: Consumer group read counter and lag sanity (4 ms) +[ok]: Consumer group lag with XDELs (6 ms) +[ok]: Loading from legacy (Redict <= v6.2.x, rdb_ver < 10) persistence (1 ms) +[ok]: Loading from legacy (Redict <= v7.0.x, rdb_ver < 11) persistence (1 ms) +=== (external:skip) Starting server 127.0.0.1:21219 ok +[ok]: Consumer group last ID propagation to slave (NOACK=0) (107 ms) +[ok]: Consumer group last ID propagation to slave (NOACK=1) (325 ms) +=== (external:skip) Starting server 127.0.0.1:21221 ok +[ok]: Replication tests of XCLAIM with deleted entries (autoclaim=0) (108 ms) +[ok]: Replication tests of XCLAIM with deleted entries (autoclaim=1) (5 ms) +[ok]: XREADGROUP ACK would propagate entries-read (3 ms) +=== (stream needs:debug) Starting server 127.0.0.1:21223 ok + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: Empty stream with no lastid can be rewrite into AOF correctly (615 ms) +[18/91 done]: unit/type/stream-cgroups (10 seconds) +Testing unit/sort +=== (sort) Starting server 127.0.0.1:21225 ok +[ok]: Listpack: SORT BY key (0 ms) +[ok]: Listpack: SORT BY key with limit (1 ms) +[ok]: Listpack: SORT BY hash field (0 ms) +[ok]: Quicklist: SORT BY key (8 ms) +[ok]: Quicklist: SORT BY key with limit (1 ms) +[ok]: Quicklist: SORT BY hash field (8 ms) +[ok]: Big Quicklist: SORT BY key (412 ms) +[ok]: Big Quicklist: SORT BY key with limit (8 ms) +[ok]: Big Quicklist: SORT BY hash field (417 ms) +[ok]: Intset: SORT BY key (0 ms) +[ok]: Intset: SORT BY key with limit (0 ms) +[ok]: Intset: SORT BY hash field (0 ms) +[ok]: Hash table: SORT BY key (9 ms) +[ok]: Hash table: SORT BY key with limit (1 ms) +[ok]: Hash table: SORT BY hash field (8 ms) +[ok]: Big Hash table: SORT BY key (420 ms) +[ok]: Big Hash table: SORT BY key with limit (12 ms) +[ok]: Big Hash table: SORT BY hash field (464 ms) +[ok]: SORT GET # (0 ms) +[ok]: SORT GET (1 ms) +[ok]: SORT_RO GET (0 ms) +[ok]: SORT GET (key and hash) with sanity check (6 ms) +[ok]: SORT BY key STORE (2 ms) +[ok]: SORT BY hash field STORE (1 ms) +[ok]: SORT extracts STORE correctly (0 ms) +[ok]: SORT_RO get keys (1 ms) +[ok]: SORT extracts multiple STORE correctly (0 ms) +[ok]: SORT DESC (1 ms) +[ok]: SORT ALPHA against integer encoded strings (1 ms) +[ok]: SORT sorted set (1 ms) +[ok]: SORT sorted set BY nosort should retain ordering (2 ms) +[ok]: SORT sorted set BY nosort + LIMIT (2 ms) +[ok]: SORT sorted set BY nosort works as expected from scripts (2 ms) +[ok]: SORT sorted set: +inf and -inf handling (1 ms) +[ok]: SORT regression for issue #19, sorting floats (7 ms) +[ok]: SORT with STORE returns zero if result is empty (github issue 224) (0 ms) +[ok]: SORT with STORE does not create empty lists (github issue 224) (1 ms) +[ok]: SORT with STORE removes key if result is empty (github issue 227) (1 ms) +[ok]: SORT with BY and STORE should still order output (1 ms) +[ok]: SORT will complain with numerical sorting and bad doubles (1) (0 ms) +[ok]: SORT will complain with numerical sorting and bad doubles (2) (0 ms) +[ok]: SORT BY sub-sorts lexicographically if score is the same (1 ms) +[ok]: SORT GET with pattern ending with just -> does not get hash field (1 ms) +[ok]: SORT by nosort retains native order for lists (1 ms) +[ok]: SORT by nosort plus store retains native order for lists (1 ms) +[ok]: SORT by nosort with limit returns based on original list order (0 ms) +[ok]: SORT_RO - Successful case (1 ms) +[ok]: SORT_RO - Cannot run with STORE arg (0 ms) + + Average time to sort: 0.33000000000000002 milliseconds [ok]: SORT speed, 100 element list BY key, 100 times (33 ms) + + Average time to sort: 0.34999999999999998 milliseconds [ok]: SORT speed, 100 element list BY hash field, 100 times (36 ms) + + Average time to sort: 0.27000000000000002 milliseconds [ok]: SORT speed, 100 element list directly, 100 times (27 ms) + + Average time to sort: 0.25 milliseconds [ok]: SORT speed, 100 element list BY , 100 times (25 ms) +[ok]: SETRANGE with huge offset (1 ms) +[ok]: SORT STORE quicklist with the right options (49 ms) +=== (external:skip cluster sort) Starting server 127.0.0.1:21227 ok +[ok]: sort by in cluster mode (1 ms) +[ok]: sort get in cluster mode (1 ms) +[ok]: sort_ro by in cluster mode (0 ms) +[ok]: sort_ro get in cluster mode (0 ms) +[19/91 done]: unit/sort (15 seconds) +Testing unit/expire +=== (expire) Starting server 127.0.0.1:21229 ok +[ok]: EXPIRE - set timeouts multiple times (1 ms) +[ok]: EXPIRE - It should be still possible to read 'x' (0 ms) +[ok]: EXPIRE - After 2.1 seconds the key should no longer be here (2101 ms) +[ok]: EXPIRE - write on expire should work (1 ms) +[ok]: EXPIREAT - Check for EXPIRE alike behavior (1 ms) +[ok]: SETEX - Set + Expire combo operation. Check for TTL (1 ms) +[ok]: SETEX - Check value (0 ms) +[ok]: SETEX - Overwrite old key (1 ms) +[ok]: SETEX - Wait for the key to expire (1101 ms) +[ok]: SETEX - Wrong time parameter (0 ms) +[ok]: PERSIST can undo an EXPIRE (1 ms) +[ok]: PERSIST returns 0 against non existing or non volatile keys (0 ms) +millisecond expire test attempts: 0 +[ok]: EXPIRE precision is now the millisecond (1105 ms) +PSETEX sub-second expire test attempts: 0 +[ok]: PSETEX can set sub-second expires (103 ms) +PEXPIRE sub-second expire test attempts: 0 +[ok]: PEXPIRE can set sub-second expires (103 ms) +PEXPIREAT sub-second expire test attempts: 0 +[ok]: PEXPIREAT can set sub-second expires (204 ms) +[ok]: TTL returns time to live in seconds (1 ms) +[ok]: PTTL returns time to live in milliseconds (1 ms) +[ok]: TTL / PTTL / EXPIRETIME / PEXPIRETIME return -1 if key has no expire (1 ms) +[ok]: TTL / PTTL / EXPIRETIME / PEXPIRETIME return -2 if key does not exit (1 ms) +[ok]: EXPIRETIME returns absolute expiration time in seconds (0 ms) +[ok]: PEXPIRETIME returns absolute expiration time in milliseconds (1 ms) +[ok]: Redict should actively expire keys incrementally (608 ms) +[ok]: Redict should lazy expire keys (1005 ms) +[ok]: EXPIRE should not resurrect keys (issue #1026) (1005 ms) +[ok]: 5 keys in, 5 keys out (2 ms) +[ok]: EXPIRE with empty string as TTL should report an error (0 ms) +[ok]: SET with EX with big integer should report an error (1 ms) +[ok]: SET with EX with smallest integer should report an error (0 ms) +[ok]: GETEX with big integer should report an error (1 ms) +[ok]: GETEX with smallest integer should report an error (0 ms) +[ok]: EXPIRE with big integer overflows when converted to milliseconds (2 ms) +[ok]: PEXPIRE with big integer overflow when basetime is added (0 ms) +[ok]: EXPIRE with big negative integer (1 ms) +[ok]: PEXPIREAT with big integer works (0 ms) +[ok]: PEXPIREAT with big negative integer works (1 ms) +=== (external:skip) Starting server 127.0.0.1:21231 ok + +===== Start of server log (pid 384885) ===== + +[err]: All time-to-live(TTL) in commands are propagated as absolute timestamp in milliseconds in AOF in tests/unit/expire.tcl +Expected '88' to be between to '90' and '98' (context: type eval line 100 cmd {assert_range [r ttl foo1] 90 98} proc ::test) +### Starting server for test +384885:C 13 Oct 2025 20:39:34.518 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect. +384885:C 13 Oct 2025 20:39:34.519 * oO0OoO0OoO0Oo Redict is starting oO0OoO0OoO0Oo +384885:C 13 Oct 2025 20:39:34.519 * Redict version=7.3.6, bits=64, commit=00000000, modified=0, pid=384885, just started +384885:C 13 Oct 2025 20:39:34.519 * Configuration loaded +384885:M 13 Oct 2025 20:39:34.519 * Increased maximum number of open files to 10032 (it was originally set to 1024). +384885:M 13 Oct 2025 20:39:34.519 * monotonic clock: POSIX clock_gettime +384885:M 13 Oct 2025 20:39:34.519 # Failed to write PID file: Permission denied + + ## + ######## Redict 7.3.6 (00000000/0) 64 bit + ################ + ######################## Running in standalone mode + ############################## Port: 21232 + ################################: PID: 384885 + #############################::::: + ##::::####################:::::::: + ##::::::::############:::::::::::: https://redict.io + ##:::::::::::+####+::::::::::::::: + ##:::::::::::::::::::::::::::::::: + ##:::::::::::::::::::::::::::::::: + ##::::::::::::::::::::::::::::::### + ####::::::::::::::::::::::::#### + #####:::::::::::::::::#### + ####::::::::::#### + ####::#### + #### + +384885:M 13 Oct 2025 20:39:34.522 * Server initialized +384885:M 13 Oct 2025 20:39:34.897 * Creating AOF base file appendonly.aof.1.base.rdb on server start +384885:M 13 Oct 2025 20:39:36.033 * Creating AOF incr file appendonly.aof.1.incr.aof on server start +384885:M 13 Oct 2025 20:39:36.186 * Ready to accept connections tcp +384885:M 13 Oct 2025 20:39:36.186 * Ready to accept connections unix +384885:M 13 Oct 2025 20:39:36.186 * Ready to accept connections tls +384885:M 13 Oct 2025 20:39:36.186 - Accepted 127.0.0.1:39663 +384885:M 13 Oct 2025 20:39:36.195 - Reading from client: error:00000000:lib(0)::reason(0) +384885:M 13 Oct 2025 20:39:36.260 - Accepted 127.0.0.1:41157 +### Starting test All time-to-live(TTL) in commands are propagated as absolute timestamp in milliseconds in AOF in tests/unit/expire.tcl +384885:M 13 Oct 2025 20:39:48.363 * Reading RDB base file on AOF loading... +384885:M 13 Oct 2025 20:39:48.363 * Loading RDB produced by version 7.3.6 +384885:M 13 Oct 2025 20:39:48.363 * RDB age 14 seconds +384885:M 13 Oct 2025 20:39:48.363 * RDB memory usage when created 0.87 Mb +384885:M 13 Oct 2025 20:39:48.363 * RDB is base AOF +384885:M 13 Oct 2025 20:39:48.363 * Done loading RDB, keys loaded: 0, keys expired: 0. +384885:M 13 Oct 2025 20:39:48.363 * DB loaded from base file appendonly.aof.1.base.rdb: 0.001 seconds +384885:M 13 Oct 2025 20:39:48.363 * DB loaded from incr file appendonly.aof.1.incr.aof: 0.000 seconds +384885:M 13 Oct 2025 20:39:48.364 * Append Only File loaded by DEBUG LOADAOF +===== End of server log (pid 384885) ===== + + +===== Start of server stderr log (pid 384885) ===== + + +===== End of server stderr log (pid 384885) ===== + +[ok]: All TTL in commands are propagated as absolute timestamp in replication stream (114 ms) +=== (needs:repl external:skip) Starting server 127.0.0.1:21233 ok +[ok]: First server should have role slave after REPLICAOF (2 ms) +[ok]: For all replicated TTL-related commands, absolute expire times are identical on primary and replica (21 ms) + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: expired key which is created in writeable replicas should be deleted by active expiry (270 ms) +[ok]: SET command will remove expire (0 ms) +[ok]: SET - use KEEPTTL option, TTL should not be removed (1 ms) +[ok]: SET - use KEEPTTL option, TTL should not be removed after loadaof (2090 ms) +[ok]: GETEX use of PERSIST option should remove TTL (1 ms) +[ok]: GETEX use of PERSIST option should remove TTL after loadaof (1 ms) +[ok]: GETEX propagate as to replica as PERSIST, DEL, or nothing (1412 ms) +[ok]: EXPIRE with NX option on a key with ttl (1 ms) +[ok]: EXPIRE with NX option on a key without ttl (0 ms) +[ok]: EXPIRE with XX option on a key with ttl (1 ms) +[ok]: EXPIRE with XX option on a key without ttl (0 ms) +[ok]: EXPIRE with GT option on a key with lower ttl (0 ms) +[ok]: EXPIRE with GT option on a key with higher ttl (0 ms) +[ok]: EXPIRE with GT option on a key without ttl (0 ms) +[ok]: EXPIRE with LT option on a key with higher ttl (0 ms) +[ok]: EXPIRE with LT option on a key with lower ttl (1 ms) +[ok]: EXPIRE with LT option on a key without ttl (0 ms) +[ok]: EXPIRE with LT and XX option on a key with ttl (1 ms) +[ok]: EXPIRE with LT and XX option on a key without ttl (0 ms) +[ok]: EXPIRE with conflicting options: LT GT (0 ms) +[ok]: EXPIRE with conflicting options: NX GT (1 ms) +[ok]: EXPIRE with conflicting options: NX LT (0 ms) +[ok]: EXPIRE with conflicting options: NX XX (0 ms) +[ok]: EXPIRE with unsupported options (1 ms) +[ok]: EXPIRE with unsupported options (0 ms) +[ok]: EXPIRE with negative expiry (0 ms) +[ok]: EXPIRE with negative expiry on a non-valitale key (0 ms) +[ok]: EXPIRE with non-existed key (0 ms) +[ok]: Redict should not propagate the read command on lazy expire (1522 ms) +[ok]: SCAN: Lazy-expire should not be wrapped in MULTI/EXEC (2016 ms) + +===== Start of server log (pid 384631) ===== + +[ok]: RANDOMKEY: Lazy-expire should not be wrapped in MULTI/EXEC (1132 ms) +### Starting server for test +384631:C 13 Oct 2025 20:39:26.533 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect. +384631:C 13 Oct 2025 20:39:26.533 * oO0OoO0OoO0Oo Redict is starting oO0OoO0OoO0Oo +384631:C 13 Oct 2025 20:39:26.533 * Redict version=7.3.6, bits=64, commit=00000000, modified=0, pid=384631, just started +384631:C 13 Oct 2025 20:39:26.533 * Configuration loaded +384631:M 13 Oct 2025 20:39:26.533 * Increased maximum number of open files to 10032 (it was originally set to 1024). +384631:M 13 Oct 2025 20:39:26.533 * monotonic clock: POSIX clock_gettime +384631:M 13 Oct 2025 20:39:26.534 # Failed to write PID file: Permission denied + + ## + ######## Redict 7.3.6 (00000000/0) 64 bit + ################ + ######################## Running in standalone mode + ############################## Port: 21230 + ################################: PID: 384631 + #############################::::: + ##::::####################:::::::: + ##::::::::############:::::::::::: https://redict.io + ##:::::::::::+####+::::::::::::::: + ##:::::::::::::::::::::::::::::::: + ##:::::::::::::::::::::::::::::::: + ##::::::::::::::::::::::::::::::### + ####::::::::::::::::::::::::#### + #####:::::::::::::::::#### + ####::::::::::#### + ####::#### + #### + +384631:M 13 Oct 2025 20:39:26.537 * Server initialized +384631:M 13 Oct 2025 20:39:26.537 * Ready to accept connections tcp +384631:M 13 Oct 2025 20:39:26.537 * Ready to accept connections unix +384631:M 13 Oct 2025 20:39:26.537 * Ready to accept connections tls +384631:M 13 Oct 2025 20:39:26.662 - Accepted 127.0.0.1:38413 +384631:M 13 Oct 2025 20:39:26.814 - Reading from client: error:00000000:lib(0)::reason(0) +384631:M 13 Oct 2025 20:39:26.887 - Accepted 127.0.0.1:38063 +### Starting test EXPIRE - set timeouts multiple times in tests/unit/expire.tcl +### Starting test EXPIRE - It should be still possible to read 'x' in tests/unit/expire.tcl +### Starting test EXPIRE - After 2.1 seconds the key should no longer be here in tests/unit/expire.tcl +### Starting test EXPIRE - write on expire should work in tests/unit/expire.tcl +### Starting test EXPIREAT - Check for EXPIRE alike behavior in tests/unit/expire.tcl +### Starting test SETEX - Set + Expire combo operation. Check for TTL in tests/unit/expire.tcl +### Starting test SETEX - Check value in tests/unit/expire.tcl +### Starting test SETEX - Overwrite old key in tests/unit/expire.tcl +### Starting test SETEX - Wait for the key to expire in tests/unit/expire.tcl +### Starting test SETEX - Wrong time parameter in tests/unit/expire.tcl +### Starting test PERSIST can undo an EXPIRE in tests/unit/expire.tcl +### Starting test PERSIST returns 0 against non existing or non volatile keys in tests/unit/expire.tcl +### Starting test EXPIRE precision is now the millisecond in tests/unit/expire.tcl +### Starting test PSETEX can set sub-second expires in tests/unit/expire.tcl +### Starting test PEXPIRE can set sub-second expires in tests/unit/expire.tcl +### Starting test PEXPIREAT can set sub-second expires in tests/unit/expire.tcl +### Starting test TTL returns time to live in seconds in tests/unit/expire.tcl +### Starting test PTTL returns time to live in milliseconds in tests/unit/expire.tcl +### Starting test TTL / PTTL / EXPIRETIME / PEXPIRETIME return -1 if key has no expire in tests/unit/expire.tcl +### Starting test TTL / PTTL / EXPIRETIME / PEXPIRETIME return -2 if key does not exit in tests/unit/expire.tcl +### Starting test EXPIRETIME returns absolute expiration time in seconds in tests/unit/expire.tcl +### Starting test PEXPIRETIME returns absolute expiration time in milliseconds in tests/unit/expire.tcl +### Starting test Redict should actively expire keys incrementally in tests/unit/expire.tcl +### Starting test Redict should lazy expire keys in tests/unit/expire.tcl +### Starting test EXPIRE should not resurrect keys (issue #1026) in tests/unit/expire.tcl +### Starting test 5 keys in, 5 keys out in tests/unit/expire.tcl +### Starting test EXPIRE with empty string as TTL should report an error in tests/unit/expire.tcl +### Starting test SET with EX with big integer should report an error in tests/unit/expire.tcl +### Starting test SET with EX with smallest integer should report an error in tests/unit/expire.tcl +### Starting test GETEX with big integer should report an error in tests/unit/expire.tcl +### Starting test GETEX with smallest integer should report an error in tests/unit/expire.tcl +### Starting test EXPIRE with big integer overflows when converted to milliseconds in tests/unit/expire.tcl +### Starting test PEXPIRE with big integer overflow when basetime is added in tests/unit/expire.tcl +### Starting test EXPIRE with big negative integer in tests/unit/expire.tcl +### Starting test PEXPIREAT with big integer works in tests/unit/expire.tcl +### Starting test PEXPIREAT with big negative integer works in tests/unit/expire.tcl +### Starting test All time-to-live(TTL) in commands are propagated as absolute timestamp in milliseconds in AOF in tests/unit/expire.tcl +384631:M 13 Oct 2025 20:39:36.810 - DB 9: 3 keys (0 volatile) in 8 slots HT. +384631:M 13 Oct 2025 20:39:41.845 - DB 9: 3 keys (0 volatile) in 8 slots HT. +384631:M 13 Oct 2025 20:39:46.879 - DB 9: 3 keys (0 volatile) in 8 slots HT. +### Starting test All TTL in commands are propagated as absolute timestamp in replication stream in tests/unit/expire.tcl +384631:M 13 Oct 2025 20:39:48.487 - Accepted 127.0.0.1:44511 +384631:M 13 Oct 2025 20:39:48.493 * Replica 127.0.0.1: asks for synchronization +384631:M 13 Oct 2025 20:39:48.493 * Replication backlog created, my new replication IDs are '3dfcef092697d538b74d631fc360c4920116c7b2' and '0000000000000000000000000000000000000000' +384631:M 13 Oct 2025 20:39:48.493 * Starting BGSAVE for SYNC with target: disk +384631:M 13 Oct 2025 20:39:48.494 * Background saving started by pid 386266 +386266:C 13 Oct 2025 20:39:48.499 * DB saved on disk +386266:C 13 Oct 2025 20:39:48.500 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB +384631:M 13 Oct 2025 20:39:48.593 * Background saving terminated with success +384631:M 13 Oct 2025 20:39:48.593 * Synchronization with replica 127.0.0.1: succeeded +384631:M 13 Oct 2025 20:39:48.599 - Reading from client: error:00000000:lib(0)::reason(0) +384631:M 13 Oct 2025 20:39:48.599 * Connection with replica 127.0.0.1: lost. +### Starting test First server should have role slave after REPLICAOF in tests/unit/expire.tcl +384631:M 13 Oct 2025 20:39:48.738 - Accepted 127.0.0.1:49862 +### Starting test For all replicated TTL-related commands, absolute expire times are identical on primary and replica in tests/unit/expire.tcl +384631:M 13 Oct 2025 20:39:48.746 * Replica 127.0.0.1:21233 asks for synchronization +384631:M 13 Oct 2025 20:39:48.746 * Partial resynchronization not accepted: Replication ID mismatch (Replica asked for '37466ea2133e6a5fa891126f8e9ad4a0694acb53', my replication IDs are '3dfcef092697d538b74d631fc360c4920116c7b2' and '0000000000000000000000000000000000000000') +384631:M 13 Oct 2025 20:39:48.746 * Starting BGSAVE for SYNC with target: replicas sockets +384631:M 13 Oct 2025 20:39:48.747 * Background RDB transfer started by pid 386381 +386381:C 13 Oct 2025 20:39:48.748 - Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB +386381:C 13 Oct 2025 20:39:48.748 * Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB +384631:M 13 Oct 2025 20:39:48.748 * Diskless rdb transfer, done reading from pipe, 1 replicas still up. +384631:M 13 Oct 2025 20:39:48.754 * Background RDB transfer terminated with success +384631:M 13 Oct 2025 20:39:48.754 * Streamed RDB transfer with replica 127.0.0.1:21233 succeeded (socket). Waiting for REPLCONF ACK from replica to enable streaming +384631:M 13 Oct 2025 20:39:48.754 * Synchronization with replica 127.0.0.1:21233 succeeded +### Starting test expired key which is created in writeable replicas should be deleted by active expiry in tests/unit/expire.tcl +384631:M 13 Oct 2025 20:39:49.130 - Reading from client: error:0A000126:SSL routines::unexpected eof while reading +384631:M 13 Oct 2025 20:39:49.130 * Connection with replica client id #6 lost. +### Starting test SET command will remove expire in tests/unit/expire.tcl +### Starting test SET - use KEEPTTL option, TTL should not be removed in tests/unit/expire.tcl +### Starting test SET - use KEEPTTL option, TTL should not be removed after loadaof in tests/unit/expire.tcl +384631:M 13 Oct 2025 20:39:49.139 * Creating AOF incr file temp-appendonly.aof.incr on background rewrite +384631:M 13 Oct 2025 20:39:49.140 * Background append only file rewriting started by pid 386515 +386515:C 13 Oct 2025 20:39:49.140 - Fork CoW for AOF rewrite: current 0 MB, peak 0 MB, average 0 MB +386515:C 13 Oct 2025 20:39:49.232 * Successfully created the temporary AOF base file temp-rewriteaof-bg-386515.aof +386515:C 13 Oct 2025 20:39:49.233 * Fork CoW for AOF rewrite: current 1 MB, peak 1 MB, average 0 MB +384631:M 13 Oct 2025 20:39:49.301 * Background AOF rewrite terminated with success +384631:M 13 Oct 2025 20:39:49.301 * Successfully renamed the temporary AOF base file temp-rewriteaof-bg-386515.aof into appendonly.aof.1.base.rdb +384631:M 13 Oct 2025 20:39:49.301 * Successfully renamed the temporary AOF incr file temp-appendonly.aof.incr into appendonly.aof.1.incr.aof +384631:M 13 Oct 2025 20:39:50.141 * Background AOF rewrite finished successfully +384631:M 13 Oct 2025 20:39:50.315 - Background AOF rewrite signal handler took 1014487us +384631:M 13 Oct 2025 20:39:51.228 * Reading RDB base file on AOF loading... +384631:M 13 Oct 2025 20:39:51.228 * Loading RDB produced by version 7.3.6 +384631:M 13 Oct 2025 20:39:51.228 * RDB age 2 seconds +384631:M 13 Oct 2025 20:39:51.228 * RDB memory usage when created 1.71 Mb +384631:M 13 Oct 2025 20:39:51.228 * RDB is base AOF +384631:M 13 Oct 2025 20:39:51.228 * Done loading RDB, keys loaded: 1, keys expired: 0. +384631:M 13 Oct 2025 20:39:51.228 * DB loaded from base file appendonly.aof.1.base.rdb: 0.001 seconds +384631:M 13 Oct 2025 20:39:51.229 * DB loaded from incr file appendonly.aof.1.incr.aof: 0.000 seconds +384631:M 13 Oct 2025 20:39:51.229 * Append Only File loaded by DEBUG LOADAOF +### Starting test GETEX use of PERSIST option should remove TTL in tests/unit/expire.tcl +### Starting test GETEX use of PERSIST option should remove TTL after loadaof in tests/unit/expire.tcl +384631:M 13 Oct 2025 20:39:51.230 * Reading RDB base file on AOF loading... +384631:M 13 Oct 2025 20:39:51.230 * Loading RDB produced by version 7.3.6 +384631:M 13 Oct 2025 20:39:51.230 * RDB age 2 seconds +384631:M 13 Oct 2025 20:39:51.230 * RDB memory usage when created 1.71 Mb +384631:M 13 Oct 2025 20:39:51.230 * RDB is base AOF +384631:M 13 Oct 2025 20:39:51.230 * Done loading RDB, keys loaded: 1, keys expired: 0. +384631:M 13 Oct 2025 20:39:51.230 * DB loaded from base file appendonly.aof.1.base.rdb: 0.000 seconds +384631:M 13 Oct 2025 20:39:51.230 * DB loaded from incr file appendonly.aof.1.incr.aof: 0.000 seconds +384631:M 13 Oct 2025 20:39:51.230 * Append Only File loaded by DEBUG LOADAOF +### Starting test GETEX propagate as to replica as PERSIST, DEL, or nothing in tests/unit/expire.tcl +384631:M 13 Oct 2025 20:39:51.232 - Accepted 127.0.0.1:36551 +384631:M 13 Oct 2025 20:39:51.238 * Replica 127.0.0.1: asks for synchronization +384631:M 13 Oct 2025 20:39:51.238 * Starting BGSAVE for SYNC with target: disk +384631:M 13 Oct 2025 20:39:51.239 * Background saving started by pid 386538 +386538:C 13 Oct 2025 20:39:52.605 * DB saved on disk +386538:C 13 Oct 2025 20:39:52.620 * Fork CoW for RDB: current 1 MB, peak 1 MB, average 1 MB +384631:M 13 Oct 2025 20:39:52.641 * Background saving terminated with success +384631:M 13 Oct 2025 20:39:52.641 * Synchronization with replica 127.0.0.1: succeeded +384631:M 13 Oct 2025 20:39:52.643 - Reading from client: error:00000000:lib(0)::reason(0) +384631:M 13 Oct 2025 20:39:52.643 * Connection with replica 127.0.0.1: lost. +### Starting test EXPIRE with NX option on a key with ttl in tests/unit/expire.tcl +### Starting test EXPIRE with NX option on a key without ttl in tests/unit/expire.tcl +### Starting test EXPIRE with XX option on a key with ttl in tests/unit/expire.tcl +### Starting test EXPIRE with XX option on a key without ttl in tests/unit/expire.tcl +### Starting test EXPIRE with GT option on a key with lower ttl in tests/unit/expire.tcl +### Starting test EXPIRE with GT option on a key with higher ttl in tests/unit/expire.tcl +### Starting test EXPIRE with GT option on a key without ttl in tests/unit/expire.tcl +### Starting test EXPIRE with LT option on a key with higher ttl in tests/unit/expire.tcl +### Starting test EXPIRE with LT option on a key with lower ttl in tests/unit/expire.tcl +### Starting test EXPIRE with LT option on a key without ttl in tests/unit/expire.tcl +### Starting test EXPIRE with LT and XX option on a key with ttl in tests/unit/expire.tcl +### Starting test EXPIRE with LT and XX option on a key without ttl in tests/unit/expire.tcl +### Starting test EXPIRE with conflicting options: LT GT in tests/unit/expire.tcl +### Starting test EXPIRE with conflicting options: NX GT in tests/unit/expire.tcl +### Starting test EXPIRE with conflicting options: NX LT in tests/unit/expire.tcl +### Starting test EXPIRE with conflicting options: NX XX in tests/unit/expire.tcl +### Starting test EXPIRE with unsupported options in tests/unit/expire.tcl +### Starting test EXPIRE with unsupported options in tests/unit/expire.tcl +### Starting test EXPIRE with negative expiry in tests/unit/expire.tcl +### Starting test EXPIRE with negative expiry on a non-valitale key in tests/unit/expire.tcl +### Starting test EXPIRE with non-existed key in tests/unit/expire.tcl +### Starting test Redict should not propagate the read command on lazy expire in tests/unit/expire.tcl +384631:M 13 Oct 2025 20:39:52.654 - Accepted 127.0.0.1:46397 +384631:M 13 Oct 2025 20:39:52.659 * Replica 127.0.0.1: asks for synchronization +384631:M 13 Oct 2025 20:39:52.659 * Starting BGSAVE for SYNC with target: disk +384631:M 13 Oct 2025 20:39:52.660 * Background saving started by pid 386539 +386539:C 13 Oct 2025 20:39:52.661 - Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB +384631:M 13 Oct 2025 20:39:52.845 - DB 9: 1 keys (1 volatile) in 4 slots HT. +386539:C 13 Oct 2025 20:39:53.907 * DB saved on disk +386539:C 13 Oct 2025 20:39:54.098 * Fork CoW for RDB: current 1 MB, peak 1 MB, average 1 MB +384631:M 13 Oct 2025 20:39:54.171 * Background saving terminated with success +384631:M 13 Oct 2025 20:39:54.171 * Synchronization with replica 127.0.0.1: succeeded +384631:M 13 Oct 2025 20:39:54.175 - Reading from client: error:00000000:lib(0)::reason(0) +384631:M 13 Oct 2025 20:39:54.175 * Connection with replica 127.0.0.1: lost. +### Starting test SCAN: Lazy-expire should not be wrapped in MULTI/EXEC in tests/unit/expire.tcl +384631:M 13 Oct 2025 20:39:54.178 - Accepted 127.0.0.1:44795 +384631:M 13 Oct 2025 20:39:54.184 * Replica 127.0.0.1: asks for synchronization +384631:M 13 Oct 2025 20:39:54.184 * Starting BGSAVE for SYNC with target: disk +384631:M 13 Oct 2025 20:39:54.185 * Background saving started by pid 386626 +386626:C 13 Oct 2025 20:39:54.186 - Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB +386626:C 13 Oct 2025 20:39:56.040 * DB saved on disk +386626:C 13 Oct 2025 20:39:56.170 * Fork CoW for RDB: current 1 MB, peak 1 MB, average 1 MB +384631:M 13 Oct 2025 20:39:56.189 * Background saving terminated with success +384631:M 13 Oct 2025 20:39:56.189 * Synchronization with replica 127.0.0.1: succeeded +384631:M 13 Oct 2025 20:39:56.190 - Reading from client: error:00000000:lib(0)::reason(0) +384631:M 13 Oct 2025 20:39:56.190 * Connection with replica 127.0.0.1: lost. +### Starting test RANDOMKEY: Lazy-expire should not be wrapped in MULTI/EXEC in tests/unit/expire.tcl +384631:M 13 Oct 2025 20:39:56.194 - Accepted 127.0.0.1:45611 +384631:M 13 Oct 2025 20:39:56.200 * Replica 127.0.0.1: asks for synchronization +384631:M 13 Oct 2025 20:39:56.200 * Starting BGSAVE for SYNC with target: disk +384631:M 13 Oct 2025 20:39:56.201 * Background saving started by pid 386641 +386641:C 13 Oct 2025 20:39:56.202 - Fork CoW for RDB: current 0 MB, peak 0 MB, average 0 MB +386641:C 13 Oct 2025 20:39:57.178 * DB saved on disk +386641:C 13 Oct 2025 20:39:57.303 * Fork CoW for RDB: current 1 MB, peak 1 MB, average 1 MB +384631:M 13 Oct 2025 20:39:57.321 * Background saving terminated with success +384631:M 13 Oct 2025 20:39:57.321 * Synchronization with replica 127.0.0.1: succeeded +384631:M 13 Oct 2025 20:39:57.322 - Reading from client: error:00000000:lib(0)::reason(0) +384631:M 13 Oct 2025 20:39:57.322 * Connection with replica 127.0.0.1: lost. +===== End of server log (pid 384631) ===== + + +===== Start of server stderr log (pid 384631) ===== + + +===== End of server stderr log (pid 384631) ===== + +=== (expire external:skip cluster) Starting server 127.0.0.1:21235 ok +[ok]: expire scan should skip dictionaries with lot's of empty buckets (1244 ms) +[20/91 done]: unit/expire (36 seconds) +Testing unit/other +=== (other) Starting server 127.0.0.1:21237 ok +[ok]: Coverage: HELP commands (2 ms) +[ok]: Coverage: MEMORY MALLOC-STATS (2 ms) +[ok]: Coverage: MEMORY PURGE (0 ms) +[ok]: SAVE - make sure there are all the types as values (907 ms) +[ok]: FUZZ stresser with data model binary (593 ms) +[ok]: FUZZ stresser with data model alpha (596 ms) +[ok]: FUZZ stresser with data model compr (593 ms) +=== (external:skip) Starting server 127.0.0.1:21239 ok +[ok]: FLUSHALL should not reset the dirty counter if we disable save (1 ms) +[ok]: FLUSHALL should reset the dirty counter to 0 if we enable save (641 ms) + +Waiting for background save to finish... +Waiting for background save to finish... +Waiting for background save to finish... +Waiting for background save to finish... +Waiting for background save to finish... +Waiting for background save to finish... +Waiting for background save to finish... +Waiting for background save to finish... +Waiting for background save to finish... +Waiting for background save to finish... +Waiting for background save to finish... +Waiting for background save to finish... +Waiting for background save to finish... +Waiting for background save to finish... +Waiting for background save to finish... +Waiting for background save to finish... +Waiting for background save to finish... +Waiting for background save to finish... +Waiting for background save to finish... +Waiting for background save to finish... +Waiting for background save to finish... +Waiting for background save to finish... +Waiting for background save to finish... +Waiting for background save to finish... +Waiting for background save to finish... +Waiting for background save to finish... +Waiting for background save to finish... +Waiting for background save to finish... [ok]: BGSAVE (3803 ms) +[ok]: SELECT an out of range DB (1 ms) +[ok]: Check consistency of different data types after a reload (2186 ms) + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: Same dataset digest if saving/reloading as AOF? (2282 ms) + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: EXPIRES after a reload (snapshot + append only file rewrite) (6493 ms) + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: EXPIRES after AOF reload (without rewrite) (6582 ms) +[ok]: PIPELINING stresser (also a regression for the old epoll bug) (530 ms) +[ok]: APPEND basics (0 ms) +[ok]: APPEND basics, integer encoded values (0 ms) +[ok]: APPEND fuzzing (285 ms) +[ok]: FLUSHDB (26 ms) +[ok]: Perform a final SAVE to leave a clean DB on disk (1155 ms) +[ok]: RESET clears client state (1 ms) +[ok]: RESET clears MONITOR state (8 ms) +[ok]: RESET clears and discards MULTI state (1 ms) +[ok]: RESET clears Pub/Sub state (1 ms) +[ok]: RESET clears authenticated state (0 ms) +[ok]: Subcommand syntax error crash (issue #10070) (1 ms) +=== (other external:skip) Starting server 127.0.0.1:21241 ok + +Waiting for background save to finish... [ok]: Don't rehash if redict has child process (619 ms) +=== (other external:skip) Starting server 127.0.0.1:21243 ok +[ok]: Process title set as expected (161 ms) +=== (other external:skip cluster slow) Starting server 127.0.0.1:21245 ok +[ok]: Redict can trigger resizing (1758 ms) +[ok]: Redict can rewind and trigger smaller slot resizing (674 ms) +=== (other external:skip) Starting server 127.0.0.1:21247 ok +[ok]: Redict can resize empty dict (27 ms) +[21/91 done]: unit/other (38 seconds) +Testing unit/multi +=== (multi) Starting server 127.0.0.1:21249 ok +[ok]: MULTI / EXEC basics (1 ms) +[ok]: DISCARD (1 ms) +[ok]: Nested MULTI are not allowed (0 ms) +[ok]: MULTI where commands alter argc/argv (1 ms) +[ok]: WATCH inside MULTI is not allowed (1 ms) +[ok]: EXEC fails if there are errors while queueing commands #1 (1 ms) +[ok]: EXEC fails if there are errors while queueing commands #2 (8 ms) +[ok]: If EXEC aborts, the client MULTI state is cleared (1 ms) +[ok]: EXEC works on WATCHed key not modified (1 ms) +[ok]: EXEC fail on WATCHed key modified (1 key of 1 watched) (0 ms) +[ok]: EXEC fail on WATCHed key modified (1 key of 5 watched) (1 ms) +[ok]: EXEC fail on WATCHed key modified by SORT with STORE even if the result is empty (1 ms) +EXEC fail on lazy expired WATCHed key attempts: 0 +[ok]: EXEC fail on lazy expired WATCHed key (102 ms) +[ok]: WATCH stale keys should not fail EXEC (4 ms) +[ok]: Delete WATCHed stale keys should not fail EXEC (4 ms) +[ok]: FLUSHDB while watching stale keys should not fail EXEC (4 ms) +[ok]: After successful EXEC key is no longer watched (1 ms) +[ok]: After failed EXEC key is no longer watched (2 ms) +[ok]: It is possible to UNWATCH (1 ms) +[ok]: UNWATCH when there is nothing watched works as expected (0 ms) +[ok]: FLUSHALL is able to touch the watched keys (1 ms) +[ok]: FLUSHALL does not touch non affected keys (0 ms) +[ok]: FLUSHDB is able to touch the watched keys (0 ms) +[ok]: FLUSHDB does not touch non affected keys (1 ms) +[ok]: SWAPDB is able to touch the watched keys that exist (1 ms) +[ok]: SWAPDB is able to touch the watched keys that do not exist (1 ms) +[ok]: SWAPDB does not touch watched stale keys (3 ms) +[ok]: SWAPDB does not touch non-existing key replaced with stale key (4 ms) +[ok]: SWAPDB does not touch stale key replaced with another stale key (4 ms) +[ok]: WATCH is able to remember the DB a key belongs to (1 ms) +[ok]: WATCH will consider touched keys target of EXPIRE (1 ms) +[ok]: WATCH will consider touched expired keys (1120 ms) +[ok]: DISCARD should clear the WATCH dirty flag on the client (2 ms) +[ok]: DISCARD should UNWATCH all the keys (1 ms) +[ok]: MULTI / EXEC is not propagated (single write command) (1226 ms) +[ok]: MULTI / EXEC is propagated correctly (multiple commands) (2365 ms) +[ok]: MULTI / EXEC is propagated correctly (multiple commands with SELECT) (1820 ms) +[ok]: MULTI / EXEC is propagated correctly (empty transaction) (2217 ms) +[ok]: MULTI / EXEC is propagated correctly (read-only commands) (1613 ms) +[ok]: MULTI / EXEC is propagated correctly (write command, no effect) (1209 ms) +[ok]: MULTI / EXEC with REPLICAOF (1110 ms) +[ok]: DISCARD should not fail during OOM (9 ms) +[ok]: MULTI and script timeout (418 ms) +[ok]: EXEC and script timeout (418 ms) +[ok]: MULTI-EXEC body and script timeout (417 ms) +[ok]: just EXEC and script timeout (423 ms) +[ok]: exec with write commands and state change (8 ms) +[ok]: exec with read commands and stale replica state change (9 ms) +[ok]: EXEC with only read commands should not be rejected when OOM (8 ms) +[ok]: EXEC with at least one use-memory command should fail (27 ms) +[ok]: Blocking commands ignores the timeout (2 ms) +[ok]: MULTI propagation of PUBLISH (1065 ms) +[ok]: MULTI propagation of SCRIPT LOAD (846 ms) +[ok]: MULTI propagation of EVAL (909 ms) +[ok]: MULTI propagation of SCRIPT FLUSH (202 ms) +[ok]: MULTI propagation of XREADGROUP (104 ms) +[ok]: MULTI with SAVE (2 ms) +[ok]: MULTI with SHUTDOWN (2 ms) + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: MULTI with BGREWRITEAOF (698 ms) + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: MULTI with config set appendonly (217 ms) +[ok]: MULTI with config error (1 ms) +[ok]: Flushall while watching several keys by one client (1 ms) +=== (external:skip) Starting server 127.0.0.1:21251 ok +[ok]: MULTI with FLUSHALL and AOF (5 ms) +[22/91 done]: unit/multi (19 seconds) +Testing unit/quit +=== (quit) Starting server 127.0.0.1:21253 ok +[ok]: QUIT returns OK (7 ms) +[ok]: Pipelined commands after QUIT must not be executed (14 ms) +[ok]: Pipelined commands after QUIT that exceed read buffer size (13 ms) +[23/91 done]: unit/quit (1 seconds) +Testing unit/aofrw +=== (aofrw external:skip logreqres:skip) Starting server 127.0.0.1:21255 ok + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: AOF rewrite during write load: RDB preamble=yes (12575 ms) + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: AOF rewrite during write load: RDB preamble=no (21044 ms) +=== (aofrw external:skip) Starting server 127.0.0.1:21257 ok + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: Turning off AOF kills the background writing child if any (2592 ms) + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: AOF rewrite of list with listpack encoding, string data (2242 ms) + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: AOF rewrite of list with quicklist encoding, string data (2557 ms) + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: AOF rewrite of list with listpack encoding, int data (3421 ms) + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: AOF rewrite of list with quicklist encoding, int data (3315 ms) + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: AOF rewrite of set with intset encoding, string data (3526 ms) + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: AOF rewrite of set with hashtable encoding, string data (2641 ms) + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: AOF rewrite of set with intset encoding, int data (1486 ms) + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: AOF rewrite of set with hashtable encoding, int data (2996 ms) + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: AOF rewrite of hash with listpack encoding, string data (3651 ms) + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: AOF rewrite of hash with hashtable encoding, string data (3223 ms) + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: AOF rewrite of hash with listpack encoding, int data (2131 ms) + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: AOF rewrite of hash with hashtable encoding, int data (2112 ms) + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: AOF rewrite of zset with listpack encoding, string data (2070 ms) + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: AOF rewrite of zset with skiplist encoding, string data (1972 ms) + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: AOF rewrite of zset with listpack encoding, int data (1881 ms) + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: AOF rewrite of zset with skiplist encoding, int data (1900 ms) + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: AOF rewrite functions (1082 ms) +[ok]: BGREWRITEAOF is delayed if BGSAVE is in progress (368 ms) +[ok]: BGREWRITEAOF is refused if already in progress (95 ms) +[24/91 done]: unit/aofrw (80 seconds) +Testing unit/acl +=== (acl external:skip) Starting server 127.0.0.1:21259 ok +[ok]: Connections start with the default user (0 ms) +[ok]: It is possible to create new users (0 ms) +[ok]: Coverage: ACL USERS (1 ms) +[ok]: Usernames can not contain spaces or null characters (0 ms) +[ok]: New users start disabled (1 ms) +[ok]: Enabling the user allows the login (0 ms) +[ok]: Only the set of correct passwords work (1 ms) +[ok]: It is possible to remove passwords from the set of valid ones (1 ms) +[ok]: Test password hashes can be added (0 ms) +[ok]: Test password hashes validate input (1 ms) +[ok]: ACL GETUSER returns the password hash instead of the actual password (0 ms) +[ok]: Test hashed passwords removal (1 ms) +[ok]: By default users are not able to access any command (0 ms) +[ok]: By default users are not able to access any key (1 ms) +[ok]: It's possible to allow the access of a subset of keys (1 ms) +[ok]: By default, only default user is able to publish to any channel (1 ms) +[ok]: By default, only default user is not able to publish to any shard channel (1 ms) +[ok]: By default, only default user is able to subscribe to any channel (7 ms) +[ok]: By default, only default user is able to subscribe to any shard channel (7 ms) +[ok]: By default, only default user is able to subscribe to any pattern (8 ms) +[ok]: It's possible to allow publishing to a subset of channels (0 ms) +[ok]: It's possible to allow publishing to a subset of shard channels (0 ms) +[ok]: Validate subset of channels is prefixed with resetchannels flag (2 ms) +[ok]: In transaction queue publish/subscribe/psubscribe to unauthorized channel will fail (2 ms) +[ok]: It's possible to allow subscribing to a subset of channels (7 ms) +[ok]: It's possible to allow subscribing to a subset of shard channels (7 ms) +[ok]: It's possible to allow subscribing to a subset of channel patterns (7 ms) +[ok]: Subscribers are killed when revoked of channel permission (7 ms) +[ok]: Subscribers are killed when revoked of channel permission (7 ms) +[ok]: Subscribers are killed when revoked of pattern permission (6 ms) +[ok]: Subscribers are killed when revoked of allchannels permission (7 ms) +[ok]: Subscribers are pardoned if literal permissions are retained and/or gaining allchannels (7 ms) +[ok]: blocked command gets rejected when reprocessed after permission change (7 ms) +[ok]: Users can be configured to authenticate with any password (1 ms) +[ok]: ACLs can exclude single commands (0 ms) +[ok]: ACLs can include or exclude whole classes of commands (1 ms) +[ok]: ACLs can include single subcommands (1 ms) +[ok]: ACLs can exclude single subcommands, case 1 (1 ms) +[ok]: ACLs can exclude single subcommands, case 2 (0 ms) +[ok]: ACLs cannot include a subcommand with a specific arg (1 ms) +[ok]: ACLs cannot exclude or include a container commands with a specific arg (0 ms) +[ok]: ACLs cannot exclude or include a container command with two args (1 ms) +[ok]: ACLs including of a type includes also subcommands (0 ms) +[ok]: ACLs can block SELECT of all but a specific DB (1 ms) +[ok]: ACLs can block all DEBUG subcommands except one (1 ms) +[ok]: ACLs set can include subcommands, if already full command exists (1 ms) +[ok]: ACLs set can exclude subcommands, if already full command exists (3 ms) +[ok]: ACL SETUSER RESET reverting to default newly created user (1 ms) +[ok]: ACL GETUSER is able to translate back command permissions (1 ms) +[ok]: ACL GETUSER provides reasonable results (12 ms) +[ok]: ACL GETUSER provides correct results (4 ms) +[ok]: ACL CAT with illegal arguments (0 ms) +[ok]: ACL CAT without category - list all categories (0 ms) +[ok]: ACL CAT category - list all commands/subcommands that belong to category (1 ms) +[ok]: ACL requires explicit permission for scripting for EVAL_RO, EVALSHA_RO and FCALL_RO (1 ms) +[ok]: ACL #5998 regression: memory leaks adding / removing subcommands (0 ms) +[ok]: ACL LOG aggregates similar errors together and assigns unique entry-id to new errors (5 ms) +[ok]: ACL LOG shows failed command executions at toplevel (1 ms) +[ok]: ACL LOG shows failed subcommand executions at toplevel (1 ms) +[ok]: ACL LOG is able to test similar events (1 ms) +[ok]: ACL LOG is able to log keys access violations and key name (1 ms) +[ok]: ACL LOG is able to log channel access violations and channel name (1 ms) +[ok]: ACL LOG RESET is able to flush the entries in the log (1 ms) +[ok]: ACL LOG can distinguish the transaction context (1) (0 ms) +[ok]: ACL LOG can distinguish the transaction context (2) (44 ms) +[ok]: ACL can log errors in the context of Lua scripting (1 ms) +[ok]: ACL LOG can accept a numerical argument to show less entries (1 ms) +[ok]: ACL LOG can log failed auth attempts (1 ms) +[ok]: ACLLOG - zero max length is correctly handled (2 ms) +[ok]: ACL LOG entries are limited to a maximum amount (2 ms) +[ok]: ACL LOG entries are still present on update of max len config (1 ms) +[ok]: When default user is off, new connections are not authenticated (6 ms) +[ok]: When default user has no command permission, hello command still works for other users (0 ms) +[ok]: When an authentication chain is used in the HELLO cmd, the last auth cmd has precedence (1 ms) +[ok]: When a setname chain is used in the HELLO cmd, the last setname cmd has precedence (1 ms) +[ok]: When authentication fails in the HELLO cmd, the client setname should not be applied (0 ms) +[ok]: ACL HELP should not have unexpected options (0 ms) +[ok]: Delete a user that the client doesn't use (0 ms) +[ok]: Delete a user that the client is using (0 ms) +[ok]: ACL GENPASS command failed test (5 ms) +[ok]: Default user can not be removed (1 ms) +[ok]: ACL load non-existing configured ACL file (0 ms) +[ok]: ACL-Metrics user AUTH failure (3 ms) +[ok]: ACL-Metrics invalid command accesses (2 ms) +[ok]: ACL-Metrics invalid key accesses (2 ms) +[ok]: ACL-Metrics invalid channels accesses (2 ms) +=== (external:skip) Starting server 127.0.0.1:21261 ok +[ok]: default: load from include file, can access any channels (1 ms) +[ok]: default: with config acl-pubsub-default allchannels after reset, can access any channels (1 ms) +[ok]: default: with config acl-pubsub-default resetchannels after reset, can not access any channels (1 ms) +[ok]: Alice: can execute all command (1 ms) +[ok]: Bob: just execute @set and acl command (1 ms) +[ok]: ACL LOAD only disconnects affected clients (21 ms) +[ok]: ACL LOAD disconnects clients of deleted users (20 ms) +[ok]: ACL load and save (690 ms) +[ok]: ACL load and save with restricted channels (556 ms) +=== (external:skip) Starting server 127.0.0.1:21263 ok +[ok]: Default user has access to all channels irrespective of flag (0 ms) +[ok]: Update acl-pubsub-default, existing users shouldn't get affected (2 ms) +[ok]: Single channel is valid (1 ms) +[ok]: Single channel is not valid with allchannels (0 ms) +=== (external:skip) Starting server 127.0.0.1:21265 ok +[ok]: Only default user has access to all channels irrespective of flag (0 ms) +=== (external:skip) Starting server 127.0.0.1:21267 ok +[ok]: default: load from config file, without channel permission default user can't access any channels (0 ms) +=== (external:skip) Starting server 127.0.0.1:21269 ok +[ok]: default: load from config file with all channels permissions (1 ms) +=== (external:skip) Starting server 127.0.0.1:21271 ok +[ok]: Test loading an ACL file with duplicate users (6 ms) +[ok]: Test loading an ACL file with duplicate default user (5 ms) +[ok]: Test loading duplicate users in config on startup (19 ms) +=== (acl external:skip) Starting server 127.0.0.1:21273 ok +[ok]: ACL from config file and config rewrite (916 ms) +[25/91 done]: unit/acl (8 seconds) +Testing unit/acl-v2 +=== (acl external:skip) Starting server 127.0.0.1:21275 ok +[ok]: Test basic multiple selectors (2 ms) +[ok]: Test ACL selectors by default have no permissions (0 ms) +[ok]: Test deleting selectors (1 ms) +[ok]: Test selector syntax error reports the error in the selector context (2 ms) +[ok]: Test flexible selector definition (1 ms) +[ok]: Test separate read permission (2 ms) +[ok]: Test separate write permission (1 ms) +[ok]: Test separate read and write permissions (1 ms) +[ok]: Validate read and write permissions format (0 ms) +[ok]: Validate key permissions format - empty and omitted pattern (1 ms) +[ok]: Test separate read and write permissions on different selectors are not additive (2 ms) +[ok]: Test SET with separate read permission (2 ms) +[ok]: Test SET with separate write permission (2 ms) +[ok]: Test SET with read and write permissions (2 ms) +[ok]: Test BITFIELD with separate read permission (1 ms) +[ok]: Test BITFIELD with separate write permission (1 ms) +[ok]: Test BITFIELD with read and write permissions (1 ms) +[ok]: Test ACL log correctly identifies the relevant item when selectors are used (3 ms) +[ok]: Test ACL GETUSER response information (1 ms) +[ok]: Test ACL list idempotency (1 ms) +[ok]: Test R+W is the same as all permissions (1 ms) +[ok]: Test basic dry run functionality (0 ms) +[ok]: Test various commands for command permissions (0 ms) +[ok]: Test various odd commands for key permissions (6 ms) +[ok]: Existence test commands are not marked as access (1 ms) +[ok]: Intersection cardinaltiy commands are access commands (2 ms) +[ok]: Test general keyspace commands require some type of permission to execute (3 ms) +[ok]: Cardinality commands require some type of permission to execute (4 ms) +[ok]: Test sharded channel permissions (1 ms) +[ok]: Test sort with ACL permissions (3 ms) +[ok]: Test DRYRUN with wrong number of arguments (1 ms) +=== (external:skip) Starting server 127.0.0.1:21277 ok +[ok]: Test behavior of loading ACLs (1 ms) +[26/91 done]: unit/acl-v2 (1 seconds) +Testing unit/latency-monitor +=== (latency-monitor needs:latency) Starting server 127.0.0.1:21279 ok +[ok]: LATENCY HISTOGRAM with empty histogram (1 ms) +[ok]: LATENCY HISTOGRAM all commands (1 ms) +[ok]: LATENCY HISTOGRAM sub commands (1 ms) +[ok]: LATENCY HISTOGRAM with a subset of commands (2 ms) +[ok]: LATENCY HISTOGRAM command (1 ms) +[ok]: LATENCY HISTOGRAM with wrong command name skips the invalid one (2 ms) +[ok]: Test latency events logging (3417 ms) +LATENCY HISTORY data: +{1760337750 300} {1760337751 400} {1760337753 500} +[ok]: LATENCY HISTORY output is ok (0 ms) +LATENCY LATEST data: +{command 1760337753 500 500} +[ok]: LATENCY LATEST output is ok (1 ms) +LATENCY GRAPH data: +command - high 500 ms, low 300 ms (all time high 500 ms) +-------------------------------------------------------------------------------- + # + _| + || +_|| + +320 +sss + +[ok]: LATENCY GRAPH can output the event graph (0 ms) +[ok]: LATENCY GRAPH can output the expire event graph (1 ms) +[ok]: LATENCY of expire events are correctly collected (2199 ms) +[ok]: LATENCY HISTORY / RESET with wrong event name is fine (0 ms) +[ok]: LATENCY DOCTOR produces some output (1 ms) +[ok]: LATENCY RESET is able to reset events (1 ms) +[ok]: LATENCY HELP should not have unexpected options (0 ms) +[27/91 done]: unit/latency-monitor (6 seconds) +Testing integration/block-repl +=== (repl external:skip) Starting server 127.0.0.1:21281 ok +=== () Starting server 127.0.0.1:21283 ok +[ok]: First server should have role slave after SLAVEOF (1004 ms) +[ok]: Test replication with blocking lists and sorted sets operations (25060 ms) +[28/91 done]: integration/block-repl (27 seconds) +Testing integration/replication +=== (repl network external:skip) Starting server 127.0.0.1:21285 ok +=== () Starting server 127.0.0.1:21287 ok +[ok]: Slave enters handshake (1002 ms) +[ok]: Slave enters wait_bgsave (1 ms) +[ok]: Slave is able to detect timeout during handshake (1 ms) +=== (repl external:skip) Starting server 127.0.0.1:21289 ok +=== () Starting server 127.0.0.1:21291 ok +[ok]: Set instance A as slave of B (103 ms) +[ok]: INCRBYFLOAT replication, should not remove expire (3 ms) +[ok]: GETSET replication (3 ms) +[ok]: BRPOPLPUSH replication, when blocking against empty list (9 ms) +[ok]: BRPOPLPUSH replication, list exists (1010 ms) +[ok]: BLMOVE (left, left) replication, when blocking against empty list (8 ms) +[ok]: BLMOVE (left, left) replication, list exists (1012 ms) +[ok]: BLMOVE (left, right) replication, when blocking against empty list (8 ms) +[ok]: BLMOVE (left, right) replication, list exists (1010 ms) +[ok]: BLMOVE (right, left) replication, when blocking against empty list (10 ms) +[ok]: BLMOVE (right, left) replication, list exists (1012 ms) +[ok]: BLMOVE (right, right) replication, when blocking against empty list (8 ms) +[ok]: BLMOVE (right, right) replication, list exists (1013 ms) +[ok]: BLPOP followed by role change, issue #2473 (225 ms) +=== (repl external:skip) Starting server 127.0.0.1:21293 ok +=== () Starting server 127.0.0.1:21295 ok +[ok]: Second server should have role master at first (1 ms) +[ok]: SLAVEOF should start with link status "down" (1 ms) +[ok]: The role should immediately be changed to "replica" (0 ms) +[ok]: Sync should have transferred keys from master (0 ms) +[ok]: The link status should be up (0 ms) +[ok]: SET on the master should immediately propagate (1 ms) +[ok]: FLUSHDB / FLUSHALL should replicate (84 ms) +[ok]: ROLE in master reports master with a slave (0 ms) +[ok]: ROLE in slave reports slave in connected state (0 ms) +=== (repl external:skip) Starting server 127.0.0.1:21297 ok +=== () Starting server 127.0.0.1:21299 ok +=== () Starting server 127.0.0.1:21301 ok +=== () Starting server 127.0.0.1:21303 ok +[ok]: Connect multiple replicas at the same time (issue #141), master diskless=no, replica diskless=disabled (15202 ms) +=== (repl external:skip) Starting server 127.0.0.1:21305 ok +=== () Starting server 127.0.0.1:21307 ok +=== () Starting server 127.0.0.1:21309 ok +=== () Starting server 127.0.0.1:21311 ok +[ok]: Connect multiple replicas at the same time (issue #141), master diskless=no, replica diskless=swapdb (10609 ms) +=== (repl external:skip) Starting server 127.0.0.1:21313 ok +=== () Starting server 127.0.0.1:21315 ok +=== () Starting server 127.0.0.1:21317 ok +=== () Starting server 127.0.0.1:21319 ok +[ok]: Connect multiple replicas at the same time (issue #141), master diskless=yes, replica diskless=disabled (12315 ms) +=== (repl external:skip) Starting server 127.0.0.1:21321 ok +=== () Starting server 127.0.0.1:21323 ok +=== () Starting server 127.0.0.1:21325 ok +=== () Starting server 127.0.0.1:21327 ok +[ok]: Connect multiple replicas at the same time (issue #141), master diskless=yes, replica diskless=swapdb (11011 ms) +=== (repl external:skip) Starting server 127.0.0.1:21329 ok +=== () Starting server 127.0.0.1:21331 ok +[ok]: Master stream is correctly processed while the replica has a script in -BUSY state (21329 ms) +=== (repl external:skip) Starting server 127.0.0.1:21333 ok +=== () Starting server 127.0.0.1:21335 ok +[ok]: Diskless load swapdb (different replid): new database is exposed after swapping (1 ms) +=== (repl external:skip) Starting server 127.0.0.1:21337 ok +=== () Starting server 127.0.0.1:21339 ok +[ok]: Diskless load swapdb (different replid): replica enter loading (466 ms) +[ok]: Diskless load swapdb (different replid): old database is exposed after replication fails (0 ms) +=== (repl external:skip) Starting server 127.0.0.1:21341 ok +=== () Starting server 127.0.0.1:21343 ok +[ok]: Diskless load swapdb (async_loading): new database is exposed after swapping (1 ms) +=== (repl external:skip) Starting server 127.0.0.1:21345 ok +=== () Starting server 127.0.0.1:21347 ok +[ok]: Diskless load swapdb (async_loading): replica enter async_loading (342 ms) +[ok]: Diskless load swapdb (async_loading): old database is exposed while async replication is in progress (873 ms) +[ok]: Busy script during async loading (1083 ms) +[ok]: Blocked commands and configs during async-loading (431 ms) +[ok]: Diskless load swapdb (async_loading): old database is exposed after async replication fails (1 ms) +Waiting for process 470357 to exit... +Waiting for process 470357 to exit... +Waiting for process 470357 to exit... +=== (repl) Starting server 127.0.0.1:21349 ok +=== () Starting server 127.0.0.1:21351 ok +filling took 6637 ms (TODO: use pipeline) +{471542:S 13 Oct 2025 20:44:56.692 # Internal error in RDB reading offset 3359067, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 50 +{471542:S 13 Oct 2025 20:44:56.745 # Internal error in RDB reading offset 13773216, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 65 +{471542:S 13 Oct 2025 20:44:56.772 # Internal error in RDB reading offset 3359067, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 80 +{471542:S 13 Oct 2025 20:44:56.795 # Internal error in RDB reading offset 3359067, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 95 +{471542:S 13 Oct 2025 20:44:56.837 # Internal error in RDB reading offset 7762625, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 110 +{471542:S 13 Oct 2025 20:44:57.192 # Internal error in RDB reading offset 13773216, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 125 +{471542:S 13 Oct 2025 20:44:57.294 # Internal error in RDB reading offset 5599900, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 140 +{471542:S 13 Oct 2025 20:44:57.355 # Internal error in RDB reading offset 13773216, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 155 +{471542:S 13 Oct 2025 20:44:57.381 # Internal error in RDB reading offset 3359067, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 170 +{471542:S 13 Oct 2025 20:44:57.397 # Internal error in RDB reading offset 0, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 185 +{471542:S 13 Oct 2025 20:44:57.429 # Internal error in RDB reading offset 5599900, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 200 +{471542:S 13 Oct 2025 20:44:57.457 # Internal error in RDB reading offset 3359067, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 215 +{471542:S 13 Oct 2025 20:44:57.497 # Internal error in RDB reading offset 7762625, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 230 +{471542:S 13 Oct 2025 20:44:57.515 # Internal error in RDB reading offset 2027213, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 245 +{471542:S 13 Oct 2025 20:44:57.559 # Internal error in RDB reading offset 7762625, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 260 +{471542:S 13 Oct 2025 20:44:57.604 # Internal error in RDB reading offset 10013441, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 275 +{471542:S 13 Oct 2025 20:44:57.635 # Internal error in RDB reading offset 3359067, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 290 +{471542:S 13 Oct 2025 20:44:57.668 # Internal error in RDB reading offset 5599900, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 305 +{471542:S 13 Oct 2025 20:44:57.920 * MASTER <-> REPLICA sync: Finished with success} 323 +{471542:S 13 Oct 2025 20:44:58.454 # Internal error in RDB reading offset 7967842, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 349 +{471542:S 13 Oct 2025 20:44:58.471 # Internal error in RDB reading offset 0, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 364 +{471542:S 13 Oct 2025 20:44:58.529 # Internal error in RDB reading offset 14486502, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 379 +{471542:S 13 Oct 2025 20:44:58.577 # Internal error in RDB reading offset 10438567, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 394 +{471542:S 13 Oct 2025 20:44:58.596 # Internal error in RDB reading offset 1768718, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 409 +{471542:S 13 Oct 2025 20:44:58.618 # Internal error in RDB reading offset 3655868, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 424 +{471542:S 13 Oct 2025 20:44:58.652 # Internal error in RDB reading offset 5989530, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 439 +{471542:S 13 Oct 2025 20:44:58.683 # Internal error in RDB reading offset 5989530, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 454 +{471542:S 13 Oct 2025 20:44:58.722 # Internal error in RDB reading offset 7967842, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 469 +{471542:S 13 Oct 2025 20:44:58.774 # Internal error in RDB reading offset 12554608, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 484 +{471542:S 13 Oct 2025 20:44:58.789 # Internal error in RDB reading offset 0, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 499 +{471542:S 13 Oct 2025 20:44:58.801 # Internal error in RDB reading offset 0, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 514 +{471542:S 13 Oct 2025 20:44:58.862 # Internal error in RDB reading offset 14486502, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 529 +{471542:S 13 Oct 2025 20:44:58.876 # Internal error in RDB reading offset 0, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 544 +{471542:S 13 Oct 2025 20:44:58.892 # Internal error in RDB reading offset 1768718, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 559 +{471542:S 13 Oct 2025 20:44:58.920 # Internal error in RDB reading offset 3655868, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 574 +{471542:S 13 Oct 2025 20:44:58.955 # Internal error in RDB reading offset 5989530, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 589 +{471542:S 13 Oct 2025 20:44:58.970 # Internal error in RDB reading offset 0, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 604 +{471542:S 13 Oct 2025 20:44:59.150 # Internal error in RDB reading offset 3655868, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 619 +{471542:S 13 Oct 2025 20:44:59.288 # Internal error in RDB reading offset 12554608, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 634 +{471542:S 13 Oct 2025 20:44:59.338 # Internal error in RDB reading offset 10438567, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 649 +{471542:S 13 Oct 2025 20:44:59.353 # Internal error in RDB reading offset 0, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 664 +{471542:S 13 Oct 2025 20:44:59.394 # Internal error in RDB reading offset 7967842, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 679 +{471542:S 13 Oct 2025 20:44:59.421 # Internal error in RDB reading offset 3655868, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 694 +{471542:S 13 Oct 2025 20:44:59.478 # Internal error in RDB reading offset 12554608, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 709 +{471542:S 13 Oct 2025 20:44:59.536 # Internal error in RDB reading offset 12554608, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 724 +{471542:S 13 Oct 2025 20:44:59.791 # Internal error in RDB reading offset 14486502, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 739 +{471542:S 13 Oct 2025 20:44:59.836 # Internal error in RDB reading offset 7967842, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 754 +{471542:S 13 Oct 2025 20:44:59.883 # Internal error in RDB reading offset 7967842, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 769 +{471542:S 13 Oct 2025 20:44:59.904 # Internal error in RDB reading offset 1768718, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 784 +{471542:S 13 Oct 2025 20:44:59.935 # Internal error in RDB reading offset 3655868, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 799 +{471542:S 13 Oct 2025 20:45:00.172 * MASTER <-> REPLICA sync: Finished with success} 817 +{471542:S 13 Oct 2025 20:45:00.704 # Internal error in RDB reading offset 12554608, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 843 +{471542:S 13 Oct 2025 20:45:00.744 # Internal error in RDB reading offset 7967842, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 858 +{471542:S 13 Oct 2025 20:45:00.782 # Internal error in RDB reading offset 7967842, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 873 +{471542:S 13 Oct 2025 20:45:00.800 # Internal error in RDB reading offset 0, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 888 +{471542:S 13 Oct 2025 20:45:00.847 # Internal error in RDB reading offset 10438567, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 903 +{471542:S 13 Oct 2025 20:45:00.894 # Internal error in RDB reading offset 7967842, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 918 +{471542:S 13 Oct 2025 20:45:00.946 # Internal error in RDB reading offset 10438567, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 933 +{471542:S 13 Oct 2025 20:45:00.975 # Internal error in RDB reading offset 3655868, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 948 +{471542:S 13 Oct 2025 20:45:01.034 # Internal error in RDB reading offset 14486502, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 963 +{471542:S 13 Oct 2025 20:45:01.077 # Internal error in RDB reading offset 7967842, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 978 +{471542:S 13 Oct 2025 20:45:01.098 # Internal error in RDB reading offset 1768718, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 993 +{471542:S 13 Oct 2025 20:45:01.135 # Internal error in RDB reading offset 7967842, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 1008 +{471542:S 13 Oct 2025 20:45:01.166 # Internal error in RDB reading offset 5989530, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 1023 +{471542:S 13 Oct 2025 20:45:01.192 # Internal error in RDB reading offset 3655868, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 1038 +{471542:S 13 Oct 2025 20:45:01.249 # Internal error in RDB reading offset 14486502, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 1053 +{471542:S 13 Oct 2025 20:45:01.285 # Internal error in RDB reading offset 5989530, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 1068 +{471542:S 13 Oct 2025 20:45:01.305 # Internal error in RDB reading offset 1768718, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 1083 +{471542:S 13 Oct 2025 20:45:01.348 # Internal error in RDB reading offset 10438567, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 1098 +{471542:S 13 Oct 2025 20:45:01.382 # Internal error in RDB reading offset 5989530, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 1113 +{471542:S 13 Oct 2025 20:45:01.442 # Internal error in RDB reading offset 14486502, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 1128 +{471542:S 13 Oct 2025 20:45:01.496 # Internal error in RDB reading offset 12554608, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 1143 +{471542:S 13 Oct 2025 20:45:01.547 # Internal error in RDB reading offset 10438567, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 1158 +{471542:S 13 Oct 2025 20:45:01.600 # Internal error in RDB reading offset 12554608, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 1173 +{471542:S 13 Oct 2025 20:45:01.625 # Internal error in RDB reading offset 3655868, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 1188 +{471542:S 13 Oct 2025 20:45:01.677 # Internal error in RDB reading offset 10438567, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 1203 +{471542:S 13 Oct 2025 20:45:01.704 # Internal error in RDB reading offset 3655868, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 1218 +{471542:S 13 Oct 2025 20:45:01.741 # Internal error in RDB reading offset 7967842, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 1233 +{471542:S 13 Oct 2025 20:45:01.761 # Internal error in RDB reading offset 1768718, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 1248 +{471542:S 13 Oct 2025 20:45:01.812 # Internal error in RDB reading offset 10438567, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 1263 +{471542:S 13 Oct 2025 20:45:01.860 # Internal error in RDB reading offset 10438567, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 1278 +{471542:S 13 Oct 2025 20:45:01.896 # Internal error in RDB reading offset 7967842, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 1293 +{471542:S 13 Oct 2025 20:45:01.920 # Internal error in RDB reading offset 3655868, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 1308 +{471542:S 13 Oct 2025 20:45:01.971 # Internal error in RDB reading offset 10438567, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 1323 +{471542:S 13 Oct 2025 20:45:02.016 # Internal error in RDB reading offset 7967842, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 1338 +{471542:S 13 Oct 2025 20:45:02.057 # Internal error in RDB reading offset 7967842, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 1353 +{471542:S 13 Oct 2025 20:45:02.104 # Internal error in RDB reading offset 7967842, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 1368 +{471542:S 13 Oct 2025 20:45:02.150 # Internal error in RDB reading offset 7967842, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 1383 +{471542:S 13 Oct 2025 20:45:02.173 # Internal error in RDB reading offset 1768718, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 1398 +{471542:S 13 Oct 2025 20:45:02.196 # Internal error in RDB reading offset 3655868, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 1413 +{471542:S 13 Oct 2025 20:45:02.256 # Internal error in RDB reading offset 14486502, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 1428 +{471542:S 13 Oct 2025 20:45:02.315 # Internal error in RDB reading offset 12554608, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 1443 +{471542:S 13 Oct 2025 20:45:02.366 # Internal error in RDB reading offset 10438567, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 1458 +{471542:S 13 Oct 2025 20:45:02.395 # Internal error in RDB reading offset 3655868, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 1473 +{471542:S 13 Oct 2025 20:45:02.436 # Internal error in RDB reading offset 7967842, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 1488 +{471542:S 13 Oct 2025 20:45:02.452 # Internal error in RDB reading offset 0, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 1503 +{471542:S 13 Oct 2025 20:45:02.498 # Internal error in RDB reading offset 10438567, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 1518 +{471542:S 13 Oct 2025 20:45:02.520 # Internal error in RDB reading offset 1768718, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 1533 +{471542:S 13 Oct 2025 20:45:02.580 # Internal error in RDB reading offset 14486502, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 1548 +{471542:S 13 Oct 2025 20:45:02.593 # Internal error in RDB reading offset 0, function at rdb.c:3375 -> Unexpected EOF reading RDB file. Failure loading rdb format from socket, assuming connection error, resuming operation.} 1563 +test took 5943 ms +[ok]: diskless loading short read (12910 ms) +=== (repl external:skip) Starting server 127.0.0.1:21353 ok +=== () Starting server 127.0.0.1:21355 ok +=== () Starting server 127.0.0.1:21357 ok +[ok]: diskless no replicas drop during rdb pipe (10184 ms) +=== () Starting server 127.0.0.1:21359 ok +=== () Starting server 127.0.0.1:21361 ok +[ok]: diskless slow replicas drop during rdb pipe (5587 ms) +=== () Starting server 127.0.0.1:21363 ok +=== () Starting server 127.0.0.1:21365 ok +[ok]: diskless fast replicas drop during rdb pipe (7233 ms) +=== () Starting server 127.0.0.1:21367 ok +=== () Starting server 127.0.0.1:21369 ok +[ok]: diskless all replicas drop during rdb pipe (2099 ms) +=== () Starting server 127.0.0.1:21371 ok +=== () Starting server 127.0.0.1:21373 ok +[ok]: diskless timeout replicas drop during rdb pipe (8300 ms) +=== (repl) Starting server 127.0.0.1:21375 ok +=== () Starting server 127.0.0.1:21377 ok +[ok]: diskless replication child being killed is collected (1531 ms) +=== (repl) Starting server 127.0.0.1:21379 ok +=== () Starting server 127.0.0.1:21381 ok +[ok]: replication child dies when parent is killed - diskless: yes (1183 ms) +=== (repl) Starting server 127.0.0.1:21383 ok +=== () Starting server 127.0.0.1:21385 ok +[ok]: replication child dies when parent is killed - diskless: no (1487 ms) +=== (repl) Starting server 127.0.0.1:21387 ok +=== () Starting server 127.0.0.1:21389 ok +[ok]: diskless replication read pipe cleanup (894 ms) +=== (repl) Starting server 127.0.0.1:21391 ok +=== () Starting server 127.0.0.1:21393 ok +=== () Starting server 127.0.0.1:21395 ok +[ok]: replicaof right after disconnection (2485 ms) +=== (repl) Starting server 127.0.0.1:21397 ok +=== () Starting server 127.0.0.1:21399 ok +=== () Starting server 127.0.0.1:21401 ok +[ok]: Kill rdb child process if its dumping RDB is not useful (2421 ms) +=== (repl external:skip) Starting server 127.0.0.1:21403 ok +=== () Starting server 127.0.0.1:21405 ok +=== () Starting server 127.0.0.1:21407 ok +=== () Starting server 127.0.0.1:21409 ok +[ok]: Don't disconnect with replicas before loading transferred RDB when full sync (2 ms) +[ok]: Discard cache master before loading transferred RDB when full sync (106 ms) +=== (repl) Starting server 127.0.0.1:21411 ok +=== () Starting server 127.0.0.1:21413 ok +[ok]: replica can handle EINTR if use diskless load (671 ms) +=== (repl external:skip) Starting server 127.0.0.1:21415 ok +SYNC _addReplyToBufferOrList: I/O error reading reply + +Waiting for background save to finish... [ok]: replica do not write the reply to the replication link - SYNC (_addReplyToBufferOrList) (104 ms) +SYNC addReplyDeferredLen: I/O error reading reply + +Waiting for background save to finish... [ok]: replica do not write the reply to the replication link - SYNC (addReplyDeferredLen) (105 ms) +PSYNC _addReplyToBufferOrList: I/O error reading reply + +Waiting for background save to finish... +Waiting for background save to finish... [ok]: replica do not write the reply to the replication link - PSYNC (_addReplyToBufferOrList) (116 ms) +PSYNC addReplyDeferredLen: I/O error reading reply + +Waiting for background save to finish... [ok]: replica do not write the reply to the replication link - PSYNC (addReplyDeferredLen) (63 ms) +[ok]: PSYNC with wrong offset should throw error (2 ms) +=== (repl external:skip) Starting server 127.0.0.1:21417 ok +=== () Starting server 127.0.0.1:21419 ok +[ok]: Test replication with lazy expire (412 ms) +[29/91 done]: integration/replication (168 seconds) +Testing integration/replication-2 +=== (repl external:skip) Starting server 127.0.0.1:21421 ok +=== () Starting server 127.0.0.1:21423 ok +[ok]: First server should have role slave after SLAVEOF (155 ms) +[ok]: If min-slaves-to-write is honored, write is accepted (1 ms) +[ok]: No write if min-slaves-to-write is < attached slaves (1 ms) +[ok]: If min-slaves-to-write is honored, write is accepted (again) (1 ms) +[ok]: No write if min-slaves-max-lag is > of the slave lag (3666 ms) +[ok]: min-slaves-to-write is ignored by slaves (1 ms) +[ok]: MASTER and SLAVE dataset should be identical after complex ops (7401 ms) +[30/91 done]: integration/replication-2 (12 seconds) +Testing integration/replication-3 +=== (repl external:skip) Starting server 127.0.0.1:21425 ok +=== () Starting server 127.0.0.1:21427 ok +[ok]: First server should have role slave after SLAVEOF (103 ms) +[ok]: MASTER and SLAVE consistency with expire (4528 ms) +[ok]: Master can replicate command longer than client-query-buffer-limit on replica (127 ms) +[ok]: Slave is able to evict keys created in writable slaves (6026 ms) +[ok]: Writable replica doesn't return expired keys (144 ms) +[ok]: PFCOUNT updates cache on readonly replica (3 ms) +[ok]: PFCOUNT doesn't use expired key on readonly replica (104 ms) +[31/91 done]: integration/replication-3 (12 seconds) +Testing integration/replication-4 +=== (repl network external:skip singledb:skip) Starting server 127.0.0.1:21429 ok +=== () Starting server 127.0.0.1:21431 ok +[ok]: First server should have role slave after SLAVEOF (2 ms) +[ok]: Test replication with parallel clients writing in different DBs (5194 ms) +=== (repl external:skip) Starting server 127.0.0.1:21433 ok +=== () Starting server 127.0.0.1:21435 ok +[ok]: First server should have role slave after SLAVEOF (102 ms) +[ok]: With min-slaves-to-write (1,3): master should be writable (1 ms) +[ok]: With min-slaves-to-write (2,3): master should not be writable (1 ms) +[ok]: With min-slaves-to-write function without no-write flag (1 ms) +[ok]: With not enough good slaves, read in Lua script is still accepted (1 ms) +[ok]: With min-slaves-to-write: master not writable with lagged slave (2763 ms) +=== (repl external:skip) Starting server 127.0.0.1:21437 ok +=== () Starting server 127.0.0.1:21439 ok +[ok]: First server should have role slave after SLAVEOF (102 ms) +Replication of an expired key does not delete the expired key test attempts: 0 +[ok]: Replication of an expired key does not delete the expired key (538 ms) +=== (repl external:skip) Starting server 127.0.0.1:21441 ok +=== () Starting server 127.0.0.1:21443 ok +[ok]: First server should have role slave after SLAVEOF (1 ms) +[ok]: Replication: commands with many arguments (issue #1221) (12112 ms) +[ok]: spopwithcount rewrite srem command (76 ms) +[ok]: Replication of SPOP command -- alsoPropagate() API (614 ms) +=== (repl external:skip) Starting server 127.0.0.1:21445 ok +=== () Starting server 127.0.0.1:21447 ok +[ok]: First server should have role slave after SLAVEOF (718 ms) +[ok]: Data divergence can happen under default conditions (5 ms) +[ok]: Data divergence is allowed on writable replicas (3 ms) +[32/91 done]: integration/replication-4 (24 seconds) +Testing integration/replication-psync +=== (repl) Starting server 127.0.0.1:21449 ok +=== () Starting server 127.0.0.1:21451 ok +[ok]: Slave should be able to synchronize with the master (997 ms) +[ok]: Detect write load to master (1 ms) +[ok]: Test replication partial resync: no reconnection, just sync (diskless: no, disabled, reconnect: 0) (157 ms) +=== (repl) Starting server 127.0.0.1:21453 ok +=== () Starting server 127.0.0.1:21455 ok +[ok]: Slave should be able to synchronize with the master (546 ms) +[ok]: Detect write load to master (0 ms) +[ok]: Test replication partial resync: ok psync (diskless: no, disabled, reconnect: 1) (6222 ms) +=== (repl) Starting server 127.0.0.1:21457 ok +=== () Starting server 127.0.0.1:21459 ok +[ok]: Slave should be able to synchronize with the master (103 ms) +[ok]: Detect write load to master (1004 ms) +[ok]: Test replication partial resync: no backlog (diskless: no, disabled, reconnect: 1) (7779 ms) +=== (repl) Starting server 127.0.0.1:21461 ok +=== () Starting server 127.0.0.1:21463 ok +[ok]: Slave should be able to synchronize with the master (103 ms) +[ok]: Detect write load to master (1004 ms) +[ok]: Test replication partial resync: ok after delay (diskless: no, disabled, reconnect: 1) (9641 ms) +=== (repl) Starting server 127.0.0.1:21465 ok +=== () Starting server 127.0.0.1:21467 ok +[ok]: Slave should be able to synchronize with the master (2020 ms) +[ok]: Detect write load to master (0 ms) +[ok]: Test replication partial resync: backlog expired (diskless: no, disabled, reconnect: 1) (11107 ms) +=== (repl) Starting server 127.0.0.1:21469 ok +=== () Starting server 127.0.0.1:21471 ok +[ok]: Slave should be able to synchronize with the master (1316 ms) +[ok]: Detect write load to master (1 ms) +[ok]: Test replication partial resync: no reconnection, just sync (diskless: no, swapdb, reconnect: 0) (38 ms) +=== (repl) Starting server 127.0.0.1:21473 ok +=== () Starting server 127.0.0.1:21475 ok +[ok]: Slave should be able to synchronize with the master (1316 ms) +[ok]: Detect write load to master (1 ms) +[ok]: Test replication partial resync: ok psync (diskless: no, swapdb, reconnect: 1) (6353 ms) +=== (repl) Starting server 127.0.0.1:21477 ok +=== () Starting server 127.0.0.1:21479 ok +[ok]: Slave should be able to synchronize with the master (712 ms) +[ok]: Detect write load to master (1 ms) +[ok]: Test replication partial resync: no backlog (diskless: no, swapdb, reconnect: 1) (8156 ms) +=== (repl) Starting server 127.0.0.1:21481 ok +=== () Starting server 127.0.0.1:21483 ok +[ok]: Slave should be able to synchronize with the master (1116 ms) +[ok]: Detect write load to master (1 ms) +[ok]: Test replication partial resync: ok after delay (diskless: no, swapdb, reconnect: 1) (9324 ms) +=== (repl) Starting server 127.0.0.1:21485 ok +=== () Starting server 127.0.0.1:21487 ok +[ok]: Slave should be able to synchronize with the master (2126 ms) +[ok]: Detect write load to master (0 ms) +[ok]: Test replication partial resync: backlog expired (diskless: no, swapdb, reconnect: 1) (10016 ms) +=== (repl) Starting server 127.0.0.1:21489 ok +=== () Starting server 127.0.0.1:21491 ok +[ok]: Slave should be able to synchronize with the master (1450 ms) +[ok]: Detect write load to master (0 ms) +[ok]: Test replication partial resync: no reconnection, just sync (diskless: yes, disabled, reconnect: 0) (232 ms) +=== (repl) Starting server 127.0.0.1:21493 ok +=== () Starting server 127.0.0.1:21495 ok +[ok]: Slave should be able to synchronize with the master (1962 ms) +[ok]: Detect write load to master (1 ms) +[ok]: Test replication partial resync: ok psync (diskless: yes, disabled, reconnect: 1) (6464 ms) +=== (repl) Starting server 127.0.0.1:21497 ok +=== () Starting server 127.0.0.1:21499 ok +[ok]: Slave should be able to synchronize with the master (2868 ms) +[ok]: Detect write load to master (2 ms) +[ok]: Test replication partial resync: no backlog (diskless: yes, disabled, reconnect: 1) (11713 ms) +=== (repl) Starting server 127.0.0.1:21501 ok +=== () Starting server 127.0.0.1:21503 ok +[ok]: Slave should be able to synchronize with the master (2961 ms) +[ok]: Detect write load to master (2 ms) +[ok]: Test replication partial resync: ok after delay (diskless: yes, disabled, reconnect: 1) (9662 ms) +=== (repl) Starting server 127.0.0.1:21505 ok +=== () Starting server 127.0.0.1:21507 ok +[ok]: Slave should be able to synchronize with the master (2393 ms) +[ok]: Detect write load to master (1 ms) +[ok]: Test replication partial resync: backlog expired (diskless: yes, disabled, reconnect: 1) (10399 ms) +=== (repl) Starting server 127.0.0.1:21509 ok +=== () Starting server 127.0.0.1:21511 ok +[ok]: Slave should be able to synchronize with the master (812 ms) +[ok]: Detect write load to master (0 ms) +[ok]: Test replication partial resync: no reconnection, just sync (diskless: yes, swapdb, reconnect: 0) (129 ms) +=== (repl) Starting server 127.0.0.1:21513 ok +=== () Starting server 127.0.0.1:21515 ok +[ok]: Slave should be able to synchronize with the master (608 ms) +[ok]: Detect write load to master (1 ms) +[ok]: Test replication partial resync: ok psync (diskless: yes, swapdb, reconnect: 1) (6513 ms) +=== (repl) Starting server 127.0.0.1:21517 ok +=== () Starting server 127.0.0.1:21519 ok +[ok]: Slave should be able to synchronize with the master (506 ms) +[ok]: Detect write load to master (1 ms) +[ok]: Test replication partial resync: no backlog (diskless: yes, swapdb, reconnect: 1) (7826 ms) +=== (repl) Starting server 127.0.0.1:21521 ok +=== () Starting server 127.0.0.1:21523 ok +[ok]: Slave should be able to synchronize with the master (1518 ms) +[ok]: Detect write load to master (0 ms) +[ok]: Test replication partial resync: ok after delay (diskless: yes, swapdb, reconnect: 1) (9553 ms) +=== (repl) Starting server 127.0.0.1:21525 ok +=== () Starting server 127.0.0.1:21527 ok +[ok]: Slave should be able to synchronize with the master (1719 ms) +[ok]: Detect write load to master (1 ms) +[ok]: Test replication partial resync: backlog expired (diskless: yes, swapdb, reconnect: 1) (10046 ms) +[33/91 done]: integration/replication-psync (191 seconds) +Testing integration/replication-buffer +=== (repl external:skip) Starting server 127.0.0.1:21529 ok +=== () Starting server 127.0.0.1:21531 ok +=== () Starting server 127.0.0.1:21533 ok +=== () Starting server 127.0.0.1:21535 ok +[ok]: All replicas share one global replication buffer (209 ms) +[ok]: Replication buffer will become smaller when no replica uses (4 ms) +=== (repl external:skip) Starting server 127.0.0.1:21537 ok +=== () Starting server 127.0.0.1:21539 ok +=== () Starting server 127.0.0.1:21541 ok +[ok]: Replication backlog size can outgrow the backlog limit config (1290 ms) +[ok]: Replica could use replication buffer (beyond backlog config) for partial resynchronization (1752 ms) +[ok]: Replication backlog memory will become smaller if disconnecting with replica (431 ms) +=== (repl external:skip) Starting server 127.0.0.1:21543 ok +=== () Starting server 127.0.0.1:21545 ok +[ok]: Partial resynchronization is successful even client-output-buffer-limit is less than repl-backlog-size (5202 ms) +=== (repl external:skip) Starting server 127.0.0.1:21547 ok +=== () Starting server 127.0.0.1:21549 ok +[ok]: The update of replBufBlock's repl_offset is ok - Regression test for #11666 (22 ms) +[ok]: Replica client-output-buffer size is limited to backlog_limit/16 when no replication data is pending (1793 ms) +[34/91 done]: integration/replication-buffer (19 seconds) +Testing integration/shutdown +=== () Starting server 127.0.0.1:21551 ok +=== () Starting server 127.0.0.1:21553 ok +[ok]: Shutting down master waits for replica to catch up (sigterm) (2678 ms) +=== () Starting server 127.0.0.1:21555 ok +=== () Starting server 127.0.0.1:21557 ok +[ok]: Shutting down master waits for replica to catch up (shutdown) (2513 ms) +=== () Starting server 127.0.0.1:21559 ok +=== () Starting server 127.0.0.1:21561 ok +[ok]: Shutting down master waits for replica timeout (2453 ms) +=== () Starting server 127.0.0.1:21563 ok +=== () Starting server 127.0.0.1:21565 ok +[ok]: Shutting down master waits for replica then fails (1308 ms) +=== () Starting server 127.0.0.1:21567 ok +=== () Starting server 127.0.0.1:21569 ok +[ok]: Shutting down master waits for replica then aborted (432 ms) +[35/91 done]: integration/shutdown (10 seconds) +Testing integration/aof +=== () Starting server 127.0.0.1:21571 ok +[ok]: Unfinished MULTI: Server should start if load-truncated is yes (1 ms) +=== () Starting server 127.0.0.1:21573 ok +[ok]: Short read: Server should start if load-truncated is yes (16 ms) +[ok]: Truncated AOF loaded: we expect foo to be equal to 5 (7 ms) +[ok]: Append a new command after loading an incomplete AOF (1 ms) +=== () Starting server 127.0.0.1:21575 ok +[ok]: Short read + command: Server should start (1 ms) +[ok]: Truncated AOF loaded: we expect foo to be equal to 6 now (7 ms) +=== () Starting server 127.0.0.1:21577 +[ok]: Bad format: Server should have logged an error (1 ms) +=== () Starting server 127.0.0.1:21579 +[ok]: Unfinished MULTI: Server should have logged an error (2 ms) +=== () Starting server 127.0.0.1:21581 +[ok]: Short read: Server should have logged an error (1 ms) +[ok]: Short read: Utility should confirm the AOF is not valid (9 ms) +[ok]: Short read: Utility should show the abnormal line num in AOF (10 ms) +[ok]: Short read: Utility should be able to fix the AOF (8 ms) +=== () Starting server 127.0.0.1:21583 ok +[ok]: Fixed AOF: Server should have been started (1 ms) +[ok]: Fixed AOF: Keyspace should contain values that were parseable (7 ms) +=== () Starting server 127.0.0.1:21585 ok +[ok]: AOF+SPOP: Server should have been started (1 ms) +[ok]: AOF+SPOP: Set should have 1 member (7 ms) +=== () Starting server 127.0.0.1:21587 ok +[ok]: AOF+SPOP: Server should have been started (1 ms) +[ok]: AOF+SPOP: Set should have 1 member (6 ms) +=== () Starting server 127.0.0.1:21589 ok +[ok]: AOF+EXPIRE: Server should have been started (1 ms) +[ok]: AOF+EXPIRE: List should be empty (7 ms) +=== () Starting server 127.0.0.1:21591 ok +[ok]: Redict should not try to convert DEL into EXPIREAT for EXPIRE -1 (0 ms) +=== () Starting server 127.0.0.1:21593 ok +[ok]: AOF fsync always barrier issue (13120 ms) +=== () Starting server 127.0.0.1:21595 ok +[ok]: GETEX should not append to AOF (1 ms) +=== () Starting server 127.0.0.1:21597 +[ok]: Unknown command: Server should have logged an error (1 ms) +=== () Starting server 127.0.0.1:21599 ok +[ok]: AOF+LMPOP/BLMPOP: pop elements from the list (114 ms) +=== () Starting server 127.0.0.1:21601 ok +[ok]: AOF+LMPOP/BLMPOP: after pop elements from the list (7 ms) +=== () Starting server 127.0.0.1:21603 ok +[ok]: AOF+ZMPOP/BZMPOP: pop elements from the zset (113 ms) +=== () Starting server 127.0.0.1:21605 ok +[ok]: AOF+ZMPOP/BZMPOP: after pop elements from the zset (7 ms) +=== () Starting server 127.0.0.1:21607 ok + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: Generate timestamp annotations in AOF (2035 ms) +=== () Starting server 127.0.0.1:21609 ok +[ok]: Successfully load AOF which has timestamp annotations inside (7 ms) +=== () Starting server 127.0.0.1:21611 ok +=== () Starting server 127.0.0.1:21613 ok +=== () Starting server 127.0.0.1:21615 ok +[ok]: Truncate AOF to specific timestamp (1598 ms) +=== () Starting server 127.0.0.1:21617 ok +[ok]: EVAL timeout with slow verbatim Lua script from AOF (2060 ms) +=== () Starting server 127.0.0.1:21619 ok +[ok]: EVAL can process writes from AOF in read-only replicas (367 ms) +[ok]: Test redict-check-aof for old style resp AOF (9 ms) +[ok]: Test redict-check-aof for old style resp AOF - has data in the same format as manifest (8 ms) +[ok]: Test redict-check-aof for old style rdb-preamble AOF (9 ms) +[ok]: Test redict-check-aof for Multi Part AOF with resp AOF base (18 ms) +[ok]: Test redict-check-aof for Multi Part AOF with rdb-preamble AOF base (13 ms) +[ok]: Test redict-check-aof for Multi Part AOF contains a format error (9 ms) +[ok]: Test redict-check-aof only truncates the last file for Multi Part AOF in fix mode (20 ms) +[ok]: Test redict-check-aof only truncates the last file for Multi Part AOF in truncate-to-timestamp mode (9 ms) +=== () Starting server 127.0.0.1:21621 ok +[ok]: FLUSHDB / FLUSHALL should persist in AOF (251 ms) +[36/91 done]: integration/aof (31 seconds) +Testing integration/aof-race +=== () Starting server 127.0.0.1:21623 ok +=== () Starting server 127.0.0.1:21625 ok +[37/91 done]: integration/aof-race (1 seconds) +Testing integration/aof-multi-part +=== () Starting server 127.0.0.1:21627 +[ok]: Multi Part AOF can't load data when some file missing (144 ms) +=== () Starting server 127.0.0.1:21629 +[ok]: Multi Part AOF can't load data when the sequence not increase monotonically (136 ms) +=== () Starting server 127.0.0.1:21631 +[ok]: Multi Part AOF can't load data when there are blank lines in the manifest file (125 ms) +=== () Starting server 127.0.0.1:21633 +[ok]: Multi Part AOF can't load data when there is a duplicate base file (131 ms) +=== () Starting server 127.0.0.1:21635 +[ok]: Multi Part AOF can't load data when the manifest format is wrong (type unknown) (398 ms) +=== () Starting server 127.0.0.1:21637 +[ok]: Multi Part AOF can't load data when the manifest format is wrong (missing key) (141 ms) +=== () Starting server 127.0.0.1:21639 +[ok]: Multi Part AOF can't load data when the manifest format is wrong (line too short) (151 ms) +=== () Starting server 127.0.0.1:21641 +[ok]: Multi Part AOF can't load data when the manifest format is wrong (line too long) (125 ms) +=== () Starting server 127.0.0.1:21643 +[ok]: Multi Part AOF can't load data when the manifest format is wrong (odd parameter) (162 ms) +=== () Starting server 127.0.0.1:21645 +[ok]: Multi Part AOF can't load data when the manifest file is empty (121 ms) +=== () Starting server 127.0.0.1:21647 ok +[ok]: Multi Part AOF can start when no aof and no manifest (844 ms) +=== () Starting server 127.0.0.1:21649 ok +[ok]: Multi Part AOF can start when we have en empty AOF dir (782 ms) +=== () Starting server 127.0.0.1:21651 ok +[ok]: Multi Part AOF can load data discontinuously increasing sequence (240 ms) +=== () Starting server 127.0.0.1:21653 ok +[ok]: Multi Part AOF can load data when manifest add new k-v (244 ms) +=== () Starting server 127.0.0.1:21655 ok +[ok]: Multi Part AOF can load data when some AOFs are empty (278 ms) +=== () Starting server 127.0.0.1:21657 ok + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: Multi Part AOF can load data from old version redict (rdb preamble no) (390 ms) +=== () Starting server 127.0.0.1:21659 ok + +Waiting for background AOF rewrite to finish... [ok]: Multi Part AOF can load data from old version redict (rdb preamble yes) (408 ms) +=== () Starting server 127.0.0.1:21661 ok +[ok]: Multi Part AOF can continue the upgrade from the interrupted upgrade state (281 ms) +=== () Starting server 127.0.0.1:21663 ok +[ok]: Multi Part AOF can be loaded correctly when both server dir and aof dir contain old AOF (187 ms) +=== () Starting server 127.0.0.1:21665 +[ok]: Multi Part AOF can't load data when the manifest contains the old AOF file name but the file does not exist in server dir and aof dir (120 ms) +=== () Starting server 127.0.0.1:21667 ok +=== () Starting server 127.0.0.1:21669 ok + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: Multi Part AOF can upgrade when when two redict share the same server dir (redict1) (392 ms) + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: Multi Part AOF can upgrade when when two redict share the same server dir (redict2) (118 ms) +[ok]: Multi Part AOF can upgrade when when two redict share the same server dir (1360 ms) +=== () Starting server 127.0.0.1:21671 ok + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: Multi Part AOF can handle appendfilename contains whitespaces (462 ms) +=== () Starting server 127.0.0.1:21673 ok +[ok]: Multi Part AOF can create BASE (RDB format) when redict starts from empty (246 ms) +=== () Starting server 127.0.0.1:21675 ok +[ok]: Multi Part AOF can create BASE (AOF format) when redict starts from empty (2946 ms) +=== (Multi Part AOF) Starting server 127.0.0.1:21677 ok +[ok]: Make sure aof manifest appendonly.aof.manifest not in aof directory (0 ms) + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: AOF enable will create manifest file (481 ms) + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: AOF multiple rewrite failures will open multiple INCR AOFs (2019 ms) + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: AOF rewrite doesn't open new aof when AOF turn off (554 ms) + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: AOF enable/disable auto gc (232 ms) + +Waiting for background AOF rewrite to finish... [ok]: AOF can produce consecutive sequence number after reload (79 ms) + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: AOF enable during BGSAVE will not write data util AOFRW finish (716 ms) + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: AOF will trigger limit when AOFRW fails many times (1458 ms) +=== () Starting server 127.0.0.1:21679 ok + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: AOF will open a temporary INCR AOF to accumulate data until the first AOFRW success when AOF is dynamically enabled (2266 ms) +[38/91 done]: integration/aof-multi-part (19 seconds) +Testing integration/rdb +=== () Starting server 127.0.0.1:21681 ok +[ok]: test old version rdb file (1 ms) +=== () Starting server 127.0.0.1:21683 ok +[ok]: RDB encoding loading test (10 ms) +=== () Starting server 127.0.0.1:21685 ok +[ok]: Server started empty with non-existing RDB file (0 ms) +=== () Starting server 127.0.0.1:21687 ok +[ok]: Server started empty with empty RDB file (0 ms) +=== () Starting server 127.0.0.1:21689 ok +[ok]: Test RDB stream encoding (172 ms) +[ok]: Test RDB stream encoding - sanitize dump (10 ms) +=== () Starting server 127.0.0.1:21691 +[ok]: Server should not start if RDB file can't be open (2 ms) +=== () Starting server 127.0.0.1:21693 +[ok]: Server should not start if RDB is corrupted (4 ms) +=== () Starting server 127.0.0.1:21695 ok +[ok]: Test FLUSHALL aborts bgsave (626 ms) +[ok]: bgsave resets the change counter (103 ms) +=== () Starting server 127.0.0.1:21697 ok +[ok]: client freed during loading (2783 ms) +=== () Starting server 127.0.0.1:21699 ok +[ok]: Test RDB load info (846 ms) +=== () Starting server 127.0.0.1:21701 ok +Keys before bgsave start: 10000 +COW info before copy-on-write: 0 +current_save_keys_processed info : 0 +COW info before copy-on-write: 950272 +current_save_keys_processed info : 1 +[ok]: Test child sending info (1962 ms) +=== () Starting server 127.0.0.1:21703 ok +[ok]: script won't load anymore if it's in rdb (0 ms) +=== () Starting server 127.0.0.1:21705 ok + +Waiting for background save to finish... +Waiting for background save to finish... +Waiting for background save to finish... [ok]: failed bgsave prevents writes (398 ms) +[39/91 done]: integration/rdb (9 seconds) +Testing integration/corrupt-dump +=== () Starting server 127.0.0.1:21707 ok +[ok]: corrupt payload: #7445 - with sanitize (230 ms) +=== () Starting server 127.0.0.1:21709 ok +[ok]: corrupt payload: hash with valid zip list header, invalid entry len (236 ms) +=== () Starting server 127.0.0.1:21711 ok +[ok]: corrupt payload: invalid zlbytes header (224 ms) +=== () Starting server 127.0.0.1:21713 ok +[ok]: corrupt payload: valid zipped hash header, dup records (236 ms) +=== () Starting server 127.0.0.1:21715 ok +[ok]: corrupt payload: quicklist big ziplist prev len (233 ms) +=== () Starting server 127.0.0.1:21717 ok +[ok]: corrupt payload: quicklist small ziplist prev len (236 ms) +=== () Starting server 127.0.0.1:21719 ok +[ok]: corrupt payload: quicklist ziplist wrong count (227 ms) +=== () Starting server 127.0.0.1:21721 ok +[ok]: corrupt payload: #3080 - quicklist (229 ms) +=== () Starting server 127.0.0.1:21723 ok +[ok]: corrupt payload: quicklist with empty ziplist (229 ms) +=== () Starting server 127.0.0.1:21725 ok +[ok]: corrupt payload: quicklist encoded_len is 0 (231 ms) +=== () Starting server 127.0.0.1:21727 ok +[ok]: corrupt payload: quicklist listpack entry start with EOF (250 ms) +=== () Starting server 127.0.0.1:21729 ok +[ok]: corrupt payload: #3080 - ziplist (241 ms) +=== () Starting server 127.0.0.1:21731 +[ok]: corrupt payload: load corrupted rdb with no CRC - #3505 (121 ms) +=== () Starting server 127.0.0.1:21733 ok +[ok]: corrupt payload: load corrupted rdb with empty keys (232 ms) +=== () Starting server 127.0.0.1:21735 ok +[ok]: corrupt payload: load corrupted rdb with empty keys (230 ms) +=== () Starting server 127.0.0.1:21737 ok +[ok]: corrupt payload: listpack invalid size header (238 ms) +=== () Starting server 127.0.0.1:21739 ok +[ok]: corrupt payload: listpack too long entry len (164 ms) +=== () Starting server 127.0.0.1:21741 ok +[ok]: corrupt payload: listpack very long entry len (167 ms) +=== () Starting server 127.0.0.1:21743 ok +[ok]: corrupt payload: listpack too long entry prev len (235 ms) +=== () Starting server 127.0.0.1:21745 ok +[ok]: corrupt payload: stream with duplicate consumers (237 ms) +=== () Starting server 127.0.0.1:21747 ok +[ok]: corrupt payload: hash ziplist with duplicate records (233 ms) +=== () Starting server 127.0.0.1:21749 ok +[ok]: corrupt payload: hash listpack with duplicate records (241 ms) +=== () Starting server 127.0.0.1:21751 ok +[ok]: corrupt payload: hash listpack with duplicate records - convert (157 ms) +=== () Starting server 127.0.0.1:21753 ok +[ok]: corrupt payload: hash ziplist uneven record count (276 ms) +=== () Starting server 127.0.0.1:21755 ok +[ok]: corrupt payload: hash duplicate records (237 ms) +=== () Starting server 127.0.0.1:21757 ok +[ok]: corrupt payload: hash empty zipmap (239 ms) +=== () Starting server 127.0.0.1:21759 ok +[ok]: corrupt payload: fuzzer findings - NPD in streamIteratorGetID (155 ms) +=== () Starting server 127.0.0.1:21761 ok +[ok]: corrupt payload: fuzzer findings - listpack NPD on invalid stream (152 ms) +=== () Starting server 127.0.0.1:21763 ok +[ok]: corrupt payload: fuzzer findings - NPD in quicklistIndex (238 ms) +=== () Starting server 127.0.0.1:21765 ok +[ok]: corrupt payload: fuzzer findings - encoded entry header reach outside the allocation (227 ms) +=== () Starting server 127.0.0.1:21767 ok +[ok]: corrupt payload: fuzzer findings - invalid ziplist encoding (225 ms) +=== () Starting server 127.0.0.1:21769 ok +[ok]: corrupt payload: fuzzer findings - hash crash (233 ms) +=== () Starting server 127.0.0.1:21771 ok +[ok]: corrupt payload: fuzzer findings - uneven entry count in hash (230 ms) +=== () Starting server 127.0.0.1:21773 ok +[ok]: corrupt payload: fuzzer findings - invalid read in lzf_decompress (229 ms) +=== () Starting server 127.0.0.1:21775 ok +[ok]: corrupt payload: fuzzer findings - leak in rdbloading due to dup entry in set (230 ms) +=== () Starting server 127.0.0.1:21777 ok +[ok]: corrupt payload: fuzzer findings - empty intset (230 ms) +=== () Starting server 127.0.0.1:21779 ok +[ok]: corrupt payload: fuzzer findings - zset ziplist entry lensize is 0 (229 ms) +=== () Starting server 127.0.0.1:21781 ok +[ok]: corrupt payload: fuzzer findings - valgrind ziplist prevlen reaches outside the ziplist (236 ms) +=== () Starting server 127.0.0.1:21783 ok +[ok]: corrupt payload: fuzzer findings - valgrind - bad rdbLoadDoubleValue (230 ms) +=== () Starting server 127.0.0.1:21785 ok +[ok]: corrupt payload: fuzzer findings - valgrind ziplist prev too big (267 ms) +=== () Starting server 127.0.0.1:21787 ok +[ok]: corrupt payload: fuzzer findings - lzf decompression fails, avoid valgrind invalid read (337 ms) +=== () Starting server 127.0.0.1:21789 ok +[ok]: corrupt payload: fuzzer findings - stream bad lp_count (263 ms) +=== () Starting server 127.0.0.1:21791 ok +[ok]: corrupt payload: fuzzer findings - stream bad lp_count - unsanitized (154 ms) +=== () Starting server 127.0.0.1:21793 ok +[ok]: corrupt payload: fuzzer findings - stream integrity check issue (227 ms) +=== () Starting server 127.0.0.1:21795 ok +[ok]: corrupt payload: fuzzer findings - infinite loop (153 ms) +=== () Starting server 127.0.0.1:21797 ok +[ok]: corrupt payload: fuzzer findings - hash ziplist too long entry len (230 ms) +=== () Starting server 127.0.0.1:21799 ok +[ok]: corrupt payload: OOM in rdbGenericLoadStringObject (228 ms) +=== () Starting server 127.0.0.1:21801 ok +[ok]: corrupt payload: fuzzer findings - OOM in dictExpand (231 ms) +=== () Starting server 127.0.0.1:21803 ok +[ok]: corrupt payload: fuzzer findings - zset ziplist invalid tail offset (236 ms) +=== () Starting server 127.0.0.1:21805 ok +[ok]: corrupt payload: fuzzer findings - negative reply length (152 ms) +=== () Starting server 127.0.0.1:21807 ok +[ok]: corrupt payload: fuzzer findings - valgrind negative malloc (233 ms) +=== () Starting server 127.0.0.1:21809 ok +[ok]: corrupt payload: fuzzer findings - valgrind invalid read (233 ms) +=== () Starting server 127.0.0.1:21811 ok +[ok]: corrupt payload: fuzzer findings - empty hash ziplist (231 ms) +=== () Starting server 127.0.0.1:21813 ok +[ok]: corrupt payload: fuzzer findings - stream with no records (160 ms) +=== () Starting server 127.0.0.1:21815 ok +[ok]: corrupt payload: fuzzer findings - quicklist ziplist tail followed by extra data which start with 0xff (235 ms) +=== () Starting server 127.0.0.1:21817 ok +[ok]: corrupt payload: fuzzer findings - dict init to huge size (233 ms) +=== () Starting server 127.0.0.1:21819 ok +[ok]: corrupt payload: fuzzer findings - huge string (231 ms) +=== () Starting server 127.0.0.1:21821 ok +[ok]: corrupt payload: fuzzer findings - stream PEL without consumer (238 ms) +=== () Starting server 127.0.0.1:21823 ok +[ok]: corrupt payload: fuzzer findings - stream listpack valgrind issue (151 ms) +=== () Starting server 127.0.0.1:21825 ok +[ok]: corrupt payload: fuzzer findings - stream with bad lpFirst (233 ms) +=== () Starting server 127.0.0.1:21827 ok +[ok]: corrupt payload: fuzzer findings - stream listpack lpPrev valgrind issue (149 ms) +=== () Starting server 127.0.0.1:21829 ok +[ok]: corrupt payload: fuzzer findings - stream with non-integer entry id (233 ms) +=== () Starting server 127.0.0.1:21831 ok +[ok]: corrupt payload: fuzzer findings - empty quicklist (230 ms) +=== () Starting server 127.0.0.1:21833 ok +[ok]: corrupt payload: fuzzer findings - empty zset (231 ms) +=== () Starting server 127.0.0.1:21835 ok +[ok]: corrupt payload: fuzzer findings - hash with len of 0 (232 ms) +=== () Starting server 127.0.0.1:21837 ok +[ok]: corrupt payload: fuzzer findings - hash listpack first element too long entry len (230 ms) +=== () Starting server 127.0.0.1:21839 ok +[ok]: corrupt payload: fuzzer findings - stream double free listpack when insert dup node to rax returns 0 (235 ms) +=== () Starting server 127.0.0.1:21841 ok +[ok]: corrupt payload: fuzzer findings - LCS OOM (223 ms) +=== () Starting server 127.0.0.1:21843 ok +[ok]: corrupt payload: fuzzer findings - gcc asan reports false leak on assert (153 ms) +=== () Starting server 127.0.0.1:21845 ok +[ok]: corrupt payload: fuzzer findings - lpFind invalid access (147 ms) +=== () Starting server 127.0.0.1:21847 ok +[ok]: corrupt payload: fuzzer findings - invalid access in ziplist tail prevlen decoding (231 ms) +=== () Starting server 127.0.0.1:21849 ok +[ok]: corrupt payload: fuzzer findings - zset zslInsert with a NAN score (237 ms) +=== () Starting server 127.0.0.1:21851 ok +[ok]: corrupt payload: fuzzer findings - streamLastValidID panic (237 ms) +=== () Starting server 127.0.0.1:21853 ok +[ok]: corrupt payload: fuzzer findings - valgrind fishy value warning (228 ms) +=== () Starting server 127.0.0.1:21855 ok +[ok]: corrupt payload: fuzzer findings - empty set listpack (226 ms) +=== () Starting server 127.0.0.1:21857 ok +[ok]: corrupt payload: fuzzer findings - set with duplicate elements causes sdiff to hang (240 ms) +[40/91 done]: integration/corrupt-dump (17 seconds) +Testing integration/corrupt-dump-fuzzer +=== () Starting server 127.0.0.1:21859 ok +Done 13 cycles in 10 seconds. +RESTORE: successful: 11, rejected: 2 +Total commands sent in traffic: 14639, crashes during traffic: 1 (0 by signal). +[ok]: Fuzzer corrupt restore payloads - sanitize_dump: no (9527 ms) +=== () Starting server 127.0.0.1:21861 ok +Done 22 cycles in 10 seconds. +RESTORE: successful: 10, rejected: 12 +Total commands sent in traffic: 16281, crashes during traffic: 0 (0 by signal). +[ok]: Fuzzer corrupt restore payloads - sanitize_dump: yes (9966 ms) +[41/91 done]: integration/corrupt-dump-fuzzer (20 seconds) +Testing integration/convert-zipmap-hash-on-load +=== () Starting server 127.0.0.1:21863 ok +[ok]: RDB load zipmap hash: converts to listpack (1 ms) +=== () Starting server 127.0.0.1:21865 ok +[ok]: RDB load zipmap hash: converts to hash table when hash-max-ziplist-entries is exceeded (1 ms) +=== () Starting server 127.0.0.1:21867 ok +[ok]: RDB load zipmap hash: converts to hash table when hash-max-ziplist-value is exceeded (1 ms) +[42/91 done]: integration/convert-zipmap-hash-on-load (0 seconds) +Testing integration/convert-ziplist-hash-on-load +=== () Starting server 127.0.0.1:21869 ok +[ok]: RDB load ziplist hash: converts to listpack when RDB loading (1 ms) +=== () Starting server 127.0.0.1:21871 ok +[ok]: RDB load ziplist hash: converts to hash table when hash-max-ziplist-entries is exceeded (1 ms) +[43/91 done]: integration/convert-ziplist-hash-on-load (1 seconds) +Testing integration/convert-ziplist-zset-on-load +=== () Starting server 127.0.0.1:21873 ok +[ok]: RDB load ziplist zset: converts to listpack when RDB loading (1 ms) +=== () Starting server 127.0.0.1:21875 ok +[ok]: RDB load ziplist zset: converts to skiplist when zset-max-ziplist-entries is exceeded (1 ms) +[44/91 done]: integration/convert-ziplist-zset-on-load (0 seconds) +Testing integration/logging +=== () Starting server 127.0.0.1:21877 ok +{532242:M 13 Oct 2025 20:51:56.925 # Redict 7.3.6 crashed by signal: 6, si_code: 0} 40 +[ok]: Crash report generated on SIGABRT (104 ms) +=== () Starting server 127.0.0.1:21879 ok +{532276:M 13 Oct 2025 20:51:57.080 # Redict 7.3.6 crashed by signal: 11, si_code: 2} 40 +[ok]: Crash report generated on DEBUG SEGFAULT (7 ms) +=== () Starting server 127.0.0.1:21881 ok +{Received SIGALRM} 38 +[ok]: Stacktraces generated on SIGALRM (107 ms) +[45/91 done]: integration/logging (1 seconds) +Testing integration/psync2 +=== (psync2 external:skip) Starting server 127.0.0.1:21883 ok +=== () Starting server 127.0.0.1:21885 ok +=== () Starting server 127.0.0.1:21887 ok +=== () Starting server 127.0.0.1:21889 ok +=== () Starting server 127.0.0.1:21891 ok +[ok]: PSYNC2: --- CYCLE 1 --- (0 ms) +[ok]: PSYNC2: [NEW LAYOUT] Set #1 as master (0 ms) +[ok]: PSYNC2: Set #4 to replicate from #3 (1 ms) +[ok]: PSYNC2: Set #0 to replicate from #2 (1 ms) +[ok]: PSYNC2: Set #2 to replicate from #3 (1 ms) +[ok]: PSYNC2: Set #3 to replicate from #1 (0 ms) +[ok]: PSYNC2: cluster is consistent after failover (2 ms) +[ok]: PSYNC2: generate load while killing replication links (5000 ms) +[ok]: PSYNC2: cluster is consistent after load (x = 32170) (1 ms) +[ok]: PSYNC2: total sum of full synchronizations is exactly 4 (2 ms) +[ok]: PSYNC2: --- CYCLE 2 --- (0 ms) +[ok]: PSYNC2: [NEW LAYOUT] Set #2 as master (1 ms) +[ok]: PSYNC2: Set #0 to replicate from #2 (0 ms) +[ok]: PSYNC2: Set #4 to replicate from #2 (0 ms) +[ok]: PSYNC2: Set #1 to replicate from #2 (1 ms) +[ok]: PSYNC2: Set #3 to replicate from #2 (1 ms) +[ok]: PSYNC2: cluster is consistent after failover (1 ms) +[ok]: PSYNC2: generate load while killing replication links (5000 ms) +[ok]: PSYNC2: cluster is consistent after load (x = 62444) (1 ms) +[ok]: PSYNC2: total sum of full synchronizations is exactly 4 (1 ms) +[ok]: PSYNC2: --- CYCLE 3 --- (0 ms) +[ok]: PSYNC2: [NEW LAYOUT] Set #4 as master (0 ms) +[ok]: PSYNC2: Set #0 to replicate from #2 (0 ms) +[ok]: PSYNC2: Set #1 to replicate from #4 (0 ms) +[ok]: PSYNC2: Set #2 to replicate from #4 (1 ms) +[ok]: PSYNC2: Set #3 to replicate from #4 (0 ms) +[ok]: PSYNC2: cluster is consistent after failover (1 ms) +[ok]: PSYNC2: generate load while killing replication links (5000 ms) +[ok]: PSYNC2: cluster is consistent after load (x = 98524) (1 ms) +[ok]: PSYNC2: total sum of full synchronizations is exactly 4 (1 ms) +[ok]: PSYNC2: --- CYCLE 4 --- (0 ms) +[ok]: PSYNC2: [NEW LAYOUT] Set #2 as master (0 ms) +[ok]: PSYNC2: Set #0 to replicate from #2 (0 ms) +[ok]: PSYNC2: Set #4 to replicate from #2 (0 ms) +[ok]: PSYNC2: Set #1 to replicate from #3 (1 ms) +[ok]: PSYNC2: Set #3 to replicate from #2 (1 ms) +[ok]: PSYNC2: cluster is consistent after failover (2 ms) +[ok]: PSYNC2: generate load while killing replication links (5000 ms) +[ok]: PSYNC2: cluster is consistent after load (x = 127055) (2 ms) +[ok]: PSYNC2: total sum of full synchronizations is exactly 4 (2 ms) +[ok]: PSYNC2: --- CYCLE 5 --- (0 ms) +[ok]: PSYNC2: [NEW LAYOUT] Set #3 as master (0 ms) +[ok]: PSYNC2: Set #4 to replicate from #2 (0 ms) +[ok]: PSYNC2: Set #0 to replicate from #3 (1 ms) +[ok]: PSYNC2: Set #1 to replicate from #3 (0 ms) +[ok]: PSYNC2: Set #2 to replicate from #1 (0 ms) +[ok]: PSYNC2: cluster is consistent after failover (1 ms) +[ok]: PSYNC2: generate load while killing replication links (5000 ms) +[ok]: PSYNC2: cluster is consistent after load (x = 161505) (2 ms) +[ok]: PSYNC2: total sum of full synchronizations is exactly 4 (1 ms) +[ok]: PSYNC2: Bring the master back again for next test (2 ms) +[ok]: PSYNC2: Partial resync after restart using RDB aux fields (186 ms) +[46/91 done]: integration/psync2 (47 seconds) +Testing integration/psync2-reg +=== (psync2 external:skip) Starting server 127.0.0.1:21893 ok +=== () Starting server 127.0.0.1:21895 ok +=== () Starting server 127.0.0.1:21897 ok +[ok]: PSYNC2 #3899 regression: setup (1013 ms) +[ok]: PSYNC2 #3899 regression: kill first replica (1 ms) +[ok]: PSYNC2 #3899 regression: kill first replica (1 ms) +[ok]: PSYNC2 #3899 regression: kill chained replica (1 ms) +[ok]: PSYNC2 #3899 regression: kill first replica (0 ms) +[ok]: PSYNC2 #3899 regression: kill chained replica (1 ms) +[ok]: PSYNC2 #3899 regression: kill first replica (0 ms) +[ok]: PSYNC2 #3899 regression: kill first replica (0 ms) +[ok]: PSYNC2 #3899 regression: kill chained replica (0 ms) +[ok]: PSYNC2 #3899 regression: kill first replica (1 ms) +[ok]: PSYNC2 #3899 regression: kill first replica (0 ms) +[ok]: PSYNC2 #3899 regression: kill first replica (1 ms) +[ok]: PSYNC2 #3899 regression: kill chained replica (0 ms) +[ok]: PSYNC2 #3899 regression: kill first replica (0 ms) +[ok]: PSYNC2 #3899 regression: kill first replica (0 ms) +[ok]: PSYNC2 #3899 regression: kill first replica (1 ms) +[ok]: PSYNC2 #3899 regression: kill first replica (0 ms) +[ok]: PSYNC2 #3899 regression: kill chained replica (1 ms) +[ok]: PSYNC2 #3899 regression: kill first replica (1 ms) +[ok]: PSYNC2 #3899 regression: kill chained replica (0 ms) +[ok]: PSYNC2 #3899 regression: kill first replica (1 ms) +[ok]: PSYNC2 #3899 regression: kill first replica (0 ms) +[ok]: PSYNC2 #3899 regression: kill first replica (4 ms) +[ok]: PSYNC2 #3899 regression: kill first replica (0 ms) +[ok]: PSYNC2 #3899 regression: verify consistency (16 ms) +[47/91 done]: integration/psync2-reg (22 seconds) +Testing integration/psync2-pingoff +=== (psync2 external:skip) Starting server 127.0.0.1:21899 ok +=== () Starting server 127.0.0.1:21901 ok +[ok]: PSYNC2 pingoff: setup (1006 ms) +[ok]: PSYNC2 pingoff: write and wait replication (2 ms) +[ok]: PSYNC2 pingoff: pause replica and promote it (5002 ms) +[ok]: Make the old master a replica of the new one and check conditions (1008 ms) +=== (psync2 external:skip) Starting server 127.0.0.1:21903 ok +=== () Starting server 127.0.0.1:21905 ok +=== () Starting server 127.0.0.1:21907 ok +=== () Starting server 127.0.0.1:21909 ok +=== () Starting server 127.0.0.1:21911 ok +[ok]: test various edge cases of repl topology changes with missing pings at the end (3494 ms) +=== (psync2 external:skip) Starting server 127.0.0.1:21913 ok +=== () Starting server 127.0.0.1:21915 ok +=== () Starting server 127.0.0.1:21917 ok +[ok]: Chained replicas disconnect when replica re-connect with the same master (2930 ms) +[48/91 done]: integration/psync2-pingoff (17 seconds) +Testing integration/psync2-master-restart +=== (psync2 external:skip) Starting server 127.0.0.1:21919 ok +=== () Starting server 127.0.0.1:21921 ok +=== () Starting server 127.0.0.1:21923 ok +[ok]: PSYNC2: Partial resync after Master restart using RDB aux fields when offset is 0 (129 ms) +[ok]: PSYNC2: Partial resync after Master restart using RDB aux fields with data (1142 ms) +[ok]: PSYNC2: Partial resync after Master restart using RDB aux fields with expire (2350 ms) +[ok]: PSYNC2: Full resync after Master restart when too many key expired (1947 ms) +[49/91 done]: integration/psync2-master-restart (7 seconds) +Testing integration/failover +=== (failover external:skip) Starting server 127.0.0.1:21925 ok +=== () Starting server 127.0.0.1:21927 ok +=== () Starting server 127.0.0.1:21929 ok +[ok]: failover command fails without connected replica (1 ms) +[ok]: setup replication for following tests (102 ms) +[ok]: failover command fails with invalid host (1 ms) +[ok]: failover command fails with invalid port (0 ms) +[ok]: failover command fails with just force and timeout (1 ms) +[ok]: failover command fails when sent to a replica (0 ms) +[ok]: failover command fails with force without timeout (0 ms) +[ok]: failover command to specific replica works (885 ms) +[ok]: failover command to any replica works (846 ms) +[ok]: failover to a replica with force works (442 ms) +[ok]: failover with timeout aborts if replica never catches up (572 ms) +[ok]: failovers can be aborted (40 ms) +[ok]: failover aborts if target rejects sync request (448 ms) +[50/91 done]: integration/failover (5 seconds) +Testing integration/redict-cli +=== (cli) Starting server 127.0.0.1:21931 ok +[ok]: Interactive CLI: INFO response should be printed raw (72 ms) +[ok]: Interactive CLI: Status reply (71 ms) +[ok]: Interactive CLI: Integer reply (72 ms) +[ok]: Interactive CLI: Bulk reply (70 ms) +[ok]: Interactive CLI: Multi-bulk reply (71 ms) +[ok]: Interactive CLI: Parsing quotes (434 ms) +[ok]: Interactive CLI: Subscribed mode (616 ms) +[ok]: Interactive non-TTY CLI: Subscribed mode (433 ms) +[ok]: Non-interactive TTY CLI: Status reply (14 ms) +[ok]: Non-interactive TTY CLI: Integer reply (13 ms) +[ok]: Non-interactive TTY CLI: Bulk reply (14 ms) +[ok]: Non-interactive TTY CLI: Multi-bulk reply (16 ms) +[ok]: Non-interactive TTY CLI: Read last argument from pipe (33 ms) +[ok]: Non-interactive TTY CLI: Read last argument from file (29 ms) +[ok]: Non-interactive TTY CLI: Escape character in JSON mode (123 ms) +[ok]: Non-interactive non-TTY CLI: Status reply (15 ms) +[ok]: Non-interactive non-TTY CLI: Integer reply (14 ms) +[ok]: Non-interactive non-TTY CLI: Bulk reply (15 ms) +[ok]: Non-interactive non-TTY CLI: Multi-bulk reply (15 ms) +[ok]: Non-interactive non-TTY CLI: Quoted input arguments (15 ms) +[ok]: Non-interactive non-TTY CLI: No accidental unquoting of input arguments (29 ms) +[ok]: Non-interactive non-TTY CLI: Invalid quoted input arguments (28 ms) +[ok]: Non-interactive non-TTY CLI: Read last argument from pipe (30 ms) +[ok]: Non-interactive non-TTY CLI: Read last argument from file (27 ms) +[ok]: Non-interactive non-TTY CLI: Test command-line hinting - latest server (19 ms) +[ok]: Non-interactive non-TTY CLI: Test command-line hinting - no server (7 ms) +[ok]: Non-interactive non-TTY CLI: Test command-line hinting - old server (21 ms) +[ok]: Dumping an RDB - functions only: no (1814 ms) +[ok]: Dumping an RDB - functions only: yes (543 ms) +[ok]: Scan mode (143 ms) +[ok]: Connecting as a replica (2140 ms) +[ok]: Piping raw protocol (675 ms) +[ok]: Options -X with illegal argument (28 ms) +[ok]: DUMP RESTORE with -x option (85 ms) +[ok]: DUMP RESTORE with -X option (79 ms) +[51/91 done]: integration/redict-cli (8 seconds) +Testing integration/redict-benchmark +=== () Starting server 127.0.0.1:21933 ok +[ok]: benchmark: set,get (54 ms) +[ok]: benchmark: connecting using URI set,get (53 ms) +[ok]: benchmark: connecting using URI with authentication set,get (55 ms) +[ok]: benchmark: full test suite (558 ms) +[ok]: benchmark: multi-thread set,get (541 ms) +[ok]: benchmark: pipelined full set,get (158 ms) +[ok]: benchmark: arbitrary command (30 ms) +[ok]: benchmark: keyspace length (151 ms) +[ok]: benchmark: clients idle mode should return error when reached maxclients limit (25 ms) +[ok]: benchmark: read last argument from stdin (58 ms) +[ok]: benchmark: specific tls-ciphers (184 ms) +[ok]: benchmark: tls connecting using URI with authentication set,get (39 ms) +[ok]: benchmark: specific tls-ciphersuites (146 ms) +[52/91 done]: integration/redict-benchmark (3 seconds) +Testing integration/dismiss-mem +=== (dismiss external:skip) Starting server 127.0.0.1:21935 ok + +Waiting for background AOF rewrite to finish... [ok]: dismiss all data types memory (1120 ms) + +Waiting for background save to finish... [ok]: dismiss client output buffer (4326 ms) + +Waiting for background save to finish... +Waiting for background save to finish... [ok]: dismiss client query buffer (217 ms) +=== () Starting server 127.0.0.1:21937 ok + +Waiting for background save to finish... +Waiting for background save to finish... [ok]: dismiss replication backlog (1242 ms) +[53/91 done]: integration/dismiss-mem (7 seconds) +Testing unit/pubsub +=== (pubsub network) Starting server 127.0.0.1:21939 ok +[ok]: Pub/Sub PING on RESP2 (1 ms) +[ok]: Pub/Sub PING on RESP3 (1 ms) +[ok]: PUBLISH/SUBSCRIBE basics (8 ms) +[ok]: PUBLISH/SUBSCRIBE with two clients (13 ms) +[ok]: PUBLISH/SUBSCRIBE after UNSUBSCRIBE without arguments (7 ms) +[ok]: SUBSCRIBE to one channel more than once (6 ms) +[ok]: UNSUBSCRIBE from non-subscribed channels (6 ms) +[ok]: PUBLISH/PSUBSCRIBE basics (9 ms) +[ok]: PUBLISH/PSUBSCRIBE with two clients (13 ms) +[ok]: PUBLISH/PSUBSCRIBE after PUNSUBSCRIBE without arguments (7 ms) +[ok]: PubSub messages with CLIENT REPLY OFF (91 ms) +[ok]: PUNSUBSCRIBE from non-subscribed channels (7 ms) +[ok]: NUMSUB returns numbers, not strings (#1561) (0 ms) +[ok]: NUMPATs returns the number of unique patterns (14 ms) +[ok]: Mix SUBSCRIBE and PSUBSCRIBE (7 ms) +[ok]: PUNSUBSCRIBE and UNSUBSCRIBE should always reply (1 ms) +[ok]: Keyspace notifications: we receive keyspace notifications (51 ms) +[ok]: Keyspace notifications: we receive keyevent notifications (48 ms) +[ok]: Keyspace notifications: we can receive both kind of events (7 ms) +[ok]: Keyspace notifications: we are able to mask events (8 ms) +[ok]: Keyspace notifications: general events test (7 ms) +[ok]: Keyspace notifications: list events test (8 ms) +[ok]: Keyspace notifications: set events test (8 ms) +[ok]: Keyspace notifications: zset events test (7 ms) +[ok]: Keyspace notifications: hash events test (7 ms) +[ok]: Keyspace notifications: stream events test (9 ms) +[ok]: Keyspace notifications: expired events (triggered expire) (108 ms) +[ok]: Keyspace notifications: expired events (background expire) (109 ms) +[ok]: Keyspace notifications: evicted events (8 ms) +[ok]: Keyspace notifications: test CONFIG GET/SET of event flags (2 ms) +[ok]: Keyspace notifications: new key test (8 ms) +[ok]: publish to self inside multi (1 ms) +[ok]: publish to self inside script (0 ms) +[ok]: unsubscribe inside multi, and publish to self (2 ms) +[54/91 done]: unit/pubsub (0 seconds) +Testing unit/pubsubshard +=== (pubsubshard external:skip) Starting server 127.0.0.1:21941 ok +[ok]: SPUBLISH/SSUBSCRIBE basics (8 ms) +[ok]: SPUBLISH/SSUBSCRIBE with two clients (13 ms) +[ok]: SPUBLISH/SSUBSCRIBE after UNSUBSCRIBE without arguments (7 ms) +[ok]: SSUBSCRIBE to one channel more than once (7 ms) +[ok]: SUNSUBSCRIBE from non-subscribed channels (7 ms) +[ok]: PUBSUB command basics (0 ms) +[ok]: SPUBLISH/SSUBSCRIBE with two clients (14 ms) +[ok]: SPUBLISH/SSUBSCRIBE with PUBLISH/SUBSCRIBE (13 ms) +[ok]: PubSubShard with CLIENT REPLY OFF (96 ms) +=== (pubsubshard external:skip) Starting server 127.0.0.1:21943 ok +=== (pubsubshard external:skip) Starting server 127.0.0.1:21945 ok +[ok]: setup replication for following tests (102 ms) +[ok]: publish message to master and receive on replica (14 ms) +[55/91 done]: unit/pubsubshard (2 seconds) +Testing unit/slowlog +=== (slowlog) Starting server 127.0.0.1:21947 ok +[ok]: SLOWLOG - check that it starts with an empty log (0 ms) +[ok]: SLOWLOG - only logs commands taking more time than specified (201 ms) +[ok]: SLOWLOG - zero max length is correctly handled (15 ms) +[ok]: SLOWLOG - max entries is correctly handled (15 ms) +[ok]: SLOWLOG - GET optional argument to limit output len works (1 ms) +[ok]: SLOWLOG - RESET subcommand works (1 ms) +[ok]: SLOWLOG - logged entry sanity check (201 ms) +[ok]: SLOWLOG - Certain commands are omitted that contain sensitive information (3 ms) +[ok]: SLOWLOG - Some commands can redact sensitive fields (1 ms) +[ok]: SLOWLOG - Rewritten commands are logged as their original command (12 ms) +[ok]: SLOWLOG - commands with too many arguments are trimmed (1 ms) +[ok]: SLOWLOG - too long arguments are trimmed (1 ms) +[ok]: SLOWLOG - EXEC is not logged, just executed commands (201 ms) +[ok]: SLOWLOG - can clean older entries (202 ms) +[ok]: SLOWLOG - can be disabled (402 ms) +[ok]: SLOWLOG - count must be >= -1 (1 ms) +[ok]: SLOWLOG - get all slow logs (2 ms) +[ok]: SLOWLOG - blocking command is reported only after unblocked (10 ms) +[56/91 done]: unit/slowlog (1 seconds) +Testing unit/scripting +=== (scripting) Starting server 127.0.0.1:21949 ok +[ok]: Redis compatibility global exists (1 ms) +[ok]: EVAL - Does Lua interpreter replies to our requests? (0 ms) +[ok]: EVAL - Return _G (1 ms) +[ok]: EVAL - Return table with a metatable that raise error (0 ms) +[ok]: EVAL - Return table with a metatable that call redict (1 ms) +[ok]: EVAL - Lua integer -> Redict protocol type conversion (0 ms) +[ok]: EVAL - Lua string -> Redict protocol type conversion (1 ms) +[ok]: EVAL - Lua true boolean -> Redict protocol type conversion (0 ms) +[ok]: EVAL - Lua false boolean -> Redict protocol type conversion (1 ms) +[ok]: EVAL - Lua status code reply -> Redict protocol type conversion (0 ms) +[ok]: EVAL - Lua error reply -> Redict protocol type conversion (1 ms) +[ok]: EVAL - Lua table -> Redict protocol type conversion (1 ms) +[ok]: EVAL - Are the KEYS and ARGV arrays populated correctly? (0 ms) +[ok]: EVAL - is Lua able to call Redict API? (1 ms) +[ok]: EVAL - Redict integer -> Lua type conversion (0 ms) +[ok]: EVAL - Lua number -> Redict integer conversion (0 ms) +[ok]: EVAL - Redict bulk -> Lua type conversion (1 ms) +[ok]: EVAL - Redict multi bulk -> Lua type conversion (1 ms) +[ok]: EVAL - Redict status reply -> Lua type conversion (1 ms) +[ok]: EVAL - Redict error reply -> Lua type conversion (0 ms) +[ok]: EVAL - Redict nil bulk reply -> Lua type conversion (0 ms) +[ok]: EVAL - Is the Lua client using the currently selected DB? (1 ms) +[ok]: EVAL - SELECT inside Lua should not affect the caller (1 ms) +[ok]: EVAL - Scripts do not block on blpop command (1 ms) +[ok]: EVAL - Scripts do not block on brpop command (1 ms) +[ok]: EVAL - Scripts do not block on brpoplpush command (1 ms) +[ok]: EVAL - Scripts do not block on blmove command (1 ms) +[ok]: EVAL - Scripts do not block on bzpopmin command (0 ms) +[ok]: EVAL - Scripts do not block on bzpopmax command (0 ms) +[ok]: EVAL - Scripts do not block on wait (1 ms) +[ok]: EVAL - Scripts do not block on waitaof (0 ms) +[ok]: EVAL - Scripts do not block on XREAD with BLOCK option (1 ms) +[ok]: EVAL - Scripts do not block on XREADGROUP with BLOCK option (1 ms) +[ok]: EVAL - Scripts do not block on XREAD with BLOCK option -- non empty stream (1 ms) +[ok]: EVAL - Scripts do not block on XREADGROUP with BLOCK option -- non empty stream (1 ms) +[ok]: EVAL - Scripts can run non-deterministic commands (0 ms) +[ok]: EVAL - No arguments to redict.call/pcall is considered an error (1 ms) +[ok]: EVAL - redict.call variant raises a Lua error on Redict cmd error (1) (1 ms) +[ok]: EVAL - redict.call variant raises a Lua error on Redict cmd error (1) (0 ms) +[ok]: EVAL - redict.call variant raises a Lua error on Redict cmd error (1) (1 ms) +[ignore]: EVAL - JSON string encoding a string larger than 2GB: large memory flag not provided +[ok]: EVAL - JSON numeric decoding (0 ms) +[ok]: EVAL - JSON string decoding (0 ms) +[ok]: EVAL - JSON smoke test (1 ms) +[ok]: EVAL - cmsgpack can pack double? (0 ms) +[ok]: EVAL - cmsgpack can pack negative int64? (1 ms) +[ok]: EVAL - cmsgpack pack/unpack smoke test (170 ms) +[ok]: EVAL - cmsgpack can pack and unpack circular references? (1 ms) +[ok]: EVAL - Numerical sanity check from bitop (0 ms) +[ok]: EVAL - Verify minimal bitop functionality (0 ms) +[ok]: EVAL - Able to parse trailing comments (1 ms) +[ok]: EVAL_RO - Successful case (0 ms) +[ok]: EVAL_RO - Cannot run write commands (0 ms) +[ok]: redict.sha1hex() implementation (1 ms) +[ok]: Measures elapsed time os.clock() (1002 ms) +[ok]: Prohibit dangerous lua methods in sandbox (1 ms) +[ok]: Verify execution of prohibit dangerous Lua methods will fail (5 ms) +[ok]: Globals protection reading an undeclared global variable (0 ms) +[ok]: Globals protection setting an undeclared global* (0 ms) +[ok]: lua bit.tohex bug (1 ms) +[ok]: Test an example script DECR_IF_GT (3 ms) +[ok]: EVAL does not leak in the Lua stack (964 ms) +[ok]: Call Redict command with many args from Lua (issue #1764) (1 ms) +[ok]: Number conversion precision test (issue #1118) (0 ms) +[ok]: String containing number precision test (regression of issue #1118) (0 ms) +[ok]: Verify negative arg count is error instead of crash (issue #1842) (0 ms) +[ok]: Scripts can handle commands with incorrect arity (0 ms) +[ok]: Correct handling of reused argv (issue #1939) (0 ms) +[ok]: Functions in the Redict namespace are able to report errors (0 ms) +[ok]: CLUSTER RESET can not be invoke from within a script (1 ms) +[ok]: Script with RESP3 map (1 ms) +[ok]: Script return recursive object (90 ms) +[ok]: Script check unpack with massive arguments (8 ms) +[ok]: Script read key with expiration set (1 ms) +[ok]: Script del key with expiration set (1 ms) +[ok]: Script ACL check (2 ms) +[ok]: Binary code loading failed (1 ms) +[ok]: Try trick global protection 1 (0 ms) +[ok]: Try trick global protection 2 (0 ms) +[ok]: Try trick global protection 3 (1 ms) +[ok]: Try trick global protection 4 (1 ms) +[ok]: Try trick readonly table on redict table (0 ms) +[ok]: Try trick readonly table on json table (0 ms) +[ok]: Try trick readonly table on cmsgpack table (0 ms) +[ok]: Try trick readonly table on bit table (1 ms) +[ok]: Test loadfile are not available (1 ms) +[ok]: Test dofile are not available (0 ms) +[ok]: Test print are not available (0 ms) +[ignore]: large memory flag not provided +=== (scripting) Starting server 127.0.0.1:21951 ok +[ok]: Timedout read-only scripts can be killed by SCRIPT KILL (412 ms) +[ok]: Timedout read-only scripts can be killed by SCRIPT KILL even when use pcall (65 ms) +[ok]: Timedout script does not cause a false dead client (44 ms) +[ok]: Timedout script link is still usable after Lua returns (60 ms) +[ok]: Timedout scripts and unblocked command (321 ms) +[ok]: Timedout scripts that modified data can't be killed by SCRIPT KILL (209 ms) +[ok]: SHUTDOWN NOSAVE can kill a timedout script anyway (7 ms) +=== (scripting repl needs:debug external:skip) Starting server 127.0.0.1:21953 ok +=== () Starting server 127.0.0.1:21955 ok +[ok]: Before the replica connects we issue two EVAL commands (1 ms) +[ok]: Connect a replica to the master instance (104 ms) +[ok]: Replication of script multiple pushes to list with BLPOP (8 ms) +[ok]: Lua scripts using SELECT are replicated correctly (2 ms) +=== (scripting repl external:skip) Starting server 127.0.0.1:21957 ok +=== () Starting server 127.0.0.1:21959 ok +[ok]: Connect a replica to the master instance (102 ms) +[ok]: redict.replicate_commands() can be issued anywhere now (1 ms) +[ok]: redict.set_repl() can be issued before replicate_commands() now (0 ms) +[ok]: redict.set_repl() don't accept invalid values (1 ms) +[ok]: Test selective replication of certain Redict commands from Lua (4 ms) +[ok]: PRNG is seeded randomly for command replication (1 ms) +[ok]: Using side effects is not a problem with command replication (2 ms) +=== (scripting needs:debug) Starting server 127.0.0.1:21961 ok +[ok]: test RESP2/2 big number protocol parsing (1 ms) +[ok]: test RESP2/2 malformed big number protocol parsing (0 ms) +[ok]: test RESP2/2 map protocol parsing (1 ms) +[ok]: test RESP2/2 set protocol parsing (1 ms) +[ok]: test RESP2/2 double protocol parsing (0 ms) +[ok]: test RESP2/2 null protocol parsing (1 ms) +[ok]: test RESP2/2 verbatim protocol parsing (0 ms) +[ok]: test RESP2/2 true protocol parsing (0 ms) +[ok]: test RESP2/2 false protocol parsing (1 ms) +[ok]: test RESP2/3 big number protocol parsing (1 ms) +[ok]: test RESP2/3 malformed big number protocol parsing (0 ms) +[ok]: test RESP2/3 map protocol parsing (1 ms) +[ok]: test RESP2/3 set protocol parsing (0 ms) +[ok]: test RESP2/3 double protocol parsing (1 ms) +[ok]: test RESP2/3 null protocol parsing (0 ms) +[ok]: test RESP2/3 verbatim protocol parsing (0 ms) +[ok]: test RESP2/3 true protocol parsing (0 ms) +[ok]: test RESP2/3 false protocol parsing (0 ms) +[ok]: test RESP3/2 big number protocol parsing (0 ms) +[ok]: test RESP3/2 malformed big number protocol parsing (1 ms) +[ok]: test RESP3/2 map protocol parsing (0 ms) +[ok]: test RESP3/2 set protocol parsing (1 ms) +[ok]: test RESP3/2 double protocol parsing (0 ms) +[ok]: test RESP3/2 null protocol parsing (1 ms) +[ok]: test RESP3/2 verbatim protocol parsing (0 ms) +[ok]: test RESP3/2 true protocol parsing (0 ms) +[ok]: test RESP3/2 false protocol parsing (0 ms) +[ok]: test RESP3/3 big number protocol parsing (1 ms) +[ok]: test RESP3/3 malformed big number protocol parsing (0 ms) +[ok]: test RESP3/3 map protocol parsing (1 ms) +[ok]: test RESP3/3 set protocol parsing (1 ms) +[ok]: test RESP3/3 double protocol parsing (0 ms) +[ok]: test RESP3/3 null protocol parsing (1 ms) +[ok]: test RESP3/3 verbatim protocol parsing (0 ms) +[ok]: test RESP3/3 true protocol parsing (1 ms) +[ok]: test RESP3/3 false protocol parsing (0 ms) +[ok]: test resp3 attribute protocol parsing (0 ms) +[ok]: Script block the time during execution (11 ms) +[ok]: Script delete the expired key (3 ms) +[ok]: TIME command using cached time (10 ms) +[ok]: Script block the time in some expiration related commands (82 ms) +[ok]: RESTORE expired keys with expiration time (11 ms) +=== (scripting) Starting server 127.0.0.1:21963 ok +[ok]: Redis compatibility global exists (0 ms) +[ok]: Script - disallow write on OOM (1 ms) +[ok]: EVAL - Does Lua interpreter replies to our requests? (0 ms) +[ok]: EVAL - Return _G (1 ms) +[ok]: EVAL - Return table with a metatable that raise error (0 ms) +[ok]: EVAL - Return table with a metatable that call redict (0 ms) +[ok]: EVAL - Lua integer -> Redict protocol type conversion (0 ms) +[ok]: EVAL - Lua string -> Redict protocol type conversion (0 ms) +[ok]: EVAL - Lua true boolean -> Redict protocol type conversion (0 ms) +[ok]: EVAL - Lua false boolean -> Redict protocol type conversion (1 ms) +[ok]: EVAL - Lua status code reply -> Redict protocol type conversion (0 ms) +[ok]: EVAL - Lua error reply -> Redict protocol type conversion (0 ms) +[ok]: EVAL - Lua table -> Redict protocol type conversion (1 ms) +[ok]: EVAL - Are the KEYS and ARGV arrays populated correctly? (0 ms) +[ok]: EVAL - is Lua able to call Redict API? (0 ms) +[ok]: EVALSHA - Can we call a SHA1 if already defined? (0 ms) +[ok]: EVALSHA_RO - Can we call a SHA1 if already defined? (0 ms) +[ok]: EVALSHA - Can we call a SHA1 in uppercase? (0 ms) +[ok]: EVALSHA - Do we get an error on invalid SHA1? (1 ms) +[ok]: EVALSHA - Do we get an error on non defined SHA1? (0 ms) +[ok]: EVAL - Redict integer -> Lua type conversion (1 ms) +[ok]: EVAL - Lua number -> Redict integer conversion (0 ms) +[ok]: EVAL - Redict bulk -> Lua type conversion (1 ms) +[ok]: EVAL - Redict multi bulk -> Lua type conversion (0 ms) +[ok]: EVAL - Redict status reply -> Lua type conversion (0 ms) +[ok]: EVAL - Redict error reply -> Lua type conversion (0 ms) +[ok]: EVAL - Redict nil bulk reply -> Lua type conversion (1 ms) +[ok]: EVAL - Is the Lua client using the currently selected DB? (1 ms) +[ok]: EVAL - SELECT inside Lua should not affect the caller (0 ms) +[ok]: EVAL - Scripts do not block on blpop command (1 ms) +[ok]: EVAL - Scripts do not block on brpop command (1 ms) +[ok]: EVAL - Scripts do not block on brpoplpush command (0 ms) +[ok]: EVAL - Scripts do not block on blmove command (1 ms) +[ok]: EVAL - Scripts do not block on bzpopmin command (1 ms) +[ok]: EVAL - Scripts do not block on bzpopmax command (0 ms) +[ok]: EVAL - Scripts do not block on wait (1 ms) +[ok]: EVAL - Scripts do not block on waitaof (0 ms) +[ok]: EVAL - Scripts do not block on XREAD with BLOCK option (1 ms) +[ok]: EVAL - Scripts do not block on XREADGROUP with BLOCK option (0 ms) +[ok]: EVAL - Scripts do not block on XREAD with BLOCK option -- non empty stream (1 ms) +[ok]: EVAL - Scripts do not block on XREADGROUP with BLOCK option -- non empty stream (1 ms) +[ok]: EVAL - Scripts can run non-deterministic commands (0 ms) +[ok]: EVAL - No arguments to redict.call/pcall is considered an error (0 ms) +[ok]: EVAL - redict.call variant raises a Lua error on Redict cmd error (1) (1 ms) +[ok]: EVAL - redict.call variant raises a Lua error on Redict cmd error (1) (0 ms) +[ok]: EVAL - redict.call variant raises a Lua error on Redict cmd error (1) (1 ms) +[ignore]: EVAL - JSON string encoding a string larger than 2GB: large memory flag not provided +[ok]: EVAL - JSON numeric decoding (0 ms) +[ok]: EVAL - JSON string decoding (0 ms) +[ok]: EVAL - JSON smoke test (1 ms) +[ok]: EVAL - cmsgpack can pack double? (0 ms) +[ok]: EVAL - cmsgpack can pack negative int64? (1 ms) +[ok]: EVAL - cmsgpack pack/unpack smoke test (174 ms) +[ok]: EVAL - cmsgpack can pack and unpack circular references? (0 ms) +[ok]: EVAL - Numerical sanity check from bitop (0 ms) +[ok]: EVAL - Verify minimal bitop functionality (1 ms) +[ok]: EVAL - Able to parse trailing comments (0 ms) +[ok]: EVAL_RO - Successful case (1 ms) +[ok]: EVAL_RO - Cannot run write commands (0 ms) +[ok]: SCRIPTING FLUSH - is able to clear the scripts cache? (9 ms) +[ok]: EVAL - Test table unpack with invalid indexes (1 ms) +[ok]: Try trick readonly table on basic types metatable (1 ms) +[ok]: Dynamic reset of lua engine with insecure API config change (2 ms) +[ok]: SCRIPTING FLUSH ASYNC (17 ms) +[ok]: SCRIPT EXISTS - can detect already defined scripts? (1 ms) +[ok]: SCRIPT LOAD - is able to register scripts in the scripting cache (0 ms) +[ok]: SORT is normally not alpha re-ordered for the scripting engine (1 ms) +[ok]: SORT BY output gets ordered for scripting (1 ms) +[ok]: SORT BY with GET gets ordered for scripting (1 ms) +[ok]: redict.sha1hex() implementation (0 ms) +[ok]: Measures elapsed time os.clock() (1001 ms) +[ok]: Prohibit dangerous lua methods in sandbox (0 ms) +[ok]: Verify execution of prohibit dangerous Lua methods will fail (1 ms) +[ok]: Globals protection reading an undeclared global variable (1 ms) +[ok]: Globals protection setting an undeclared global* (0 ms) +[ok]: lua bit.tohex bug (1 ms) +[ok]: Test an example script DECR_IF_GT (1 ms) +[ok]: random numbers are random now (0 ms) +[ok]: Scripting engine PRNG can be seeded correctly (0 ms) +[ok]: EVAL does not leak in the Lua stack (390 ms) +[ok]: SPOP: We can call scripts rewriting client->argv from Lua (110 ms) +[ok]: MGET: mget shouldn't be propagated in Lua (101 ms) +[ok]: EXPIRE: We can call scripts rewriting client->argv from Lua (101 ms) +=== (scripting) Starting server 127.0.0.1:21965 ok +[ok]: INCRBYFLOAT: We can call scripts expanding client->argv from Lua (338 ms) +[ok]: Call Redict command with many args from Lua (issue #1764) (1 ms) +[ok]: Number conversion precision test (issue #1118) (0 ms) +[ok]: String containing number precision test (regression of issue #1118) (1 ms) +[ok]: Verify negative arg count is error instead of crash (issue #1842) (0 ms) +[ok]: Scripts can handle commands with incorrect arity (1 ms) +[ok]: Correct handling of reused argv (issue #1939) (0 ms) +[ok]: Functions in the Redict namespace are able to report errors (0 ms) +[ok]: CLUSTER RESET can not be invoke from within a script (0 ms) +[ok]: Script with RESP3 map (2 ms) +[ok]: Script return recursive object (83 ms) +[ok]: Script check unpack with massive arguments (3 ms) +[ok]: Script read key with expiration set (0 ms) +[ok]: Script del key with expiration set (1 ms) +[ok]: Script ACL check (1 ms) +[ok]: Binary code loading failed (0 ms) +[ok]: Try trick global protection 1 (0 ms) +[ok]: Try trick global protection 2 (0 ms) +[ok]: Try trick global protection 3 (1 ms) +[ok]: Try trick global protection 4 (0 ms) +[ok]: Try trick readonly table on redict table (0 ms) +[ok]: Try trick readonly table on json table (1 ms) +[ok]: Try trick readonly table on cmsgpack table (0 ms) +[ok]: Try trick readonly table on bit table (0 ms) +[ok]: Test loadfile are not available (1 ms) +[ok]: Test dofile are not available (0 ms) +[ok]: Test print are not available (0 ms) +[ignore]: large memory flag not provided +=== (scripting) Starting server 127.0.0.1:21967 ok +[ok]: Timedout read-only scripts can be killed by SCRIPT KILL (410 ms) +[ok]: Timedout read-only scripts can be killed by SCRIPT KILL even when use pcall (42 ms) +[ok]: Timedout script does not cause a false dead client (41 ms) +[ok]: Timedout script link is still usable after Lua returns (58 ms) +[ok]: Timedout scripts and unblocked command (325 ms) +[ok]: Timedout scripts that modified data can't be killed by SCRIPT KILL (210 ms) +[ok]: SHUTDOWN NOSAVE can kill a timedout script anyway (9 ms) +=== (scripting repl needs:debug external:skip) Starting server 127.0.0.1:21969 ok +=== () Starting server 127.0.0.1:21971 ok +[ok]: Before the replica connects we issue two EVAL commands (0 ms) +[ok]: Connect a replica to the master instance (103 ms) +[ok]: Now use EVALSHA against the master, with both SHAs (1 ms) +[ok]: 'x' should be '4' for EVALSHA being replicated by effects (0 ms) +[ok]: Replication of script multiple pushes to list with BLPOP (8 ms) +[ok]: EVALSHA replication when first call is readonly (1 ms) +[ok]: Lua scripts using SELECT are replicated correctly (1 ms) +=== (scripting repl external:skip) Starting server 127.0.0.1:21973 ok +=== () Starting server 127.0.0.1:21975 ok +[ok]: Connect a replica to the master instance (103 ms) +[ok]: redict.replicate_commands() can be issued anywhere now (0 ms) +[ok]: redict.set_repl() can be issued before replicate_commands() now (0 ms) +[ok]: redict.set_repl() don't accept invalid values (0 ms) +[ok]: Test selective replication of certain Redict commands from Lua (2 ms) +[ok]: PRNG is seeded randomly for command replication (1 ms) +[ok]: Using side effects is not a problem with command replication (1 ms) +=== (scripting external:skip) Starting server 127.0.0.1:21977 ok +=== (scripting needs:debug external:skip) Starting server 127.0.0.1:21979 ok +[ok]: Test scripting debug protocol parsing (2 ms) +[ok]: Test scripting debug lua stack overflow (7 ms) +=== (scripting external:skip) Starting server 127.0.0.1:21981 ok +[ok]: Lua scripts eviction does not generate many scripts (172 ms) +[ok]: Lua scripts eviction is plain LRU (86 ms) +[ok]: Lua scripts eviction does not affect script load (180 ms) +=== (scripting needs:debug) Starting server 127.0.0.1:21983 ok +[ok]: test RESP2/2 big number protocol parsing (0 ms) +[ok]: test RESP2/2 malformed big number protocol parsing (1 ms) +[ok]: test RESP2/2 map protocol parsing (0 ms) +[ok]: test RESP2/2 set protocol parsing (1 ms) +[ok]: test RESP2/2 double protocol parsing (0 ms) +[ok]: test RESP2/2 null protocol parsing (0 ms) +[ok]: test RESP2/2 verbatim protocol parsing (1 ms) +[ok]: test RESP2/2 true protocol parsing (0 ms) +[ok]: test RESP2/2 false protocol parsing (0 ms) +[ok]: test RESP2/3 big number protocol parsing (0 ms) +[ok]: test RESP2/3 malformed big number protocol parsing (0 ms) +[ok]: test RESP2/3 map protocol parsing (1 ms) +[ok]: test RESP2/3 set protocol parsing (0 ms) +[ok]: test RESP2/3 double protocol parsing (0 ms) +[ok]: test RESP2/3 null protocol parsing (0 ms) +[ok]: test RESP2/3 verbatim protocol parsing (0 ms) +[ok]: test RESP2/3 true protocol parsing (0 ms) +[ok]: test RESP2/3 false protocol parsing (1 ms) +[ok]: test RESP3/2 big number protocol parsing (0 ms) +[ok]: test RESP3/2 malformed big number protocol parsing (0 ms) +[ok]: test RESP3/2 map protocol parsing (0 ms) +[ok]: test RESP3/2 set protocol parsing (1 ms) +[ok]: test RESP3/2 double protocol parsing (0 ms) +[ok]: test RESP3/2 null protocol parsing (0 ms) +[ok]: test RESP3/2 verbatim protocol parsing (1 ms) +[ok]: test RESP3/2 true protocol parsing (0 ms) +[ok]: test RESP3/2 false protocol parsing (0 ms) +[ok]: test RESP3/3 big number protocol parsing (0 ms) +[ok]: test RESP3/3 malformed big number protocol parsing (0 ms) +[ok]: test RESP3/3 map protocol parsing (1 ms) +[ok]: test RESP3/3 set protocol parsing (0 ms) +[ok]: test RESP3/3 double protocol parsing (0 ms) +[ok]: test RESP3/3 null protocol parsing (0 ms) +[ok]: test RESP3/3 verbatim protocol parsing (0 ms) +[ok]: test RESP3/3 true protocol parsing (0 ms) +[ok]: test RESP3/3 false protocol parsing (1 ms) +[ok]: test resp3 attribute protocol parsing (0 ms) +[ok]: Script block the time during execution (11 ms) +[ok]: Script delete the expired key (3 ms) +[ok]: TIME command using cached time (11 ms) +[ok]: Script block the time in some expiration related commands (81 ms) +[ok]: RESTORE expired keys with expiration time (11 ms) +=== (scripting) Starting server 127.0.0.1:21985 ok +[ok]: Shebang support for lua engine (1 ms) +[ok]: Unknown shebang option (0 ms) +[ok]: Unknown shebang flag (1 ms) +[ok]: allow-oom shebang flag (2 ms) +[ok]: no-writes shebang flag (0 ms) +=== (external:skip) Starting server 127.0.0.1:21987 ok +[ok]: no-writes shebang flag on replica (120 ms) +[ok]: not enough good replicas (2 ms) +=== (external:skip) Starting server 127.0.0.1:21989 ok +[ok]: not enough good replicas state change during long script (527 ms) +[ok]: allow-stale shebang flag (2 ms) +[ok]: reject script do not cause a Lua stack leak (9 ms) +=== (scripting) Starting server 127.0.0.1:21991 ok +[ok]: Consistent eval error reporting (14 ms) +[ok]: LUA redict.error_reply API (0 ms) +[ok]: LUA redict.error_reply API with empty string (0 ms) +[ok]: LUA redict.status_reply API (1 ms) +[ok]: LUA test pcall (0 ms) +[ok]: LUA test pcall with error (0 ms) +[ok]: LUA test pcall with non string/integer arg (0 ms) +[ok]: LUA test trim string as expected (2 ms) +[57/91 done]: unit/scripting (16 seconds) +Testing unit/functions +=== (scripting) Starting server 127.0.0.1:21993 ok +[ok]: FUNCTION - Basic usage (0 ms) +[ok]: FUNCTION - Load with unknown argument (0 ms) +[ok]: FUNCTION - Create an already exiting library raise error (0 ms) +[ok]: FUNCTION - Create an already exiting library raise error (case insensitive) (0 ms) +[ok]: FUNCTION - Create a library with wrong name format (0 ms) +[ok]: FUNCTION - Create library with unexisting engine (0 ms) +[ok]: FUNCTION - Test uncompiled script (1 ms) +[ok]: FUNCTION - test replace argument (0 ms) +[ok]: FUNCTION - test function case insensitive (0 ms) +[ok]: FUNCTION - test replace argument with failure keeps old libraries (1 ms) +[ok]: FUNCTION - test function delete (0 ms) +[ok]: FUNCTION - test fcall bad arguments (1 ms) +[ok]: FUNCTION - test fcall bad number of keys arguments (0 ms) +[ok]: FUNCTION - test fcall negative number of keys (1 ms) +[ok]: FUNCTION - test delete on not exiting library (0 ms) +[ok]: FUNCTION - test function kill when function is not running (0 ms) +[ok]: FUNCTION - test wrong subcommand (1 ms) +[ok]: FUNCTION - test loading from rdb (9 ms) +[ok]: FUNCTION - test debug reload different options (12 ms) +[ok]: FUNCTION - test debug reload with nosave and noflush (10 ms) +[ok]: FUNCTION - test flushall and flushdb do not clean functions (1 ms) +[ok]: FUNCTION - test function dump and restore (2 ms) +[ok]: FUNCTION - test function dump and restore with flush argument (1 ms) +[ok]: FUNCTION - test function dump and restore with append argument (2 ms) +[ok]: FUNCTION - test function dump and restore with replace argument (2 ms) +[ok]: FUNCTION - test function restore with bad payload do not drop existing functions (1 ms) +[ok]: FUNCTION - test function restore with wrong number of arguments (0 ms) +[ok]: FUNCTION - test fcall_ro with write command (1 ms) +[ok]: FUNCTION - test fcall_ro with read only commands (0 ms) +[ok]: FUNCTION - test keys and argv (0 ms) +[ok]: FUNCTION - test command get keys on fcall (1 ms) +[ok]: FUNCTION - test command get keys on fcall_ro (0 ms) +[ok]: FUNCTION - test function kill (411 ms) +[ok]: FUNCTION - test script kill not working on function (412 ms) +[ok]: FUNCTION - test function kill not working on eval (411 ms) +[ok]: FUNCTION - test function flush (2 ms) +[ok]: FUNCTION - test function wrong argument (0 ms) +=== (scripting repl external:skip) Starting server 127.0.0.1:21995 ok +=== () Starting server 127.0.0.1:21997 ok +[ok]: Connect a replica to the master instance (558 ms) +[ok]: FUNCTION - creation is replicated to replica (1 ms) +[ok]: FUNCTION - call on replica (0 ms) +[ok]: FUNCTION - restore is replicated to replica (2 ms) +[ok]: FUNCTION - delete is replicated to replica (0 ms) +[ok]: FUNCTION - flush is replicated to replica (1 ms) +[ok]: Disconnecting the replica from master instance (488 ms) +[ok]: FUNCTION - test replication to replica on rdb phase (0 ms) +[ok]: FUNCTION - test replication to replica on rdb phase info command (1 ms) +[ok]: FUNCTION - create on read only replica (0 ms) +[ok]: FUNCTION - delete on read only replica (1 ms) +[ok]: FUNCTION - function effect is replicated to replica (1 ms) +[ok]: FUNCTION - modify key space of read only replica (0 ms) +=== () Starting server 127.0.0.1:21999 ok + +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... +Waiting for background AOF rewrite to finish... [ok]: FUNCTION can processes create, delete and flush commands in AOF when doing "debug loadaof" in read-only slaves (1237 ms) +=== (scripting) Starting server 127.0.0.1:22001 ok +[ok]: LIBRARIES - test shared function can access default globals (1 ms) +[ok]: LIBRARIES - usage and code sharing (1 ms) +[ok]: LIBRARIES - test registration failure revert the entire load (1 ms) +[ok]: LIBRARIES - test registration function name collision (1 ms) +[ok]: LIBRARIES - test registration function name collision on same library (0 ms) +[ok]: LIBRARIES - test registration with no argument (0 ms) +[ok]: LIBRARIES - test registration with only name (1 ms) +[ok]: LIBRARIES - test registration with to many arguments (0 ms) +[ok]: LIBRARIES - test registration with no string name (0 ms) +[ok]: LIBRARIES - test registration with wrong name format (0 ms) +[ok]: LIBRARIES - test registration with empty name (0 ms) +[ok]: LIBRARIES - math.random from function load (1 ms) +[ok]: LIBRARIES - redict.call from function load (0 ms) +[ok]: LIBRARIES - redict.setresp from function load (0 ms) +[ok]: LIBRARIES - redict.set_repl from function load (1 ms) +[ok]: LIBRARIES - redict.acl_check_cmd from function load (0 ms) +[ok]: LIBRARIES - malicious access test (1 ms) +[ok]: LIBRARIES - delete removed all functions on library (1 ms) +[ok]: LIBRARIES - register function inside a function (0 ms) +[ok]: LIBRARIES - register library with no functions (1 ms) +[ok]: LIBRARIES - load timeout (502 ms) +[ok]: LIBRARIES - verify global protection on the load run (0 ms) +[ok]: LIBRARIES - named arguments (1 ms) +[ok]: LIBRARIES - named arguments, bad function name (0 ms) +[ok]: LIBRARIES - named arguments, bad callback type (0 ms) +[ok]: LIBRARIES - named arguments, bad description (0 ms) +[ok]: LIBRARIES - named arguments, unknown argument (1 ms) +[ok]: LIBRARIES - named arguments, missing function name (0 ms) +[ok]: LIBRARIES - named arguments, missing callback (0 ms) +[ok]: FUNCTION - test function restore with function name collision (3 ms) +[ok]: FUNCTION - test function list with code (1 ms) +[ok]: FUNCTION - test function list with pattern (1 ms) +[ok]: FUNCTION - test function list wrong argument (0 ms) +[ok]: FUNCTION - test function list with bad argument to library name (0 ms) +[ok]: FUNCTION - test function list withcode multiple times (1 ms) +[ok]: FUNCTION - test function list libraryname multiple times (0 ms) +[ok]: FUNCTION - verify OOM on function load and function restore (2 ms) +[ok]: FUNCTION - verify allow-omm allows running any command (1 ms) +=== (scripting) Starting server 127.0.0.1:22003 ok +[ok]: FUNCTION - wrong flags type named arguments (0 ms) +[ok]: FUNCTION - wrong flag type (0 ms) +[ok]: FUNCTION - unknown flag (0 ms) +[ok]: FUNCTION - write script on fcall_ro (0 ms) +[ok]: FUNCTION - write script with no-writes flag (0 ms) +[ok]: FUNCTION - deny oom (1 ms) +[ok]: FUNCTION - deny oom on no-writes function (1 ms) +[ok]: FUNCTION - allow stale (2 ms) +[ok]: FUNCTION - redict version api (1 ms) +[ok]: FUNCTION - legacy redis version is hard-coded to 7.2.4 (1 ms) +[ok]: FUNCTION - function stats (1 ms) +[ok]: FUNCTION - function stats reloaded correctly from rdb (127 ms) +[ok]: FUNCTION - function stats delete library (1 ms) +[ok]: FUNCTION - test function stats on loading failure (1 ms) +[ok]: FUNCTION - function stats cleaned after flush (0 ms) +[ok]: FUNCTION - function test empty engine (0 ms) +[ok]: FUNCTION - function test unknown metadata value (0 ms) +[ok]: FUNCTION - function test no name (0 ms) +[ok]: FUNCTION - function test multiple names (0 ms) +[ok]: FUNCTION - function test name with quotes (0 ms) +[ok]: FUNCTION - trick global protection 1 (1 ms) +[ok]: FUNCTION - test getmetatable on script load (0 ms) +[58/91 done]: unit/functions (6 seconds) +Testing unit/maxmemory +=== (maxmemory external:skip) Starting server 127.0.0.1:22005 ok +evicted keys: 9 +evicted clients: 0 +dbsize: 41 +[ok]: eviction due to output buffers of many MGET clients, client eviction: false (213 ms) +evicted keys: 36 +evicted clients: 0 +dbsize: 14 +[ok]: eviction due to input buffer of a dead client, client eviction: false (498 ms) +evicted keys: 1 +evicted clients: 0 +dbsize: 49 +[ok]: eviction due to output buffers of pubsub, client eviction: false (1030 ms) +evicted keys: 0 +evicted clients: 12 +dbsize: 50 +[ok]: eviction due to output buffers of many MGET clients, client eviction: true (208 ms) +evicted keys: 0 +evicted clients: 19 +dbsize: 50 +[ok]: eviction due to input buffer of a dead client, client eviction: true (486 ms) +evicted keys: 0 +evicted clients: 8 +dbsize: 50 +[ok]: eviction due to output buffers of pubsub, client eviction: true (971 ms) +=== (maxmemory external:skip) Starting server 127.0.0.1:22007 ok +[ok]: Without maxmemory small integers are shared (1 ms) +[ok]: With maxmemory and non-LRU policy integers are still shared (1 ms) +[ok]: With maxmemory and LRU policy integers are not shared (1 ms) +[ok]: maxmemory - is the memory limit honoured? (policy allkeys-random) (183 ms) +[ok]: maxmemory - is the memory limit honoured? (policy allkeys-lru) (366 ms) +[ok]: maxmemory - is the memory limit honoured? (policy allkeys-lfu) (371 ms) +[ok]: maxmemory - is the memory limit honoured? (policy volatile-lru) (369 ms) +[ok]: maxmemory - is the memory limit honoured? (policy volatile-lfu) (368 ms) +[ok]: maxmemory - is the memory limit honoured? (policy volatile-random) (371 ms) +[ok]: maxmemory - is the memory limit honoured? (policy volatile-ttl) (360 ms) +[ok]: maxmemory - only allkeys-* should remove non-volatile keys (allkeys-random) (581 ms) +[ok]: maxmemory - only allkeys-* should remove non-volatile keys (allkeys-lru) (561 ms) +[ok]: maxmemory - only allkeys-* should remove non-volatile keys (volatile-lru) (589 ms) +[ok]: maxmemory - only allkeys-* should remove non-volatile keys (volatile-random) (573 ms) +[ok]: maxmemory - only allkeys-* should remove non-volatile keys (volatile-ttl) (586 ms) +[ok]: maxmemory - policy volatile-lru should only remove volatile keys. (622 ms) +[ok]: maxmemory - policy volatile-lfu should only remove volatile keys. (618 ms) +[ok]: maxmemory - policy volatile-random should only remove volatile keys. (619 ms) +[ok]: maxmemory - policy volatile-ttl should only remove volatile keys. (612 ms) +=== (maxmemory external:skip) Starting server 127.0.0.1:22009 ok +=== () Starting server 127.0.0.1:22011 ok +[ok]: slave buffer are counted correctly (29955 ms) +=== (maxmemory external:skip) Starting server 127.0.0.1:22013 ok +=== () Starting server 127.0.0.1:22015 ok +[ok]: replica buffer don't induce eviction (12997 ms) +=== (maxmemory external:skip) Starting server 127.0.0.1:22017 ok +[ok]: Don't rehash if used memory exceeds maxmemory after rehash (379 ms) +=== (maxmemory external:skip) Starting server 127.0.0.1:22019 ok +evicted: 36 +evicted: 36 +[ok]: client tracking don't cause eviction feedback loop (1714 ms) +=== (maxmemory external:skip) Starting server 127.0.0.1:22021 ok +[ok]: propagation with eviction (1037 ms) +=== (maxmemory external:skip) Starting server 127.0.0.1:22023 ok +[ok]: propagation with eviction in MULTI (1161 ms) +=== (maxmemory external:skip) Starting server 127.0.0.1:22025 ok +[ok]: lru/lfu value of the key just added (2 ms) +[59/91 done]: unit/maxmemory (62 seconds) +Testing unit/introspection +=== (introspection) Starting server 127.0.0.1:22027 ok +[ok]: PING (1 ms) +[ok]: CLIENT LIST (0 ms) +[ok]: CLIENT LIST with IDs (1 ms) +[ok]: CLIENT INFO (0 ms) +[ok]: CLIENT KILL with illegal arguments (3 ms) +CLIENT KILL maxAGE will kill old clients test attempts: 0 +[ok]: CLIENT KILL maxAGE will kill old clients (2018 ms) +[ok]: CLIENT KILL SKIPME YES/NO will kill all clients (31 ms) +[ok]: CLIENT command unhappy path coverage (3 ms) +[ok]: CLIENT KILL close the client connection during bgsave (61 ms) +[ok]: CLIENT REPLY OFF/ON: disable all commands reply (49 ms) +[ok]: CLIENT REPLY SKIP: skip the next command reply (52 ms) +[ok]: CLIENT REPLY ON: unset SKIP flag (48 ms) +[ok]: MONITOR can log executed commands (8 ms) +[ok]: MONITOR can log commands issued by the scripting engine (8 ms) +[ok]: MONITOR can log commands issued by functions (8 ms) +[ok]: MONITOR supports redacting command arguments (9 ms) +[ok]: MONITOR correctly handles multi-exec cases (8 ms) +[ok]: MONITOR log blocked command only once (23 ms) +[ok]: CLIENT GETNAME should return NIL if name is not assigned (0 ms) +[ok]: CLIENT GETNAME check if name set correctly (0 ms) +[ok]: CLIENT LIST shows empty fields for unassigned names (0 ms) +[ok]: CLIENT SETNAME does not accept spaces (0 ms) +[ok]: CLIENT SETNAME can assign a name to this connection (1 ms) +[ok]: CLIENT SETNAME can change the name of an existing connection (0 ms) +[ok]: After CLIENT SETNAME, connection can still be closed (8 ms) +[ok]: CLIENT SETINFO can set a library name to this connection (0 ms) +[ok]: CLIENT SETINFO invalid args (1 ms) +[ok]: RESET does NOT clean library name (0 ms) +[ok]: CLIENT SETINFO can clear library name (0 ms) +=== () Starting server 127.0.0.1:22029 ok +=== () Starting server 127.0.0.1:22031 ok +=== () Starting server 127.0.0.1:22033 ok +=== () Starting server 127.0.0.1:22035 ok +[ok]: CONFIG save params special case handled properly (2723 ms) +[ok]: CONFIG sanity (27 ms) +[ok]: CONFIG REWRITE sanity (1189 ms) +=== () Starting server 127.0.0.1:22037 ok +[ok]: CONFIG REWRITE handles save and shutdown properly (4312 ms) +[ok]: CONFIG SET with multiple args (2 ms) +[ok]: CONFIG SET rollback on set error (1 ms) +dummy_accept: sock55f7e4c7a3a0 +[ok]: CONFIG SET rollback on apply error (10 ms) +[ok]: CONFIG SET duplicate configs (0 ms) +[ok]: CONFIG SET set immutable (0 ms) +[ok]: CONFIG GET hidden configs (3 ms) +[ok]: CONFIG GET multiple args (0 ms) +[ok]: redict-server command line arguments - error cases (144 ms) +=== () Starting server 127.0.0.1:22040 ok +[ok]: redict-server command line arguments - allow passing option name and option value in the same arg (377 ms) +=== () Starting server 127.0.0.1:22042 ok +[ok]: redict-server command line arguments - wrong usage that we support anyway (430 ms) +=== () Starting server 127.0.0.1:22044 ok +[ok]: redict-server command line arguments - allow option value to use the `--` prefix (257 ms) +=== () Starting server 127.0.0.1:22046 ok +[ok]: redict-server command line arguments - option name and option value in the same arg and `--` prefix (264 ms) +=== () Starting server 127.0.0.1:22048 ok +=== () Starting server 127.0.0.1:22050 ok +=== () Starting server 127.0.0.1:22052 ok +=== () Starting server 127.0.0.1:22054 ok +=== () Starting server 127.0.0.1:22056 ok +[ok]: redict-server command line arguments - save with empty input (2432 ms) +=== () Starting server 127.0.0.1:22058 ok +[ok]: redict-server command line arguments - take one bulk string with spaces for MULTI_ARG configs parsing (431 ms) +=== (introspection external:skip) Starting server 127.0.0.1:22060 ok +[ok]: cannot modify protected configuration - no (0 ms) +=== (introspection external:skip) Starting server 127.0.0.1:22062 ok +[ok]: cannot modify protected configuration - local (2 ms) +=== () Starting server 127.0.0.1:22064 ok +Waiting for process 550610 to exit... +[ok]: config during loading (10847 ms) +=== (introspection) Starting server 127.0.0.1:22066 ok +[ok]: CONFIG REWRITE handles rename-command properly (2043 ms) +=== (introspection) Starting server 127.0.0.1:22068 ok +=== (introspection) Starting server 127.0.0.1:22070 ok +[ok]: CONFIG REWRITE handles alias config properly (5012 ms) +[60/91 done]: unit/introspection (35 seconds) +Testing unit/introspection-2 +=== (introspection) Starting server 127.0.0.1:22072 ok +[ok]: The microsecond part of the TIME command will not overflow (0 ms) +[ok]: TTL, TYPE and EXISTS do not alter the last access time of a key (3004 ms) +[ok]: TOUCH alters the last access time of a key (3004 ms) +[ok]: Operations in no-touch mode do not alter the last access time of a key (1103 ms) +[ok]: TOUCH returns the number of existing keys specified (1 ms) +[ok]: command stats for GEOADD (2 ms) +[ok]: errors stats for GEOADD (1 ms) +[ok]: command stats for EXPIRE (1 ms) +[ok]: command stats for BRPOP (1 ms) +[ok]: command stats for MULTI (3 ms) +[ok]: command stats for scripts (2 ms) +[ok]: COMMAND COUNT get total number of Redict commands (0 ms) +[ok]: COMMAND GETKEYS GET (0 ms) +[ok]: COMMAND GETKEYSANDFLAGS (1 ms) +[ok]: COMMAND GETKEYS MEMORY USAGE (1 ms) +[ok]: COMMAND GETKEYS XGROUP (0 ms) +[ok]: COMMAND GETKEYS EVAL with keys (0 ms) +[ok]: COMMAND GETKEYS EVAL without keys (0 ms) +[ok]: COMMAND GETKEYS LCS (0 ms) +[ok]: COMMAND GETKEYS MORE THAN 256 KEYS (2 ms) +[ok]: COMMAND LIST syntax error (1 ms) +[ok]: COMMAND LIST WITHOUT FILTERBY (3 ms) +[ok]: COMMAND LIST FILTERBY ACLCAT against non existing category (0 ms) +[ok]: COMMAND LIST FILTERBY ACLCAT - list all commands/subcommands (0 ms) +[ok]: COMMAND LIST FILTERBY PATTERN - list all commands/subcommands (2 ms) +[ok]: COMMAND LIST FILTERBY MODULE against non existing module (0 ms) +[ok]: COMMAND INFO of invalid subcommands (1 ms) +[ok]: SET command will not be marked with movablekeys (0 ms) +[ok]: GET command will not be marked with movablekeys (0 ms) +[ok]: MSET command will not be marked with movablekeys (0 ms) +[ok]: BITFIELD command will not be marked with movablekeys (1 ms) +[ok]: LMOVE command will not be marked with movablekeys (0 ms) +[ok]: LPOP command will not be marked with movablekeys (0 ms) +[ok]: BLPOP command will not be marked with movablekeys (0 ms) +[ok]: PING command will not be marked with movablekeys (1 ms) +[ok]: MEMORY command will not be marked with movablekeys (0 ms) +[ok]: MEMORY|USAGE command will not be marked with movablekeys (0 ms) +[ok]: RENAME command will not be marked with movablekeys (0 ms) +[ok]: GEORADIUS_RO command will not be marked with movablekeys (0 ms) +[ok]: ZUNIONSTORE command is marked with movablekeys (1 ms) +[ok]: XREAD command is marked with movablekeys (0 ms) +[ok]: EVAL command is marked with movablekeys (0 ms) +[ok]: SORT command is marked with movablekeys (0 ms) +[ok]: SORT_RO command is marked with movablekeys (1 ms) +[ok]: MIGRATE command is marked with movablekeys (0 ms) +[ok]: GEORADIUS command is marked with movablekeys (1 ms) +[61/91 done]: unit/introspection-2 (8 seconds) +Testing unit/limits +=== (limits network external:skip) Starting server 127.0.0.1:22074 ok +[ok]: Check if maxclients works refusing connections (1546 ms) +[62/91 done]: unit/limits (2 seconds) +Testing unit/obuf-limits +=== (obuf-limits external:skip logreqres:skip) Starting server 127.0.0.1:22076 ok +[ok]: CONFIG SET client-output-buffer-limit (3 ms) +[ok]: Client output buffer hard limit is enforced (9237 ms) +[ok]: Client output buffer soft limit is enforced if time is overreached (3685 ms) +[ok]: Client output buffer soft limit is not enforced too early and is enforced when no traffic (5063 ms) +[ok]: No response for single command if client output buffer hard limit is enforced (130 ms) +[ok]: No response for multi commands in pipeline if client output buffer limit is enforced (1186 ms) +[ok]: Execute transactions completely even if client output buffer limit is enforced (32 ms) +[ok]: Obuf limit, HRANDFIELD with huge count stopped mid-run (20 ms) +[ok]: Obuf limit, KEYS stopped mid-run (110 ms) +[63/91 done]: unit/obuf-limits (21 seconds) +Testing unit/bitops +=== (bitops) Starting server 127.0.0.1:22078 ok +[ok]: BITCOUNT against wrong type (1 ms) +[ok]: BITCOUNT returns 0 against non existing key (0 ms) +[ok]: BITCOUNT returns 0 with out of range indexes (0 ms) +[ok]: BITCOUNT returns 0 with negative indexes where start > end (1 ms) +[ok]: BITCOUNT against test vector #1 (1 ms) +[ok]: BITCOUNT against test vector #2 (0 ms) +[ok]: BITCOUNT against test vector #3 (0 ms) +[ok]: BITCOUNT against test vector #4 (1 ms) +[ok]: BITCOUNT against test vector #5 (0 ms) +[ok]: BITCOUNT fuzzing without start/end (214 ms) +[ok]: BITCOUNT fuzzing with start/end (367 ms) +[ok]: BITCOUNT with start, end (2 ms) +[ok]: BITCOUNT with illegal arguments (1 ms) +[ok]: BITCOUNT against non-integer value (1 ms) +[ok]: BITCOUNT regression test for github issue #582 (0 ms) +[ok]: BITCOUNT misaligned prefix (1 ms) +[ok]: BITCOUNT misaligned prefix + full words + remainder (0 ms) +[ok]: BITOP NOT (empty string) (0 ms) +[ok]: BITOP NOT (known string) (1 ms) +[ok]: BITOP where dest and target are the same key (0 ms) +[ok]: BITOP AND|OR|XOR don't change the string with single input key (1 ms) +[ok]: BITOP missing key is considered a stream of zero (1 ms) +[ok]: BITOP shorter keys are zero-padded to the key with max length (1 ms) +[ok]: BITOP and fuzzing (127 ms) +[ok]: BITOP or fuzzing (158 ms) +[ok]: BITOP xor fuzzing (201 ms) +[ok]: BITOP NOT fuzzing (25 ms) +[ok]: BITOP with integer encoded source objects (1 ms) +[ok]: BITOP with non string source key (0 ms) +[ok]: BITOP with empty string after non empty string (issue #529) (1 ms) +[ok]: BITPOS against wrong type (0 ms) +[ok]: BITPOS will illegal arguments (1 ms) +[ok]: BITPOS against non-integer value (1 ms) +[ok]: BITPOS bit=0 with empty key returns 0 (1 ms) +[ok]: BITPOS bit=1 with empty key returns -1 (0 ms) +[ok]: BITPOS bit=0 with string less than 1 word works (0 ms) +[ok]: BITPOS bit=1 with string less than 1 word works (1 ms) +[ok]: BITPOS bit=0 starting at unaligned address (0 ms) +[ok]: BITPOS bit=1 starting at unaligned address (1 ms) +[ok]: BITPOS bit=0 unaligned+full word+reminder (2 ms) +[ok]: BITPOS bit=1 unaligned+full word+reminder (3 ms) +[ok]: BITPOS bit=1 returns -1 if string is all 0 bits (5 ms) +[ok]: BITPOS bit=0 works with intervals (2 ms) +[ok]: BITPOS bit=1 works with intervals (1 ms) +[ok]: BITPOS bit=0 changes behavior if end is given (0 ms) +[ok]: SETBIT/BITFIELD only increase dirty when the value changed (4 ms) +[ok]: BITPOS bit=1 fuzzy testing using SETBIT (272 ms) +[ok]: BITPOS bit=0 fuzzy testing using SETBIT (322 ms) +[ok]: BITPOS/BITCOUNT fuzzy testing using SETBIT (273 ms) +=== (bitops) Starting server 127.0.0.1:22080 ok +[ignore]: BIT pos larger than UINT_MAX: large memory flag not provided +[ignore]: SETBIT values larger than UINT32_MAX and lzf_compress/lzf_decompress correctly: large memory flag not provided +[64/91 done]: unit/bitops (4 seconds) +Testing unit/bitfield +=== (bitops) Starting server 127.0.0.1:22082 ok +[ok]: BITFIELD signed SET and GET basics (1 ms) +[ok]: BITFIELD unsigned SET and GET basics (1 ms) +[ok]: BITFIELD signed SET and GET together (0 ms) +[ok]: BITFIELD unsigned with SET, GET and INCRBY arguments (1 ms) +[ok]: BITFIELD with only key as argument (0 ms) +[ok]: BITFIELD # form (1 ms) +[ok]: BITFIELD basic INCRBY form (1 ms) +[ok]: BITFIELD chaining of multiple commands (1 ms) +[ok]: BITFIELD unsigned overflow wrap (1 ms) +[ok]: BITFIELD unsigned overflow sat (1 ms) +[ok]: BITFIELD signed overflow wrap (1 ms) +[ok]: BITFIELD signed overflow sat (1 ms) +[ok]: BITFIELD overflow detection fuzzing (494 ms) +[ok]: BITFIELD overflow wrap fuzzing (656 ms) +[ok]: BITFIELD regression for #3221 (0 ms) +[ok]: BITFIELD regression for #3564 (4 ms) +[ok]: BITFIELD_RO with only key as argument (0 ms) +[ok]: BITFIELD_RO fails when write option is used (1 ms) +=== (repl external:skip) Starting server 127.0.0.1:22084 ok +=== () Starting server 127.0.0.1:22086 ok +[ok]: BITFIELD: setup slave (1282 ms) +[ok]: BITFIELD: write on master, read on slave (2 ms) +[ok]: BITFIELD_RO with only key as argument on read-only replica (0 ms) +[ok]: BITFIELD_RO fails when write option is used on read-only replica (0 ms) +[65/91 done]: unit/bitfield (5 seconds) +Testing unit/geo +=== (geo) Starting server 127.0.0.1:22088 ok +[ok]: GEO with wrong type src key (3 ms) +[ok]: GEO with non existing src key (1 ms) +[ok]: GEO BYLONLAT with empty search (1 ms) +[ok]: GEO BYMEMBER with non existing member (1 ms) +[ok]: GEOADD create (0 ms) +[ok]: GEOADD update (0 ms) +[ok]: GEOADD update with CH option (1 ms) +[ok]: GEOADD update with NX option (0 ms) +[ok]: GEOADD update with XX option (1 ms) +[ok]: GEOADD update with CH NX option (0 ms) +[ok]: GEOADD update with CH XX option (1 ms) +[ok]: GEOADD update with XX NX option will return syntax error (0 ms) +[ok]: GEOADD update with invalid option (0 ms) +[ok]: GEOADD invalid coordinates (1 ms) +[ok]: GEOADD multi add (0 ms) +[ok]: Check geoset values (0 ms) +[ok]: GEORADIUS simple (sorted) (0 ms) +[ok]: GEORADIUS_RO simple (sorted) (0 ms) +[ok]: GEOSEARCH simple (sorted) (1 ms) +[ok]: GEOSEARCH FROMLONLAT and FROMMEMBER cannot exist at the same time (0 ms) +[ok]: GEOSEARCH FROMLONLAT and FROMMEMBER one must exist (0 ms) +[ok]: GEOSEARCH BYRADIUS and BYBOX cannot exist at the same time (1 ms) +[ok]: GEOSEARCH BYRADIUS and BYBOX one must exist (0 ms) +[ok]: GEOSEARCH with STOREDIST option (0 ms) +[ok]: GEORADIUS withdist (sorted) (1 ms) +[ok]: GEOSEARCH withdist (sorted) (0 ms) +[ok]: GEORADIUS with COUNT (1 ms) +[ok]: GEORADIUS with multiple WITH* tokens (1 ms) +[ok]: GEORADIUS with ANY not sorted by default (0 ms) +[ok]: GEORADIUS with ANY sorted by ASC (0 ms) +[ok]: GEORADIUS with ANY but no COUNT (1 ms) +[ok]: GEORADIUS with COUNT but missing integer argument (0 ms) +[ok]: GEORADIUS with COUNT DESC (0 ms) +[ok]: GEORADIUS HUGE, issue #2767 (1 ms) +[ok]: GEORADIUSBYMEMBER simple (sorted) (0 ms) +[ok]: GEORADIUSBYMEMBER_RO simple (sorted) (1 ms) +[ok]: GEORADIUSBYMEMBER search areas contain satisfied points in oblique direction (1 ms) +[ok]: GEORADIUSBYMEMBER crossing pole search (0 ms) +[ok]: GEOSEARCH FROMMEMBER simple (sorted) (1 ms) +[ok]: GEOSEARCH vs GEORADIUS (1 ms) +[ok]: GEOSEARCH non square, long and narrow (1 ms) +[ok]: GEOSEARCH corner point test (1 ms) +[ok]: GEORADIUSBYMEMBER withdist (sorted) (0 ms) +[ok]: GEOHASH is able to return geohash strings (0 ms) +[ok]: GEOHASH with only key as argument (1 ms) +[ok]: GEOPOS simple (1 ms) +[ok]: GEOPOS missing element (0 ms) +[ok]: GEOPOS with only key as argument (0 ms) +[ok]: GEODIST simple & unit (1 ms) +[ok]: GEODIST missing elements (1 ms) +[ok]: GEORADIUS STORE option: syntax error (1 ms) +[ok]: GEOSEARCHSTORE STORE option: syntax error (0 ms) +[ok]: GEORANGE STORE option: incompatible options (1 ms) +[ok]: GEORANGE STORE option: plain usage (1 ms) +[ok]: GEORADIUSBYMEMBER STORE/STOREDIST option: plain usage (2 ms) +[ok]: GEOSEARCHSTORE STORE option: plain usage (0 ms) +[ok]: GEORANGE STOREDIST option: plain usage (0 ms) +[ok]: GEOSEARCHSTORE STOREDIST option: plain usage (1 ms) +[ok]: GEORANGE STOREDIST option: COUNT ASC and DESC (2 ms) +[ok]: GEOSEARCH the box spans -180° or 180° (1 ms) +[ok]: GEOSEARCH with small distance (1 ms) +[ok]: GEOSEARCH fuzzy test - byradius (12148 ms) +[ok]: GEOSEARCH fuzzy test - bybox (9386 ms) +[ok]: GEOSEARCH box edges fuzzy test (70 ms) +[66/91 done]: unit/geo (22 seconds) +Testing unit/memefficiency +=== (memefficiency external:skip) Starting server 127.0.0.1:22090 ok +[ok]: Memory efficiency with values in range 32 (630 ms) +[ok]: Memory efficiency with values in range 64 (533 ms) +[ok]: Memory efficiency with values in range 128 (387 ms) +[ok]: Memory efficiency with values in range 1024 (430 ms) +[ok]: Memory efficiency with values in range 16384 (1063 ms) +=== (defrag external:skip cluster) Starting server 127.0.0.1:22092 ok +frag 1.53 +[ok]: Active defrag main dictionary: cluster (71596 ms) +used 80415824 +rss 81043456 +frag 1.01 +frag_bytes 447408 +used 53431192 +rss 79130624 +frag 1.48 +frag_bytes 25568360 +[ok]: Active defrag eval scripts: cluster (6700 ms) +frag 1.83 +[ok]: Active defrag big keys: cluster (31650 ms) +used 98406232 +rss 99627008 +frag 1.01 +frag_bytes 1069224 +used 71768248 +rss 99352576 +frag 1.38 +frag_bytes 27420488 +[ok]: Active defrag pubsub: cluster (69952 ms) +=== (defrag external:skip standalone) Starting server 127.0.0.1:22094 ok +frag 1.52 +[ok]: Active defrag main dictionary: standalone (81652 ms) +used 77985000 +rss 78544896 +frag 1.01 +frag_bytes 412440 +used 52116296 +rss 77398016 +frag 1.48 +frag_bytes 25179320 +[ok]: Active defrag eval scripts: standalone (5992 ms) [TIMEOUT]: clients state report follows. -sock56046e708570 => (IN PROGRESS) For unauthenticated clients output buffer is limited -Killing still running Redict server 1273309 +sock561016a0e1e0 => (IN PROGRESS) Active defrag big keys: standalone +Killing still running Redict server 581780 The End Execution time of different units: - 0 seconds - unit/printver - 34 seconds - unit/dump + 1 seconds - unit/printver + 33 seconds - unit/dump + 7 seconds - unit/auth + 2 seconds - unit/protocol + 2 seconds - unit/keyspace + 28 seconds - unit/scan + 4 seconds - unit/info + 0 seconds - unit/info-command + 15 seconds - unit/type/string + 1 seconds - unit/type/incr + 27 seconds - unit/type/list + 20 seconds - unit/type/list-2 + 55 seconds - unit/type/list-3 + 26 seconds - unit/type/set + 29 seconds - unit/type/zset + 6 seconds - unit/type/hash + 19 seconds - unit/type/stream + 10 seconds - unit/type/stream-cgroups + 15 seconds - unit/sort + 36 seconds - unit/expire + 38 seconds - unit/other + 19 seconds - unit/multi + 1 seconds - unit/quit + 80 seconds - unit/aofrw + 8 seconds - unit/acl + 1 seconds - unit/acl-v2 + 6 seconds - unit/latency-monitor + 27 seconds - integration/block-repl + 168 seconds - integration/replication + 12 seconds - integration/replication-2 + 12 seconds - integration/replication-3 + 24 seconds - integration/replication-4 + 191 seconds - integration/replication-psync + 19 seconds - integration/replication-buffer + 10 seconds - integration/shutdown + 31 seconds - integration/aof + 1 seconds - integration/aof-race + 19 seconds - integration/aof-multi-part + 9 seconds - integration/rdb + 17 seconds - integration/corrupt-dump + 20 seconds - integration/corrupt-dump-fuzzer + 0 seconds - integration/convert-zipmap-hash-on-load + 1 seconds - integration/convert-ziplist-hash-on-load + 0 seconds - integration/convert-ziplist-zset-on-load + 1 seconds - integration/logging + 47 seconds - integration/psync2 + 22 seconds - integration/psync2-reg + 17 seconds - integration/psync2-pingoff + 7 seconds - integration/psync2-master-restart + 5 seconds - integration/failover + 8 seconds - integration/redict-cli + 3 seconds - integration/redict-benchmark + 7 seconds - integration/dismiss-mem + 0 seconds - unit/pubsub + 2 seconds - unit/pubsubshard + 1 seconds - unit/slowlog + 16 seconds - unit/scripting + 6 seconds - unit/functions + 62 seconds - unit/maxmemory + 35 seconds - unit/introspection + 8 seconds - unit/introspection-2 + 2 seconds - unit/limits + 21 seconds - unit/obuf-limits + 4 seconds - unit/bitops + 5 seconds - unit/bitfield + 22 seconds - unit/geo !!! WARNING The following tests failed: +*** [err]: All time-to-live(TTL) in commands are propagated as absolute timestamp in milliseconds in AOF in tests/unit/expire.tcl +Expected '88' to be between to '90' and '98' (context: type eval line 100 cmd {assert_range [r ttl foo1] 90 98} proc ::test) *** [TIMEOUT]: clients state report follows. Cleanup: may take some time... OK timeout 30m ./runtest-cluster --tls || true @@ -854,795 +5424,748 @@ Starting redict #18 at port 30036 Starting redict #19 at port 30038 Testing unit: 00-base.tcl -00:20:55> (init) Restart killed instances: OK -00:20:55> Cluster nodes are reachable: OK -00:20:55> Cluster nodes hard reset: OK -00:21:00> Cluster Join and auto-discovery test: OK -00:21:02> Before slots allocation, all nodes report cluster failure: OK -00:21:02> Different nodes have different IDs: OK -00:21:02> It is possible to perform slot allocation: OK -00:21:03> After the join, every node gets a different config epoch: OK -00:21:03> Nodes should report cluster_state is ok now: OK -00:21:06> Sanity for CLUSTER COUNTKEYSINSLOT: OK -00:21:06> It is possible to write and read from the cluster: OK -00:21:06> CLUSTER RESET SOFT test: OK -00:21:07> Coverage: CLUSTER HELP: OK -00:21:07> Coverage: ASKING: OK -00:21:07> CLUSTER SLAVES and CLUSTER REPLICAS with zero replicas: OK +21:22:48> (init) Restart killed instances: OK +21:22:48> Cluster nodes are reachable: OK +21:22:48> Cluster nodes hard reset: OK +21:23:10> Cluster Join and auto-discovery test: OK +21:23:12> Before slots allocation, all nodes report cluster failure: OK +21:23:12> Different nodes have different IDs: OK +21:23:12> It is possible to perform slot allocation: OK +21:23:13> After the join, every node gets a different config epoch: OK +21:23:13> Nodes should report cluster_state is ok now: OK +21:23:16> Sanity for CLUSTER COUNTKEYSINSLOT: OK +21:23:16> It is possible to write and read from the cluster: OK +21:23:16> CLUSTER RESET SOFT test: OK +21:23:17> Coverage: CLUSTER HELP: OK +21:23:17> Coverage: ASKING: OK +21:23:17> CLUSTER SLAVES and CLUSTER REPLICAS with zero replicas: OK Testing unit: 01-faildet.tcl -00:21:07> (init) Restart killed instances: OK -00:21:07> Cluster nodes are reachable: OK -00:21:07> Cluster nodes hard reset: OK -00:21:08> Cluster Join and auto-discovery test: OK -00:21:11> Before slots allocation, all nodes report cluster failure: OK -00:21:11> Create a 5 nodes cluster: OK -00:21:15> Cluster should start ok: OK -00:21:15> Killing two slave nodes: OK -00:21:16> Cluster should be still up: OK -00:21:16> Killing one master node: OK -00:21:16> Cluster should be down now: OK -00:21:20> Restarting master node: OK -00:21:20> Cluster should be up again: OK +21:23:17> (init) Restart killed instances: OK +21:23:17> Cluster nodes are reachable: OK +21:23:17> Cluster nodes hard reset: OK +21:23:18> Cluster Join and auto-discovery test: OK +21:23:19> Before slots allocation, all nodes report cluster failure: OK +21:23:19> Create a 5 nodes cluster: OK +21:23:23> Cluster should start ok: OK +21:23:23> Killing two slave nodes: OK +21:23:24> Cluster should be still up: OK +21:23:24> Killing one master node: OK +21:23:24> Cluster should be down now: OK +21:23:28> Restarting master node: OK +21:23:30> Cluster should be up again: OK Testing unit: 02-failover.tcl -00:21:27> (init) Restart killed instances: redict/5 redict/6 OK -00:21:28> Cluster nodes are reachable: OK -00:21:28> Cluster nodes hard reset: OK -00:21:29> Cluster Join and auto-discovery test: OK -00:21:31> Before slots allocation, all nodes report cluster failure: OK -00:21:31> Create a 5 nodes cluster: OK -00:21:36> Cluster is up: OK -00:21:36> Cluster is writable: OK -00:21:36> Instance #5 is a slave: OK -00:21:36> Instance #5 synced with the master: OK -00:21:36> Killing one master node: OK -00:21:37> Wait for failover: OK -00:21:42> Cluster should eventually be up again: OK -00:21:43> Cluster is writable: OK -00:21:43> Instance #5 is now a master: OK -00:21:43> Restarting the previously killed master node: OK -00:21:43> Instance #0 gets converted into a slave: OK +21:23:35> (init) Restart killed instances: redict/5 redict/6 OK +21:23:37> Cluster nodes are reachable: OK +21:23:37> Cluster nodes hard reset: OK +21:23:42> Cluster Join and auto-discovery test: OK +21:23:45> Before slots allocation, all nodes report cluster failure: OK +21:23:45> Create a 5 nodes cluster: OK +21:23:49> Cluster is up: OK +21:23:49> Cluster is writable: OK +21:23:49> Instance #5 is a slave: OK +21:23:49> Instance #5 synced with the master: OK +21:23:49> Killing one master node: OK +21:23:50> Wait for failover: OK +21:23:57> Cluster should eventually be up again: OK +21:23:57> Cluster is writable: OK +21:23:57> Instance #5 is now a master: OK +21:23:57> Restarting the previously killed master node: OK +21:23:57> Instance #0 gets converted into a slave: OK Testing unit: 03-failover-loop.tcl -00:21:43> (init) Restart killed instances: OK -00:21:43> Cluster nodes are reachable: OK -00:21:44> Cluster nodes hard reset: OK -00:21:45> Cluster Join and auto-discovery test: OK -00:21:46> Before slots allocation, all nodes report cluster failure: OK -00:21:46> Create a 5 nodes cluster: OK -00:21:50> Cluster is up: OK +21:23:57> (init) Restart killed instances: OK +21:23:57> Cluster nodes are reachable: OK +21:23:57> Cluster nodes hard reset: OK +21:24:02> Cluster Join and auto-discovery test: OK +21:24:06> Before slots allocation, all nodes report cluster failure: OK +21:24:06> Create a 5 nodes cluster: OK +21:24:10> Cluster is up: OK --- Iteration 19 --- -00:21:51> Wait for slave of #0 to sync: OK -00:21:51> Cluster is writable before failover: OK -00:21:51> Terminating node #0: OK -00:21:53> Wait failover by #5 with old epoch 1: OK -00:21:57> Cluster should eventually be up again: OK -00:21:59> Cluster is writable again: OK -00:22:01> Restarting node #0: OK -00:22:01> Instance #0 is now a slave: OK -00:22:01> We can read back the value we set before: OK +21:24:10> Cluster is writable before failover: OK +21:24:10> Terminating node #8: OK +21:24:10> Cluster should eventually be up again: OK +21:24:10> Cluster is writable again: OK +21:24:10> Restarting node #8: OK +21:24:11> Instance #8 is now a slave: OK +21:24:11> We can read back the value we set before: OK --- Iteration 18 --- -00:22:03> Wait for slave of #5 to sync: OK -00:22:03> Cluster is writable before failover: OK -00:22:03> Terminating node #5: OK -00:22:04> Wait failover by #0 with old epoch 21: OK -00:22:09> Cluster should eventually be up again: OK -00:22:09> Cluster is writable again: OK -00:22:09> Restarting node #5: OK -00:22:09> Instance #5 is now a slave: OK -00:22:09> We can read back the value we set before: OK +21:24:11> Wait for slave of #3 to sync: OK +21:24:11> Cluster is writable before failover: OK +21:24:11> Terminating node #3: OK +21:24:12> Wait failover by #8 with old epoch 4: OK +21:24:16> Cluster should eventually be up again: OK +21:24:16> Cluster is writable again: OK +21:24:16> Restarting node #3: OK +21:24:16> Instance #3 is now a slave: OK +21:24:16> We can read back the value we set before: OK --- Iteration 17 --- -00:22:10> Wait for slave of #0 to sync: OK -00:22:10> Cluster is writable before failover: OK -00:22:10> Terminating node #0: OK -00:22:12> Wait failover by #5 with old epoch 22: OK -00:22:16> Cluster should eventually be up again: OK -00:22:17> Cluster is writable again: OK -00:22:20> Restarting node #0: OK -00:22:20> Instance #0 is now a slave: OK -00:22:20> We can read back the value we set before: OK +21:24:16> Cluster is writable before failover: OK +21:24:16> Terminating node #7: OK +21:24:16> Cluster should eventually be up again: OK +21:24:16> Cluster is writable again: OK +21:24:16> Restarting node #7: OK +21:24:17> Instance #7 is now a slave: OK +21:24:17> We can read back the value we set before: OK --- Iteration 16 --- -00:22:20> Cluster is writable before failover: OK -00:22:21> Terminating node #7: OK -00:22:23> Cluster should eventually be up again: OK -00:22:23> Cluster is writable again: OK -00:22:23> Restarting node #7: OK -00:22:23> Instance #7 is now a slave: OK -00:22:23> We can read back the value we set before: OK +21:24:17> Cluster is writable before failover: OK +21:24:17> Terminating node #6: OK +21:24:17> Cluster should eventually be up again: OK +21:24:17> Cluster is writable again: OK +21:24:17> Restarting node #6: OK +21:24:17> Instance #6 is now a slave: OK +21:24:17> We can read back the value we set before: OK --- Iteration 15 --- -00:22:23> Cluster is writable before failover: OK -00:22:24> Terminating node #9: OK -00:22:24> Cluster should eventually be up again: OK -00:22:24> Cluster is writable again: OK -00:22:24> Restarting node #9: OK -00:22:24> Instance #9 is now a slave: OK -00:22:24> We can read back the value we set before: OK +21:24:17> Wait for slave of #8 to sync: OK +21:24:17> Cluster is writable before failover: OK +21:24:17> Terminating node #8: OK +21:24:17> Wait failover by #3 with old epoch 21: OK +21:24:22> Cluster should eventually be up again: OK +21:24:23> Cluster is writable again: OK +21:24:23> Restarting node #8: OK +21:24:23> Instance #8 is now a slave: OK +21:24:23> We can read back the value we set before: OK --- Iteration 14 --- -00:22:24> Cluster is writable before failover: OK -00:22:25> Terminating node #9: OK -00:22:25> Cluster should eventually be up again: OK -00:22:25> Cluster is writable again: OK -00:22:25> Restarting node #9: OK -00:22:25> Instance #9 is now a slave: OK -00:22:25> We can read back the value we set before: OK +21:24:23> Wait for slave of #1 to sync: OK +21:24:23> Cluster is writable before failover: OK +21:24:23> Terminating node #1: OK +21:24:24> Wait failover by #6 with old epoch 2: OK +21:24:28> Cluster should eventually be up again: OK +21:24:28> Cluster is writable again: OK +21:24:29> Restarting node #1: OK +21:24:29> Instance #1 is now a slave: OK +21:24:29> We can read back the value we set before: OK --- Iteration 13 --- -00:22:26> Wait for slave of #1 to sync: OK -00:22:26> Cluster is writable before failover: OK -00:22:26> Terminating node #1: OK -00:22:34> Wait failover by #6 with old epoch 2: OK -00:22:34> Cluster should eventually be up again: OK -00:22:34> Cluster is writable again: OK -00:22:34> Restarting node #1: OK -00:22:42> Instance #1 is now a slave: OK -00:22:42> We can read back the value we set before: FAILED: Expected CLUSTERDOWN The cluster is down eq "5:rWSB7bX;hit]4b:9=;:0" (context: type eval line 4 cmd {assert {$err eq "$val:$i"}} proc ::test) -(Jumping to next unit after error) +21:24:29> Wait for slave of #6 to sync: OK +21:24:29> Cluster is writable before failover: OK +21:24:29> Terminating node #6: OK +21:24:30> Wait failover by #1 with old epoch 23: OK +21:24:36> Cluster should eventually be up again: OK +21:24:36> Cluster is writable again: OK +21:24:37> Restarting node #6: OK +21:24:40> Instance #6 is now a slave: OK +21:24:40> We can read back the value we set before: OK --- Iteration 12 --- -00:22:42> Wait for slave of #6 to sync: OK -00:22:42> Cluster is writable before failover: FAILED: Expected CLUSTERDOWN The cluster is down eq {OK} (context: type eval line 4 cmd {assert {$err eq {OK}}} proc ::test) -(Jumping to next unit after error) +21:24:41> Cluster is writable before failover: OK +21:24:41> Terminating node #7: OK +21:24:42> Cluster should eventually be up again: OK +21:24:43> Cluster is writable again: OK +21:24:43> Restarting node #7: OK +21:24:44> Instance #7 is now a slave: OK +21:24:44> We can read back the value we set before: OK --- Iteration 11 --- -00:22:42> Cluster is writable before failover: FAILED: Expected CLUSTERDOWN The cluster is down eq {OK} (context: type eval line 4 cmd {assert {$err eq {OK}}} proc ::test) -(Jumping to next unit after error) +21:24:44> Wait for slave of #0 to sync: OK +21:24:44> Cluster is writable before failover: OK +21:24:44> Terminating node #0: OK +21:24:45> Wait failover by #5 with old epoch 1: OK +21:24:50> Cluster should eventually be up again: OK +21:24:50> Cluster is writable again: OK +21:24:50> Restarting node #0: OK +21:24:50> Instance #0 is now a slave: OK +21:24:50> We can read back the value we set before: OK --- Iteration 10 --- -00:22:42> Cluster is writable before failover: FAILED: Expected CLUSTERDOWN The cluster is down eq {OK} (context: type eval line 4 cmd {assert {$err eq {OK}}} proc ::test) -(Jumping to next unit after error) +21:24:50> Cluster is writable before failover: OK +21:24:50> Terminating node #9: OK +21:24:50> Cluster should eventually be up again: OK +21:24:50> Cluster is writable again: OK +21:24:50> Restarting node #9: OK +21:24:51> Instance #9 is now a slave: OK +21:24:51> We can read back the value we set before: OK --- Iteration 9 --- -00:22:42> Wait for slave of #2 to sync: OK -00:22:42> Cluster is writable before failover: FAILED: Expected CLUSTERDOWN The cluster is down eq {OK} (context: type eval line 4 cmd {assert {$err eq {OK}}} proc ::test) -(Jumping to next unit after error) +21:24:51> Wait for slave of #2 to sync: OK +21:24:51> Cluster is writable before failover: OK +21:24:51> Terminating node #2: OK +21:24:52> Wait failover by #7 with old epoch 3: OK +21:24:56> Cluster should eventually be up again: OK +21:24:56> Cluster is writable again: OK +21:24:56> Restarting node #2: OK +21:24:57> Instance #2 is now a slave: OK +21:24:57> We can read back the value we set before: OK --- Iteration 8 --- -00:22:42> Wait for slave of #3 to sync: OK -00:22:42> Cluster is writable before failover: FAILED: Expected CLUSTERDOWN The cluster is down eq {OK} (context: type eval line 4 cmd {assert {$err eq {OK}}} proc ::test) -(Jumping to next unit after error) +21:24:57> Wait for slave of #5 to sync: OK +21:24:57> Cluster is writable before failover: OK +21:24:57> Terminating node #5: OK +21:24:58> Wait failover by #0 with old epoch 25: OK +21:25:04> Cluster should eventually be up again: OK +21:25:04> Cluster is writable again: OK +21:25:04> Restarting node #5: OK +21:25:04> Instance #5 is now a slave: OK +21:25:04> We can read back the value we set before: OK --- Iteration 7 --- -00:22:42> Cluster is writable before failover: FAILED: Expected CLUSTERDOWN The cluster is down eq {OK} (context: type eval line 4 cmd {assert {$err eq {OK}}} proc ::test) -(Jumping to next unit after error) +21:25:04> Cluster is writable before failover: OK +21:25:04> Terminating node #2: OK +21:25:04> Cluster should eventually be up again: OK +21:25:04> Cluster is writable again: OK +21:25:04> Restarting node #2: OK +21:25:04> Instance #2 is now a slave: OK +21:25:04> We can read back the value we set before: OK --- Iteration 6 --- -00:22:42> Cluster is writable before failover: FAILED: Expected CLUSTERDOWN The cluster is down eq {OK} (context: type eval line 4 cmd {assert {$err eq {OK}}} proc ::test) -(Jumping to next unit after error) +21:25:05> Wait for slave of #3 to sync: OK +21:25:05> Cluster is writable before failover: OK +21:25:05> Terminating node #3: OK +21:25:06> Wait failover by #8 with old epoch 22: OK +21:25:11> Cluster should eventually be up again: OK +21:25:11> Cluster is writable again: OK +21:25:11> Restarting node #3: OK +21:25:11> Instance #3 is now a slave: OK +21:25:11> We can read back the value we set before: OK --- Iteration 5 --- -00:22:43> Wait for slave of #6 to sync: OK -00:22:43> Cluster is writable before failover: FAILED: Expected CLUSTERDOWN The cluster is down eq {OK} (context: type eval line 4 cmd {assert {$err eq {OK}}} proc ::test) -(Jumping to next unit after error) +21:25:11> Cluster is writable before failover: OK +21:25:11> Terminating node #6: OK +21:25:11> Cluster should eventually be up again: OK +21:25:11> Cluster is writable again: OK +21:25:11> Restarting node #6: OK +21:25:11> Instance #6 is now a slave: OK +21:25:11> We can read back the value we set before: OK --- Iteration 4 --- -00:22:44> Wait for slave of #1 to sync: OK -00:22:44> Cluster is writable before failover: FAILED: Expected CLUSTERDOWN The cluster is down eq {OK} (context: type eval line 4 cmd {assert {$err eq {OK}}} proc ::test) -(Jumping to next unit after error) +21:25:11> Wait for slave of #8 to sync: OK +21:25:11> Cluster is writable before failover: OK +21:25:11> Terminating node #8: OK +21:25:12> Wait failover by #3 with old epoch 28: OK +21:25:18> Cluster should eventually be up again: OK +21:25:18> Cluster is writable again: OK +21:25:18> Restarting node #8: OK +21:25:19> Instance #8 is now a slave: OK +21:25:19> We can read back the value we set before: OK --- Iteration 3 --- -00:22:44> Cluster is writable before failover: FAILED: Expected CLUSTERDOWN The cluster is down eq {OK} (context: type eval line 4 cmd {assert {$err eq {OK}}} proc ::test) -(Jumping to next unit after error) +21:25:19> Cluster is writable before failover: OK +21:25:19> Terminating node #8: OK +21:25:19> Cluster should eventually be up again: OK +21:25:19> Cluster is writable again: OK +21:25:19> Restarting node #8: OK +21:25:19> Instance #8 is now a slave: OK +21:25:19> We can read back the value we set before: OK --- Iteration 2 --- -00:22:44> Cluster is writable before failover: FAILED: Expected CLUSTERDOWN The cluster is down eq {OK} (context: type eval line 4 cmd {assert {$err eq {OK}}} proc ::test) -(Jumping to next unit after error) +21:25:19> Wait for slave of #1 to sync: OK +21:25:19> Cluster is writable before failover: OK +21:25:19> Terminating node #1: OK +21:25:20> Wait failover by #6 with old epoch 24: OK +21:25:24> Cluster should eventually be up again: OK +21:25:24> Cluster is writable again: OK +21:25:24> Restarting node #1: OK +21:25:25> Instance #1 is now a slave: OK +21:25:25> We can read back the value we set before: OK --- Iteration 1 --- -00:22:44> Cluster is writable before failover: FAILED: Expected CLUSTERDOWN The cluster is down eq {OK} (context: type eval line 4 cmd {assert {$err eq {OK}}} proc ::test) -(Jumping to next unit after error) -00:22:44> Post condition: current_epoch >= my_epoch everywhere: OK +21:25:25> Wait for slave of #3 to sync: OK +21:25:25> Cluster is writable before failover: OK +21:25:25> Terminating node #3: OK +21:25:25> Wait failover by #8 with old epoch 29: OK +21:25:31> Cluster should eventually be up again: OK +21:25:31> Cluster is writable again: OK +21:25:31> Restarting node #3: OK +21:25:31> Instance #3 is now a slave: OK +21:25:31> We can read back the value we set before: OK +21:25:31> Post condition: current_epoch >= my_epoch everywhere: OK Testing unit: 04-resharding.tcl -00:22:44> (init) Restart killed instances: OK -00:22:44> Cluster nodes are reachable: OK -00:22:44> Cluster nodes hard reset: OK -00:22:45> Cluster Join and auto-discovery test: OK -00:22:49> Before slots allocation, all nodes report cluster failure: OK -00:22:49> Create a 5 nodes cluster: OK -00:22:54> Cluster is up: OK -00:22:54> Enable AOF in all the instances: OK +21:25:31> (init) Restart killed instances: OK +21:25:31> Cluster nodes are reachable: OK +21:25:31> Cluster nodes hard reset: OK +21:25:32> Cluster Join and auto-discovery test: OK +21:25:34> Before slots allocation, all nodes report cluster failure: OK +21:25:34> Create a 5 nodes cluster: OK +21:25:38> Cluster is up: OK +21:25:38> Enable AOF in all the instances: OK Testing TLS cluster on start node 127.0.0.1:30000, plaintext port 30001 -00:22:54> Cluster consistency during live resharding: WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW...Starting resharding...W...............................................................................................................................WW........W.......W...........................................................................W.................................................................................................................................................................................................................W..............................................................................................................................................................................................................W...........................................................................................................................................................................................................W.......................................................................................................................................................W...Starting resharding...W....................................................................................................................................................................................W.......................................................................................................................................................................................................................W.....................................................................................................................................................................................W..................................................................................W.................................................................................................................................................................................................................W............................................................................................................WWWW...Starting resharding...W....................................................................................................................................................W.....................................................................................................................................................................................................................................W.............................................................................................................................................W......................................................................................................................................................................................W...............................................................................................................................................................................................................................W......................................................WWWW...Starting resharding...W....................................................................................................................................................W...................................................................................................................................................................................................................................W..................................................................................................................................................................W........................................................................................................................................................W.......................................................................................................................................................................................................................................W...................................................................................WWWW...Starting resharding...W.....................................................................................................................W......................................................................................................................................................................W..............................................................................................................................................................................................................................W........................................................................................................................................................................W.................................................................W....................................................................................................................................................................................W.........................................................................................WWW...Starting resharding...W...........................................................................................................................W....................................................................................................................................................W..............................................................................................................................W...............W.............................W.............................................................................................................................................W.................................................................................................................................................................................................W........................................................W................................................................................................................................................................................W...Starting resharding...W.......................................................................................................................................W...............................................................................................................................................W.........................................W....................................................................W...............................................................................................................................WW......W.................W.....................................................................................................W................................................................................................................................................................................W......................................................................W..............................................................................................................W................WWWWWWW...Starting resharding...W.............................................................................................................................................................................W..........................................................................................................................................W...............................................................................................................................................................................W..........................................................................................................................................................................................W.............................................................................................................................................................W.......................................................................................................................................................................W................WWW...Starting resharding...W.................................................................................................................................................................................................W.......................................................................................................................W...................................................................................................................................................................................................................W...........................................W................................................................................................................................................W.......................................................................................................................................................................................................W............................................................................................................WWWOK -00:28:24> Verify 50000 keys for consistency with logical content: OK -00:29:07> Terminate and restart all the instances: OK -00:29:24> Cluster should eventually be up again: OK -00:29:25> Verify 50000 keys after the restart: OK -00:30:07> Disable AOF in all the instances: OK -00:30:07> Verify slaves consistency: OK -00:30:09> Dump sanitization was skipped for migrations: OK +21:25:38> Cluster consistency during live resharding: WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW...Starting resharding...W..........................................................................................W.......................................W.........WWWW.........WW.......WWWWWW......W.............W......WW..........W.............................................W................................................................................................................W........W......WWW.......WWWW......W...WWW.......WWW...........WW........WW.........W.........W......WWW.......WWWWW.......W..................WW.......W...................WW........W.......WW.......WWWW......WW......W.......WWWWW........W..........W........................................W.........................................................................................................W..........W........W.......................................................W...................................W..........................................................................................................................W.............................................................................WWWWWWWWW...Starting resharding...W.....................................................................................................................................W................W...........................................................................................................................W.................................................W........................................................................................................................................W............................W........................................................................................................................................................W.......................................................................................................................W.........................................................................................W.............................................................................................................................................................................OK +21:28:34> Verify 50000 keys for consistency with logical content: OK +21:28:43> Terminate and restart all the instances: OK +21:28:55> Cluster should eventually be up again: OK +21:28:57> Verify 50000 keys after the restart: OK +21:29:07> Disable AOF in all the instances: OK +21:29:07> Verify slaves consistency: OK +21:29:08> Dump sanitization was skipped for migrations: OK Testing unit: 05-slave-selection.tcl -00:30:09> (init) Restart killed instances: OK -00:30:09> Cluster nodes are reachable: OK -00:30:09> Cluster nodes hard reset: OK -00:30:13> Cluster Join and auto-discovery test: OK -00:30:16> Before slots allocation, all nodes report cluster failure: OK -00:30:16> Create a 5 nodes cluster: OK -00:30:22> Cluster is up: OK -00:30:22> The first master has actually two slaves: OK -00:30:22> CLUSTER SLAVES and CLUSTER REPLICAS output is consistent: OK -00:30:22> Slaves of #0 are instance #5 and #10 as expected: OK -00:30:22> Instance #5 and #10 synced with the master: OK -00:30:22> Slaves are both able to receive and acknowledge writes: OK -00:30:22> Write data while slave #10 is paused and can't receive it: OK -00:30:32> Wait for instance #5 (and not #10) to turn into a master: OK -00:30:37> Wait for the node #10 to return alive before ending the test: OK -00:30:37> Cluster should eventually be up again: OK -00:30:37> Node #10 should eventually replicate node #5: OK -00:30:37> (init) Restart killed instances: redict/0 OK -00:30:37> Cluster nodes are reachable: OK -00:30:37> Cluster nodes hard reset: OK -00:30:43> Cluster Join and auto-discovery test: OK -00:32:56> Before slots allocation, all nodes report cluster failure: OK -00:34:14> Create a 3 nodes cluster: OK -00:37:06> Cluster is up: OK -00:37:07> The first master has actually 5 slaves: OK -00:37:07> Slaves of #0 are instance #3, #6, #9, #12 and #15 as expected: OK -00:37:07> Instance #3, #6, #9, #12 and #15 synced with the master: OK -00:37:08> New Master down consecutively: FAILED: No failover detected when master 3 fails -(Jumping to next unit after error) -FAILED: caught an error in the test -assertion:No failover detected when master 3 fails +21:29:08> (init) Restart killed instances: OK +21:29:08> Cluster nodes are reachable: OK +21:29:08> Cluster nodes hard reset: OK +21:29:10> Cluster Join and auto-discovery test: OK +21:29:14> Before slots allocation, all nodes report cluster failure: OK +21:29:14> Create a 5 nodes cluster: OK +21:29:19> Cluster is up: OK +21:29:19> The first master has actually two slaves: OK +21:29:19> CLUSTER SLAVES and CLUSTER REPLICAS output is consistent: OK +21:29:19> Slaves of #0 are instance #5 and #10 as expected: OK +21:29:19> Instance #5 and #10 synced with the master: OK +21:29:19> Slaves are both able to receive and acknowledge writes: OK +21:29:19> Write data while slave #10 is paused and can't receive it: OK +21:29:29> Wait for instance #5 (and not #10) to turn into a master: OK +21:29:35> Wait for the node #10 to return alive before ending the test: OK +21:29:36> Cluster should eventually be up again: OK +21:29:36> Node #10 should eventually replicate node #5: OK +21:29:36> (init) Restart killed instances: redict/0 OK +21:29:36> Cluster nodes are reachable: OK +21:29:36> Cluster nodes hard reset: OK +21:29:37> Cluster Join and auto-discovery test: OK +21:29:43> Before slots allocation, all nodes report cluster failure: OK +21:29:43> Create a 3 nodes cluster: OK +21:29:59> Cluster is up: OK +21:29:59> The first master has actually 5 slaves: OK +21:29:59> Slaves of #0 are instance #3, #6, #9, #12 and #15 as expected: OK +21:29:59> Instance #3, #6, #9, #12 and #15 synced with the master: OK +21:29:59> New Master down consecutively: OK +Testing unit: 06-slave-stop-cond.tcl +21:30:49> (init) Restart killed instances: redict/0 redict/6 redict/9 redict/12 redict/15 OK +21:30:50> Cluster nodes are reachable: OK +21:30:50> Cluster nodes hard reset: OK +21:30:51> Cluster Join and auto-discovery test: OK +21:30:54> Before slots allocation, all nodes report cluster failure: OK +21:30:55> Create a 5 nodes cluster: OK +21:30:59> Cluster is up: OK +21:30:59> The first master has actually one slave: OK +21:30:59> Slaves of #0 is instance #5 as expected: OK +21:30:59> Instance #5 synced with the master: OK +21:30:59> Lower the slave validity factor of #5 to the value of 2: OK +21:30:59> Break master-slave link and prevent further reconnections: OK +21:31:19> Slave #5 is reachable and alive: OK +21:31:19> Slave #5 should not be able to failover: OK +21:31:29> Cluster should be down: OK +Testing unit: 07-replica-migration.tcl +21:31:30> (init) Restart killed instances: redict/0 OK +21:31:32> Cluster nodes are reachable: OK +21:31:32> Cluster nodes hard reset: OK +21:32:23> Cluster Join and auto-discovery test: OK +21:46:05> Before slots allocation, all nodes report cluster failure: OK +21:46:05> Create a 5 nodes cluster: FAILED: caught an error in the test ERR Unknown node bdc85140d8e3cd36ac200176a4fb7ed7db857971 +ERR Unknown node bdc85140d8e3cd36ac200176a4fb7ed7db857971 while executing -"error "assertion:$msg"" - (procedure "fail" line 2) +"[Rn $n] {*}$args" + (procedure "R" line 2) invoked from within -"fail "No failover detected when master $master_id fails"" - ("uplevel" body line 2) +"R $slave_id cluster replicate [dict get $master_myself id]" + (procedure "cluster_allocate_slaves" line 6) invoked from within -"uplevel 1 $elsescript" - (procedure "wait_for_condition" line 12) +"cluster_allocate_slaves $masters $slaves" + (procedure "create_cluster" line 4) invoked from within -"wait_for_condition 1000 50 { - [master_detected $instances] - } else { - fail "No failover detected when master $master_id f..." - ("uplevel" body line 21) +"create_cluster 5 10" + ("uplevel" body line 2) invoked from within "uplevel 1 $code" -Testing unit: 06-slave-stop-cond.tcl -00:42:32> (init) Restart killed instances: redict/0 redict/3 redict/6 OK -00:42:33> Cluster nodes are reachable: OK -00:42:33> Cluster nodes hard reset: OK -00:42:34> Cluster Join and auto-discovery test: OK -00:42:37> Before slots allocation, all nodes report cluster failure: OK -00:42:37> Create a 5 nodes cluster: OK -00:42:40> Cluster is up: OK -00:42:40> The first master has actually one slave: OK -00:42:40> Slaves of #0 is instance #5 as expected: OK -00:42:40> Instance #5 synced with the master: OK -00:42:40> Lower the slave validity factor of #5 to the value of 2: OK -00:42:40> Break master-slave link and prevent further reconnections: OK -00:43:01> Slave #5 is reachable and alive: OK -00:43:01> Slave #5 should not be able to failover: OK -00:43:11> Cluster should be down: OK -Testing unit: 07-replica-migration.tcl -00:43:11> (init) Restart killed instances: redict/0 OK -00:43:11> Cluster nodes are reachable: OK -00:43:11> Cluster nodes hard reset: OK -00:43:11> Cluster Join and auto-discovery test: OK -00:43:14> Before slots allocation, all nodes report cluster failure: OK -00:43:14> Create a 5 nodes cluster: OK -00:43:18> Cluster is up: OK -00:43:18> Each master should have two replicas attached: OK -00:43:18> Killing all the slaves of master #0 and #1: OK -00:43:23> Master #0 should have at least one replica: OK -00:43:29> Master #1 should have at least one replica: OK -00:43:29> Master #2 should have at least one replica: OK -00:43:29> Master #3 should have at least one replica: OK -00:43:29> Master #4 should have at least one replica: OK -00:43:29> (init) Restart killed instances: redict/5 redict/6 redict/10 redict/11 OK -00:43:36> Cluster nodes are reachable: OK -00:43:36> Cluster nodes hard reset: OK -00:43:51> Cluster Join and auto-discovery test: OK -00:43:55> Before slots allocation, all nodes report cluster failure: OK -00:43:55> Create a 5 nodes cluster: OK -00:43:58> Cluster is up: OK -00:43:58> Kill slave #7 of master #2. Only slave left is #12 now: OK -00:43:58> Killing master node #2, #12 should failover: OK -00:43:58> Wait for failover: OK -00:44:04> Cluster should eventually be up again: OK -00:44:04> Cluster is writable: OK -00:44:04> Instance 12 is now a master without slaves: OK -00:44:04> Master #12 should get at least one migrated replica: OK + (procedure "test" line 6) + invoked from within +"test "Create a 5 nodes cluster" { + create_cluster 5 10 +}" + (file "../tests/07-replica-migration.tcl" line 15) + invoked from within +"source $test " Testing unit: 08-update-msg.tcl -00:44:09> (init) Restart killed instances: redict/2 redict/7 OK -00:44:09> Cluster nodes are reachable: OK -00:44:09> Cluster nodes hard reset: OK -00:44:09> Cluster Join and auto-discovery test: OK -00:44:12> Before slots allocation, all nodes report cluster failure: OK -00:44:12> Create a 5 nodes cluster: OK -00:44:16> Cluster is up: OK -00:44:16> Cluster is writable: OK -00:44:17> Instance #5 is a slave: OK -00:44:17> Instance #5 synced with the master: OK -00:44:17> Killing one master node: OK -00:44:17> Wait for failover: OK -00:44:22> Cluster should eventually be up again: OK -00:44:22> Cluster is writable: OK -00:44:23> Instance #5 is now a master: OK -00:44:23> Killing the new master #5: OK -00:44:23> Cluster should be down now: OK -00:44:27> Restarting the old master node: OK -00:44:27> Instance #0 gets converted into a slave: OK -00:44:27> Restarting the new master node: OK -00:44:27> Cluster is up again: OK +21:46:05> (init) Restart killed instances: OK +21:46:05> Cluster nodes are reachable: OK +21:46:05> Cluster nodes hard reset: OK +21:46:06> Cluster Join and auto-discovery test: OK +21:46:08> Before slots allocation, all nodes report cluster failure: OK +21:46:08> Create a 5 nodes cluster: OK +21:46:12> Cluster is up: OK +21:46:12> Cluster is writable: OK +21:46:12> Instance #5 is a slave: OK +21:46:12> Instance #5 synced with the master: OK +21:46:12> Killing one master node: OK +21:46:13> Wait for failover: OK +21:46:19> Cluster should eventually be up again: OK +21:46:21> Cluster is writable: OK +21:46:21> Instance #5 is now a master: OK +21:46:21> Killing the new master #5: OK +21:46:22> Cluster should be down now: OK +21:46:26> Restarting the old master node: OK +21:46:26> Instance #0 gets converted into a slave: OK +21:46:26> Restarting the new master node: OK +21:46:26> Cluster is up again: OK Testing unit: 09-pubsub.tcl -00:44:34> (init) Restart killed instances: OK -00:44:34> Cluster nodes are reachable: OK -00:44:34> Cluster nodes hard reset: OK -00:44:34> Cluster Join and auto-discovery test: OK -00:44:36> Before slots allocation, all nodes report cluster failure: OK -00:44:36> Create a 5 nodes cluster: OK -00:44:40> Test publishing to master: OK -00:44:40> Test publishing to slave: OK +21:46:32> (init) Restart killed instances: OK +21:46:32> Cluster nodes are reachable: OK +21:46:32> Cluster nodes hard reset: OK +21:46:33> Cluster Join and auto-discovery test: OK +21:46:36> Before slots allocation, all nodes report cluster failure: OK +21:46:36> Create a 5 nodes cluster: OK +21:46:40> Test publishing to master: OK +21:46:40> Test publishing to slave: OK Testing unit: 10-manual-failover.tcl -00:44:40> (init) Restart killed instances: OK -00:44:40> Cluster nodes are reachable: OK -00:44:40> Cluster nodes hard reset: OK -00:44:40> Cluster Join and auto-discovery test: OK -00:44:43> Before slots allocation, all nodes report cluster failure: OK -00:44:43> Create a 5 nodes cluster: OK -00:44:47> Cluster is up: OK -00:44:47> Cluster is writable: OK -00:44:47> Instance #5 is a slave: OK -00:44:47> Instance #5 synced with the master: OK -00:44:48> Send CLUSTER FAILOVER to #5, during load: WWWWWWWWWWOK -00:44:52> Wait for failover: OK -00:44:52> Cluster should eventually be up again: OK -00:44:53> Cluster is writable: OK -00:44:53> Instance #5 is now a master: OK -00:44:53> Verify 50000 keys for consistency with logical content: OK -00:44:54> Instance #0 gets converted into a slave: OK -00:44:54> (init) Restart killed instances: OK -00:44:54> Cluster nodes are reachable: OK -00:44:54> Cluster nodes hard reset: OK -00:44:55> Cluster Join and auto-discovery test: OK -00:44:57> Before slots allocation, all nodes report cluster failure: OK -00:44:57> Create a 5 nodes cluster: OK -00:45:00> Cluster is up: OK -00:45:00> Cluster is writable: OK -00:45:01> Instance #5 is a slave: OK -00:45:01> Instance #5 synced with the master: OK -00:45:01> Make instance #0 unreachable without killing it: OK -00:45:01> Send CLUSTER FAILOVER to instance #5: OK -00:45:01> Instance #5 is still a slave after some time (no failover): OK -00:45:06> Wait for instance #0 to return back alive: OK -00:45:11> (init) Restart killed instances: OK -00:45:11> Cluster nodes are reachable: OK -00:45:11> Cluster nodes hard reset: OK -00:45:11> Cluster Join and auto-discovery test: OK -00:45:14> Before slots allocation, all nodes report cluster failure: OK -00:45:14> Create a 5 nodes cluster: OK -00:45:19> Cluster is up: OK -00:45:19> Cluster is writable: OK -00:45:19> Instance #5 is a slave: OK -00:45:19> Instance #5 synced with the master: OK -00:45:19> Make instance #0 unreachable without killing it: OK -00:45:19> Send CLUSTER FAILOVER to instance #5: OK -00:45:19> Instance #5 is a master after some time: OK -00:45:19> Wait for instance #0 to return back alive: OK +21:46:40> (init) Restart killed instances: OK +21:46:40> Cluster nodes are reachable: OK +21:46:40> Cluster nodes hard reset: OK +21:46:42> Cluster Join and auto-discovery test: OK +21:46:44> Before slots allocation, all nodes report cluster failure: OK +21:46:44> Create a 5 nodes cluster: OK +21:46:48> Cluster is up: OK +21:46:48> Cluster is writable: OK +21:46:48> Instance #5 is a slave: OK +21:46:48> Instance #5 synced with the master: OK +21:46:48> Send CLUSTER FAILOVER to #5, during load: WWWWWWWWWWOK +21:46:52> Wait for failover: OK +21:46:52> Cluster should eventually be up again: OK +21:46:52> Cluster is writable: OK +21:46:52> Instance #5 is now a master: OK +21:46:52> Verify 50000 keys for consistency with logical content: OK +21:46:54> Instance #0 gets converted into a slave: OK +21:46:54> (init) Restart killed instances: OK +21:46:54> Cluster nodes are reachable: OK +21:46:54> Cluster nodes hard reset: OK +21:46:54> Cluster Join and auto-discovery test: OK +21:46:57> Before slots allocation, all nodes report cluster failure: OK +21:46:57> Create a 5 nodes cluster: OK +21:47:01> Cluster is up: OK +21:47:01> Cluster is writable: OK +21:47:01> Instance #5 is a slave: OK +21:47:01> Instance #5 synced with the master: OK +21:47:01> Make instance #0 unreachable without killing it: OK +21:47:01> Send CLUSTER FAILOVER to instance #5: OK +21:47:01> Instance #5 is still a slave after some time (no failover): OK +21:47:06> Wait for instance #0 to return back alive: OK +21:47:11> (init) Restart killed instances: OK +21:47:11> Cluster nodes are reachable: OK +21:47:11> Cluster nodes hard reset: OK +21:47:12> Cluster Join and auto-discovery test: OK +21:47:15> Before slots allocation, all nodes report cluster failure: OK +21:47:15> Create a 5 nodes cluster: OK +21:47:19> Cluster is up: OK +21:47:19> Cluster is writable: OK +21:47:19> Instance #5 is a slave: OK +21:47:19> Instance #5 synced with the master: OK +21:47:19> Make instance #0 unreachable without killing it: OK +21:47:19> Send CLUSTER FAILOVER to instance #5: OK +21:47:19> Instance #5 is a master after some time: OK +21:47:19> Wait for instance #0 to return back alive: OK Testing unit: 11-manual-takeover.tcl -00:45:29> (init) Restart killed instances: OK -00:45:29> Cluster nodes are reachable: OK -00:45:36> Cluster nodes hard reset: OK -00:45:38> Cluster Join and auto-discovery test: OK -00:45:42> Before slots allocation, all nodes report cluster failure: OK -00:45:42> Create a 5 nodes cluster: OK -00:45:46> Cluster is up: OK -00:45:46> Cluster is writable: OK -00:45:46> Killing majority of master nodes: OK -00:45:48> Cluster should eventually be down: OK -00:45:52> Use takeover to bring slaves back: OK -00:45:52> Cluster should eventually be up again: OK -00:45:55> Cluster is writable: OK -00:45:55> Instance #5, #6, #7 are now masters: OK -00:45:55> Restarting the previously killed master nodes: OK -00:45:55> Instance #0, #1, #2 gets converted into a slaves: OK +21:47:29> (init) Restart killed instances: OK +21:47:29> Cluster nodes are reachable: OK +21:47:29> Cluster nodes hard reset: OK +21:47:30> Cluster Join and auto-discovery test: OK +21:47:33> Before slots allocation, all nodes report cluster failure: OK +21:47:33> Create a 5 nodes cluster: OK +21:47:37> Cluster is up: OK +21:47:37> Cluster is writable: OK +21:47:37> Killing majority of master nodes: OK +21:47:38> Cluster should eventually be down: OK +21:47:42> Use takeover to bring slaves back: OK +21:47:42> Cluster should eventually be up again: OK +21:47:42> Cluster is writable: OK +21:47:42> Instance #5, #6, #7 are now masters: OK +21:47:42> Restarting the previously killed master nodes: OK +21:47:42> Instance #0, #1, #2 gets converted into a slaves: OK Testing unit: 12-replica-migration-2.tcl -00:45:55> (init) Restart killed instances: OK -00:45:55> Cluster nodes are reachable: OK -00:45:55> Cluster nodes hard reset: OK -00:45:56> Cluster Join and auto-discovery test: OK -00:45:57> Before slots allocation, all nodes report cluster failure: OK -00:45:57> Create a 5 nodes cluster: OK -00:46:00> Cluster is up: OK -00:46:00> Each master should have at least two replicas attached: OK -00:46:00> Set allow-replica-migration yes: OK -00:46:00> Resharding all the master #0 slots away from it: >>> Performing Cluster Check (using node 127.0.0.1:30000) +21:47:42> (init) Restart killed instances: OK +21:47:42> Cluster nodes are reachable: OK +21:47:42> Cluster nodes hard reset: OK +21:47:43> Cluster Join and auto-discovery test: OK +21:47:45> Before slots allocation, all nodes report cluster failure: OK +21:47:45> Create a 5 nodes cluster: OK +21:47:48> Cluster is up: OK +21:47:48> Each master should have at least two replicas attached: OK +21:47:48> Set allow-replica-migration yes: OK +21:47:48> Resharding all the master #0 slots away from it: >>> Performing Cluster Check (using node 127.0.0.1:30000) [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered. >>> Rebalancing across 5 nodes. Total weight = 4.00 +Moving 820 slots from 127.0.0.1:30000 to 127.0.0.1:30002 +#################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################### Moving 820 slots from 127.0.0.1:30000 to 127.0.0.1:30006 #################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################### Moving 820 slots from 127.0.0.1:30000 to 127.0.0.1:30004 #################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################### -Moving 820 slots from 127.0.0.1:30000 to 127.0.0.1:30002 -#################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################### Moving 816 slots from 127.0.0.1:30000 to 127.0.0.1:30008 ################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################ OK -00:46:44> Master #0 who lost all slots should turn into a replica without replicas: OK -00:46:44> Resharding back some slot to master #0: >>> Performing Cluster Check (using node 127.0.0.1:30000) +21:48:21> Master #0 who lost all slots should turn into a replica without replicas: OK +21:48:21> Resharding back some slot to master #0: >>> Performing Cluster Check (using node 127.0.0.1:30000) [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered. *** No rebalancing needed! All nodes are within the 2.00% threshold. OK -00:46:54> Master #0 should re-acquire one or more replicas: OK +21:48:31> Master #0 should re-acquire one or more replicas: OK Testing unit: 12.1-replica-migration-3.tcl -00:46:54> (init) Restart killed instances: OK -00:46:54> Cluster nodes are reachable: OK -00:46:54> Cluster nodes hard reset: OK -00:46:55> Cluster Join and auto-discovery test: OK -00:46:58> Before slots allocation, all nodes report cluster failure: OK -00:46:58> Create a 5 nodes cluster: OK -00:47:02> Cluster is up: OK -00:47:02> Each master should have at least two replicas attached: OK -00:47:02> Set allow-replica-migration no: OK -00:47:02> Resharding all the master #0 slots away from it: >>> Performing Cluster Check (using node 127.0.0.1:30000) +21:48:31> (init) Restart killed instances: OK +21:48:31> Cluster nodes are reachable: OK +21:48:31> Cluster nodes hard reset: OK +21:48:56> Cluster Join and auto-discovery test: OK +21:48:59> Before slots allocation, all nodes report cluster failure: OK +21:48:59> Create a 5 nodes cluster: OK +21:49:03> Cluster is up: OK +21:49:03> Each master should have at least two replicas attached: OK +21:49:03> Set allow-replica-migration no: OK +21:49:03> Resharding all the master #0 slots away from it: >>> Performing Cluster Check (using node 127.0.0.1:30000) [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered. >>> Rebalancing across 5 nodes. Total weight = 4.00 -Moving 820 slots from 127.0.0.1:30000 to 127.0.0.1:30004 -#################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################### Moving 820 slots from 127.0.0.1:30000 to 127.0.0.1:30002 #################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################### Moving 820 slots from 127.0.0.1:30000 to 127.0.0.1:30006 #################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################### +Moving 820 slots from 127.0.0.1:30000 to 127.0.0.1:30004 +#################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################### Moving 816 slots from 127.0.0.1:30000 to 127.0.0.1:30008 -################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################ -OK -00:47:48> Wait cluster to be stable: OK -00:47:48> Master #0 still should have its replicas: OK -00:47:48> Each master should have at least two replicas attached: OK -Testing unit: 13-no-failover-option.tcl -00:47:48> (init) Restart killed instances: OK -00:47:48> Cluster nodes are reachable: OK -00:47:48> Cluster nodes hard reset: OK -00:47:49> Cluster Join and auto-discovery test: OK -00:47:52> Before slots allocation, all nodes report cluster failure: OK -00:47:52> Create a 5 nodes cluster: OK -00:47:56> Cluster is up: OK -00:47:56> Cluster is writable: OK -00:47:57> Instance #5 is a slave: OK -00:47:57> Instance #5 synced with the master: OK -00:47:57> The nofailover flag is propagated: OK -00:47:58> Killing one master node: OK -00:47:58> Cluster should be still down after some time: OK -00:48:08> Instance #5 is still a slave: OK -00:48:08> Restarting the previously killed master node: OK -Testing unit: 14-consistency-check.tcl -00:48:09> (init) Restart killed instances: OK -00:48:09> Cluster nodes are reachable: OK -00:48:09> Cluster nodes hard reset: OK -00:48:09> Cluster Join and auto-discovery test: OK -00:48:14> Before slots allocation, all nodes report cluster failure: OK -00:48:14> Create a 5 nodes cluster: OK -00:48:18> Cluster should start ok: OK -00:48:18> Cluster is writable: OK -00:48:19> Slave expired keys is loaded when restarted: appendonly=no: OK -00:48:22> Slave expired keys is loaded when restarted: appendonly=yes: OK -Testing unit: 15-cluster-slots.tcl -00:48:28> (init) Restart killed instances: OK -00:48:28> Cluster nodes are reachable: OK -00:48:28> Cluster nodes hard reset: OK -00:48:31> Cluster Join and auto-discovery test: OK -00:48:35> Before slots allocation, all nodes report cluster failure: OK -00:48:35> Create a 5 nodes cluster: OK -00:48:38> Cluster is up: OK -00:48:38> Cluster is writable: OK -00:48:38> Instance #5 is a slave: OK -00:48:38> client do not break when cluster slot: OK -00:48:45> client can handle keys with hash tag: OK -00:48:45> slot migration is valid from primary to another primary: OK -00:48:46> slot migration is invalid from primary to replica: {7ac892643f5c51bd288d3e339ed768662530f379 127.0.0.1:30030@40030 slave 11e95be32bee2d490b4197952b40e25c93d70b88 0 1794746925319 1 connected} {cbb5c04d8c45cb65cae36912479e47e0ffa9aa8e 127.0.0.1:30010@40010 slave,nofailover 11e95be32bee2d490b4197952b40e25c93d70b88 0 1794746925017 1 connected} {380219c6dac677b4b53f346b18aa4836b4edf441 127.0.0.1:30020@40020 slave 11e95be32bee2d490b4197952b40e25c93d70b88 0 1794746925000 1 connected} -7ac892643f5c51bd288d3e339ed768662530f379 -OK -00:48:46> slot must be unbound on the owner when it is deleted: OK -00:49:13> CLUSTER SLOTS from non-TLS client in TLS cluster: OK -Testing unit: 16-transactions-on-replica.tcl -00:49:23> (init) Restart killed instances: OK -00:49:23> Cluster nodes are reachable: OK -00:49:23> Cluster nodes hard reset: OK -00:49:24> Cluster Join and auto-discovery test: OK -00:49:27> Before slots allocation, all nodes report cluster failure: OK -00:49:27> Create a primary with a replica: OK -00:49:31> Cluster should start ok: OK -00:49:31> Can't read from replica without READONLY: OK -00:49:31> Can't read from replica after READWRITE: OK -00:49:31> Can read from replica after READONLY: OK -00:49:31> Can perform HSET primary and HGET from replica: OK -00:49:31> Can MULTI-EXEC transaction of HGET operations from replica: OK -00:49:31> MULTI-EXEC with write operations is MOVED: OK -00:49:31> read-only blocking operations from replica: OK -00:49:31> reply MOVED when eval from replica for update: OK -Testing unit: 17-diskless-load-swapdb.tcl -00:49:31> (init) Restart killed instances: OK -00:49:31> Cluster nodes are reachable: OK -00:49:31> Cluster nodes hard reset: OK -00:49:32> Cluster Join and auto-discovery test: OK -00:49:37> Before slots allocation, all nodes report cluster failure: OK -00:49:37> Create a primary with a replica: OK -00:49:41> Cluster should start ok: OK -00:49:41> Cluster is writable: OK -00:49:41> Main db not affected when fail to diskless load: Waiting for process 1453948 to exit... -OK -Testing unit: 18-info.tcl -00:50:14> (init) Restart killed instances: redict/0 OK -00:50:14> Cluster nodes are reachable: OK -00:50:14> Cluster nodes hard reset: OK -00:50:14> Cluster Join and auto-discovery test: OK -00:50:17> Before slots allocation, all nodes report cluster failure: OK -00:50:17> Create a primary with a replica: OK -00:50:21> Cluster should start ok: OK -00:50:21> errorstats: rejected call due to MOVED Redirection: OK -Testing unit: 19-cluster-nodes-slots.tcl -00:50:21> (init) Restart killed instances: OK -00:50:21> Cluster nodes are reachable: OK -00:50:21> Cluster nodes hard reset: OK -00:50:22> Cluster Join and auto-discovery test: OK -00:50:24> Before slots allocation, all nodes report cluster failure: OK -00:50:24> Create a 2 nodes cluster: OK -00:50:28> Cluster should start ok: OK -00:50:28> Continuous slots distribution: OK -00:50:28> Discontinuous slots distribution: OK -Testing unit: 20-half-migrated-slot.tcl -Testing unit: 21-many-slot-migration.tcl -Testing unit: 22-replica-in-sync.tcl -00:50:28> (init) Restart killed instances: OK -00:50:28> Cluster nodes are reachable: OK -00:50:28> Cluster nodes hard reset: OK -00:50:29> Cluster Join and auto-discovery test: OK -00:50:31> Before slots allocation, all nodes report cluster failure: OK -00:50:31> Create a 1 node cluster: OK -00:50:36> Cluster is up: OK -00:50:36> Cluster is writable: OK -00:50:36> Fill up primary with data: OK -00:50:36> Add new node as replica: OK -00:50:36> Check digest and replica state: OK -00:50:37> Replica in loading state is hidden: OK -00:50:42> Check disconnected replica not hidden from slots: OK -Testing unit: 25-pubsubshard-slot-migration.tcl -00:50:44> (init) Restart killed instances: OK -00:50:44> Cluster nodes are reachable: OK -00:50:44> Cluster nodes hard reset: OK -00:50:44> Cluster Join and auto-discovery test: OK -00:50:47> Before slots allocation, all nodes report cluster failure: OK -00:50:47> Create a 3 nodes cluster: ./runtest-sentinel || true -Starting sentinel #0 at port 20000 -Starting sentinel #1 at port 20001 -Starting sentinel #2 at port 20002 -Starting sentinel #3 at port 20003 -Starting sentinel #4 at port 20004 +##############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################./runtest-sentinel || true +Starting sentinel #0 at port 20002 +Starting sentinel #1 at port 20003 +Starting sentinel #2 at port 20004 +Starting sentinel #3 at port 20005 +Starting sentinel #4 at port 20006 Starting redict #0 at port 30000 Starting redict #1 at port 30001 Starting redict #2 at port 30002 Starting redict #3 at port 30003 Starting redict #4 at port 30004 Testing unit: 00-base.tcl -00:50:51> (start-init) Flush config and compare rewrite config file lines: OK -00:50:51> (init) Restart killed instances: OK -00:50:51> (init) Remove old master entry from sentinels: OK -00:50:51> (init) Create a master-slaves cluster of 5 instances: OK -00:50:51> (init) Sentinels can start monitoring a master: OK -00:50:51> (init) Sentinels can talk with the master: OK -00:50:51> (init) Sentinels are able to auto-discover other sentinels: OK -00:50:53> (init) Sentinels are able to auto-discover slaves: OK -00:50:53> Sentinel command flag infrastructure works correctly: OK -00:50:53> SENTINEL HELP output the sentinel subcommand help: OK -00:50:53> SENTINEL MYID return the sentinel instance ID: OK -00:50:53> SENTINEL INFO CACHE returns the cached info: OK -00:50:53> SENTINEL PENDING-SCRIPTS returns the information about pending scripts: OK -00:50:53> SENTINEL MASTERS returns a list of monitored masters: OK -00:50:53> SENTINEL SENTINELS returns a list of sentinel instances: OK -00:50:53> SENTINEL SLAVES returns a list of the monitored replicas: OK -00:50:53> SENTINEL SIMULATE-FAILURE HELP list supported flags: OK -00:50:53> Basic failover works if the master is down: OK -00:50:57> New master 127.0.0.1:30003 role matches: OK -00:50:57> All the other slaves now point to the new master: OK -00:50:57> The old master eventually gets reconfigured as a slave: OK -00:51:08> ODOWN is not possible without N (quorum) Sentinels reports: OK -00:51:09> Failover is not possible without majority agreement: OK -00:51:10> Failover works if we configure for absolute agreement: OK -00:51:14> New master 127.0.0.1:30001 role matches: OK -00:51:14> SENTINEL RESET can resets the master: OK +21:51:40> (start-init) Flush config and compare rewrite config file lines: OK +21:51:40> (init) Restart killed instances: OK +21:51:40> (init) Remove old master entry from sentinels: OK +21:51:40> (init) Create a master-slaves cluster of 5 instances: OK +21:51:40> (init) Sentinels can start monitoring a master: OK +21:51:40> (init) Sentinels can talk with the master: OK +21:51:40> (init) Sentinels are able to auto-discover other sentinels: OK +21:51:45> (init) Sentinels are able to auto-discover slaves: OK +21:51:45> Sentinel command flag infrastructure works correctly: OK +21:51:45> SENTINEL HELP output the sentinel subcommand help: OK +21:51:45> SENTINEL MYID return the sentinel instance ID: OK +21:51:45> SENTINEL INFO CACHE returns the cached info: OK +21:51:45> SENTINEL PENDING-SCRIPTS returns the information about pending scripts: OK +21:51:45> SENTINEL MASTERS returns a list of monitored masters: OK +21:51:45> SENTINEL SENTINELS returns a list of sentinel instances: OK +21:51:45> SENTINEL SLAVES returns a list of the monitored replicas: OK +21:51:45> SENTINEL SIMULATE-FAILURE HELP list supported flags: OK +21:51:45> Basic failover works if the master is down: OK +21:51:51> New master 127.0.0.1:30003 role matches: OK +21:51:51> All the other slaves now point to the new master: OK +21:51:51> The old master eventually gets reconfigured as a slave: OK +21:52:02> ODOWN is not possible without N (quorum) Sentinels reports: OK +21:52:06> Failover is not possible without majority agreement: OK +21:52:13> Failover works if we configure for absolute agreement: OK +21:52:42> New master 127.0.0.1:30001 role matches: OK +21:52:42> SENTINEL RESET can resets the master: OK Testing unit: 01-conf-update.tcl -00:51:14> (init) Restart killed instances: OK -00:51:14> (init) Remove old master entry from sentinels: OK -00:51:14> (init) Create a master-slaves cluster of 5 instances: OK -00:51:14> (init) Sentinels can start monitoring a master: OK -00:51:15> (init) Sentinels can talk with the master: OK -00:51:15> (init) Sentinels are able to auto-discover other sentinels: OK -00:51:17> (init) Sentinels are able to auto-discover slaves: OK -00:51:17> We can failover with Sentinel 1 crashed: OK -00:51:21> After Sentinel 1 is restarted, its config gets updated: OK -00:51:21> New master 127.0.0.1:30003 role matches: OK -00:51:21> Update log level: OK +21:52:42> (init) Restart killed instances: OK +21:52:42> (init) Remove old master entry from sentinels: OK +21:52:42> (init) Create a master-slaves cluster of 5 instances: OK +21:52:42> (init) Sentinels can start monitoring a master: OK +21:52:49> (init) Sentinels can talk with the master: OK +21:52:49> (init) Sentinels are able to auto-discover other sentinels: OK +21:52:49> (init) Sentinels are able to auto-discover slaves: OK +21:52:49> We can failover with Sentinel 1 crashed: OK +21:52:56> After Sentinel 1 is restarted, its config gets updated: OK +21:52:57> New master 127.0.0.1:30003 role matches: OK +21:52:57> Update log level: OK Testing unit: 02-slaves-reconf.tcl -00:51:21> (init) Restart killed instances: OK -00:51:21> (init) Remove old master entry from sentinels: OK -00:51:21> (init) Create a master-slaves cluster of 5 instances: OK -00:51:21> (init) Sentinels can start monitoring a master: OK -00:51:22> (init) Sentinels can talk with the master: OK -00:51:22> (init) Sentinels are able to auto-discover other sentinels: OK -00:51:24> (init) Sentinels are able to auto-discover slaves: OK -00:51:24> Check that slaves replicate from current master: OK -00:51:24> Crash the master and force a failover: OK -00:51:49> Check that slaves replicate from current master: OK -00:52:00> Kill a slave instance: OK -00:52:00> Crash the master and force a failover: OK -00:52:04> Check that slaves replicate from current master: OK -00:52:04> Wait for failover to end: OK -00:52:05> Restart killed slave and test replication of slaves again...: OK -00:52:05> Check that slaves replicate from current master: OK +21:53:02> (init) Restart killed instances: OK +21:53:02> (init) Remove old master entry from sentinels: OK +21:53:03> (init) Create a master-slaves cluster of 5 instances: OK +21:53:03> (init) Sentinels can start monitoring a master: OK +21:53:08> (init) Sentinels can talk with the master: OK +21:53:08> (init) Sentinels are able to auto-discover other sentinels: OK +21:53:08> (init) Sentinels are able to auto-discover slaves: OK +21:53:08> Check that slaves replicate from current master: OK +21:53:08> Crash the master and force a failover: OK +21:53:13> Check that slaves replicate from current master: OK +21:53:24> Kill a slave instance: OK +21:53:24> Crash the master and force a failover: OK +21:53:28> Check that slaves replicate from current master: OK +21:53:30> Wait for failover to end: OK +21:53:30> Restart killed slave and test replication of slaves again...: OK +21:53:30> Check that slaves replicate from current master: OK Testing unit: 03-runtime-reconf.tcl -00:52:15> (init) Restart killed instances: OK -00:52:15> (init) Remove old master entry from sentinels: OK -00:52:15> (init) Create a master-slaves cluster of 5 instances: OK -00:52:15> (init) Sentinels can start monitoring a master: OK -00:52:16> (init) Sentinels can talk with the master: OK -00:52:16> (init) Sentinels are able to auto-discover other sentinels: OK -00:52:16> (init) Sentinels are able to auto-discover slaves: OK -00:52:16> Sentinels (re)connection following SENTINEL SET mymaster auth-pass: OK -00:52:17> Sentinels (re)connection following master ACL change: OK -00:52:19> Set parameters in normal case: OK -00:52:19> Set parameters in normal case with bad format: OK -00:52:19> Sentinel Set with other error situations: OK +21:53:40> (init) Restart killed instances: OK +21:53:40> (init) Remove old master entry from sentinels: OK +21:53:41> (init) Create a master-slaves cluster of 5 instances: OK +21:53:41> (init) Sentinels can start monitoring a master: OK +21:53:44> (init) Sentinels can talk with the master: OK +21:53:44> (init) Sentinels are able to auto-discover other sentinels: OK +21:53:44> (init) Sentinels are able to auto-discover slaves: OK +21:53:44> Sentinels (re)connection following SENTINEL SET mymaster auth-pass: OK +21:53:46> Sentinels (re)connection following master ACL change: OK +21:53:50> Set parameters in normal case: OK +21:53:52> Set parameters in normal case with bad format: OK +21:53:52> Sentinel Set with other error situations: OK Testing unit: 04-slave-selection.tcl Testing unit: 05-manual.tcl -00:52:19> (init) Restart killed instances: OK -00:52:19> (init) Remove old master entry from sentinels: OK -00:52:19> (init) Create a master-slaves cluster of 5 instances: OK -00:52:19> (init) Sentinels can start monitoring a master: OK -00:52:19> (init) Sentinels can talk with the master: OK -00:52:19> (init) Sentinels are able to auto-discover other sentinels: OK -00:52:21> (init) Sentinels are able to auto-discover slaves: OK -00:52:21> Manual failover works: OK -00:52:22> New master 127.0.0.1:30003 role matches: OK -00:52:22> All the other slaves now point to the new master: OK -00:52:22> The old master eventually gets reconfigured as a slave: OK -00:52:26> (init) Restart killed instances: OK -00:52:26> (init) Remove old master entry from sentinels: OK -00:52:27> (init) Create a master-slaves cluster of 5 instances: OK -00:52:27> (init) Sentinels can start monitoring a master: OK -00:52:27> (init) Sentinels can talk with the master: OK -00:52:27> (init) Sentinels are able to auto-discover other sentinels: OK -00:52:28> (init) Sentinels are able to auto-discover slaves: OK -00:52:28> SENTINEL SIMULATE-FAILURE crash-after-election works: OK -00:52:28> (init) Restart killed instances: OK -00:52:28> (init) Remove old master entry from sentinels: OK -00:52:28> (init) Create a master-slaves cluster of 5 instances: OK -00:52:28> (init) Sentinels can start monitoring a master: OK -00:52:28> (init) Sentinels can talk with the master: OK -00:52:28> (init) Sentinels are able to auto-discover other sentinels: OK -00:52:30> (init) Sentinels are able to auto-discover slaves: OK -00:52:30> SENTINEL SIMULATE-FAILURE crash-after-promotion works: OK +21:53:52> (init) Restart killed instances: OK +21:53:52> (init) Remove old master entry from sentinels: OK +21:53:53> (init) Create a master-slaves cluster of 5 instances: OK +21:53:53> (init) Sentinels can start monitoring a master: OK +21:53:57> (init) Sentinels can talk with the master: OK +21:53:57> (init) Sentinels are able to auto-discover other sentinels: OK +21:53:57> (init) Sentinels are able to auto-discover slaves: OK +21:53:57> Manual failover works: OK +21:53:58> New master 127.0.0.1:30002 role matches: OK +21:53:58> All the other slaves now point to the new master: OK +21:53:58> The old master eventually gets reconfigured as a slave: OK +21:54:03> (init) Restart killed instances: OK +21:54:03> (init) Remove old master entry from sentinels: OK +21:54:05> (init) Create a master-slaves cluster of 5 instances: OK +21:54:05> (init) Sentinels can start monitoring a master: OK +21:54:09> (init) Sentinels can talk with the master: OK +21:54:09> (init) Sentinels are able to auto-discover other sentinels: OK +21:54:09> (init) Sentinels are able to auto-discover slaves: OK +21:54:09> SENTINEL SIMULATE-FAILURE crash-after-election works: OK +21:54:09> (init) Restart killed instances: OK +21:54:09> (init) Remove old master entry from sentinels: OK +21:54:09> (init) Create a master-slaves cluster of 5 instances: OK +21:54:09> (init) Sentinels can start monitoring a master: OK +21:54:11> (init) Sentinels can talk with the master: OK +21:54:11> (init) Sentinels are able to auto-discover other sentinels: OK +21:54:11> (init) Sentinels are able to auto-discover slaves: OK +21:54:11> SENTINEL SIMULATE-FAILURE crash-after-promotion works: OK Testing unit: 06-ckquorum.tcl -00:52:31> (init) Restart killed instances: OK -00:52:31> (init) Remove old master entry from sentinels: OK -00:52:31> (init) Create a master-slaves cluster of 5 instances: OK -00:52:31> (init) Sentinels can start monitoring a master: OK -00:52:32> (init) Sentinels can talk with the master: OK -00:52:32> (init) Sentinels are able to auto-discover other sentinels: OK -00:52:34> (init) Sentinels are able to auto-discover slaves: OK -00:52:34> CKQUORUM reports OK and the right amount of Sentinels: OK -00:52:34> CKQUORUM detects quorum cannot be reached: OK -00:52:34> CKQUORUM detects failover authorization cannot be reached: OK +21:54:13> (init) Restart killed instances: OK +21:54:13> (init) Remove old master entry from sentinels: OK +21:54:13> (init) Create a master-slaves cluster of 5 instances: OK +21:54:13> (init) Sentinels can start monitoring a master: OK +21:54:16> (init) Sentinels can talk with the master: OK +21:54:16> (init) Sentinels are able to auto-discover other sentinels: OK +21:54:16> (init) Sentinels are able to auto-discover slaves: OK +21:54:16> CKQUORUM reports OK and the right amount of Sentinels: OK +21:54:16> CKQUORUM detects quorum cannot be reached: OK +21:54:16> CKQUORUM detects failover authorization cannot be reached: OK Testing unit: 07-down-conditions.tcl -00:52:36> (init) Restart killed instances: OK -00:52:36> (init) Remove old master entry from sentinels: OK -00:52:36> (init) Create a master-slaves cluster of 5 instances: OK -00:52:36> (init) Sentinels can start monitoring a master: OK -00:52:36> (init) Sentinels can talk with the master: OK -00:52:36> (init) Sentinels are able to auto-discover other sentinels: OK -00:52:38> (init) Sentinels are able to auto-discover slaves: OK -00:52:38> Crash the majority of Sentinels to prevent failovers for this unit: OK -00:52:38> SDOWN is triggered by non-responding but not crashed instance: OK -00:52:41> SDOWN is triggered by crashed instance: OK -00:52:43> SDOWN is triggered by masters advertising as slaves: OK -00:52:47> SDOWN is triggered by misconfigured instance replying with errors: OK -00:52:57> SDOWN is triggered if we rename PING to PONG: OK +21:54:19> (init) Restart killed instances: OK +21:54:19> (init) Remove old master entry from sentinels: OK +21:54:19> (init) Create a master-slaves cluster of 5 instances: OK +21:54:19> (init) Sentinels can start monitoring a master: OK +21:54:27> (init) Sentinels can talk with the master: OK +21:54:27> (init) Sentinels are able to auto-discover other sentinels: OK +21:54:27> (init) Sentinels are able to auto-discover slaves: OK +21:54:27> Crash the majority of Sentinels to prevent failovers for this unit: OK +21:54:27> SDOWN is triggered by non-responding but not crashed instance: OK +21:54:29> SDOWN is triggered by crashed instance: OK +21:54:32> SDOWN is triggered by masters advertising as slaves: OK +21:54:36> SDOWN is triggered by misconfigured instance replying with errors: OK +21:54:46> SDOWN is triggered if we rename PING to PONG: OK Testing unit: 08-hostname-conf.tcl -00:53:00> (pre-init) Configure instances and sentinel for hostname use: sentinel/0 sentinel/1 sentinel/2 OK -00:53:00> (init) Restart killed instances: OK -00:53:00> (init) Remove old master entry from sentinels: OK -00:53:00> (init) Create a master-slaves cluster of 5 instances: OK -00:53:00> (init) Sentinels can start monitoring a master: OK -00:53:00> (init) Sentinels can talk with the master: OK -00:53:00> (init) Sentinels are able to auto-discover other sentinels: OK -00:53:02> (init) Sentinels are able to auto-discover slaves: OK -00:53:02> Sentinel announces hostnames: OK -00:53:02> (post-cleanup) Configure instances and sentinel for IPs: OK +21:54:49> (pre-init) Configure instances and sentinel for hostname use: sentinel/0 sentinel/1 sentinel/2 OK +21:54:50> (init) Restart killed instances: OK +21:54:50> (init) Remove old master entry from sentinels: OK +21:54:50> (init) Create a master-slaves cluster of 5 instances: OK +21:54:50> (init) Sentinels can start monitoring a master: OK +21:54:51> (init) Sentinels can talk with the master: OK +21:54:51> (init) Sentinels are able to auto-discover other sentinels: OK +21:54:52> (init) Sentinels are able to auto-discover slaves: OK +21:54:52> Sentinel announces hostnames: OK +21:54:52> (post-cleanup) Configure instances and sentinel for IPs: OK Testing unit: 09-acl-support.tcl -00:53:02> (init) Restart killed instances: OK -00:53:02> (init) Remove old master entry from sentinels: OK -00:53:02> (init) Create a master-slaves cluster of 5 instances: OK -00:53:02> (init) Sentinels can start monitoring a master: OK -00:53:02> (init) Sentinels can talk with the master: OK -00:53:02> (init) Sentinels are able to auto-discover other sentinels: OK -00:53:04> (init) Sentinels are able to auto-discover slaves: OK -00:53:04> (post-init) Set up ACL configuration: OK -00:53:04> SENTINEL CONFIG SET handles on-the-fly credentials reconfiguration: OK -00:53:08> (post-cleanup) Tear down ACL configuration: OK +21:54:52> (init) Restart killed instances: OK +21:54:52> (init) Remove old master entry from sentinels: OK +21:54:52> (init) Create a master-slaves cluster of 5 instances: OK +21:54:52> (init) Sentinels can start monitoring a master: OK +21:54:53> (init) Sentinels can talk with the master: OK +21:54:53> (init) Sentinels are able to auto-discover other sentinels: OK +21:54:55> (init) Sentinels are able to auto-discover slaves: OK +21:54:55> (post-init) Set up ACL configuration: OK +21:54:55> SENTINEL CONFIG SET handles on-the-fly credentials reconfiguration: OK +21:54:58> (post-cleanup) Tear down ACL configuration: OK Testing unit: 10-replica-priority.tcl -00:53:08> (init) Restart killed instances: OK -00:53:08> (init) Remove old master entry from sentinels: OK -00:53:08> (init) Create a master-slaves cluster of 5 instances: OK -00:53:08> (init) Sentinels can start monitoring a master: OK -00:53:08> (init) Sentinels can talk with the master: OK -00:53:08> (init) Sentinels are able to auto-discover other sentinels: OK -00:53:10> (init) Sentinels are able to auto-discover slaves: OK -00:53:10> Check acceptable replica-priority values: OK -00:53:10> Set replica-announced=yes on all replicas: OK -00:53:10> Check sentinel replies with 4 replicas: OK -00:53:10> Set replica-announced=no on 2 replicas: OK -00:53:10> Check sentinel replies with 2 replicas: OK -00:53:10> Set replica-announced=yes on all replicas: OK -00:53:10> Check sentinel replies with 4 replicas: OK +21:54:58> (init) Restart killed instances: OK +21:54:58> (init) Remove old master entry from sentinels: OK +21:54:58> (init) Create a master-slaves cluster of 5 instances: OK +21:54:58> (init) Sentinels can start monitoring a master: OK +21:54:58> (init) Sentinels can talk with the master: OK +21:54:58> (init) Sentinels are able to auto-discover other sentinels: OK +21:55:00> (init) Sentinels are able to auto-discover slaves: OK +21:55:00> Check acceptable replica-priority values: OK +21:55:00> Set replica-announced=yes on all replicas: OK +21:55:00> Check sentinel replies with 4 replicas: OK +21:55:00> Set replica-announced=no on 2 replicas: OK +21:55:00> Check sentinel replies with 2 replicas: OK +21:55:01> Set replica-announced=yes on all replicas: OK +21:55:01> Check sentinel replies with 4 replicas: OK Testing unit: 11-port-0.tcl -00:53:10> (init) Restart killed instances: OK -00:53:10> (init) Remove old master entry from sentinels: OK -00:53:10> (init) Create a master-slaves cluster of 5 instances: OK -00:53:10> (init) Sentinels can start monitoring a master: OK -00:53:11> (init) Sentinels can talk with the master: OK -00:53:11> (init) Sentinels are able to auto-discover other sentinels: OK -00:53:11> (init) Sentinels are able to auto-discover slaves: OK -00:53:11> Start/Stop sentinel on same port with a different runID should not change the total number of sentinels: OK +21:55:01> (init) Restart killed instances: OK +21:55:01> (init) Remove old master entry from sentinels: OK +21:55:01> (init) Create a master-slaves cluster of 5 instances: OK +21:55:01> (init) Sentinels can start monitoring a master: OK +21:55:01> (init) Sentinels can talk with the master: OK +21:55:01> (init) Sentinels are able to auto-discover other sentinels: OK +21:55:01> (init) Sentinels are able to auto-discover slaves: OK +21:55:01> Start/Stop sentinel on same port with a different runID should not change the total number of sentinels: OK Testing unit: 12-master-reboot.tcl -00:53:12> (init) Restart killed instances: sentinel/4 OK -00:53:12> (init) Remove old master entry from sentinels: OK -00:53:12> (init) Create a master-slaves cluster of 5 instances: OK -00:53:12> (init) Sentinels can start monitoring a master: OK -00:53:12> (init) Sentinels can talk with the master: OK -00:53:12> (init) Sentinels are able to auto-discover other sentinels: OK -00:53:14> (init) Sentinels are able to auto-discover slaves: OK -00:53:14> Master reboot in very short time: OK -00:53:24> New master 127.0.0.1:30003 role matches: OK -00:53:24> All the other slaves now point to the new master: OK -00:53:24> The old master eventually gets reconfigured as a slave: OK +21:55:02> (init) Restart killed instances: sentinel/4 OK +21:55:02> (init) Remove old master entry from sentinels: OK +21:55:02> (init) Create a master-slaves cluster of 5 instances: OK +21:55:02> (init) Sentinels can start monitoring a master: OK +21:55:03> (init) Sentinels can talk with the master: OK +21:55:03> (init) Sentinels are able to auto-discover other sentinels: OK +21:55:05> (init) Sentinels are able to auto-discover slaves: OK +21:55:05> Master reboot in very short time: OK +21:55:13> New master 127.0.0.1:30001 role matches: OK +21:55:13> All the other slaves now point to the new master: OK +21:55:13> The old master eventually gets reconfigured as a slave: OK Testing unit: 13-info-command.tcl -00:53:31> (init) Restart killed instances: OK -00:53:31> (init) Remove old master entry from sentinels: OK -00:53:31> (init) Create a master-slaves cluster of 5 instances: OK -00:53:31> (init) Sentinels can start monitoring a master: OK -00:53:32> (init) Sentinels can talk with the master: OK -00:53:32> (init) Sentinels are able to auto-discover other sentinels: OK -00:53:33> (init) Sentinels are able to auto-discover slaves: OK -00:53:33> info command with at most one argument: OK -00:53:33> info command with one sub-section: OK -00:53:33> info command with multiple sub-sections: OK +21:55:23> (init) Restart killed instances: OK +21:55:23> (init) Remove old master entry from sentinels: OK +21:55:23> (init) Create a master-slaves cluster of 5 instances: OK +21:55:23> (init) Sentinels can start monitoring a master: OK +21:55:23> (init) Sentinels can talk with the master: OK +21:55:23> (init) Sentinels are able to auto-discover other sentinels: OK +21:55:25> (init) Sentinels are able to auto-discover slaves: OK +21:55:25> info command with at most one argument: OK +21:55:25> info command with one sub-section: OK +21:55:25> info command with multiple sub-sections: OK Testing unit: 14-debug-command.tcl -00:53:33> (init) Restart killed instances: OK -00:53:33> (init) Remove old master entry from sentinels: OK -00:53:33> (init) Create a master-slaves cluster of 5 instances: OK -00:53:33> (init) Sentinels can start monitoring a master: OK -00:53:34> (init) Sentinels can talk with the master: OK -00:53:34> (init) Sentinels are able to auto-discover other sentinels: OK -00:53:36> (init) Sentinels are able to auto-discover slaves: OK -00:53:36> Sentinel debug test with arguments and without argument: OK +21:55:25> (init) Restart killed instances: OK +21:55:25> (init) Remove old master entry from sentinels: OK +21:55:25> (init) Create a master-slaves cluster of 5 instances: OK +21:55:25> (init) Sentinels can start monitoring a master: OK +21:55:25> (init) Sentinels can talk with the master: OK +21:55:25> (init) Sentinels are able to auto-discover other sentinels: OK +21:55:28> (init) Sentinels are able to auto-discover slaves: OK +21:55:28> Sentinel debug test with arguments and without argument: OK Testing unit: 15-config-set-config-get.tcl -00:53:36> (init) Restart killed instances: OK -00:53:36> (init) Remove old master entry from sentinels: OK -00:53:36> (init) Create a master-slaves cluster of 5 instances: OK -00:53:36> (init) Sentinels can start monitoring a master: OK -00:53:36> (init) Sentinels can talk with the master: OK -00:53:36> (init) Sentinels are able to auto-discover other sentinels: OK -00:53:38> (init) Sentinels are able to auto-discover slaves: OK -00:53:38> SENTINEL CONFIG SET and SENTINEL CONFIG GET handles multiple variables: OK -00:53:38> SENTINEL CONFIG GET for duplicate and unknown variables: OK -00:53:38> SENTINEL CONFIG GET for patterns: OK -00:53:38> SENTINEL CONFIG SET duplicate variables: OK -00:53:38> SENTINEL CONFIG SET, one option does not exist: OK -00:53:38> SENTINEL CONFIG SET, one option with wrong value: OK -00:53:38> SENTINEL CONFIG SET, wrong number of arguments: OK +21:55:28> (init) Restart killed instances: OK +21:55:28> (init) Remove old master entry from sentinels: OK +21:55:30> (init) Create a master-slaves cluster of 5 instances: OK +21:55:30> (init) Sentinels can start monitoring a master: OK +21:55:30> (init) Sentinels can talk with the master: OK +21:55:30> (init) Sentinels are able to auto-discover other sentinels: OK +21:55:32> (init) Sentinels are able to auto-discover slaves: OK +21:55:32> SENTINEL CONFIG SET and SENTINEL CONFIG GET handles multiple variables: OK +21:55:32> SENTINEL CONFIG GET for duplicate and unknown variables: OK +21:55:32> SENTINEL CONFIG GET for patterns: OK +21:55:32> SENTINEL CONFIG SET duplicate variables: OK +21:55:32> SENTINEL CONFIG SET, one option does not exist: OK +21:55:32> SENTINEL CONFIG SET, one option with wrong value: OK +21:55:32> SENTINEL CONFIG SET, wrong number of arguments: OK Cleaning up... -killing stale instance 1461959 -killing stale instance 1461965 -killing stale instance 1461977 -killing stale instance 1464478 -killing stale instance 1464597 -killing stale instance 1464769 -killing stale instance 1464926 -killing stale instance 1465217 -killing stale instance 1465223 -killing stale instance 1465230 -killing stale instance 1465618 -killing stale instance 1465626 -killing stale instance 1465910 +killing stale instance 1233972 +killing stale instance 1234006 +killing stale instance 1234088 +killing stale instance 1249576 +killing stale instance 1252408 +killing stale instance 1256573 +killing stale instance 1260363 +killing stale instance 1269329 +killing stale instance 1269336 +killing stale instance 1269345 +killing stale instance 1278584 +killing stale instance 1279201 +killing stale instance 1282839 GOOD! No errors. # Clean up after gen-test-certs.sh rm -rf tests/tls || true # Other cleanup find tests/tmp ! -name .gitignore -type f -exec rm -rfv {} + +removed 'tests/tmp/server3.log.3812712.789/stderr' +removed 'tests/tmp/server3.log.3812712.789/stdout' +removed 'tests/tmp/server1.log.3812712.783/stderr' +removed 'tests/tmp/server1.log.3812712.783/stdout' +removed 'tests/tmp/resetchannels.acl.3812712.157/nodefaultuser.acl' +removed 'tests/tmp/resetchannels.acl.3812712.157/stderr' +removed 'tests/tmp/resetchannels.acl.3812712.157/stdout' +removed 'tests/tmp/resetchannels.acl.3812712.157/default.conf' +removed 'tests/tmp/resetchannels.acl.3812712.154/nodefaultuser.acl' +removed 'tests/tmp/resetchannels.acl.3812712.154/stderr' +removed 'tests/tmp/resetchannels.acl.3812712.154/stdout' +removed 'tests/tmp/resetchannels.acl.3812712.154/default.conf' +removed 'tests/tmp/server2.log.3812712.786/stderr' +removed 'tests/tmp/server2.log.3812712.786/stdout' +removed 'tests/tmp/selectors.acl.3812712.171/userwithselectors.acl' +removed 'tests/tmp/selectors.acl.3812712.171/stderr' +removed 'tests/tmp/selectors.acl.3812712.171/stdout' +removed 'tests/tmp/selectors.acl.3812712.171/default.conf' +removed 'tests/tmp/duplicate.acl.3812712.164/user.acl' +removed 'tests/tmp/duplicate.acl.3812712.164/stderr' +removed 'tests/tmp/duplicate.acl.3812712.164/stdout' +removed 'tests/tmp/duplicate.acl.3812712.164/default.conf' make[1]: Leaving directory '/build/reproducible-path/redict-7.3.6+ds' create-stamp debian/debhelper-build-stamp dh_prep @@ -1673,17 +6196,17 @@ dh_strip -a dh_makeshlibs -a dh_shlibdeps -a -dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/redict-tools/usr/bin/redict-cli debian/redict-tools/usr/bin/redict-check-rdb debian/redict-tools/usr/bin/redict-check-aof debian/redict-tools/usr/bin/redict-benchmark were not linked against libatomic.so.1 (they use none of the library's symbols) -dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/redict-tools/usr/bin/redict-cli debian/redict-tools/usr/bin/redict-check-rdb debian/redict-tools/usr/bin/redict-check-aof debian/redict-tools/usr/bin/redict-benchmark were not linked against liblzf.so.1 (they use none of the library's symbols) +dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/redict-tools/usr/bin/redict-check-aof debian/redict-tools/usr/bin/redict-benchmark debian/redict-tools/usr/bin/redict-check-rdb debian/redict-tools/usr/bin/redict-cli were not linked against liblzf.so.1 (they use none of the library's symbols) +dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/redict-tools/usr/bin/redict-check-aof debian/redict-tools/usr/bin/redict-benchmark debian/redict-tools/usr/bin/redict-check-rdb debian/redict-tools/usr/bin/redict-cli were not linked against libatomic.so.1 (they use none of the library's symbols) dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dpkg-deb: building package 'redict' in '../redict_7.3.6+ds-1_all.deb'. -dpkg-deb: building package 'redict-tools-dbgsym' in '../redict-tools-dbgsym_7.3.6+ds-1_amd64.deb'. -dpkg-deb: building package 'redict-server' in '../redict-server_7.3.6+ds-1_amd64.deb'. dpkg-deb: building package 'redict-sentinel' in '../redict-sentinel_7.3.6+ds-1_amd64.deb'. dpkg-deb: building package 'redict-tools' in '../redict-tools_7.3.6+ds-1_amd64.deb'. +dpkg-deb: building package 'redict-tools-dbgsym' in '../redict-tools-dbgsym_7.3.6+ds-1_amd64.deb'. +dpkg-deb: building package 'redict-server' in '../redict-server_7.3.6+ds-1_amd64.deb'. dpkg-genbuildinfo --build=binary -O../redict_7.3.6+ds-1_amd64.buildinfo dpkg-genchanges --build=binary -O../redict_7.3.6+ds-1_amd64.changes dpkg-genchanges: info: binary-only upload (no source code included) @@ -1691,12 +6214,14 @@ dpkg-buildpackage: info: binary-only upload (no source included) dpkg-genchanges: info: including full source code in upload I: copying local configuration +I: user script /srv/workspace/pbuilder/3766490/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/3766490/tmp/hooks/B01_cleanup finished I: unmounting dev/ptmx filesystem I: unmounting dev/pts filesystem I: unmounting dev/shm filesystem I: unmounting proc filesystem I: unmounting sys filesystem I: cleaning the build env -I: removing directory /srv/workspace/pbuilder/1260551 and its subdirectories -I: Current time: Sun Nov 15 00:53:52 -12 2026 -I: pbuilder-time-stamp: 1794747232 +I: removing directory /srv/workspace/pbuilder/3766490 and its subdirectories +I: Current time: Mon Oct 13 21:55:46 +14 2025 +I: pbuilder-time-stamp: 1760342146