Diff of the two buildlogs: -- --- b1/build.log 2022-03-26 17:25:49.862801947 +0000 +++ b2/build.log 2022-03-26 18:30:10.852067595 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Fri Apr 28 11:15:38 -12 2023 -I: pbuilder-time-stamp: 1682723738 +I: Current time: Sun Mar 27 07:25:54 +14 2022 +I: pbuilder-time-stamp: 1648315554 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/bullseye-reproducible-base.tgz] I: copying local configuration @@ -16,8 +16,8 @@ I: copying [./redis_6.0.16-1+deb11u2.debian.tar.xz] I: Extracting source gpgv: unknown type of key resource 'trustedkeys.kbx' -gpgv: keyblock resource '/tmp/dpkg-verify-sig.nTUF0V_U/trustedkeys.kbx': General error -gpgv: Signature made Wed Feb 16 09:59:21 2022 -12 +gpgv: keyblock resource '/tmp/dpkg-verify-sig.z3kT8822/trustedkeys.kbx': General error +gpgv: Signature made Thu Feb 17 11:59:21 2022 +14 gpgv: using RSA key C2FE4BD271C139B86C533E461E953E27D4311E58 gpgv: Can't check signature: No public key dpkg-source: warning: failed to verify signature on ./redis_6.0.16-1+deb11u2.dsc @@ -36,135 +36,169 @@ dpkg-source: info: applying 0009-Send-the-readiness-notification-when-we-are-ready-to.patch I: Not using root during the build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/13786/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/5366/tmp/hooks/D01_modify_environment starting +debug: Running on codethink12-arm64. +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 +Removing 'diversion of /bin/sh to /bin/sh.distrib by dash' +Adding 'diversion of /bin/sh to /bin/sh.distrib by bash' +Removing 'diversion of /usr/share/man/man1/sh.1.gz to /usr/share/man/man1/sh.distrib.1.gz by dash' +Adding 'diversion of /usr/share/man/man1/sh.1.gz to /usr/share/man/man1/sh.distrib.1.gz by 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/5366/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/5366/tmp/hooks/D02_print_environment starting I: set - BUILDDIR='/build' - BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' - BUILDUSERNAME='pbuilder1' - BUILD_ARCH='arm64' - DEBIAN_FRONTEND='noninteractive' + BASH=/bin/sh + BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath + BASH_ALIASES=() + BASH_ARGC=() + BASH_ARGV=() + BASH_CMDS=() + BASH_LINENO=([0]="12" [1]="0") + BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") + BASH_VERSINFO=([0]="5" [1]="1" [2]="4" [3]="1" [4]="release" [5]="aarch64-unknown-linux-gnu") + BASH_VERSION='5.1.4(1)-release' + BUILDDIR=/build + BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' + BUILDUSERNAME=pbuilder2 + BUILD_ARCH=arm64 + DEBIAN_FRONTEND=noninteractive DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all,-fixfilepath parallel=8' - DISTRIBUTION='' - HOME='/var/lib/jenkins' - HOST_ARCH='arm64' + DIRSTACK=() + DISTRIBUTION= + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/var/lib/jenkins + HOSTNAME=i-capture-the-hostname + HOSTTYPE=aarch64 + HOST_ARCH=arm64 IFS=' ' - 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='13786' - PS1='# ' - PS2='> ' + LANG=C + LANGUAGE=nl_BE:nl + LC_ALL=C + MACHTYPE=aarch64-unknown-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=5366 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/tmp.PpOJ104yU9/pbuilderrc_ofhA --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/bullseye-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/tmp.PpOJ104yU9/b1 --logfile b1/build.log redis_6.0.16-1+deb11u2.dsc' - SUDO_GID='117' - SUDO_UID='110' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - USERNAME='root' - _='/usr/bin/systemd-run' - http_proxy='http://192.168.101.16: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/tmp.PpOJ104yU9/pbuilderrc_OotM --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/bullseye-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/tmp.PpOJ104yU9/b2 --logfile b2/build.log redis_6.0.16-1+deb11u2.dsc' + SUDO_GID=117 + SUDO_UID=110 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + USERNAME=root + _='I: set' + http_proxy=http://192.168.101.16:3128 I: uname -a - Linux codethink9-arm64 4.15.0-173-generic #182-Ubuntu SMP Fri Mar 18 20:44:13 UTC 2022 aarch64 GNU/Linux + Linux i-capture-the-hostname 4.15.0-173-generic #182-Ubuntu SMP Fri Mar 18 20:44:13 UTC 2022 aarch64 GNU/Linux I: ls -l /bin total 5248 - -rwxr-xr-x 1 root root 1282512 Aug 4 2021 bash - -rwxr-xr-x 3 root root 34808 Jul 20 2020 bunzip2 - -rwxr-xr-x 3 root root 34808 Jul 20 2020 bzcat - lrwxrwxrwx 1 root root 6 Jul 20 2020 bzcmp -> bzdiff - -rwxr-xr-x 1 root root 2225 Jul 20 2020 bzdiff - lrwxrwxrwx 1 root root 6 Jul 20 2020 bzegrep -> bzgrep - -rwxr-xr-x 1 root root 4877 Sep 4 2019 bzexe - lrwxrwxrwx 1 root root 6 Jul 20 2020 bzfgrep -> bzgrep - -rwxr-xr-x 1 root root 3775 Jul 20 2020 bzgrep - -rwxr-xr-x 3 root root 34808 Jul 20 2020 bzip2 - -rwxr-xr-x 1 root root 14264 Jul 20 2020 bzip2recover - lrwxrwxrwx 1 root root 6 Jul 20 2020 bzless -> bzmore - -rwxr-xr-x 1 root root 1297 Jul 20 2020 bzmore - -rwxr-xr-x 1 root root 39832 Sep 22 2020 cat - -rwxr-xr-x 1 root root 64512 Sep 22 2020 chgrp - -rwxr-xr-x 1 root root 60368 Sep 22 2020 chmod - -rwxr-xr-x 1 root root 64528 Sep 22 2020 chown - -rwxr-xr-x 1 root root 138896 Sep 22 2020 cp - -rwxr-xr-x 1 root root 129544 Dec 10 2020 dash - -rwxr-xr-x 1 root root 101384 Sep 22 2020 date - -rwxr-xr-x 1 root root 80984 Sep 22 2020 dd - -rwxr-xr-x 1 root root 89824 Sep 22 2020 df - -rwxr-xr-x 1 root root 143088 Sep 22 2020 dir - -rwxr-xr-x 1 root root 76152 Jan 20 2022 dmesg - lrwxrwxrwx 1 root root 8 Nov 6 2019 dnsdomainname -> hostname - lrwxrwxrwx 1 root root 8 Nov 6 2019 domainname -> hostname - -rwxr-xr-x 1 root root 35632 Sep 22 2020 echo - -rwxr-xr-x 1 root root 28 Nov 9 2020 egrep - -rwxr-xr-x 1 root root 31512 Sep 22 2020 false - -rwxr-xr-x 1 root root 28 Nov 9 2020 fgrep - -rwxr-xr-x 1 root root 64856 Jan 20 2022 findmnt - -rwsr-xr-x 1 root root 34824 Feb 26 2021 fusermount - -rwxr-xr-x 1 root root 178400 Nov 9 2020 grep - -rwxr-xr-x 2 root root 2346 Mar 2 2021 gunzip - -rwxr-xr-x 1 root root 6376 Mar 2 2021 gzexe - -rwxr-xr-x 1 root root 93744 Mar 2 2021 gzip - -rwxr-xr-x 1 root root 18440 Nov 6 2019 hostname - -rwxr-xr-x 1 root root 68720 Sep 22 2020 ln - -rwxr-xr-x 1 root root 52720 Feb 7 2020 login - -rwxr-xr-x 1 root root 143088 Sep 22 2020 ls - -rwxr-xr-x 1 root root 157864 Jan 20 2022 lsblk - -rwxr-xr-x 1 root root 85200 Sep 22 2020 mkdir - -rwxr-xr-x 1 root root 68744 Sep 22 2020 mknod - -rwxr-xr-x 1 root root 43976 Sep 22 2020 mktemp - -rwxr-xr-x 1 root root 51368 Jan 20 2022 more - -rwsr-xr-x 1 root root 51360 Jan 20 2022 mount - -rwxr-xr-x 1 root root 14496 Jan 20 2022 mountpoint - -rwxr-xr-x 1 root root 134808 Sep 22 2020 mv - lrwxrwxrwx 1 root root 8 Nov 6 2019 nisdomainname -> hostname - lrwxrwxrwx 1 root root 14 Dec 16 2021 pidof -> /sbin/killall5 - -rwxr-xr-x 1 root root 35720 Sep 22 2020 pwd - lrwxrwxrwx 1 root root 4 Aug 4 2021 rbash -> bash - -rwxr-xr-x 1 root root 43872 Sep 22 2020 readlink - -rwxr-xr-x 1 root root 68592 Sep 22 2020 rm - -rwxr-xr-x 1 root root 43880 Sep 22 2020 rmdir - -rwxr-xr-x 1 root root 19208 Sep 27 2020 run-parts - -rwxr-xr-x 1 root root 114016 Dec 22 2018 sed - lrwxrwxrwx 1 root root 4 Apr 23 03:47 sh -> dash - -rwxr-xr-x 1 root root 35656 Sep 22 2020 sleep - -rwxr-xr-x 1 root root 72640 Sep 22 2020 stty - -rwsr-xr-x 1 root root 67776 Jan 20 2022 su - -rwxr-xr-x 1 root root 35672 Sep 22 2020 sync - -rwxr-xr-x 1 root root 535768 Feb 16 2021 tar - -rwxr-xr-x 1 root root 10568 Sep 27 2020 tempfile - -rwxr-xr-x 1 root root 89120 Sep 22 2020 touch - -rwxr-xr-x 1 root root 31512 Sep 22 2020 true - -rwxr-xr-x 1 root root 14264 Feb 26 2021 ulockmgr_server - -rwsr-xr-x 1 root root 30880 Jan 20 2022 umount - -rwxr-xr-x 1 root root 35640 Sep 22 2020 uname - -rwxr-xr-x 2 root root 2346 Mar 2 2021 uncompress - -rwxr-xr-x 1 root root 143088 Sep 22 2020 vdir - -rwxr-xr-x 1 root root 59584 Jan 20 2022 wdctl - lrwxrwxrwx 1 root root 8 Nov 6 2019 ypdomainname -> hostname - -rwxr-xr-x 1 root root 1984 Mar 2 2021 zcat - -rwxr-xr-x 1 root root 1678 Mar 2 2021 zcmp - -rwxr-xr-x 1 root root 5880 Mar 2 2021 zdiff - -rwxr-xr-x 1 root root 29 Mar 2 2021 zegrep - -rwxr-xr-x 1 root root 29 Mar 2 2021 zfgrep - -rwxr-xr-x 1 root root 2081 Mar 2 2021 zforce - -rwxr-xr-x 1 root root 7585 Mar 2 2021 zgrep - -rwxr-xr-x 1 root root 2206 Mar 2 2021 zless - -rwxr-xr-x 1 root root 1842 Mar 2 2021 zmore - -rwxr-xr-x 1 root root 4553 Mar 2 2021 znew -I: user script /srv/workspace/pbuilder/13786/tmp/hooks/D02_print_environment finished + -rwxr-xr-x 1 root root 1282512 Aug 5 2021 bash + -rwxr-xr-x 3 root root 34808 Jul 21 2020 bunzip2 + -rwxr-xr-x 3 root root 34808 Jul 21 2020 bzcat + lrwxrwxrwx 1 root root 6 Jul 21 2020 bzcmp -> bzdiff + -rwxr-xr-x 1 root root 2225 Jul 21 2020 bzdiff + lrwxrwxrwx 1 root root 6 Jul 21 2020 bzegrep -> bzgrep + -rwxr-xr-x 1 root root 4877 Sep 5 2019 bzexe + lrwxrwxrwx 1 root root 6 Jul 21 2020 bzfgrep -> bzgrep + -rwxr-xr-x 1 root root 3775 Jul 21 2020 bzgrep + -rwxr-xr-x 3 root root 34808 Jul 21 2020 bzip2 + -rwxr-xr-x 1 root root 14264 Jul 21 2020 bzip2recover + lrwxrwxrwx 1 root root 6 Jul 21 2020 bzless -> bzmore + -rwxr-xr-x 1 root root 1297 Jul 21 2020 bzmore + -rwxr-xr-x 1 root root 39832 Sep 23 2020 cat + -rwxr-xr-x 1 root root 64512 Sep 23 2020 chgrp + -rwxr-xr-x 1 root root 60368 Sep 23 2020 chmod + -rwxr-xr-x 1 root root 64528 Sep 23 2020 chown + -rwxr-xr-x 1 root root 138896 Sep 23 2020 cp + -rwxr-xr-x 1 root root 129544 Dec 11 2020 dash + -rwxr-xr-x 1 root root 101384 Sep 23 2020 date + -rwxr-xr-x 1 root root 80984 Sep 23 2020 dd + -rwxr-xr-x 1 root root 89824 Sep 23 2020 df + -rwxr-xr-x 1 root root 143088 Sep 23 2020 dir + -rwxr-xr-x 1 root root 76152 Jan 21 10:10 dmesg + lrwxrwxrwx 1 root root 8 Nov 8 2019 dnsdomainname -> hostname + lrwxrwxrwx 1 root root 8 Nov 8 2019 domainname -> hostname + -rwxr-xr-x 1 root root 35632 Sep 23 2020 echo + -rwxr-xr-x 1 root root 28 Nov 10 2020 egrep + -rwxr-xr-x 1 root root 31512 Sep 23 2020 false + -rwxr-xr-x 1 root root 28 Nov 10 2020 fgrep + -rwxr-xr-x 1 root root 64856 Jan 21 10:10 findmnt + -rwsr-xr-x 1 root root 34824 Feb 27 2021 fusermount + -rwxr-xr-x 1 root root 178400 Nov 10 2020 grep + -rwxr-xr-x 2 root root 2346 Mar 3 2021 gunzip + -rwxr-xr-x 1 root root 6376 Mar 3 2021 gzexe + -rwxr-xr-x 1 root root 93744 Mar 3 2021 gzip + -rwxr-xr-x 1 root root 18440 Nov 8 2019 hostname + -rwxr-xr-x 1 root root 68720 Sep 23 2020 ln + -rwxr-xr-x 1 root root 52720 Feb 8 2020 login + -rwxr-xr-x 1 root root 143088 Sep 23 2020 ls + -rwxr-xr-x 1 root root 157864 Jan 21 10:10 lsblk + -rwxr-xr-x 1 root root 85200 Sep 23 2020 mkdir + -rwxr-xr-x 1 root root 68744 Sep 23 2020 mknod + -rwxr-xr-x 1 root root 43976 Sep 23 2020 mktemp + -rwxr-xr-x 1 root root 51368 Jan 21 10:10 more + -rwsr-xr-x 1 root root 51360 Jan 21 10:10 mount + -rwxr-xr-x 1 root root 14496 Jan 21 10:10 mountpoint + -rwxr-xr-x 1 root root 134808 Sep 23 2020 mv + lrwxrwxrwx 1 root root 8 Nov 8 2019 nisdomainname -> hostname + lrwxrwxrwx 1 root root 14 Dec 17 08:12 pidof -> /sbin/killall5 + -rwxr-xr-x 1 root root 35720 Sep 23 2020 pwd + lrwxrwxrwx 1 root root 4 Aug 5 2021 rbash -> bash + -rwxr-xr-x 1 root root 43872 Sep 23 2020 readlink + -rwxr-xr-x 1 root root 68592 Sep 23 2020 rm + -rwxr-xr-x 1 root root 43880 Sep 23 2020 rmdir + -rwxr-xr-x 1 root root 19208 Sep 28 2020 run-parts + -rwxr-xr-x 1 root root 114016 Dec 23 2018 sed + lrwxrwxrwx 1 root root 4 Mar 27 07:26 sh -> bash + lrwxrwxrwx 1 root root 4 Mar 21 23:24 sh.distrib -> dash + -rwxr-xr-x 1 root root 35656 Sep 23 2020 sleep + -rwxr-xr-x 1 root root 72640 Sep 23 2020 stty + -rwsr-xr-x 1 root root 67776 Jan 21 10:10 su + -rwxr-xr-x 1 root root 35672 Sep 23 2020 sync + -rwxr-xr-x 1 root root 535768 Feb 17 2021 tar + -rwxr-xr-x 1 root root 10568 Sep 28 2020 tempfile + -rwxr-xr-x 1 root root 89120 Sep 23 2020 touch + -rwxr-xr-x 1 root root 31512 Sep 23 2020 true + -rwxr-xr-x 1 root root 14264 Feb 27 2021 ulockmgr_server + -rwsr-xr-x 1 root root 30880 Jan 21 10:10 umount + -rwxr-xr-x 1 root root 35640 Sep 23 2020 uname + -rwxr-xr-x 2 root root 2346 Mar 3 2021 uncompress + -rwxr-xr-x 1 root root 143088 Sep 23 2020 vdir + -rwxr-xr-x 1 root root 59584 Jan 21 10:10 wdctl + lrwxrwxrwx 1 root root 8 Nov 8 2019 ypdomainname -> hostname + -rwxr-xr-x 1 root root 1984 Mar 3 2021 zcat + -rwxr-xr-x 1 root root 1678 Mar 3 2021 zcmp + -rwxr-xr-x 1 root root 5880 Mar 3 2021 zdiff + -rwxr-xr-x 1 root root 29 Mar 3 2021 zegrep + -rwxr-xr-x 1 root root 29 Mar 3 2021 zfgrep + -rwxr-xr-x 1 root root 2081 Mar 3 2021 zforce + -rwxr-xr-x 1 root root 7585 Mar 3 2021 zgrep + -rwxr-xr-x 1 root root 2206 Mar 3 2021 zless + -rwxr-xr-x 1 root root 1842 Mar 3 2021 zmore + -rwxr-xr-x 1 root root 4553 Mar 3 2021 znew +I: user script /srv/workspace/pbuilder/5366/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -285,7 +319,7 @@ Get: 57 http://deb.debian.org/debian bullseye/main arm64 tcl8.6 arm64 8.6.11+dfsg-1 [124 kB] Get: 58 http://deb.debian.org/debian bullseye/main arm64 tcl arm64 8.6.11+1 [5788 B] Get: 59 http://deb.debian.org/debian bullseye/main arm64 tcl-tls arm64 1.7.22-2 [73.6 kB] -Fetched 25.7 MB in 1s (37.9 MB/s) +Fetched 25.7 MB in 1s (47.6 MB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package bsdextrautils. (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 ... 19646 files and directories currently installed.) @@ -538,7 +572,8 @@ Building tag database... -> Finished parsing the build-deps I: Building the package -I: Running cd /build/redis-6.0.16/ && 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 > ../redis_6.0.16-1+deb11u2_source.changes +hostname: Temporary failure in name resolution +I: Running cd /build/redis-6.0.16/ && 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 > ../redis_6.0.16-1+deb11u2_source.changes dpkg-buildpackage: info: source package redis dpkg-buildpackage: info: source version 5:6.0.16-1+deb11u2 dpkg-buildpackage: info: source distribution bullseye-security @@ -626,8 +661,8 @@ (echo "-g -O2 -fdebug-prefix-map=/build/redis-6.0.16=. -fstack-protector-strong -Wformat -Werror=format-security -I/usr/include/liblzf -funwind-tables" > .make-cflags) (echo "-Wl,-z,relro -Wl,-z,now -Wl,-no-as-needed -ldl -latomic -llzf -llua5.1-cjson -llua5.1-bitop ../deps/lua/src/lua_struct.o ../deps/lua/src/lua_cmsgpack.o" > .make-ldflags) MAKE linenoise -cd linenoise && make MAKE hiredis +cd linenoise && make cd hiredis && make static USE_SSL=1 make[5]: Entering directory '/build/redis-6.0.16/deps/hiredis' make[5]: Entering directory '/build/redis-6.0.16/deps/linenoise' @@ -675,6 +710,7 @@ cc -std=c11 -pedantic -DREDIS_STATIC='' -Wall -W -Wno-missing-field-initializers -O2 -g -ggdb -g -O2 -fdebug-prefix-map=/build/redis-6.0.16=. -fstack-protector-strong -Wformat -Werror=format-security -I/usr/include/liblzf -funwind-tables -I../deps/linenoise -DHAVE_LIBSYSTEMD -DUSE_JEMALLOC -I/usr/include/jemalloc/include -DUSE_OPENSSL -I/usr/include/lua5.1 -I../deps/hiredis -Wdate-time -D_FORTIFY_SOURCE=2 -MMD -o db.o -c db.c cc -std=c11 -pedantic -DREDIS_STATIC='' -Wall -W -Wno-missing-field-initializers -O2 -g -ggdb -g -O2 -fdebug-prefix-map=/build/redis-6.0.16=. -fstack-protector-strong -Wformat -Werror=format-security -I/usr/include/liblzf -funwind-tables -I../deps/linenoise -DHAVE_LIBSYSTEMD -DUSE_JEMALLOC -I/usr/include/jemalloc/include -DUSE_OPENSSL -I/usr/include/lua5.1 -I../deps/hiredis -Wdate-time -D_FORTIFY_SOURCE=2 -MMD -o replication.o -c replication.c cc -std=c11 -pedantic -DREDIS_STATIC='' -Wall -W -Wno-missing-field-initializers -O2 -g -ggdb -g -O2 -fdebug-prefix-map=/build/redis-6.0.16=. -fstack-protector-strong -Wformat -Werror=format-security -I/usr/include/liblzf -funwind-tables -I../deps/linenoise -DHAVE_LIBSYSTEMD -DUSE_JEMALLOC -I/usr/include/jemalloc/include -DUSE_OPENSSL -I/usr/include/lua5.1 -I../deps/hiredis -Wdate-time -D_FORTIFY_SOURCE=2 -MMD -o rdb.o -c rdb.c +cc -std=c11 -pedantic -DREDIS_STATIC='' -Wall -W -Wno-missing-field-initializers -O2 -g -ggdb -g -O2 -fdebug-prefix-map=/build/redis-6.0.16=. -fstack-protector-strong -Wformat -Werror=format-security -I/usr/include/liblzf -funwind-tables -I../deps/linenoise -DHAVE_LIBSYSTEMD -DUSE_JEMALLOC -I/usr/include/jemalloc/include -DUSE_OPENSSL -I/usr/include/lua5.1 -I../deps/hiredis -Wdate-time -D_FORTIFY_SOURCE=2 -MMD -o t_string.o -c t_string.c rdb.c: In function 'rdbSave': rdb.c:1330:9: warning: 'free' is deprecated [-Wdeprecated-declarations] 1330 | free(cwdp); @@ -694,13 +730,13 @@ /usr/include/jemalloc/jemalloc.h:241:39: note: declared here 241 | JEMALLOC_EXPORT void JEMALLOC_NOTHROW je_free(void *ptr) | ^~~~~~~ -cc -std=c11 -pedantic -DREDIS_STATIC='' -Wall -W -Wno-missing-field-initializers -O2 -g -ggdb -g -O2 -fdebug-prefix-map=/build/redis-6.0.16=. -fstack-protector-strong -Wformat -Werror=format-security -I/usr/include/liblzf -funwind-tables -I../deps/linenoise -DHAVE_LIBSYSTEMD -DUSE_JEMALLOC -I/usr/include/jemalloc/include -DUSE_OPENSSL -I/usr/include/lua5.1 -I../deps/hiredis -Wdate-time -D_FORTIFY_SOURCE=2 -MMD -o t_string.o -c t_string.c cc -std=c11 -pedantic -DREDIS_STATIC='' -Wall -W -Wno-missing-field-initializers -O2 -g -ggdb -g -O2 -fdebug-prefix-map=/build/redis-6.0.16=. -fstack-protector-strong -Wformat -Werror=format-security -I/usr/include/liblzf -funwind-tables -I../deps/linenoise -DHAVE_LIBSYSTEMD -DUSE_JEMALLOC -I/usr/include/jemalloc/include -DUSE_OPENSSL -I/usr/include/lua5.1 -I../deps/hiredis -Wdate-time -D_FORTIFY_SOURCE=2 -MMD -o t_list.o -c t_list.c cc -std=c11 -pedantic -DREDIS_STATIC='' -Wall -W -Wno-missing-field-initializers -O2 -g -ggdb -g -O2 -fdebug-prefix-map=/build/redis-6.0.16=. -fstack-protector-strong -Wformat -Werror=format-security -I/usr/include/liblzf -funwind-tables -I../deps/linenoise -DHAVE_LIBSYSTEMD -DUSE_JEMALLOC -I/usr/include/jemalloc/include -DUSE_OPENSSL -I/usr/include/lua5.1 -I../deps/hiredis -Wdate-time -D_FORTIFY_SOURCE=2 -MMD -o t_set.o -c t_set.c cc -std=c11 -pedantic -DREDIS_STATIC='' -Wall -W -Wno-missing-field-initializers -O2 -g -ggdb -g -O2 -fdebug-prefix-map=/build/redis-6.0.16=. -fstack-protector-strong -Wformat -Werror=format-security -I/usr/include/liblzf -funwind-tables -I../deps/linenoise -DHAVE_LIBSYSTEMD -DUSE_JEMALLOC -I/usr/include/jemalloc/include -DUSE_OPENSSL -I/usr/include/lua5.1 -I../deps/hiredis -Wdate-time -D_FORTIFY_SOURCE=2 -MMD -o t_zset.o -c t_zset.c cc -std=c11 -pedantic -DREDIS_STATIC='' -Wall -W -Wno-missing-field-initializers -O2 -g -ggdb -g -O2 -fdebug-prefix-map=/build/redis-6.0.16=. -fstack-protector-strong -Wformat -Werror=format-security -I/usr/include/liblzf -funwind-tables -I../deps/linenoise -DHAVE_LIBSYSTEMD -DUSE_JEMALLOC -I/usr/include/jemalloc/include -DUSE_OPENSSL -I/usr/include/lua5.1 -I../deps/hiredis -Wdate-time -D_FORTIFY_SOURCE=2 -MMD -o t_hash.o -c t_hash.c cc -std=c11 -pedantic -DREDIS_STATIC='' -Wall -W -Wno-missing-field-initializers -O2 -g -ggdb -g -O2 -fdebug-prefix-map=/build/redis-6.0.16=. -fstack-protector-strong -Wformat -Werror=format-security -I/usr/include/liblzf -funwind-tables -I../deps/linenoise -DHAVE_LIBSYSTEMD -DUSE_JEMALLOC -I/usr/include/jemalloc/include -DUSE_OPENSSL -I/usr/include/lua5.1 -I../deps/hiredis -Wdate-time -D_FORTIFY_SOURCE=2 -MMD -o config.o -c config.c cc -std=c11 -pedantic -DREDIS_STATIC='' -Wall -W -Wno-missing-field-initializers -O2 -g -ggdb -g -O2 -fdebug-prefix-map=/build/redis-6.0.16=. -fstack-protector-strong -Wformat -Werror=format-security -I/usr/include/liblzf -funwind-tables -I../deps/linenoise -DHAVE_LIBSYSTEMD -DUSE_JEMALLOC -I/usr/include/jemalloc/include -DUSE_OPENSSL -I/usr/include/lua5.1 -I../deps/hiredis -Wdate-time -D_FORTIFY_SOURCE=2 -MMD -o aof.o -c aof.c +cc -std=c11 -pedantic -DREDIS_STATIC='' -Wall -W -Wno-missing-field-initializers -O2 -g -ggdb -g -O2 -fdebug-prefix-map=/build/redis-6.0.16=. -fstack-protector-strong -Wformat -Werror=format-security -I/usr/include/liblzf -funwind-tables -I../deps/linenoise -DHAVE_LIBSYSTEMD -DUSE_JEMALLOC -I/usr/include/jemalloc/include -DUSE_OPENSSL -I/usr/include/lua5.1 -I../deps/hiredis -Wdate-time -D_FORTIFY_SOURCE=2 -MMD -o pubsub.o -c pubsub.c aof.c: In function 'startAppendOnly': aof.c:267:9: warning: 'free' is deprecated [-Wdeprecated-declarations] 267 | free(cwdp); @@ -711,7 +747,6 @@ /usr/include/jemalloc/jemalloc.h:241:39: note: declared here 241 | JEMALLOC_EXPORT void JEMALLOC_NOTHROW je_free(void *ptr) | ^~~~~~~ -cc -std=c11 -pedantic -DREDIS_STATIC='' -Wall -W -Wno-missing-field-initializers -O2 -g -ggdb -g -O2 -fdebug-prefix-map=/build/redis-6.0.16=. -fstack-protector-strong -Wformat -Werror=format-security -I/usr/include/liblzf -funwind-tables -I../deps/linenoise -DHAVE_LIBSYSTEMD -DUSE_JEMALLOC -I/usr/include/jemalloc/include -DUSE_OPENSSL -I/usr/include/lua5.1 -I../deps/hiredis -Wdate-time -D_FORTIFY_SOURCE=2 -MMD -o pubsub.o -c pubsub.c cc -std=c11 -pedantic -DREDIS_STATIC='' -Wall -W -Wno-missing-field-initializers -O2 -g -ggdb -g -O2 -fdebug-prefix-map=/build/redis-6.0.16=. -fstack-protector-strong -Wformat -Werror=format-security -I/usr/include/liblzf -funwind-tables -I../deps/linenoise -DHAVE_LIBSYSTEMD -DUSE_JEMALLOC -I/usr/include/jemalloc/include -DUSE_OPENSSL -I/usr/include/lua5.1 -I../deps/hiredis -Wdate-time -D_FORTIFY_SOURCE=2 -MMD -o multi.o -c multi.c cc -std=c11 -pedantic -DREDIS_STATIC='' -Wall -W -Wno-missing-field-initializers -O2 -g -ggdb -g -O2 -fdebug-prefix-map=/build/redis-6.0.16=. -fstack-protector-strong -Wformat -Werror=format-security -I/usr/include/liblzf -funwind-tables -I../deps/linenoise -DHAVE_LIBSYSTEMD -DUSE_JEMALLOC -I/usr/include/jemalloc/include -DUSE_OPENSSL -I/usr/include/lua5.1 -I../deps/hiredis -Wdate-time -D_FORTIFY_SOURCE=2 -MMD -o debug.o -c debug.c cc -std=c11 -pedantic -DREDIS_STATIC='' -Wall -W -Wno-missing-field-initializers -O2 -g -ggdb -g -O2 -fdebug-prefix-map=/build/redis-6.0.16=. -fstack-protector-strong -Wformat -Werror=format-security -I/usr/include/liblzf -funwind-tables -I../deps/linenoise -DHAVE_LIBSYSTEMD -DUSE_JEMALLOC -I/usr/include/jemalloc/include -DUSE_OPENSSL -I/usr/include/lua5.1 -I../deps/hiredis -Wdate-time -D_FORTIFY_SOURCE=2 -MMD -o sort.o -c sort.c @@ -722,10 +757,6 @@ cc -std=c11 -pedantic -DREDIS_STATIC='' -Wall -W -Wno-missing-field-initializers -O2 -g -ggdb -g -O2 -fdebug-prefix-map=/build/redis-6.0.16=. -fstack-protector-strong -Wformat -Werror=format-security -I/usr/include/liblzf -funwind-tables -I../deps/linenoise -DHAVE_LIBSYSTEMD -DUSE_JEMALLOC -I/usr/include/jemalloc/include -DUSE_OPENSSL -I/usr/include/lua5.1 -I../deps/hiredis -Wdate-time -D_FORTIFY_SOURCE=2 -MMD -o endianconv.o -c endianconv.c cc -std=c11 -pedantic -DREDIS_STATIC='' -Wall -W -Wno-missing-field-initializers -O2 -g -ggdb -g -O2 -fdebug-prefix-map=/build/redis-6.0.16=. -fstack-protector-strong -Wformat -Werror=format-security -I/usr/include/liblzf -funwind-tables -I../deps/linenoise -DHAVE_LIBSYSTEMD -DUSE_JEMALLOC -I/usr/include/jemalloc/include -DUSE_OPENSSL -I/usr/include/lua5.1 -I../deps/hiredis -Wdate-time -D_FORTIFY_SOURCE=2 -MMD -o slowlog.o -c slowlog.c cc -std=c11 -pedantic -DREDIS_STATIC='' -Wall -W -Wno-missing-field-initializers -O2 -g -ggdb -g -O2 -fdebug-prefix-map=/build/redis-6.0.16=. -fstack-protector-strong -Wformat -Werror=format-security -I/usr/include/liblzf -funwind-tables -I../deps/linenoise -DHAVE_LIBSYSTEMD -DUSE_JEMALLOC -I/usr/include/jemalloc/include -DUSE_OPENSSL -I/usr/include/lua5.1 -I../deps/hiredis -Wdate-time -D_FORTIFY_SOURCE=2 -MMD -o scripting.o -c scripting.c -cc -std=c11 -pedantic -DREDIS_STATIC='' -Wall -W -Wno-missing-field-initializers -O2 -g -ggdb -g -O2 -fdebug-prefix-map=/build/redis-6.0.16=. -fstack-protector-strong -Wformat -Werror=format-security -I/usr/include/liblzf -funwind-tables -I../deps/linenoise -DHAVE_LIBSYSTEMD -DUSE_JEMALLOC -I/usr/include/jemalloc/include -DUSE_OPENSSL -I/usr/include/lua5.1 -I../deps/hiredis -Wdate-time -D_FORTIFY_SOURCE=2 -MMD -o bio.o -c bio.c -cc -std=c11 -pedantic -DREDIS_STATIC='' -Wall -W -Wno-missing-field-initializers -O2 -g -ggdb -g -O2 -fdebug-prefix-map=/build/redis-6.0.16=. -fstack-protector-strong -Wformat -Werror=format-security -I/usr/include/liblzf -funwind-tables -I../deps/linenoise -DHAVE_LIBSYSTEMD -DUSE_JEMALLOC -I/usr/include/jemalloc/include -DUSE_OPENSSL -I/usr/include/lua5.1 -I../deps/hiredis -Wdate-time -D_FORTIFY_SOURCE=2 -MMD -o rio.o -c rio.c -cc -std=c11 -pedantic -DREDIS_STATIC='' -Wall -W -Wno-missing-field-initializers -O2 -g -ggdb -g -O2 -fdebug-prefix-map=/build/redis-6.0.16=. -fstack-protector-strong -Wformat -Werror=format-security -I/usr/include/liblzf -funwind-tables -I../deps/linenoise -DHAVE_LIBSYSTEMD -DUSE_JEMALLOC -I/usr/include/jemalloc/include -DUSE_OPENSSL -I/usr/include/lua5.1 -I../deps/hiredis -Wdate-time -D_FORTIFY_SOURCE=2 -MMD -o rand.o -c rand.c -cc -std=c11 -pedantic -DREDIS_STATIC='' -Wall -W -Wno-missing-field-initializers -O2 -g -ggdb -g -O2 -fdebug-prefix-map=/build/redis-6.0.16=. -fstack-protector-strong -Wformat -Werror=format-security -I/usr/include/liblzf -funwind-tables -I../deps/linenoise -DHAVE_LIBSYSTEMD -DUSE_JEMALLOC -I/usr/include/jemalloc/include -DUSE_OPENSSL -I/usr/include/lua5.1 -I../deps/hiredis -Wdate-time -D_FORTIFY_SOURCE=2 -MMD -o memtest.o -c memtest.c In file included from scripting.c:36: ../debian/lua_libs_debian.c: In function 'luaLoadLibraries': /usr/include/lua5.1/lauxlib.h:115:25: warning: value computed is not used [-Wunused-value] @@ -734,6 +765,10 @@ ../debian/lua_libs_debian.c:7:1: note: in expansion of macro 'luaL_dostring' 7 | luaL_dostring(lua, "module = nil; require = nil; package = nil"); | ^~~~~~~~~~~~~ +cc -std=c11 -pedantic -DREDIS_STATIC='' -Wall -W -Wno-missing-field-initializers -O2 -g -ggdb -g -O2 -fdebug-prefix-map=/build/redis-6.0.16=. -fstack-protector-strong -Wformat -Werror=format-security -I/usr/include/liblzf -funwind-tables -I../deps/linenoise -DHAVE_LIBSYSTEMD -DUSE_JEMALLOC -I/usr/include/jemalloc/include -DUSE_OPENSSL -I/usr/include/lua5.1 -I../deps/hiredis -Wdate-time -D_FORTIFY_SOURCE=2 -MMD -o bio.o -c bio.c +cc -std=c11 -pedantic -DREDIS_STATIC='' -Wall -W -Wno-missing-field-initializers -O2 -g -ggdb -g -O2 -fdebug-prefix-map=/build/redis-6.0.16=. -fstack-protector-strong -Wformat -Werror=format-security -I/usr/include/liblzf -funwind-tables -I../deps/linenoise -DHAVE_LIBSYSTEMD -DUSE_JEMALLOC -I/usr/include/jemalloc/include -DUSE_OPENSSL -I/usr/include/lua5.1 -I../deps/hiredis -Wdate-time -D_FORTIFY_SOURCE=2 -MMD -o rio.o -c rio.c +cc -std=c11 -pedantic -DREDIS_STATIC='' -Wall -W -Wno-missing-field-initializers -O2 -g -ggdb -g -O2 -fdebug-prefix-map=/build/redis-6.0.16=. -fstack-protector-strong -Wformat -Werror=format-security -I/usr/include/liblzf -funwind-tables -I../deps/linenoise -DHAVE_LIBSYSTEMD -DUSE_JEMALLOC -I/usr/include/jemalloc/include -DUSE_OPENSSL -I/usr/include/lua5.1 -I../deps/hiredis -Wdate-time -D_FORTIFY_SOURCE=2 -MMD -o rand.o -c rand.c +cc -std=c11 -pedantic -DREDIS_STATIC='' -Wall -W -Wno-missing-field-initializers -O2 -g -ggdb -g -O2 -fdebug-prefix-map=/build/redis-6.0.16=. -fstack-protector-strong -Wformat -Werror=format-security -I/usr/include/liblzf -funwind-tables -I../deps/linenoise -DHAVE_LIBSYSTEMD -DUSE_JEMALLOC -I/usr/include/jemalloc/include -DUSE_OPENSSL -I/usr/include/lua5.1 -I../deps/hiredis -Wdate-time -D_FORTIFY_SOURCE=2 -MMD -o memtest.o -c memtest.c cc -std=c11 -pedantic -DREDIS_STATIC='' -Wall -W -Wno-missing-field-initializers -O2 -g -ggdb -g -O2 -fdebug-prefix-map=/build/redis-6.0.16=. -fstack-protector-strong -Wformat -Werror=format-security -I/usr/include/liblzf -funwind-tables -I../deps/linenoise -DHAVE_LIBSYSTEMD -DUSE_JEMALLOC -I/usr/include/jemalloc/include -DUSE_OPENSSL -I/usr/include/lua5.1 -I../deps/hiredis -Wdate-time -D_FORTIFY_SOURCE=2 -MMD -o crcspeed.o -c crcspeed.c cc -std=c11 -pedantic -DREDIS_STATIC='' -Wall -W -Wno-missing-field-initializers -O2 -g -ggdb -g -O2 -fdebug-prefix-map=/build/redis-6.0.16=. -fstack-protector-strong -Wformat -Werror=format-security -I/usr/include/liblzf -funwind-tables -I../deps/linenoise -DHAVE_LIBSYSTEMD -DUSE_JEMALLOC -I/usr/include/jemalloc/include -DUSE_OPENSSL -I/usr/include/lua5.1 -I../deps/hiredis -Wdate-time -D_FORTIFY_SOURCE=2 -MMD -o crc64.o -c crc64.c cc -std=c11 -pedantic -DREDIS_STATIC='' -Wall -W -Wno-missing-field-initializers -O2 -g -ggdb -g -O2 -fdebug-prefix-map=/build/redis-6.0.16=. -fstack-protector-strong -Wformat -Werror=format-security -I/usr/include/liblzf -funwind-tables -I../deps/linenoise -DHAVE_LIBSYSTEMD -DUSE_JEMALLOC -I/usr/include/jemalloc/include -DUSE_OPENSSL -I/usr/include/lua5.1 -I../deps/hiredis -Wdate-time -D_FORTIFY_SOURCE=2 -MMD -o bitops.o -c bitops.c @@ -777,10 +812,10 @@ cc -Wl,-z,relro -Wl,-z,now -Wl,-no-as-needed -ldl -latomic -llzf -llua5.1-cjson -llua5.1-bitop ../deps/lua/src/lua_struct.o ../deps/lua/src/lua_cmsgpack.o -g -ggdb -rdynamic -o redis-benchmark ae.o anet.o redis-benchmark.o adlist.o dict.o zmalloc.o siphash.o mt19937-64.o -llua5.1 -ljemalloc -lm -latomic -ldl -pthread -lrt -lsystemd ../deps/hiredis/libhiredis_ssl.a -lssl -lcrypto ../deps/hiredis/libhiredis.a cc -Wl,-z,relro -Wl,-z,now -Wl,-no-as-needed -ldl -latomic -llzf -llua5.1-cjson -llua5.1-bitop ../deps/lua/src/lua_struct.o ../deps/lua/src/lua_cmsgpack.o -g -ggdb -rdynamic -o redis-server adlist.o quicklist.o ae.o anet.o dict.o server.o sds.o zmalloc.o lzf_c.o lzf_d.o pqsort.o zipmap.o sha1.o ziplist.o release.o networking.o util.o object.o db.o replication.o rdb.o t_string.o t_list.o t_set.o t_zset.o t_hash.o config.o aof.o pubsub.o multi.o debug.o sort.o intset.o syncio.o cluster.o crc16.o endianconv.o slowlog.o scripting.o bio.o rio.o rand.o memtest.o crcspeed.o crc64.o bitops.o sentinel.o notify.o setproctitle.o blocked.o hyperloglog.o latency.o sparkline.o redis-check-rdb.o redis-check-aof.o geo.o lazyfree.o module.o evict.o expire.o geohash.o geohash_helper.o childinfo.o defrag.o siphash.o rax.o t_stream.o listpack.o localtime.o lolwut.o lolwut5.o lolwut6.o acl.o gopher.o tracking.o connection.o tls.o sha256.o timeout.o setcpuaffinity.o mt19937-64.o -llua5.1 -ljemalloc -lm -latomic -ldl -pthread -lrt -lsystemd ../deps/hiredis/libhiredis_ssl.a -lssl -lcrypto ../deps/hiredis/libhiredis.a install --strip-program=true redis-server redis-sentinel -install --strip-program=true redis-server redis-check-rdb -install --strip-program=true redis-server redis-check-aof install: WARNING: ignoring --strip-program option as -s option was not specified +install --strip-program=true redis-server redis-check-rdb install: WARNING: ignoring --strip-program option as -s option was not specified +install --strip-program=true redis-server redis-check-aof install: WARNING: ignoring --strip-program option as -s option was not specified cc -Wl,-z,relro -Wl,-z,now -Wl,-no-as-needed -ldl -latomic -llzf -llua5.1-cjson -llua5.1-bitop ../deps/lua/src/lua_struct.o ../deps/lua/src/lua_cmsgpack.o -g -ggdb -rdynamic -o redis-cli anet.o adlist.o dict.o redis-cli.o zmalloc.o release.o ae.o crcspeed.o crc64.o siphash.o crc16.o mt19937-64.o ../deps/linenoise/linenoise.o -llua5.1 -ljemalloc -lm -latomic -ldl -pthread -lrt -lsystemd ../deps/hiredis/libhiredis_ssl.a -lssl -lcrypto ../deps/hiredis/libhiredis.a @@ -795,24 +830,24 @@ # Generate a root CA and server certificate for testing ./utils/gen-test-certs.sh Generating RSA private key, 4096 bit long modulus (2 primes) -...................................................................................................................................................................................................................++++ -..............................................................................................................................++++ +....................................................................................................................................................++++ +................................................................................................++++ e is 65537 (0x010001) Generating RSA private key, 2048 bit long modulus (2 primes) -....+++++ -........................................................+++++ +..............+++++ +................+++++ e is 65537 (0x010001) Signature ok subject=O = Redis Test, CN = Server Getting CA Private Key Generating DH parameters, 2048 bit long safe prime, generator 2 This is going to take a long time -................................................................................................................................................................+.........................................................................+........................+.............................................+.......+.......................+.........................................................+........................................................................................................................+...................................................................................................................................+............+................................................................................................................................................................................................................................................................+......................................................................................................................................+..........................................................................................................................................................................................................................................................................................+...........+.................................................+...+.....................................................................................+...............................................................................................+......................................+.............................+.........................................................................................................................................+...................................+............................................................+........+...........+.......................................................................................................+...............................................................................................................................................................................+..................................................................................................................+.................................................................................................+.........................................................................................+................................+..........+......................................................+........................................................+...........................................................................................................+................................................................................................................................................+............................................................................................................................................................................................................................................+................................................................................................+..............................................+...............................+.....................................................+..........................................................................+.................................+............................................................+..................+...............+..............................+................+..............................+.........................................................+..................................+..................+...............+...........+.............................................................................................+...............................................................................................................+...........................................................................................................................................................................................................................................................................................+.........................................................................................................................................................................................................................................................................................................................+........................................................................................................................................+............................................................................................................................................+..+...................................................................................................................................................................................................................................................................................................................+..................................................................................................+.....+..........................................................................................................................................................................................................................................................................................................................................................................................................................................................+........................................+.......................................................................................................+....+..............+................................................................................................................................+...........................................................................................................................................................................................................+....................................................................................................................................................+..............................................................................................+................................................+....................................................................................................................................................+.............................................................................................+..................................................................+.............................+.................................................................................................................................................................................................................+....................................................+.....................+.............................................+.............................................................................................................................................................................................................................................................+.......+......+.........+..........................................................................+............................................+.........................................................................................................................................................+......+............................+....................................................................................................................+............................................................................+..............................................................+............................................................+...........................+..............................................................................................+.....+.+.............................................................+.............................+....................................................+..........................................................................................................................................................................................................................................+..............................................................................................+.............................................+..............................................................................................................................................................................................................+...................+......................................................................................................................................................................................................................................................................................................................................................................+.................+................................................................................................................+.......................................+.................+......+...............................................................................................................................+.........................................................+....+....................................................................................+..........................................................................................................................................................................................................................+...................................+...........................................................+.........................................................................................................................................................................................................+.................................................................................................................+.......................................................................+....................................................................................................................................................................................................+.+....................................................................................................................+............................+.........................................................................................................................................................................+............................+.................+........................................................................................................................................+.....+..................................................................................................................+....+.................................+................................................................................+..................+............................................................................+..+......+..............................................................................+...........................................................+......................................................+.+...........................................................................+.........+...........................+.............................................................................................+......................................................................................................................................................................................................................................+.................................................+.............................................................................................................................................+..............................................................................+...............................+...................+............................................................+.........................................................................................................................................................+...........................................+................+............................+...................................................................................................................................................................................................................................+........+.........................................................................+.........................................................................................................................................................................................................................+....................................................................................................................................+.........................................................................................................................................................................................................................................................+......................................................................................................................+.............+.....................................................................................................................+.+.............................................................................................................................................................................................................................................................................................+.....+.....+...........................................................................................................................................+...............................................................................................................................................................................................................................................+............................+...........................................................................................................................................................+.......+..................+............................+............................+....................................+...................+.............................................................................+.+....+..............................................................................................................................................................................................................+...........................................................................................................................................................................+.....+.....................................................................................................................+......................................+.....................................................................................................................................................................................................................................+........................................................................................+............+.................................................................................................+..................................................................................................................++*++*++*++* +.........................................+..+...........+........................................................................................................+.......................................................................................................................................................................................................................................................................................................................................................................................................................................................+.......................................................................................................................................................................................+..........................+..............................................................+...........................................................................................................................................................................................................................+..................................................................+....+......................................+.....................................................................................................................................................................+.............................................................................................................................+............................................................+......................................................................................................................................+.....................+.............................................................................................................................................................................................................................................................................................+..................+....+.......+..+.......................................+..................+............................................................................................................................................................................................................................................................................................................................................................................................................+.......+..................................................................................+.............................+..............................................................................................................................................................................+.....................................................................+..................+.......................................................................................................................................+............+...........................................................+................................................+.........................................................................................................................................................................................................................................+................................................................+............................................................................................................................................................................................................................+.............................................................................................................................................................................................+.................................................+...........................................+.................................................................................................................................................................................................................+........+.........................................................................................................................................................................................................................................................+..............................................................................+..............................................+.......................................................................................................................................+......................................+.....................................................................................................................................................................................+.......................+..............................................+....................+.....................................................................................+.......................................................................................+................................................................................................................................................................................................................+................................................................................................................+.......................+..................................................................+....................................................+....................................................+.....................................+...................................................................................................................+............................................................................................................................................................................+.................................................................................+...................................................................................+.......................................................................................................+..................................+..................................+.....................................................................+................................................................................................+......................................................................+..............................................................................................+.................................+.............................................+.............................................................................+...........+..............+....+.......................+..................................................+...............................................+.....+.................................................................................................................................................................................................................................................................................................+................................................................................................................................................................+........................................................................................................................+.............................................................................................................................................................+............................+.........................................................+...................................................+.........................+...................................................................................................................................................................+.................................+...........................................+.........................................................................................................................................+...............................................................................................................++*++*++*++* # Avoid race conditions in upstream testsuite ./runtest --clients 1 --tls || true Cleanup: may take some time... OK Starting test server at port 11111 -[ready]: 15948 +[ready]: 17914 Testing unit/printver Testing Redis version 6.0.16 (00000000) [1/58 done]: unit/printver (0 seconds) @@ -843,7 +878,7 @@ [ok]: MIGRATE with multiple keys: stress command rewriting [ok]: MIGRATE with multiple keys: delete just ack keys [ok]: MIGRATE AUTH: correct and wrong password cases -[2/58 done]: unit/dump (36 seconds) +[2/58 done]: unit/dump (46 seconds) Testing unit/auth [ok]: AUTH fails if there is no password configured server side [ok]: AUTH fails when a wrong password is given @@ -875,7 +910,7 @@ [ok]: test big number parsing [ok]: test bool parsing [ok]: Regression for a crash with blocking ops and pipelining -[4/58 done]: unit/protocol (1 seconds) +[4/58 done]: unit/protocol (2 seconds) Testing unit/keyspace [ok]: DEL against a single item [ok]: Vararg DEL @@ -931,7 +966,7 @@ [ok]: ZSCAN with PATTERN [ok]: ZSCAN scores: regression test for issue #2175 [ok]: SCAN regression test for issue #4906 -[6/58 done]: unit/scan (16 seconds) +[6/58 done]: unit/scan (26 seconds) Testing unit/type/string [ok]: SET and GET an item [ok]: SET and GET an empty item @@ -987,7 +1022,7 @@ [ok]: LCS indexes [ok]: LCS indexes with match len [ok]: LCS indexes with match len and minimum match len -[7/58 done]: unit/type/string (28 seconds) +[7/58 done]: unit/type/string (39 seconds) Testing unit/type/incr [ok]: INCR against non existing key [ok]: INCR against key created by incr itself @@ -1138,18 +1173,18 @@ [ok]: LREM starting from tail with negative count (2) - ziplist [ok]: LREM deleting objects that may be int encoded - ziplist [ok]: Regression for bug 593 - chaining BRPOPLPUSH with other blocking cmds -[9/58 done]: unit/type/list (13 seconds) +[9/58 done]: unit/type/list (15 seconds) Testing unit/type/list-2 [ok]: LTRIM stress testing - linkedlist [ok]: LTRIM stress testing - ziplist -[10/58 done]: unit/type/list-2 (34 seconds) +[10/58 done]: unit/type/list-2 (49 seconds) Testing unit/type/list-3 [ok]: Explicit regression for a list bug [ok]: Regression for quicklist #3343 bug [ok]: Stress tester for #3343-alike bugs [ok]: ziplist implementation: value encoding and backlink [ok]: ziplist implementation: encoding stress testing -[11/58 done]: unit/type/list-3 (119 seconds) +[11/58 done]: unit/type/list-3 (136 seconds) Testing unit/type/set [ok]: SADD, SCARD, SISMEMBER, SMEMBERS basics - regular set [ok]: SADD, SCARD, SISMEMBER, SMEMBERS basics - intset @@ -1231,7 +1266,7 @@ [ok]: SMOVE with identical source and destination [ok]: SMOVE only notify dstset when the addition is successful [ok]: intsets implementation stress testing -[12/58 done]: unit/type/set (13 seconds) +[12/58 done]: unit/type/set (21 seconds) Testing unit/type/zset [ok]: Check encoding - ziplist [ok]: ZSET basic ZADD and score update - ziplist @@ -1403,7 +1438,7 @@ [ok]: BZPOPMIN with variadic ZADD [ok]: BZPOPMIN with zero timeout should block indefinitely [ok]: ZSET skiplist order consistency when elements are moved -[13/58 done]: unit/type/zset (24 seconds) +[13/58 done]: unit/type/zset (34 seconds) Testing unit/type/hash [ok]: HSET/HLEN - Small hash creation [ok]: Is the small hash encoded with a ziplist? @@ -1463,7 +1498,7 @@ [ok]: Hash fuzzing #1 - 512 fields [ok]: Hash fuzzing #2 - 512 fields [ok]: Stress test the hash ziplist -> hashtable encoding conversion -[14/58 done]: unit/type/hash (9 seconds) +[14/58 done]: unit/type/hash (14 seconds) Testing unit/type/stream [ok]: XADD can add entries into a stream that XRANGE can fetch [ok]: XADD IDs are incremental @@ -1503,7 +1538,7 @@ [ok]: Empty stream can be rewrite into AOF correctly [ok]: Stream can be rewrite into AOF correctly after XDEL lastid [ok]: XGROUP HELP should not have unexpected options -[15/58 done]: unit/type/stream (45 seconds) +[15/58 done]: unit/type/stream (51 seconds) Testing unit/type/stream-cgroups [ok]: XGROUP CREATE: creation and duplicate group name detection [ok]: XGROUP CREATE: automatic stream creation fails without MKSTREAM @@ -1529,7 +1564,7 @@ [ok]: Consumer group last ID propagation to slave (NOACK=0) [ok]: Consumer group last ID propagation to slave (NOACK=1) [ok]: Empty stream with no lastid can be rewrite into AOF correctly -[16/58 done]: unit/type/stream-cgroups (5 seconds) +[16/58 done]: unit/type/stream-cgroups (6 seconds) Testing unit/sort [ok]: Old Ziplist: SORT BY key [ok]: Old Ziplist: SORT BY key with limit @@ -1579,7 +1614,7 @@ [ok]: SORT speed, 100 element list BY hash field, 100 times [ok]: SORT speed, 100 element list directly, 100 times [ok]: SORT speed, 100 element list BY , 100 times -[17/58 done]: unit/sort (18 seconds) +[17/58 done]: unit/sort (29 seconds) Testing unit/expire [ok]: EXPIRE - set timeouts multiple times [ok]: EXPIRE - It should be still possible to read 'x' @@ -1625,7 +1660,7 @@ [ok]: FLUSHDB [ok]: Perform a final SAVE to leave a clean DB on disk [ok]: Don't rehash if redis has child proecess -[19/58 done]: unit/other (13 seconds) +[19/58 done]: unit/other (15 seconds) Testing unit/multi [ok]: MUTLI / EXEC basics [ok]: DISCARD @@ -1668,7 +1703,7 @@ [ok]: exec with read commands and stale replica state change [ok]: EXEC with only read commands should not be rejected when OOM [ok]: EXEC with at least one use-memory command should fail -[20/58 done]: unit/multi (3 seconds) +[20/58 done]: unit/multi (4 seconds) Testing unit/quit [ok]: QUIT returns OK [ok]: Pipelined commands after QUIT must not be executed @@ -1694,7 +1729,7 @@ [ok]: AOF rewrite of zset with skiplist encoding, int data [ok]: BGREWRITEAOF is delayed if BGSAVE is in progress [ok]: BGREWRITEAOF is refused if already in progress -[22/58 done]: unit/aofrw (39 seconds) +[22/58 done]: unit/aofrw (36 seconds) Testing unit/acl [ok]: Connections start with the default user [ok]: It is possible to create new users @@ -1733,7 +1768,7 @@ [ok]: Alice: can excute all command [ok]: Bob: just excute @set and acl command [ok]: ACL load and save -[23/58 done]: unit/acl (0 seconds) +[23/58 done]: unit/acl (1 seconds) Testing unit/latency-monitor [ok]: Test latency events logging [ok]: LATENCY HISTORY output is ok @@ -1743,11 +1778,11 @@ [ok]: LATENCY RESET is able to reset events [ok]: LATENCY of expire events are correctly collected [ok]: LATENCY HELP should not have unexpected options -[24/58 done]: unit/latency-monitor (16 seconds) +[24/58 done]: unit/latency-monitor (17 seconds) Testing integration/block-repl [ok]: First server should have role slave after SLAVEOF [ok]: Test replication with blocking lists and sorted sets operations -[25/58 done]: integration/block-repl (26 seconds) +[25/58 done]: integration/block-repl (27 seconds) Testing integration/replication [ok]: Slave enters handshake [ok]: Slave is able to detect timeout during handshake @@ -1772,80 +1807,702 @@ [ok]: Master stream is correctly processed while the replica has a script in -BUSY state [ok]: slave fails full sync and diskless load swapdb recovers it [ok]: diskless loading short read +[ok]: diskless no replicas drop during rdb pipe +[ok]: diskless slow replicas drop during rdb pipe +[ok]: diskless fast replicas drop during rdb pipe +[ok]: diskless all replicas drop during rdb pipe +[ok]: diskless timeout replicas drop during rdb pipe +fork child is 14930 +[ok]: diskless replication child being killed is collected +[ok]: diskless replication read pipe cleanup +[ok]: replicaof right after disconnection +[26/58 done]: integration/replication (265 seconds) +Testing integration/replication-2 +[ok]: First server should have role slave after SLAVEOF +[ok]: If min-slaves-to-write is honored, write is accepted +[ok]: No write if min-slaves-to-write is < attached slaves +[ok]: If min-slaves-to-write is honored, write is accepted (again) +[ok]: No write if min-slaves-max-lag is > of the slave lag +[ok]: min-slaves-to-write is ignored by slaves +[ok]: MASTER and SLAVE dataset should be identical after complex ops +[27/58 done]: integration/replication-2 (29 seconds) +Testing integration/replication-3 +[ok]: First server should have role slave after SLAVEOF +[ok]: MASTER and SLAVE consistency with expire +[ok]: Slave is able to evict keys created in writable slaves +[ok]: First server should have role slave after SLAVEOF +[ok]: MASTER and SLAVE consistency with EVALSHA replication +[ok]: SLAVE can reload "lua" AUX RDB fields of duplicated scripts +[28/58 done]: integration/replication-3 (68 seconds) +Testing integration/replication-4 +[ok]: First server should have role slave after SLAVEOF +[ok]: Test replication with parallel clients writing in different DBs +[ok]: First server should have role slave after SLAVEOF +[ok]: With min-slaves-to-write (1,3): master should be writable +[ok]: With min-slaves-to-write (2,3): master should not be writable +[ok]: With min-slaves-to-write: master not writable with lagged slave +[ok]: First server should have role slave after SLAVEOF +[ok]: Replication: commands with many arguments (issue #1221) +[ok]: Replication of SPOP command -- alsoPropagate() API +[29/58 done]: integration/replication-4 (45 seconds) +Testing integration/replication-psync +[ok]: Slave should be able to synchronize with the master +[ok]: Detect write load to master +[ok]: Test replication partial resync: no reconnection, just sync (diskless: no, disabled, reconnect: 0) +[ok]: Slave should be able to synchronize with the master +[ok]: Detect write load to master +[ok]: Test replication partial resync: ok psync (diskless: no, disabled, reconnect: 1) +[ok]: Slave should be able to synchronize with the master +[ok]: Detect write load to master +[ok]: Test replication partial resync: no backlog (diskless: no, disabled, reconnect: 1) +[ok]: Slave should be able to synchronize with the master +[ok]: Detect write load to master +[ok]: Test replication partial resync: ok after delay (diskless: no, disabled, reconnect: 1) +[ok]: Slave should be able to synchronize with the master +[ok]: Detect write load to master +[ok]: Test replication partial resync: backlog expired (diskless: no, disabled, reconnect: 1) +[ok]: Slave should be able to synchronize with the master +[ok]: Detect write load to master +[ok]: Test replication partial resync: no reconnection, just sync (diskless: no, swapdb, reconnect: 0) +[ok]: Slave should be able to synchronize with the master +[ok]: Detect write load to master +[ok]: Test replication partial resync: ok psync (diskless: no, swapdb, reconnect: 1) +[ok]: Slave should be able to synchronize with the master +[ok]: Detect write load to master +[ok]: Test replication partial resync: no backlog (diskless: no, swapdb, reconnect: 1) +[ok]: Slave should be able to synchronize with the master +[ok]: Detect write load to master +[ok]: Test replication partial resync: ok after delay (diskless: no, swapdb, reconnect: 1) +[ok]: Slave should be able to synchronize with the master +[ok]: Detect write load to master +[ok]: Test replication partial resync: backlog expired (diskless: no, swapdb, reconnect: 1) +[ok]: Slave should be able to synchronize with the master +[ok]: Detect write load to master +[ok]: Test replication partial resync: no reconnection, just sync (diskless: yes, disabled, reconnect: 0) +[ok]: Slave should be able to synchronize with the master +[ok]: Detect write load to master +[ok]: Test replication partial resync: ok psync (diskless: yes, disabled, reconnect: 1) +[ok]: Slave should be able to synchronize with the master +[ok]: Detect write load to master +[ok]: Test replication partial resync: no backlog (diskless: yes, disabled, reconnect: 1) +[ok]: Slave should be able to synchronize with the master +[ok]: Detect write load to master +[ok]: Test replication partial resync: ok after delay (diskless: yes, disabled, reconnect: 1) +[ok]: Slave should be able to synchronize with the master +[ok]: Detect write load to master +[ok]: Test replication partial resync: backlog expired (diskless: yes, disabled, reconnect: 1) +[ok]: Slave should be able to synchronize with the master +[ok]: Detect write load to master +[ok]: Test replication partial resync: no reconnection, just sync (diskless: yes, swapdb, reconnect: 0) +[ok]: Slave should be able to synchronize with the master +[ok]: Detect write load to master +[ok]: Test replication partial resync: ok psync (diskless: yes, swapdb, reconnect: 1) +[ok]: Slave should be able to synchronize with the master +[ok]: Detect write load to master +[ok]: Test replication partial resync: no backlog (diskless: yes, swapdb, reconnect: 1) +[ok]: Slave should be able to synchronize with the master +[ok]: Detect write load to master +[ok]: Test replication partial resync: ok after delay (diskless: yes, swapdb, reconnect: 1) +[ok]: Slave should be able to synchronize with the master +[ok]: Detect write load to master +[ok]: Test replication partial resync: backlog expired (diskless: yes, swapdb, reconnect: 1) +[30/58 done]: integration/replication-psync (206 seconds) +Testing integration/aof +[ok]: Unfinished MULTI: Server should start if load-truncated is yes +[ok]: Short read: Server should start if load-truncated is yes +[ok]: Truncated AOF loaded: we expect foo to be equal to 5 +[ok]: Append a new command after loading an incomplete AOF +[ok]: Short read + command: Server should start +[ok]: Truncated AOF loaded: we expect foo to be equal to 6 now +[ok]: Bad format: Server should have logged an error +[ok]: Unfinished MULTI: Server should have logged an error +[ok]: Short read: Server should have logged an error +[ok]: Short read: Utility should confirm the AOF is not valid +[ok]: Short read: Utility should be able to fix the AOF +[ok]: Fixed AOF: Server should have been started +[ok]: Fixed AOF: Keyspace should contain values that were parseable +[ok]: AOF+SPOP: Server should have been started +[ok]: AOF+SPOP: Set should have 1 member +[ok]: AOF+SPOP: Server should have been started +[ok]: AOF+SPOP: Set should have 1 member +[ok]: AOF+EXPIRE: Server should have been started +[ok]: AOF+EXPIRE: List should be empty +[ok]: Redis should not try to convert DEL into EXPIREAT for EXPIRE -1 +[ok]: AOF fsync always barrier issue +[31/58 done]: integration/aof (17 seconds) +Testing integration/rdb +[ok]: RDB encoding loading test +[ok]: Server started empty with non-existing RDB file +[ok]: Server started empty with empty RDB file +[ok]: Test RDB stream encoding +[ok]: Server should not start if RDB file can't be open +[ok]: Server should not start if RDB is corrupted +[ok]: Test FLUSHALL aborts bgsave +[ok]: bgsave resets the change counter +[ok]: client freed during loading +[32/58 done]: integration/rdb (11 seconds) +Testing integration/convert-zipmap-hash-on-load +[ok]: RDB load zipmap hash: converts to ziplist +[ok]: RDB load zipmap hash: converts to hash table when hash-max-ziplist-entries is exceeded +[ok]: RDB load zipmap hash: converts to hash table when hash-max-ziplist-value is exceeded +[33/58 done]: integration/convert-zipmap-hash-on-load (2 seconds) +Testing integration/logging +[ok]: Server is able to generate a stack trace on selected systems +[34/58 done]: integration/logging (0 seconds) +Testing integration/psync2 +[ok]: PSYNC2: --- CYCLE 1 --- +[ok]: PSYNC2: [NEW LAYOUT] Set #3 as master +[ok]: PSYNC2: Set #4 to replicate from #3 +[ok]: PSYNC2: Set #1 to replicate from #4 +[ok]: PSYNC2: Set #2 to replicate from #3 +[ok]: PSYNC2: Set #0 to replicate from #3 +[ok]: PSYNC2: cluster is consistent after failover +[ok]: PSYNC2: generate load while killing replication links +[ok]: PSYNC2: cluster is consistent after load (x = 8740) +[ok]: PSYNC2: total sum of full synchronizations is exactly 4 +[ok]: PSYNC2: --- CYCLE 2 --- +[ok]: PSYNC2: [NEW LAYOUT] Set #0 as master +[ok]: PSYNC2: Set #3 to replicate from #0 +[ok]: PSYNC2: Set #4 to replicate from #0 +[ok]: PSYNC2: Set #1 to replicate from #3 +[ok]: PSYNC2: Set #2 to replicate from #0 +[ok]: PSYNC2: cluster is consistent after failover +[ok]: PSYNC2: generate load while killing replication links +[ok]: PSYNC2: cluster is consistent after load (x = 14543) +[ok]: PSYNC2: total sum of full synchronizations is exactly 4 +[ok]: PSYNC2: --- CYCLE 3 --- +[ok]: PSYNC2: [NEW LAYOUT] Set #4 as master +[ok]: PSYNC2: Set #3 to replicate from #4 +[ok]: PSYNC2: Set #2 to replicate from #4 +[ok]: PSYNC2: Set #1 to replicate from #3 +[ok]: PSYNC2: Set #0 to replicate from #1 +[ok]: PSYNC2: cluster is consistent after failover +[ok]: PSYNC2: generate load while killing replication links +[ok]: PSYNC2: cluster is consistent after load (x = 24287) +[ok]: PSYNC2: total sum of full synchronizations is exactly 4 +[ok]: PSYNC2: --- CYCLE 4 --- +[ok]: PSYNC2: [NEW LAYOUT] Set #0 as master +[ok]: PSYNC2: Set #3 to replicate from #0 +[ok]: PSYNC2: Set #1 to replicate from #0 +[ok]: PSYNC2: Set #2 to replicate from #3 +[ok]: PSYNC2: Set #4 to replicate from #3 +[ok]: PSYNC2: cluster is consistent after failover +[ok]: PSYNC2: generate load while killing replication links +[ok]: PSYNC2: cluster is consistent after load (x = 31850) +[ok]: PSYNC2: total sum of full synchronizations is exactly 4 +[ok]: PSYNC2: --- CYCLE 5 --- +[ok]: PSYNC2: [NEW LAYOUT] Set #4 as master +[ok]: PSYNC2: Set #2 to replicate from #4 +[ok]: PSYNC2: Set #3 to replicate from #4 +[ok]: PSYNC2: Set #0 to replicate from #4 +[ok]: PSYNC2: Set #1 to replicate from #2 +[ok]: PSYNC2: cluster is consistent after failover +[ok]: PSYNC2: generate load while killing replication links +[ok]: PSYNC2: cluster is consistent after load (x = 41067) +[ok]: PSYNC2: total sum of full synchronizations is exactly 4 +[ok]: PSYNC2: --- CYCLE 6 --- +[ok]: PSYNC2: [NEW LAYOUT] Set #0 as master +[ok]: PSYNC2: Set #4 to replicate from #0 +[ok]: PSYNC2: Set #1 to replicate from #4 +[ok]: PSYNC2: Set #3 to replicate from #4 +[ok]: PSYNC2: Set #2 to replicate from #1 +[ok]: PSYNC2: cluster is consistent after failover +[ok]: PSYNC2: generate load while killing replication links +[ok]: PSYNC2: cluster is consistent after load (x = 53166) +[ok]: PSYNC2: total sum of full synchronizations is exactly 4 +[ok]: PSYNC2: Bring the master back again for next test +[ok]: PSYNC2: Partial resync after restart using RDB aux fields +[ok]: PSYNC2: Replica RDB restart with EVALSHA in backlog issue #4483 +[35/58 done]: integration/psync2 (50 seconds) +Testing integration/psync2-reg +[ok]: PSYNC2 #3899 regression: setup +[ok]: PSYNC2 #3899 regression: kill chained replica +[ok]: PSYNC2 #3899 regression: kill chained replica +[ok]: PSYNC2 #3899 regression: kill first replica +[ok]: PSYNC2 #3899 regression: kill first replica +[ok]: PSYNC2 #3899 regression: kill chained replica +[ok]: PSYNC2 #3899 regression: kill chained replica +[ok]: PSYNC2 #3899 regression: kill chained replica +[ok]: PSYNC2 #3899 regression: kill chained replica +[ok]: PSYNC2 #3899 regression: kill first replica +[ok]: PSYNC2 #3899 regression: kill chained replica +[ok]: PSYNC2 #3899 regression: kill first replica +[ok]: PSYNC2 #3899 regression: kill chained replica +[ok]: PSYNC2 #3899 regression: kill first replica +[ok]: PSYNC2 #3899 regression: kill chained replica +[ok]: PSYNC2 #3899 regression: kill chained replica +[ok]: PSYNC2 #3899 regression: kill first replica +[ok]: PSYNC2 #3899 regression: kill first replica +[ok]: PSYNC2 #3899 regression: kill chained replica +[ok]: PSYNC2 #3899 regression: kill chained replica +[ok]: PSYNC2 #3899 regression: kill first replica +[ok]: PSYNC2 #3899 regression: kill first replica +[ok]: PSYNC2 #3899 regression: verify consistency +[36/58 done]: integration/psync2-reg (23 seconds) +Testing integration/psync2-pingoff +[ok]: PSYNC2 pingoff: setup +[ok]: PSYNC2 pingoff: write and wait replication +[ok]: PSYNC2 pingoff: pause replica and promote it +[ok]: Make the old master a replica of the new one and check conditions +[ok]: test various edge cases of repl topology changes with missing pings at the end +[ok]: Chained replicas disconnect when replica re-connect with the same master +[37/58 done]: integration/psync2-pingoff (21 seconds) +Testing integration/redis-cli +[ok]: Interactive CLI: INFO response should be printed raw +[ok]: Interactive CLI: Status reply +[ok]: Interactive CLI: Integer reply +[ok]: Interactive CLI: Bulk reply +[ok]: Interactive CLI: Multi-bulk reply +[ok]: Interactive CLI: Parsing quotes +[ok]: Non-interactive TTY CLI: Status reply +[ok]: Non-interactive TTY CLI: Integer reply +[ok]: Non-interactive TTY CLI: Bulk reply +[ok]: Non-interactive TTY CLI: Multi-bulk reply +[ok]: Non-interactive TTY CLI: Read last argument from pipe +[ok]: Non-interactive TTY CLI: Read last argument from file +[ok]: Non-interactive non-TTY CLI: Status reply +[ok]: Non-interactive non-TTY CLI: Integer reply +[ok]: Non-interactive non-TTY CLI: Bulk reply +[ok]: Non-interactive non-TTY CLI: Multi-bulk reply +[ok]: Non-interactive non-TTY CLI: Read last argument from pipe +[ok]: Non-interactive non-TTY CLI: Read last argument from file +[ok]: Dumping an RDB +[ok]: Connecting as a replica +[ok]: Piping raw protocol +[38/58 done]: integration/redis-cli (14 seconds) +Testing unit/pubsub +[ok]: Pub/Sub PING +[ok]: PUBLISH/SUBSCRIBE basics +[ok]: PUBLISH/SUBSCRIBE with two clients +[ok]: PUBLISH/SUBSCRIBE after UNSUBSCRIBE without arguments +[ok]: SUBSCRIBE to one channel more than once +[ok]: UNSUBSCRIBE from non-subscribed channels +[ok]: PUBLISH/PSUBSCRIBE basics +[ok]: PUBLISH/PSUBSCRIBE with two clients +[ok]: PUBLISH/PSUBSCRIBE after PUNSUBSCRIBE without arguments +[ok]: PUNSUBSCRIBE from non-subscribed channels +[ok]: NUMSUB returns numbers, not strings (#1561) +[ok]: Mix SUBSCRIBE and PSUBSCRIBE +[ok]: PUNSUBSCRIBE and UNSUBSCRIBE should always reply +[ok]: Keyspace notifications: we receive keyspace notifications +[ok]: Keyspace notifications: we receive keyevent notifications +[ok]: Keyspace notifications: we can receive both kind of events +[ok]: Keyspace notifications: we are able to mask events +[ok]: Keyspace notifications: general events test +[ok]: Keyspace notifications: list events test +[ok]: Keyspace notifications: set events test +[ok]: Keyspace notifications: zset events test +[ok]: Keyspace notifications: hash events test +[ok]: Keyspace notifications: expired events (triggered expire) +[ok]: Keyspace notifications: expired events (background expire) +[ok]: Keyspace notifications: evicted events +[ok]: Keyspace notifications: test CONFIG GET/SET of event flags +[39/58 done]: unit/pubsub (1 seconds) +Testing unit/slowlog +[ok]: SLOWLOG - check that it starts with an empty log +[ok]: SLOWLOG - only logs commands taking more time than specified +[ok]: SLOWLOG - max entries is correctly handled +[ok]: SLOWLOG - GET optional argument to limit output len works +[ok]: SLOWLOG - RESET subcommand works +[ok]: SLOWLOG - logged entry sanity check +[ok]: SLOWLOG - commands with too many arguments are trimmed +[ok]: SLOWLOG - too long arguments are trimmed +[ok]: SLOWLOG - EXEC is not logged, just executed commands +[ok]: SLOWLOG - can clean older entires +[ok]: SLOWLOG - can be disabled +[40/58 done]: unit/slowlog (2 seconds) +Testing unit/scripting +[ok]: EVAL - Does Lua interpreter replies to our requests? +[ok]: EVAL - Lua integer -> Redis protocol type conversion +[ok]: EVAL - Lua string -> Redis protocol type conversion +[ok]: EVAL - Lua true boolean -> Redis protocol type conversion +[ok]: EVAL - Lua false boolean -> Redis protocol type conversion +[ok]: EVAL - Lua status code reply -> Redis protocol type conversion +[ok]: EVAL - Lua error reply -> Redis protocol type conversion +[ok]: EVAL - Lua table -> Redis protocol type conversion +[ok]: EVAL - Are the KEYS and ARGV arrays populated correctly? +[ok]: EVAL - is Lua able to call Redis API? +[ok]: EVALSHA - Can we call a SHA1 if already defined? +[ok]: EVALSHA - Can we call a SHA1 in uppercase? +[ok]: EVALSHA - Do we get an error on invalid SHA1? +[ok]: EVALSHA - Do we get an error on non defined SHA1? +[ok]: EVAL - Redis integer -> Lua type conversion +[ok]: EVAL - Redis bulk -> Lua type conversion +[ok]: EVAL - Redis multi bulk -> Lua type conversion +[ok]: EVAL - Redis status reply -> Lua type conversion +[ok]: EVAL - Redis error reply -> Lua type conversion +[ok]: EVAL - Redis nil bulk reply -> Lua type conversion +[ok]: EVAL - Is the Lua client using the currently selected DB? +[ok]: EVAL - SELECT inside Lua should not affect the caller +[ok]: EVAL - Scripts can't run certain commands +[ok]: EVAL - Scripts can't run XREAD and XREADGROUP with BLOCK option +[ok]: EVAL - Scripts can't run certain commands +[ok]: EVAL - No arguments to redis.call/pcall is considered an error +[ok]: EVAL - redis.call variant raises a Lua error on Redis cmd error (1) +[ok]: EVAL - redis.call variant raises a Lua error on Redis cmd error (1) +[ok]: EVAL - redis.call variant raises a Lua error on Redis cmd error (1) +[ok]: EVAL - JSON numeric decoding +[ok]: EVAL - JSON string decoding +[ok]: EVAL - cmsgpack can pack double? +[ok]: EVAL - cmsgpack can pack negative int64? +[ok]: EVAL - cmsgpack can pack and unpack circular references? +[ok]: EVAL - Numerical sanity check from bitop +[ok]: EVAL - Verify minimal bitop functionality +[ok]: EVAL - Able to parse trailing comments +[ok]: SCRIPTING FLUSH - is able to clear the scripts cache? +[ok]: SCRIPT EXISTS - can detect already defined scripts? +[ok]: SCRIPT LOAD - is able to register scripts in the scripting cache +[ok]: In the context of Lua the output of random commands gets ordered +[ok]: SORT is normally not alpha re-ordered for the scripting engine +[ok]: SORT BY output gets ordered for scripting +[ok]: SORT BY with GET gets ordered for scripting +[ok]: redis.sha1hex() implementation +[ok]: Globals protection reading an undeclared global variable +[ok]: Globals protection setting an undeclared global* +[ok]: Test an example script DECR_IF_GT +[ok]: Scripting engine resets PRNG at every script execution +[ok]: Scripting engine PRNG can be seeded correctly +[ok]: EVAL does not leak in the Lua stack +[ok]: EVAL processes writes from AOF in read-only slaves +[ok]: EVAL timeout from AOF +[ok]: We can call scripts rewriting client->argv from Lua +[ok]: Call Redis command with many args from Lua (issue #1764) +[ok]: Number conversion precision test (issue #1118) +[ok]: String containing number precision test (regression of issue #1118) +[ok]: Verify negative arg count is error instead of crash (issue #1842) +[ok]: Correct handling of reused argv (issue #1939) +[ok]: Functions in the Redis namespace are able to report errors +[ok]: Script with RESP3 map +[ok]: Timedout read-only scripts can be killed by SCRIPT KILL +[ok]: Timedout script link is still usable after Lua returns +[ok]: Timedout scripts that modified data can't be killed by SCRIPT KILL +[ok]: SHUTDOWN NOSAVE can kill a timedout script anyway +[ok]: Before the replica connects we issue two EVAL commands (scripts replication) +[ok]: Connect a replica to the master instance (scripts replication) +[ok]: Now use EVALSHA against the master, with both SHAs (scripts replication) +[ok]: If EVALSHA was replicated as EVAL, 'x' should be '4' (scripts replication) +[ok]: Replication of script multiple pushes to list with BLPOP (scripts replication) +[ok]: EVALSHA replication when first call is readonly (scripts replication) +[ok]: Lua scripts using SELECT are replicated correctly (scripts replication) +[ok]: Before the replica connects we issue two EVAL commands (commands replication) +[ok]: Connect a replica to the master instance (commands replication) +[ok]: Now use EVALSHA against the master, with both SHAs (commands replication) +[ok]: If EVALSHA was replicated as EVAL, 'x' should be '4' (commands replication) +[ok]: Replication of script multiple pushes to list with BLPOP (commands replication) +[ok]: EVALSHA replication when first call is readonly (commands replication) +[ok]: Lua scripts using SELECT are replicated correctly (commands replication) +[ok]: Connect a replica to the master instance +[ok]: Redis.replicate_commands() must be issued before any write +[ok]: Redis.replicate_commands() must be issued before any write (2) +[ok]: Redis.set_repl() must be issued after replicate_commands() +[ok]: Redis.set_repl() don't accept invalid values +[ok]: Test selective replication of certain Redis commands from Lua +[ok]: PRNG is seeded randomly for command replication +[ok]: Using side effects is not a problem with command replication +[ok]: Test scripting debug protocol parsing +[41/58 done]: unit/scripting (16 seconds) +Testing unit/maxmemory +[ok]: Without maxmemory small integers are shared +[ok]: With maxmemory and non-LRU policy integers are still shared +[ok]: With maxmemory and LRU policy integers are not shared +[ok]: maxmemory - is the memory limit honoured? (policy allkeys-random) +[ok]: maxmemory - is the memory limit honoured? (policy allkeys-lru) +[ok]: maxmemory - is the memory limit honoured? (policy allkeys-lfu) +[ok]: maxmemory - is the memory limit honoured? (policy volatile-lru) +[ok]: maxmemory - is the memory limit honoured? (policy volatile-lfu) +[ok]: maxmemory - is the memory limit honoured? (policy volatile-random) +[ok]: maxmemory - is the memory limit honoured? (policy volatile-ttl) +[ok]: maxmemory - only allkeys-* should remove non-volatile keys (allkeys-random) +[ok]: maxmemory - only allkeys-* should remove non-volatile keys (allkeys-lru) +[ok]: maxmemory - only allkeys-* should remove non-volatile keys (volatile-lru) +[ok]: maxmemory - only allkeys-* should remove non-volatile keys (volatile-random) +[ok]: maxmemory - only allkeys-* should remove non-volatile keys (volatile-ttl) +[ok]: maxmemory - policy volatile-lru should only remove volatile keys. +[ok]: maxmemory - policy volatile-lfu should only remove volatile keys. +[ok]: maxmemory - policy volatile-random should only remove volatile keys. +[ok]: maxmemory - policy volatile-ttl should only remove volatile keys. +[ok]: slave buffer are counted correctly +[ok]: replica buffer don't induce eviction +[ok]: client tracking don't cause eviction feedback loop +[42/58 done]: unit/maxmemory (116 seconds) +Testing unit/introspection +[ok]: CLIENT LIST +[ok]: MONITOR can log executed commands +[ok]: MONITOR can log commands issued by the scripting engine +[ok]: CLIENT GETNAME should return NIL if name is not assigned +[ok]: CLIENT LIST shows empty fields for unassigned names +[ok]: CLIENT SETNAME does not accept spaces +[ok]: CLIENT SETNAME can assign a name to this connection +[ok]: CLIENT SETNAME can change the name of an existing connection +[ok]: After CLIENT SETNAME, connection can still be closed +[ok]: CONFIG sanity +[ok]: CONFIG REWRITE sanity +[43/58 done]: unit/introspection (1 seconds) +Testing unit/introspection-2 +[ok]: TTL, TYPE and EXISTS do not alter the last access time of a key +[ok]: TOUCH alters the last access time of a key +[ok]: TOUCH returns the number of existing keys specified +[ok]: command stats for GEOADD +[ok]: command stats for EXPIRE +[ok]: command stats for BRPOP +[ok]: command stats for MULTI +[ok]: command stats for scripts +[44/58 done]: unit/introspection-2 (6 seconds) +Testing unit/limits +[ok]: Check if maxclients works refusing connections +[45/58 done]: unit/limits (2 seconds) +Testing unit/obuf-limits +[ok]: Client output buffer hard limit is enforced +[ok]: Client output buffer soft limit is not enforced if time is not overreached +[ok]: Client output buffer soft limit is enforced if time is overreached +[ok]: No response for single command if client output buffer hard limit is enforced +[ok]: No response for multi commands in pipeline if client output buffer limit is enforced +[ok]: Execute transactions completely even if client output buffer limit is enforced +[46/58 done]: unit/obuf-limits (118 seconds) +Testing unit/bitops +[ok]: BITCOUNT returns 0 against non existing key +[ok]: BITCOUNT returns 0 with out of range indexes +[ok]: BITCOUNT returns 0 with negative indexes where start > end +[ok]: BITCOUNT against test vector #1 +[ok]: BITCOUNT against test vector #2 +[ok]: BITCOUNT against test vector #3 +[ok]: BITCOUNT against test vector #4 +[ok]: BITCOUNT against test vector #5 +[ok]: BITCOUNT fuzzing without start/end +[ok]: BITCOUNT fuzzing with start/end +[ok]: BITCOUNT with start, end +[ok]: BITCOUNT syntax error #1 +[ok]: BITCOUNT regression test for github issue #582 +[ok]: BITCOUNT misaligned prefix +[ok]: BITCOUNT misaligned prefix + full words + remainder +[ok]: BITOP NOT (empty string) +[ok]: BITOP NOT (known string) +[ok]: BITOP where dest and target are the same key +[ok]: BITOP AND|OR|XOR don't change the string with single input key +[ok]: BITOP missing key is considered a stream of zero +[ok]: BITOP shorter keys are zero-padded to the key with max length +[ok]: BITOP and fuzzing +[ok]: BITOP or fuzzing +[ok]: BITOP xor fuzzing +[ok]: BITOP NOT fuzzing +[ok]: BITOP with integer encoded source objects +[ok]: BITOP with non string source key +[ok]: BITOP with empty string after non empty string (issue #529) +[ok]: BITPOS bit=0 with empty key returns 0 +[ok]: BITPOS bit=1 with empty key returns -1 +[ok]: BITPOS bit=0 with string less than 1 word works +[ok]: BITPOS bit=1 with string less than 1 word works +[ok]: BITPOS bit=0 starting at unaligned address +[ok]: BITPOS bit=1 starting at unaligned address +[ok]: BITPOS bit=0 unaligned+full word+reminder +[ok]: BITPOS bit=1 unaligned+full word+reminder +[ok]: BITPOS bit=1 returns -1 if string is all 0 bits +[ok]: BITPOS bit=0 works with intervals +[ok]: BITPOS bit=1 works with intervals +[ok]: BITPOS bit=0 changes behavior if end is given +[ok]: BITPOS bit=1 fuzzy testing using SETBIT +[ok]: BITPOS bit=0 fuzzy testing using SETBIT +[47/58 done]: unit/bitops (5 seconds) +Testing unit/bitfield +[ok]: BITFIELD signed SET and GET basics +[ok]: BITFIELD unsigned SET and GET basics +[ok]: BITFIELD # form +[ok]: BITFIELD basic INCRBY form +[ok]: BITFIELD chaining of multiple commands +[ok]: BITFIELD unsigned overflow wrap +[ok]: BITFIELD unsigned overflow sat +[ok]: BITFIELD signed overflow wrap +[ok]: BITFIELD signed overflow sat +[ok]: BITFIELD overflow detection fuzzing +[ok]: BITFIELD overflow wrap fuzzing +[ok]: BITFIELD regression for #3221 +[ok]: BITFIELD regression for #3564 +[ok]: BITFIELD: setup slave +[ok]: BITFIELD: write on master, read on slave +[ok]: BITFIELD_RO fails when write option is used +[48/58 done]: unit/bitfield (5 seconds) +Testing unit/geo +[ok]: GEOADD create +[ok]: GEOADD update +[ok]: GEOADD invalid coordinates +[ok]: GEOADD multi add +[ok]: Check geoset values +[ok]: GEORADIUS simple (sorted) +[ok]: GEORADIUS withdist (sorted) +[ok]: GEORADIUS with COUNT +[ok]: GEORADIUS with COUNT but missing integer argument +[ok]: GEORADIUS with COUNT DESC +[ok]: GEORADIUS HUGE, issue #2767 +[ok]: GEORADIUSBYMEMBER simple (sorted) +[ok]: GEORADIUSBYMEMBER withdist (sorted) +[ok]: GEOHASH is able to return geohash strings +[ok]: GEOPOS simple +[ok]: GEOPOS missing element +[ok]: GEODIST simple & unit +[ok]: GEODIST missing elements +[ok]: GEORADIUS STORE option: syntax error +[ok]: GEORANGE STORE option: incompatible options +[ok]: GEORANGE STORE option: plain usage +[ok]: GEORANGE STOREDIST option: plain usage +[ok]: GEORANGE STOREDIST option: COUNT ASC and DESC +[ok]: GEOADD + GEORANGE randomized test +[49/58 done]: unit/geo (84 seconds) +Testing unit/memefficiency +[ok]: Memory efficiency with values in range 32 +[ok]: Memory efficiency with values in range 64 +[ok]: Memory efficiency with values in range 128 +[ok]: Memory efficiency with values in range 1024 +[ok]: Memory efficiency with values in range 16384 +[err]: Active defrag in tests/unit/memefficiency.tcl +defrag not started. +[err]: Active defrag big keys in tests/unit/memefficiency.tcl +defrag not started. +[err]: Active defrag big list in tests/unit/memefficiency.tcl +defrag not started. -Logged warnings (pid 5866): -(none) - - -Logged warnings (pid 5853): -(none) - -[err]: diskless no replicas drop during rdb pipe in tests/integration/replication.tcl -log message of '"*Diskless rdb transfer, done reading from pipe, 2 replicas still up*"' not found in ./tests/tmp/server.15948.162/stdout after line: 45 till line: 48 - -Logged warnings (pid 6184): -(none) - - -Logged warnings (pid 6171): -(none) - -[err]: diskless slow replicas drop during rdb pipe in tests/integration/replication.tcl -log message of '"*Diskless rdb transfer, done reading from pipe, 1 replicas still up*"' not found in ./tests/tmp/server.15948.162/stdout after line: 66 till line: 69 - -Logged warnings (pid 6358): -(none) - - -Logged warnings (pid 6345): +Logged warnings (pid 24427): (none) -[err]: diskless fast replicas drop during rdb pipe in tests/integration/replication.tcl -log message of '"*Diskless rdb transfer, done reading from pipe, 1 replicas still up*"' not found in ./tests/tmp/server.15948.162/stdout after line: 87 till line: 91 -[TIMEOUT]: clients state report follows. -sockaaab11555610 => (SPAWNED SERVER) pid:7063 -Killing still running Redis server 5839 -Killing still running Redis server 6358 -Killing still running Redis server 7063 +[err]: Active defrag edge case in tests/unit/memefficiency.tcl +defrag not started. +[50/58 done]: unit/memefficiency (327 seconds) +Testing unit/hyperloglog +[ok]: HyperLogLog self test passes +[ok]: PFADD without arguments creates an HLL value +[ok]: Approximated cardinality after creation is zero +[ok]: PFADD returns 1 when at least 1 reg was modified +[ok]: PFADD returns 0 when no reg was modified +[ok]: PFADD works with empty string (regression) +[ok]: PFCOUNT returns approximated cardinality of set +[ok]: HyperLogLogs are promote from sparse to dense +[ok]: HyperLogLog sparse encoding stress test +[ok]: Corrupted sparse HyperLogLogs are detected: Additional at tail +[ok]: Corrupted sparse HyperLogLogs are detected: Broken magic +[ok]: Corrupted sparse HyperLogLogs are detected: Invalid encoding +[ok]: Corrupted dense HyperLogLogs are detected: Wrong length +[ok]: Fuzzing dense/sparse encoding: Redis should always detect errors +[ok]: PFADD, PFCOUNT, PFMERGE type checking works +[ok]: PFMERGE results on the cardinality of union of sets +[ok]: PFCOUNT multiple-keys merge returns cardinality of union #1 +[ok]: PFCOUNT multiple-keys merge returns cardinality of union #2 +[ok]: PFDEBUG GETREG returns the HyperLogLog raw registers +[ok]: PFADD / PFCOUNT cache invalidation works +[51/58 done]: unit/hyperloglog (95 seconds) +Testing unit/lazyfree +[ok]: UNLINK can reclaim memory in background +[ok]: FLUSHDB ASYNC can reclaim memory in background +[52/58 done]: unit/lazyfree (2 seconds) +Testing unit/wait +[ok]: Setup slave +[ok]: WAIT should acknowledge 1 additional copy of the data +[ok]: WAIT should not acknowledge 2 additional copies of the data +[ok]: WAIT should not acknowledge 1 additional copy if slave is blocked +[53/58 done]: unit/wait (7 seconds) +Testing unit/pendingquerybuf +[ok]: pending querybuf: check size of pending_querybuf after set a big value +[54/58 done]: unit/pendingquerybuf (12 seconds) +Testing unit/tls +[ok]: TLS: Not accepting non-TLS connections on a TLS port +[ok]: TLS: Verify tls-auth-clients behaves as expected +[ok]: TLS: Verify tls-protocols behaves as expected +[ok]: TLS: Verify tls-ciphers behaves as expected +[ok]: TLS: Verify tls-prefer-server-ciphers behaves as expected +[55/58 done]: unit/tls (0 seconds) +Testing unit/tracking +[ok]: Clients are able to enable tracking and redirect it +[ok]: The other connection is able to get invalidations +[ok]: The client is now able to disable tracking +[ok]: Clients can enable the BCAST mode with the empty prefix +[ok]: The connection gets invalidation messages about all the keys +[ok]: Clients can enable the BCAST mode with prefixes +[ok]: Adding prefixes to BCAST mode works +[ok]: Tracking NOLOOP mode in standard mode works +[ok]: Tracking NOLOOP mode in BCAST mode works +[ok]: Tracking gets notification of expired keys +[ok]: Tracking gets notification of lazy expired keys +[ok]: Tracking gets notification on tracking table key eviction +[56/58 done]: unit/tracking (2 seconds) +Testing unit/oom-score-adj +[ok]: CONFIG SET oom-score-adj works as expected +[ok]: CONFIG SET oom-score-adj handles configuration failures +[57/58 done]: unit/oom-score-adj (2 seconds) +Testing unit/shutdown +[ok]: Temp rdb will be deleted if we use bg_unlink when shutdown +[ok]: Temp rdb will be deleted in signal handle +[58/58 done]: unit/shutdown (1 seconds) The End Execution time of different units: 0 seconds - unit/printver - 36 seconds - unit/dump + 46 seconds - unit/dump 1 seconds - unit/auth - 1 seconds - unit/protocol + 2 seconds - unit/protocol 1 seconds - unit/keyspace - 16 seconds - unit/scan - 28 seconds - unit/type/string + 26 seconds - unit/scan + 39 seconds - unit/type/string 0 seconds - unit/type/incr - 13 seconds - unit/type/list - 34 seconds - unit/type/list-2 - 119 seconds - unit/type/list-3 - 13 seconds - unit/type/set - 24 seconds - unit/type/zset - 9 seconds - unit/type/hash - 45 seconds - unit/type/stream - 5 seconds - unit/type/stream-cgroups - 18 seconds - unit/sort + 15 seconds - unit/type/list + 49 seconds - unit/type/list-2 + 136 seconds - unit/type/list-3 + 21 seconds - unit/type/set + 34 seconds - unit/type/zset + 14 seconds - unit/type/hash + 51 seconds - unit/type/stream + 6 seconds - unit/type/stream-cgroups + 29 seconds - unit/sort 15 seconds - unit/expire - 13 seconds - unit/other - 3 seconds - unit/multi + 15 seconds - unit/other + 4 seconds - unit/multi 1 seconds - unit/quit - 39 seconds - unit/aofrw - 0 seconds - unit/acl - 16 seconds - unit/latency-monitor - 26 seconds - integration/block-repl + 36 seconds - unit/aofrw + 1 seconds - unit/acl + 17 seconds - unit/latency-monitor + 27 seconds - integration/block-repl + 265 seconds - integration/replication + 29 seconds - integration/replication-2 + 68 seconds - integration/replication-3 + 45 seconds - integration/replication-4 + 206 seconds - integration/replication-psync + 17 seconds - integration/aof + 11 seconds - integration/rdb + 2 seconds - integration/convert-zipmap-hash-on-load + 0 seconds - integration/logging + 50 seconds - integration/psync2 + 23 seconds - integration/psync2-reg + 21 seconds - integration/psync2-pingoff + 14 seconds - integration/redis-cli + 1 seconds - unit/pubsub + 2 seconds - unit/slowlog + 16 seconds - unit/scripting + 116 seconds - unit/maxmemory + 1 seconds - unit/introspection + 6 seconds - unit/introspection-2 + 2 seconds - unit/limits + 118 seconds - unit/obuf-limits + 5 seconds - unit/bitops + 5 seconds - unit/bitfield + 84 seconds - unit/geo + 327 seconds - unit/memefficiency + 95 seconds - unit/hyperloglog + 2 seconds - unit/lazyfree + 7 seconds - unit/wait + 12 seconds - unit/pendingquerybuf + 0 seconds - unit/tls + 2 seconds - unit/tracking + 2 seconds - unit/oom-score-adj + 1 seconds - unit/shutdown !!! WARNING The following tests failed: -*** [err]: diskless no replicas drop during rdb pipe in tests/integration/replication.tcl -log message of '"*Diskless rdb transfer, done reading from pipe, 2 replicas still up*"' not found in ./tests/tmp/server.15948.162/stdout after line: 45 till line: 48 -*** [err]: diskless slow replicas drop during rdb pipe in tests/integration/replication.tcl -log message of '"*Diskless rdb transfer, done reading from pipe, 1 replicas still up*"' not found in ./tests/tmp/server.15948.162/stdout after line: 66 till line: 69 -*** [err]: diskless fast replicas drop during rdb pipe in tests/integration/replication.tcl -log message of '"*Diskless rdb transfer, done reading from pipe, 1 replicas still up*"' not found in ./tests/tmp/server.15948.162/stdout after line: 87 till line: 91 -*** [TIMEOUT]: clients state report follows. +*** [err]: Active defrag in tests/unit/memefficiency.tcl +defrag not started. +*** [err]: Active defrag big keys in tests/unit/memefficiency.tcl +defrag not started. +*** [err]: Active defrag big list in tests/unit/memefficiency.tcl +defrag not started. +*** [err]: Active defrag edge case in tests/unit/memefficiency.tcl +defrag not started. Cleanup: may take some time... OK ./runtest-cluster --tls || true Starting redis #0 at port 30000 @@ -1869,545 +2526,540 @@ Starting redis #18 at port 30018 Starting redis #19 at port 30019 Testing unit: 00-base.tcl -11:31:01> (init) Restart killed instances: OK -11:31:01> Cluster nodes are reachable: OK -11:31:02> Cluster nodes hard reset: OK -11:31:02> Cluster Join and auto-discovery test: OK -11:31:06> Before slots allocation, all nodes report cluster failure: OK -11:31:06> Different nodes have different IDs: OK -11:31:06> It is possible to perform slot allocation: OK -11:31:06> After the join, every node gets a different config epoch: OK -11:31:06> Nodes should report cluster_state is ok now: OK -11:31:10> It is possible to write and read from the cluster: OK +08:05:34> (init) Restart killed instances: OK +08:05:34> Cluster nodes are reachable: OK +08:05:34> Cluster nodes hard reset: OK +08:05:35> Cluster Join and auto-discovery test: OK +08:05:39> Before slots allocation, all nodes report cluster failure: OK +08:05:39> Different nodes have different IDs: OK +08:05:39> It is possible to perform slot allocation: OK +08:05:39> After the join, every node gets a different config epoch: OK +08:05:40> Nodes should report cluster_state is ok now: OK +08:05:43> It is possible to write and read from the cluster: OK Testing unit: 01-faildet.tcl -11:31:10> (init) Restart killed instances: OK -11:31:10> Cluster nodes are reachable: OK -11:31:10> Cluster nodes hard reset: OK -11:31:10> Cluster Join and auto-discovery test: OK -11:31:13> Before slots allocation, all nodes report cluster failure: OK -11:31:13> Create a 5 nodes cluster: OK -11:31:17> Cluster should start ok: OK -11:31:17> Killing two slave nodes: OK -11:31:17> Cluster should be still up: OK -11:31:17> Killing one master node: OK -11:31:17> Cluster should be down now: OK -11:31:22> Restarting master node: OK -11:31:22> Cluster should be up again: OK +08:05:44> (init) Restart killed instances: OK +08:05:44> Cluster nodes are reachable: OK +08:05:44> Cluster nodes hard reset: OK +08:05:44> Cluster Join and auto-discovery test: OK +08:05:48> Before slots allocation, all nodes report cluster failure: OK +08:05:48> Create a 5 nodes cluster: OK +08:05:52> Cluster should start ok: OK +08:05:52> Killing two slave nodes: OK +08:05:53> Cluster should be still up: OK +08:05:53> Killing one master node: OK +08:05:53> Cluster should be down now: OK +08:05:56> Restarting master node: OK +08:05:57> Cluster should be up again: OK Testing unit: 02-failover.tcl -11:31:29> (init) Restart killed instances: redis/5 redis/6 OK -11:31:29> Cluster nodes are reachable: OK -11:31:29> Cluster nodes hard reset: OK -11:31:30> Cluster Join and auto-discovery test: OK -11:31:32> Before slots allocation, all nodes report cluster failure: OK -11:31:32> Create a 5 nodes cluster: OK -11:31:36> Cluster is up: OK -11:31:36> Cluster is writable: OK -11:31:36> Instance #5 is a slave: OK -11:31:36> Instance #5 synced with the master: OK -11:31:36> Killing one master node: OK -11:31:36> Wait for failover: OK -11:31:41> Cluster should eventually be up again: OK -11:31:41> Cluster is writable: OK -11:31:41> Instance #5 is now a master: OK -11:31:41> Restarting the previously killed master node: OK -11:31:41> Instance #0 gets converted into a slave: OK +08:06:03> (init) Restart killed instances: redis/5 redis/6 OK +08:06:05> Cluster nodes are reachable: OK +08:06:05> Cluster nodes hard reset: OK +08:06:05> Cluster Join and auto-discovery test: OK +08:06:10> Before slots allocation, all nodes report cluster failure: OK +08:06:10> Create a 5 nodes cluster: OK +08:06:13> Cluster is up: OK +08:06:13> Cluster is writable: OK +08:06:14> Instance #5 is a slave: OK +08:06:14> Instance #5 synced with the master: OK +08:06:14> Killing one master node: OK +08:06:14> Wait for failover: OK +08:06:18> Cluster should eventually be up again: OK +08:06:19> Cluster is writable: OK +08:06:19> Instance #5 is now a master: OK +08:06:19> Restarting the previously killed master node: OK +08:06:20> Instance #0 gets converted into a slave: OK Testing unit: 03-failover-loop.tcl -11:31:41> (init) Restart killed instances: OK -11:31:41> Cluster nodes are reachable: OK -11:31:42> Cluster nodes hard reset: OK -11:31:42> Cluster Join and auto-discovery test: OK -11:31:46> Before slots allocation, all nodes report cluster failure: OK -11:31:46> Create a 5 nodes cluster: OK -11:31:50> Cluster is up: OK +08:06:20> (init) Restart killed instances: OK +08:06:20> Cluster nodes are reachable: OK +08:06:20> Cluster nodes hard reset: OK +08:06:21> Cluster Join and auto-discovery test: OK +08:06:26> Before slots allocation, all nodes report cluster failure: OK +08:06:26> Create a 5 nodes cluster: OK +08:06:30> Cluster is up: OK --- Iteration 19 --- -11:31:50> Cluster is writable before failover: OK -11:31:50> Killing node #5: OK -11:31:50> Cluster should eventually be up again: OK -11:31:50> Cluster is writable again: OK -11:31:51> Restarting node #5: OK -11:31:51> Instance #5 is now a slave: OK -11:31:51> We can read back the value we set before: OK +08:06:30> Cluster is writable before failover: OK +08:06:31> Killing node #8: OK +08:06:31> Cluster should eventually be up again: OK +08:06:31> Cluster is writable again: OK +08:06:31> Restarting node #8: OK +08:06:32> Instance #8 is now a slave: OK +08:06:32> We can read back the value we set before: OK --- Iteration 18 --- -11:31:51> Wait for slave of #4 to sync: OK -11:31:51> Cluster is writable before failover: OK -11:31:51> Killing node #4: OK -11:31:51> Wait failover by #9 with old epoch 5: OK -11:31:56> Cluster should eventually be up again: OK -11:31:57> Cluster is writable again: OK -11:31:57> Restarting node #4: OK -11:31:57> Instance #4 is now a slave: OK -11:31:57> We can read back the value we set before: OK +08:06:33> Wait for slave of #0 to sync: OK +08:06:33> Cluster is writable before failover: OK +08:06:33> Killing node #0: OK +08:06:33> Wait failover by #5 with old epoch 1: OK +08:06:38> Cluster should eventually be up again: OK +08:06:38> Cluster is writable again: OK +08:06:38> Restarting node #0: OK +08:06:40> Instance #0 is now a slave: OK +08:06:40> We can read back the value we set before: OK --- Iteration 17 --- -11:31:58> Wait for slave of #9 to sync: OK -11:31:58> Cluster is writable before failover: OK -11:31:58> Killing node #9: OK -11:31:58> Wait failover by #4 with old epoch 21: OK -11:32:03> Cluster should eventually be up again: OK -11:32:03> Cluster is writable again: OK -11:32:04> Restarting node #9: OK -11:32:04> Instance #9 is now a slave: OK -11:32:04> We can read back the value we set before: OK +08:06:40> Cluster is writable before failover: OK +08:06:40> Killing node #6: OK +08:06:40> Cluster should eventually be up again: OK +08:06:40> Cluster is writable again: OK +08:06:40> Restarting node #6: OK +08:06:41> Instance #6 is now a slave: OK +08:06:41> We can read back the value we set before: OK --- Iteration 16 --- -11:32:04> Cluster is writable before failover: OK -11:32:04> Killing node #5: OK -11:32:04> Cluster should eventually be up again: OK -11:32:04> Cluster is writable again: OK -11:32:04> Restarting node #5: OK -11:32:04> Instance #5 is now a slave: OK -11:32:04> We can read back the value we set before: OK +08:06:41> Cluster is writable before failover: OK +08:06:41> Killing node #9: OK +08:06:41> Cluster should eventually be up again: OK +08:06:41> Cluster is writable again: OK +08:06:41> Restarting node #9: OK +08:06:42> Instance #9 is now a slave: OK +08:06:42> We can read back the value we set before: OK --- Iteration 15 --- -11:32:04> Cluster is writable before failover: OK -11:32:04> Killing node #8: OK -11:32:04> Cluster should eventually be up again: OK -11:32:04> Cluster is writable again: OK -11:32:05> Restarting node #8: OK -11:32:05> Instance #8 is now a slave: OK -11:32:05> We can read back the value we set before: OK +08:06:43> Wait for slave of #3 to sync: OK +08:06:43> Cluster is writable before failover: OK +08:06:43> Killing node #3: OK +08:06:44> Wait failover by #8 with old epoch 4: OK +08:06:48> Cluster should eventually be up again: OK +08:06:49> Cluster is writable again: OK +08:06:49> Restarting node #3: OK +08:06:50> Instance #3 is now a slave: OK +08:06:50> We can read back the value we set before: OK --- Iteration 14 --- -11:32:05> Cluster is writable before failover: OK -11:32:05> Killing node #6: OK -11:32:05> Cluster should eventually be up again: OK -11:32:05> Cluster is writable again: OK -11:32:05> Restarting node #6: OK -11:32:05> Instance #6 is now a slave: OK -11:32:05> We can read back the value we set before: OK +08:06:51> Wait for slave of #2 to sync: OK +08:06:51> Cluster is writable before failover: OK +08:06:51> Killing node #2: OK +08:06:51> Wait failover by #7 with old epoch 3: OK +08:06:56> Cluster should eventually be up again: OK +08:06:56> Cluster is writable again: OK +08:06:57> Restarting node #2: OK +08:06:58> Instance #2 is now a slave: OK +08:06:58> We can read back the value we set before: OK --- Iteration 13 --- -11:32:05> Cluster is writable before failover: OK -11:32:05> Killing node #7: OK -11:32:06> Cluster should eventually be up again: OK -11:32:06> Cluster is writable again: OK -11:32:06> Restarting node #7: OK -11:32:06> Instance #7 is now a slave: OK -11:32:06> We can read back the value we set before: OK +08:06:59> Wait for slave of #5 to sync: OK +08:06:59> Cluster is writable before failover: OK +08:06:59> Killing node #5: OK +08:06:59> Wait failover by #0 with old epoch 21: OK +08:07:04> Cluster should eventually be up again: OK +08:07:04> Cluster is writable again: OK +08:07:05> Restarting node #5: OK +08:07:06> Instance #5 is now a slave: OK +08:07:06> We can read back the value we set before: OK --- Iteration 12 --- -11:32:06> Wait for slave of #3 to sync: OK -11:32:06> Cluster is writable before failover: OK -11:32:06> Killing node #3: OK -11:32:06> Wait failover by #8 with old epoch 4: OK -11:32:12> Cluster should eventually be up again: OK -11:32:12> Cluster is writable again: OK -11:32:12> Restarting node #3: OK -11:32:12> Instance #3 is now a slave: OK -11:32:12> We can read back the value we set before: OK +08:07:07> Wait for slave of #0 to sync: OK +08:07:07> Cluster is writable before failover: OK +08:07:07> Killing node #0: OK +08:07:07> Wait failover by #5 with old epoch 24: OK +08:07:12> Cluster should eventually be up again: OK +08:07:12> Cluster is writable again: OK +08:07:13> Restarting node #0: OK +08:07:14> Instance #0 is now a slave: OK +08:07:14> We can read back the value we set before: OK --- Iteration 11 --- -11:32:13> Wait for slave of #2 to sync: OK -11:32:13> Cluster is writable before failover: OK -11:32:13> Killing node #2: OK -11:32:13> Wait failover by #7 with old epoch 3: OK -11:32:18> Cluster should eventually be up again: OK -11:32:18> Cluster is writable again: OK -11:32:18> Restarting node #2: OK -11:32:18> Instance #2 is now a slave: OK -11:32:18> We can read back the value we set before: OK +08:07:15> Cluster is writable before failover: OK +08:07:15> Killing node #9: OK +08:07:15> Cluster should eventually be up again: OK +08:07:15> Cluster is writable again: OK +08:07:15> Restarting node #9: OK +08:07:16> Instance #9 is now a slave: OK +08:07:16> We can read back the value we set before: OK --- Iteration 10 --- -11:32:18> Cluster is writable before failover: OK -11:32:18> Killing node #3: OK -11:32:18> Cluster should eventually be up again: OK -11:32:18> Cluster is writable again: OK -11:32:18> Restarting node #3: OK -11:32:19> Instance #3 is now a slave: OK -11:32:19> We can read back the value we set before: OK +08:07:17> Wait for slave of #7 to sync: OK +08:07:17> Cluster is writable before failover: OK +08:07:17> Killing node #7: OK +08:07:17> Wait failover by #2 with old epoch 23: OK +08:07:21> Cluster should eventually be up again: OK +08:07:22> Cluster is writable again: OK +08:07:22> Restarting node #7: OK +08:07:23> Instance #7 is now a slave: OK +08:07:23> We can read back the value we set before: OK --- Iteration 9 --- -11:32:19> Cluster is writable before failover: OK -11:32:19> Killing node #9: OK -11:32:19> Cluster should eventually be up again: OK -11:32:19> Cluster is writable again: OK -11:32:19> Restarting node #9: OK -11:32:19> Instance #9 is now a slave: OK -11:32:19> We can read back the value we set before: OK +08:07:24> Wait for slave of #8 to sync: OK +08:07:24> Cluster is writable before failover: OK +08:07:24> Killing node #8: OK +08:07:24> Wait failover by #3 with old epoch 22: OK +08:07:29> Cluster should eventually be up again: OK +08:07:29> Cluster is writable again: OK +08:07:30> Restarting node #8: OK +08:07:31> Instance #8 is now a slave: OK +08:07:31> We can read back the value we set before: OK --- Iteration 8 --- -11:32:20> Wait for slave of #0 to sync: OK -11:32:20> Cluster is writable before failover: OK -11:32:20> Killing node #0: OK -11:32:20> Wait failover by #5 with old epoch 1: OK -11:32:24> Cluster should eventually be up again: OK -11:32:24> Cluster is writable again: OK -11:32:25> Restarting node #0: OK -11:32:25> Instance #0 is now a slave: OK -11:32:25> We can read back the value we set before: OK +08:07:32> Wait for slave of #2 to sync: OK +08:07:32> Cluster is writable before failover: OK +08:07:32> Killing node #2: OK +08:07:32> Wait failover by #7 with old epoch 26: OK +08:07:36> Cluster should eventually be up again: OK +08:07:37> Cluster is writable again: OK +08:07:37> Restarting node #2: OK +08:07:38> Instance #2 is now a slave: OK +08:07:38> We can read back the value we set before: OK --- Iteration 7 --- -11:32:25> Wait for slave of #1 to sync: OK -11:32:25> Cluster is writable before failover: OK -11:32:25> Killing node #1: OK -11:32:26> Wait failover by #6 with old epoch 2: OK -11:32:30> Cluster should eventually be up again: OK -11:32:30> Cluster is writable again: OK -11:32:30> Restarting node #1: OK -11:32:31> Instance #1 is now a slave: OK -11:32:31> We can read back the value we set before: OK +08:07:39> Wait for slave of #7 to sync: OK +08:07:39> Cluster is writable before failover: OK +08:07:39> Killing node #7: OK +08:07:39> Wait failover by #2 with old epoch 28: OK +08:07:44> Cluster should eventually be up again: OK +08:07:45> Cluster is writable again: OK +08:07:45> Restarting node #7: OK +08:07:46> Instance #7 is now a slave: OK +08:07:46> We can read back the value we set before: OK --- Iteration 6 --- -11:32:31> Cluster is writable before failover: OK -11:32:31> Killing node #1: OK -11:32:31> Cluster should eventually be up again: OK -11:32:31> Cluster is writable again: OK -11:32:31> Restarting node #1: OK -11:32:31> Instance #1 is now a slave: OK -11:32:31> We can read back the value we set before: OK +08:07:48> Wait for slave of #2 to sync: OK +08:07:48> Cluster is writable before failover: OK +08:07:48> Killing node #2: OK +08:07:48> Wait failover by #7 with old epoch 29: OK +08:07:53> Cluster should eventually be up again: OK +08:07:53> Cluster is writable again: OK +08:07:54> Restarting node #2: OK +08:07:55> Instance #2 is now a slave: OK +08:07:55> We can read back the value we set before: OK --- Iteration 5 --- -11:32:32> Wait for slave of #8 to sync: OK -11:32:32> Cluster is writable before failover: OK -11:32:32> Killing node #8: OK -11:32:32> Wait failover by #3 with old epoch 23: OK -11:32:36> Cluster should eventually be up again: OK -11:32:36> Cluster is writable again: OK -11:32:37> Restarting node #8: OK -11:32:37> Instance #8 is now a slave: OK -11:32:37> We can read back the value we set before: OK +08:07:55> Cluster is writable before failover: OK +08:07:55> Killing node #2: OK +08:07:55> Cluster should eventually be up again: OK +08:07:55> Cluster is writable again: OK +08:07:55> Restarting node #2: OK +08:07:56> Instance #2 is now a slave: OK +08:07:56> We can read back the value we set before: OK --- Iteration 4 --- -11:32:37> Cluster is writable before failover: OK -11:32:37> Killing node #9: OK -11:32:37> Cluster should eventually be up again: OK -11:32:37> Cluster is writable again: OK -11:32:37> Restarting node #9: OK -11:32:38> Instance #9 is now a slave: OK -11:32:38> We can read back the value we set before: OK +08:07:56> Cluster is writable before failover: OK +08:07:56> Killing node #9: OK +08:07:56> Cluster should eventually be up again: OK +08:07:56> Cluster is writable again: OK +08:07:57> Restarting node #9: OK +08:07:57> Instance #9 is now a slave: OK +08:07:57> We can read back the value we set before: OK --- Iteration 3 --- -11:32:38> Wait for slave of #6 to sync: OK -11:32:38> Cluster is writable before failover: OK -11:32:38> Killing node #6: OK -11:32:38> Wait failover by #1 with old epoch 26: OK -11:32:44> Cluster should eventually be up again: OK -11:32:44> Cluster is writable again: OK -11:32:44> Restarting node #6: OK -11:32:44> Instance #6 is now a slave: OK -11:32:44> We can read back the value we set before: OK +08:07:58> Cluster is writable before failover: OK +08:07:58> Killing node #8: OK +08:07:58> Cluster should eventually be up again: OK +08:07:58> Cluster is writable again: OK +08:07:58> Restarting node #8: OK +08:07:59> Instance #8 is now a slave: OK +08:07:59> We can read back the value we set before: OK --- Iteration 2 --- -11:32:45> Wait for slave of #5 to sync: OK -11:32:45> Cluster is writable before failover: OK -11:32:45> Killing node #5: OK -11:32:45> Wait failover by #0 with old epoch 25: OK -11:32:50> Cluster should eventually be up again: OK -11:32:50> Cluster is writable again: OK -11:32:50> Restarting node #5: OK -11:32:51> Instance #5 is now a slave: OK -11:32:51> We can read back the value we set before: OK +08:08:00> Wait for slave of #7 to sync: OK +08:08:00> Cluster is writable before failover: OK +08:08:00> Killing node #7: OK +08:08:00> Wait failover by #2 with old epoch 30: OK +08:08:05> Cluster should eventually be up again: OK +08:08:05> Cluster is writable again: OK +08:08:06> Restarting node #7: OK +08:08:07> Instance #7 is now a slave: OK +08:08:07> We can read back the value we set before: OK --- Iteration 1 --- -11:32:51> Cluster is writable before failover: OK -11:32:51> Killing node #5: Waiting for process 9371 to exit... -Waiting for process 9371 to exit... -Waiting for process 9371 to exit... -Waiting for process 9371 to exit... -Waiting for process 9371 to exit... -Waiting for process 9371 to exit... -Waiting for process 9371 to exit... -Waiting for process 9371 to exit... -Waiting for process 9371 to exit... -Forcing process 9371 to exit... -OK -11:33:22> Cluster should eventually be up again: OK -11:33:22> Cluster is writable again: OK -11:33:22> Restarting node #5: OK -11:33:22> Instance #5 is now a slave: OK -11:33:22> We can read back the value we set before: OK -11:33:22> Post condition: current_epoch >= my_epoch everywhere: OK +08:08:08> Wait for slave of #4 to sync: OK +08:08:08> Cluster is writable before failover: OK +08:08:08> Killing node #4: OK +08:08:08> Wait failover by #9 with old epoch 5: OK +08:08:13> Cluster should eventually be up again: OK +08:08:13> Cluster is writable again: OK +08:08:14> Restarting node #4: OK +08:08:15> Instance #4 is now a slave: OK +08:08:15> We can read back the value we set before: OK +08:08:15> Post condition: current_epoch >= my_epoch everywhere: OK Testing unit: 04-resharding.tcl -11:33:22> (init) Restart killed instances: OK -11:33:22> Cluster nodes are reachable: OK -11:33:22> Cluster nodes hard reset: OK -11:33:23> Cluster Join and auto-discovery test: OK -11:33:27> Before slots allocation, all nodes report cluster failure: OK -11:33:27> Create a 5 nodes cluster: OK -11:33:31> Cluster is up: OK -11:33:31> Enable AOF in all the instances: OK -11:33:31> Cluster consistency during live resharding: WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW...Starting resharding...WW...................................................W..........................................................................................W.......................................................................................W.........................................................................W...........................................W.........................................W..................................................................W..............................................W..........................................................................W...................................................W................................................................................W.......................................................................W................................................................W................................W............................................................W........................................WWW...Starting resharding...W......W.............................................W............................................................................................W.............................................W..............................................................................................W...........................................W.................................................................W.............................................W.................................................W...........................................................................................W.............................................W.........................................................................................W..............................................W.....................................................W.........................................................W.......................................................W..................................................................W........................WW...Starting resharding...W......W.............................................W..................................................................................................................W............................................W.......................................W...................................................................W.......................................W........................................................W.................................................................W........................................................W..................................................................W...........................................................................W....................................................W.....................................W...........................................W..........................................................W...........................................W............................................................................W...............W...Starting resharding...WW...................................................W..................................................................W.......................................................................................................................W.................................................W................................................................W...........................................W............................................W.......................................W.....................................................W...........................................................W.....................................................W........................................................................W.................................................W.....................................................................W.............................................W............................................................................W.............................................W.................W...Starting resharding...W......W.................................*** Please fix your cluster problems before resharding -...............................WWWWWWWW...Starting resharding...WW...................................................W..................................................................W............................................................................W.......................................W....................................................................W...........................................................W..........................................................W..........................................W...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................OK -11:35:18> Verify 50000 keys for consistency with logical content: OK -11:35:41> Crash and restart all the instances: OK -11:35:52> Cluster should eventually be up again: OK -11:35:54> Verify 50000 keys after the crash & restart: OK -11:36:13> Disable AOF in all the instances: OK -11:36:13> Verify slaves consistency: OK +08:08:15> (init) Restart killed instances: OK +08:08:15> Cluster nodes are reachable: OK +08:08:15> Cluster nodes hard reset: OK +08:08:16> Cluster Join and auto-discovery test: OK +08:08:20> Before slots allocation, all nodes report cluster failure: OK +08:08:20> Create a 5 nodes cluster: OK +08:08:24> Cluster is up: OK +08:08:24> Enable AOF in all the instances: OK +08:08:25> Cluster consistency during live resharding: WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW...Starting resharding...W............W........................................................................................................................W........................................................................W..........................................................................W.............................................................................................................W.................................................................................................W......................................................................................W..................................................................................................W.....................................................................................................W....................................................................................................................................W..................................................................................WWWWWWWWW...Starting resharding...W..............................W.................................................................................................................................W...........................................................................................................W................................................................................................................................W.......................................................................................................................W.................................................................................................................................W.....................................................................................................................................................W................................................................................................W...........................................................................................................W...Starting resharding...W...........................................................................W..............................................................................................................W.....................................................................................................................................................................W.........................................................................................................W.......................................................................................................W................................................................................W........................................................................................W............................................................................................W..........................................................................................................W.........................................Starting resharding...W..............................W.................................................................................................................................................................W.............................................................W...................................................................................W....................................................................................................................W..................................................................W....................................................................................W..............................................................................................................................W..........................................................................................W...............................................................................................W.....................................WWWWWWWWW...Starting resharding...W..............................W................................................................................................................................................................................................W...............................................................................................W............................................................................................W............................................................................................................W....................................................................................................................................W...............................................................................W.............................................................................................................................W......................................................................................................W.......................................................Starting resharding...W..............................W......................................................................................................................W..............................................................................................................................W................................................................................................W.........................................................................................W...............................................................................................................W...............................................................................................................................................................W.................................................................................................................W...............................................................................................................................................W........................................................Starting resharding...W..............................W...................................................................................................................................W...................................................................................W..............................................................................................................................................W..........................................................................................W...................................................................................................W...................................................................................................W.....................................................................................W...............................................................................................................................W.........................................................................................................................WWWWWWWWWWOK +08:13:47> Verify 50000 keys for consistency with logical content: OK +08:14:26> Crash and restart all the instances: OK +08:14:48> Cluster should eventually be up again: OK +08:14:50> Verify 50000 keys after the crash & restart: OK +08:15:30> Disable AOF in all the instances: OK +08:15:30> Verify slaves consistency: OK Testing unit: 05-slave-selection.tcl -11:36:14> (init) Restart killed instances: OK -11:36:14> Cluster nodes are reachable: OK -11:36:14> Cluster nodes hard reset: OK -11:36:15> Cluster Join and auto-discovery test: OK -11:36:18> Before slots allocation, all nodes report cluster failure: OK -11:36:18> Create a 5 nodes cluster: OK -11:36:22> Cluster is up: OK -11:36:22> The first master has actually two slaves: OK -11:36:22> Slaves of #0 are instance #5 and #10 as expected: OK -11:36:22> Instance #5 and #10 synced with the master: OK -11:36:22> Slaves are both able to receive and acknowledge writes: OK -11:36:23> Write data while slave #10 is paused and can't receive it: OK -11:36:33> Wait for instance #5 (and not #10) to turn into a master: OK -11:36:38> Wait for the node #10 to return alive before ending the test: OK -11:36:38> Cluster should eventually be up again: OK -11:36:38> Node #10 should eventually replicate node #5: OK -11:36:38> (init) Restart killed instances: redis/0 OK -11:36:38> Cluster nodes are reachable: OK -11:36:38> Cluster nodes hard reset: OK -11:36:38> Cluster Join and auto-discovery test: OK -11:36:41> Before slots allocation, all nodes report cluster failure: OK -11:36:41> Create a 3 nodes cluster: OK -11:36:45> Cluster is up: OK -11:36:45> The first master has actually 5 slaves: OK -11:36:45> Slaves of #0 are instance #3, #6, #9, #12 and #15 as expected: OK -11:36:45> Instance #3, #6, #9, #12 and #15 synced with the master: OK -11:36:45> New Master down consecutively: OK +08:15:32> (init) Restart killed instances: OK +08:15:32> Cluster nodes are reachable: OK +08:15:32> Cluster nodes hard reset: OK +08:15:33> Cluster Join and auto-discovery test: OK +08:15:37> Before slots allocation, all nodes report cluster failure: OK +08:15:37> Create a 5 nodes cluster: OK +08:15:41> Cluster is up: OK +08:15:41> The first master has actually two slaves: OK +08:15:41> Slaves of #0 are instance #5 and #10 as expected: OK +08:15:41> Instance #5 and #10 synced with the master: OK +08:15:42> Slaves are both able to receive and acknowledge writes: OK +08:15:42> Write data while slave #10 is paused and can't receive it: OK +08:15:52> Wait for instance #5 (and not #10) to turn into a master: OK +08:15:57> Wait for the node #10 to return alive before ending the test: OK +08:15:57> Cluster should eventually be up again: OK +08:15:57> Node #10 should eventually replicate node #5: OK +08:15:58> (init) Restart killed instances: redis/0 OK +08:15:59> Cluster nodes are reachable: OK +08:15:59> Cluster nodes hard reset: OK +08:16:00> Cluster Join and auto-discovery test: OK +08:16:04> Before slots allocation, all nodes report cluster failure: OK +08:16:04> Create a 3 nodes cluster: OK +08:16:08> Cluster is up: OK +08:16:08> The first master has actually 5 slaves: OK +08:16:08> Slaves of #0 are instance #3, #6, #9, #12 and #15 as expected: OK +08:16:08> Instance #3, #6, #9, #12 and #15 synced with the master: OK +08:16:08> New Master down consecutively: OK Testing unit: 06-slave-stop-cond.tcl -11:37:19> (init) Restart killed instances: redis/0 redis/3 redis/6 redis/12 redis/15 OK -11:37:21> Cluster nodes are reachable: OK -11:37:21> Cluster nodes hard reset: OK -11:37:22> Cluster Join and auto-discovery test: OK -11:37:27> Before slots allocation, all nodes report cluster failure: OK -11:37:27> Create a 5 nodes cluster: OK -11:37:31> Cluster is up: OK -11:37:31> The first master has actually one slave: OK -11:37:31> Slaves of #0 is instance #5 as expected: OK -11:37:31> Instance #5 synced with the master: OK -11:37:31> Lower the slave validity factor of #5 to the value of 2: OK -11:37:31> Break master-slave link and prevent further reconnections: OK -11:37:51> Slave #5 is reachable and alive: OK -11:37:51> Slave #5 should not be able to failover: OK -11:38:01> Cluster should be down: OK +08:16:40> (init) Restart killed instances: redis/0 redis/3 redis/6 redis/12 redis/15 OK +08:16:44> Cluster nodes are reachable: OK +08:16:44> Cluster nodes hard reset: OK +08:16:44> Cluster Join and auto-discovery test: OK +08:16:50> Before slots allocation, all nodes report cluster failure: OK +08:16:50> Create a 5 nodes cluster: OK +08:16:54> Cluster is up: OK +08:16:54> The first master has actually one slave: OK +08:16:54> Slaves of #0 is instance #5 as expected: OK +08:16:54> Instance #5 synced with the master: OK +08:16:54> Lower the slave validity factor of #5 to the value of 2: OK +08:16:54> Break master-slave link and prevent further reconnections: OK +08:17:14> Slave #5 is reachable and alive: OK +08:17:14> Slave #5 should not be able to failover: OK +08:17:24> Cluster should be down: OK Testing unit: 07-replica-migration.tcl -11:38:01> (init) Restart killed instances: redis/0 OK -11:38:02> Cluster nodes are reachable: OK -11:38:02> Cluster nodes hard reset: OK -11:38:02> Cluster Join and auto-discovery test: OK -11:38:05> Before slots allocation, all nodes report cluster failure: OK -11:38:05> Create a 5 nodes cluster: OK -11:38:09> Cluster is up: OK -11:38:09> Each master should have two replicas attached: OK -11:38:09> Killing all the slaves of master #0 and #1: OK -11:38:14> Master #0 should have at least one replica: OK -11:38:19> Master #1 should have at least one replica: OK -11:38:20> Master #2 should have at least one replica: OK -11:38:20> Master #3 should have at least one replica: OK -11:38:20> Master #4 should have at least one replica: OK -11:38:20> (init) Restart killed instances: redis/5 redis/6 redis/10 redis/11 OK -11:38:22> Cluster nodes are reachable: OK -11:38:22> Cluster nodes hard reset: OK -11:38:22> Cluster Join and auto-discovery test: OK -11:38:26> Before slots allocation, all nodes report cluster failure: OK -11:38:26> Create a 5 nodes cluster: OK -11:38:30> Cluster is up: OK -11:38:30> Kill slave #7 of master #2. Only slave left is #12 now: OK -11:38:30> Killing master node #2, #12 should failover: OK -11:38:30> Wait for failover: OK -11:38:35> Cluster should eventually be up again: OK -11:38:35> Cluster is writable: OK -11:38:36> Instance 12 is now a master without slaves: OK -11:38:36> Master #12 should get at least one migrated replica: OK +08:17:24> (init) Restart killed instances: redis/0 OK +08:17:25> Cluster nodes are reachable: OK +08:17:25> Cluster nodes hard reset: OK +08:17:26> Cluster Join and auto-discovery test: OK +08:17:33> Before slots allocation, all nodes report cluster failure: OK +08:17:33> Create a 5 nodes cluster: OK +08:17:37> Cluster is up: OK +08:17:37> Each master should have two replicas attached: OK +08:17:37> Killing all the slaves of master #0 and #1: OK +08:17:42> Master #0 should have at least one replica: OK +08:17:48> Master #1 should have at least one replica: OK +08:17:48> Master #2 should have at least one replica: OK +08:17:48> Master #3 should have at least one replica: OK +08:17:48> Master #4 should have at least one replica: OK +08:17:48> (init) Restart killed instances: redis/5 redis/6 redis/10 redis/11 OK +08:17:52> Cluster nodes are reachable: OK +08:17:52> Cluster nodes hard reset: OK +08:17:52> Cluster Join and auto-discovery test: OK +08:17:56> Before slots allocation, all nodes report cluster failure: OK +08:17:56> Create a 5 nodes cluster: OK +08:18:00> Cluster is up: OK +08:18:00> Kill slave #7 of master #2. Only slave left is #12 now: OK +08:18:00> Killing master node #2, #12 should failover: OK +08:18:01> Wait for failover: OK +08:18:06> Cluster should eventually be up again: OK +08:18:06> Cluster is writable: OK +08:18:06> Instance 12 is now a master without slaves: OK +08:18:06> Master #12 should get at least one migrated replica: OK Testing unit: 08-update-msg.tcl -11:38:41> (init) Restart killed instances: redis/2 redis/7 OK -11:38:42> Cluster nodes are reachable: OK -11:38:42> Cluster nodes hard reset: OK -11:38:42> Cluster Join and auto-discovery test: OK -11:38:47> Before slots allocation, all nodes report cluster failure: OK -11:38:47> Create a 5 nodes cluster: OK -11:38:51> Cluster is up: OK -11:38:51> Cluster is writable: OK -11:38:52> Instance #5 is a slave: OK -11:38:52> Instance #5 synced with the master: OK -11:38:52> Killing one master node: OK -11:38:52> Wait for failover: OK -11:38:57> Cluster should eventually be up again: OK -11:38:59> Cluster is writable: OK -11:38:59> Instance #5 is now a master: OK -11:38:59> Killing the new master #5: OK -11:38:59> Cluster should be down now: OK -11:39:04> Restarting the old master node: OK -11:39:04> Instance #0 gets converted into a slave: OK -11:39:04> Restarting the new master node: OK -11:39:05> Cluster is up again: OK +08:18:12> (init) Restart killed instances: redis/2 redis/7 OK +08:18:14> Cluster nodes are reachable: OK +08:18:14> Cluster nodes hard reset: OK +08:18:14> Cluster Join and auto-discovery test: OK +08:18:20> Before slots allocation, all nodes report cluster failure: OK +08:18:20> Create a 5 nodes cluster: OK +08:18:23> Cluster is up: OK +08:18:23> Cluster is writable: OK +08:18:24> Instance #5 is a slave: OK +08:18:24> Instance #5 synced with the master: OK +08:18:24> Killing one master node: OK +08:18:24> Wait for failover: OK +08:18:28> Cluster should eventually be up again: OK +08:18:28> Cluster is writable: OK +08:18:29> Instance #5 is now a master: OK +08:18:29> Killing the new master #5: OK +08:18:29> Cluster should be down now: OK +08:18:33> Restarting the old master node: OK +08:18:34> Instance #0 gets converted into a slave: OK +08:18:34> Restarting the new master node: OK +08:18:35> Cluster is up again: OK Testing unit: 09-pubsub.tcl -11:39:11> (init) Restart killed instances: OK -11:39:11> Cluster nodes are reachable: OK -11:39:11> Cluster nodes hard reset: OK -11:39:11> Cluster Join and auto-discovery test: OK -11:39:15> Before slots allocation, all nodes report cluster failure: OK -11:39:15> Create a 5 nodes cluster: OK -11:39:19> Test publishing to master: OK -11:39:19> Test publishing to slave: OK +08:18:39> (init) Restart killed instances: OK +08:18:39> Cluster nodes are reachable: OK +08:18:39> Cluster nodes hard reset: OK +08:18:40> Cluster Join and auto-discovery test: OK +08:18:44> Before slots allocation, all nodes report cluster failure: OK +08:18:44> Create a 5 nodes cluster: OK +08:18:48> Test publishing to master: OK +08:18:48> Test publishing to slave: OK Testing unit: 10-manual-failover.tcl -11:39:19> (init) Restart killed instances: OK -11:39:19> Cluster nodes are reachable: OK -11:39:19> Cluster nodes hard reset: OK -11:39:20> Cluster Join and auto-discovery test: OK -11:39:24> Before slots allocation, all nodes report cluster failure: OK -11:39:24> Create a 5 nodes cluster: OK -11:39:28> Cluster is up: OK -11:39:28> Cluster is writable: OK -11:39:28> Instance #5 is a slave: OK -11:39:29> Instance #5 synced with the master: OK -11:39:29> Send CLUSTER FAILOVER to #5, during load: WWWWWWWWWWOK -11:39:39> Wait for failover: OK -11:39:39> Cluster should eventually be up again: OK -11:39:39> Cluster is writable: OK -11:39:39> Instance #5 is now a master: OK -11:39:39> Verify 50000 keys for consistency with logical content: OK -11:39:44> Instance #0 gets converted into a slave: OK -11:39:44> (init) Restart killed instances: OK -11:39:44> Cluster nodes are reachable: OK -11:39:44> Cluster nodes hard reset: OK -11:39:44> Cluster Join and auto-discovery test: OK -11:39:48> Before slots allocation, all nodes report cluster failure: OK -11:39:48> Create a 5 nodes cluster: OK -11:39:52> Cluster is up: OK -11:39:52> Cluster is writable: OK -11:39:52> Instance #5 is a slave: OK -11:39:52> Instance #5 synced with the master: OK -11:39:52> Make instance #0 unreachable without killing it: OK -11:39:52> Send CLUSTER FAILOVER to instance #5: OK -11:39:52> Instance #5 is still a slave after some time (no failover): OK -11:39:57> Wait for instance #0 to return back alive: OK -11:40:02> (init) Restart killed instances: OK -11:40:02> Cluster nodes are reachable: OK -11:40:02> Cluster nodes hard reset: OK -11:40:03> Cluster Join and auto-discovery test: OK -11:40:06> Before slots allocation, all nodes report cluster failure: OK -11:40:06> Create a 5 nodes cluster: OK -11:40:09> Cluster is up: OK -11:40:09> Cluster is writable: OK -11:40:10> Instance #5 is a slave: OK -11:40:10> Instance #5 synced with the master: OK -11:40:10> Make instance #0 unreachable without killing it: OK -11:40:10> Send CLUSTER FAILOVER to instance #5: OK -11:40:10> Instance #5 is a master after some time: OK -11:40:10> Wait for instance #0 to return back alive: OK +08:18:48> (init) Restart killed instances: OK +08:18:48> Cluster nodes are reachable: OK +08:18:48> Cluster nodes hard reset: OK +08:18:48> Cluster Join and auto-discovery test: OK +08:18:53> Before slots allocation, all nodes report cluster failure: OK +08:18:53> Create a 5 nodes cluster: OK +08:18:57> Cluster is up: OK +08:18:57> Cluster is writable: OK +08:18:58> Instance #5 is a slave: OK +08:18:58> Instance #5 synced with the master: OK +08:18:58> Send CLUSTER FAILOVER to #5, during load: WWWWWWWWWWOK +08:19:09> Wait for failover: OK +08:19:09> Cluster should eventually be up again: OK +08:19:10> Cluster is writable: OK +08:19:10> Instance #5 is now a master: OK +08:19:10> Verify 50000 keys for consistency with logical content: OK +08:19:17> Instance #0 gets converted into a slave: OK +08:19:17> (init) Restart killed instances: OK +08:19:17> Cluster nodes are reachable: OK +08:19:17> Cluster nodes hard reset: OK +08:19:18> Cluster Join and auto-discovery test: OK +08:19:25> Before slots allocation, all nodes report cluster failure: OK +08:19:25> Create a 5 nodes cluster: OK +08:19:29> Cluster is up: OK +08:19:29> Cluster is writable: OK +08:19:30> Instance #5 is a slave: OK +08:19:30> Instance #5 synced with the master: OK +08:19:30> Make instance #0 unreachable without killing it: OK +08:19:30> Send CLUSTER FAILOVER to instance #5: OK +08:19:30> Instance #5 is still a slave after some time (no failover): OK +08:19:35> Wait for instance #0 to return back alive: OK +08:19:40> (init) Restart killed instances: OK +08:19:40> Cluster nodes are reachable: OK +08:19:40> Cluster nodes hard reset: OK +08:19:41> Cluster Join and auto-discovery test: OK +08:19:45> Before slots allocation, all nodes report cluster failure: OK +08:19:45> Create a 5 nodes cluster: OK +08:19:49> Cluster is up: OK +08:19:49> Cluster is writable: OK +08:19:50> Instance #5 is a slave: OK +08:19:50> Instance #5 synced with the master: OK +08:19:50> Make instance #0 unreachable without killing it: OK +08:19:50> Send CLUSTER FAILOVER to instance #5: OK +08:19:50> Instance #5 is a master after some time: OK +08:19:50> Wait for instance #0 to return back alive: OK Testing unit: 11-manual-takeover.tcl -11:40:20> (init) Restart killed instances: OK -11:40:20> Cluster nodes are reachable: OK -11:40:20> Cluster nodes hard reset: OK -11:40:20> Cluster Join and auto-discovery test: OK -11:40:23> Before slots allocation, all nodes report cluster failure: OK -11:40:23> Create a 5 nodes cluster: OK -11:40:27> Cluster is up: OK -11:40:27> Cluster is writable: OK -11:40:28> Killing majority of master nodes: OK -11:40:28> Cluster should eventually be down: OK -11:40:31> Use takeover to bring slaves back: OK -11:40:31> Cluster should eventually be up again: OK -11:40:34> Cluster is writable: OK -11:40:35> Instance #5, #6, #7 are now masters: OK -11:40:35> Restarting the previously killed master nodes: OK -11:40:36> Instance #0, #1, #2 gets converted into a slaves: OK +08:20:00> (init) Restart killed instances: OK +08:20:00> Cluster nodes are reachable: OK +08:20:00> Cluster nodes hard reset: OK +08:20:00> Cluster Join and auto-discovery test: OK +08:20:05> Before slots allocation, all nodes report cluster failure: OK +08:20:05> Create a 5 nodes cluster: OK +08:20:09> Cluster is up: OK +08:20:09> Cluster is writable: OK +08:20:10> Killing majority of master nodes: OK +08:20:11> Cluster should eventually be down: OK +08:20:14> Use takeover to bring slaves back: OK +08:20:14> Cluster should eventually be up again: OK +08:20:17> Cluster is writable: OK +08:20:17> Instance #5, #6, #7 are now masters: OK +08:20:17> Restarting the previously killed master nodes: OK +08:20:19> Instance #0, #1, #2 gets converted into a slaves: OK Testing unit: 12-replica-migration-2.tcl -11:40:36> (init) Restart killed instances: OK -11:40:36> Cluster nodes are reachable: OK -11:40:36> Cluster nodes hard reset: OK -11:40:36> Cluster Join and auto-discovery test: OK -11:40:38> Before slots allocation, all nodes report cluster failure: OK -11:40:38> Create a 5 nodes cluster: OK -11:40:42> Cluster is up: OK -11:40:42> Each master should have at least two replicas attached: OK -11:40:42> Resharding all the master #0 slots away from it: >>> Performing Cluster Check (using node 127.0.0.1:30000) +08:20:19> (init) Restart killed instances: OK +08:20:19> Cluster nodes are reachable: OK +08:20:19> Cluster nodes hard reset: OK +08:20:20> Cluster Join and auto-discovery test: OK +08:20:25> Before slots allocation, all nodes report cluster failure: OK +08:20:25> Create a 5 nodes cluster: OK +08:20:32> Cluster is up: OK +08:20:32> Each master should have at least two replicas attached: OK +08:20:32> 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 929 slots from 127.0.0.1:30000 to 127.0.0.1:30002 -################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################# -Moving 823 slots from 127.0.0.1:30000 to 127.0.0.1:30003 -####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################### -Moving 796 slots from 127.0.0.1:30000 to 127.0.0.1:30004 -############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################ -Moving 782 slots from 127.0.0.1:30000 to 127.0.0.1:30001 -############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################## +Moving 912 slots from 127.0.0.1:30000 to 127.0.0.1:30004 +################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################ +Moving 779 slots from 127.0.0.1:30000 to 127.0.0.1:30001 +########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################### +Moving 769 slots from 127.0.0.1:30000 to 127.0.0.1:30003 +################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################# +Moving 762 slots from 127.0.0.1:30000 to 127.0.0.1:30002 +########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################## OK -11:43:27> Master #0 should lose its replicas: OK -11:43:28> Resharding back some slot to master #0: >>> Performing Cluster Check (using node 127.0.0.1:30000) +08:24:12> Master #0 should lose its replicas: OK +08:24:14> 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. >>> Rebalancing across 5 nodes. Total weight = 4.01 -Moving 11 slots from 127.0.0.1:30001 to 127.0.0.1:30000 -########### -Moving 11 slots from 127.0.0.1:30002 to 127.0.0.1:30000 -########### Moving 11 slots from 127.0.0.1:30004 to 127.0.0.1:30000 ########### Moving 11 slots from 127.0.0.1:30003 to 127.0.0.1:30000 ########### +Moving 11 slots from 127.0.0.1:30002 to 127.0.0.1:30000 +########### +Moving 11 slots from 127.0.0.1:30001 to 127.0.0.1:30000 +########### OK -11:43:41> Master #0 should re-acquire one or more replicas: OK +08:24:28> Master #0 should re-acquire one or more replicas: OK Testing unit: 13-no-failover-option.tcl -11:43:45> (init) Restart killed instances: OK -11:43:45> Cluster nodes are reachable: OK -11:43:45> Cluster nodes hard reset: OK -11:43:45> Cluster Join and auto-discovery test: OK -11:43:48> Before slots allocation, all nodes report cluster failure: OK -11:43:48> Create a 5 nodes cluster: OK -11:43:53> Cluster is up: OK -11:43:53> Cluster is writable: OK -11:43:53> Instance #5 is a slave: OK -11:43:53> Instance #5 synced with the master: OK -11:43:53> The nofailover flag is propagated: OK -11:43:54> Killing one master node: OK -11:43:54> Cluster should be still down after some time: OK -11:44:04> Instance #5 is still a slave: OK -11:44:04> Restarting the previously killed master node: OK +08:24:32> (init) Restart killed instances: OK +08:24:32> Cluster nodes are reachable: OK +08:24:32> Cluster nodes hard reset: OK +08:24:33> Cluster Join and auto-discovery test: OK +08:24:37> Before slots allocation, all nodes report cluster failure: OK +08:24:37> Create a 5 nodes cluster: OK +08:24:41> Cluster is up: OK +08:24:41> Cluster is writable: OK +08:24:42> Instance #5 is a slave: OK +08:24:42> Instance #5 synced with the master: OK +08:24:42> The nofailover flag is propagated: OK +08:24:44> Killing one master node: OK +08:24:44> Cluster should be still down after some time: OK +08:24:54> Instance #5 is still a slave: OK +08:24:54> Restarting the previously killed master node: OK Testing unit: 14-consistency-check.tcl -11:44:04> (init) Restart killed instances: OK -11:44:04> Cluster nodes are reachable: OK -11:44:05> Cluster nodes hard reset: OK -11:44:05> Cluster Join and auto-discovery test: OK -11:44:08> Before slots allocation, all nodes report cluster failure: OK -11:44:08> Create a 5 nodes cluster: OK -11:44:12> Cluster should start ok: OK -11:44:12> Cluster is writable: OK -11:44:13> Slave expired keys is loaded when restarted: appendonly=no: OK -11:44:17> Slave expired keys is loaded when restarted: appendonly=yes: OK +08:24:55> (init) Restart killed instances: OK +08:24:55> Cluster nodes are reachable: OK +08:24:55> Cluster nodes hard reset: OK +08:24:55> Cluster Join and auto-discovery test: OK +08:25:00> Before slots allocation, all nodes report cluster failure: OK +08:25:00> Create a 5 nodes cluster: OK +08:25:03> Cluster should start ok: OK +08:25:03> Cluster is writable: OK +08:25:04> Slave expired keys is loaded when restarted: appendonly=no: OK +08:25:09> Slave expired keys is loaded when restarted: appendonly=yes: OK Testing unit: 15-cluster-slots.tcl -11:44:22> (init) Restart killed instances: OK -11:44:22> Cluster nodes are reachable: OK -11:44:22> Cluster nodes hard reset: OK -11:44:22> Cluster Join and auto-discovery test: OK -11:44:25> Before slots allocation, all nodes report cluster failure: OK -11:44:25> Create a 5 nodes cluster: OK -11:44:28> Cluster is up: OK -11:44:28> Cluster is writable: OK -11:44:29> Instance #5 is a slave: OK -11:44:29> client do not break when cluster slot: OK -11:44:40> client can handle keys with hash tag: OK +08:25:15> (init) Restart killed instances: OK +08:25:15> Cluster nodes are reachable: OK +08:25:15> Cluster nodes hard reset: OK +08:25:15> Cluster Join and auto-discovery test: OK +08:25:20> Before slots allocation, all nodes report cluster failure: OK +08:25:20> Create a 5 nodes cluster: OK +08:25:28> Cluster is up: OK +08:25:28> Cluster is writable: OK +08:25:28> Instance #5 is a slave: OK +08:25:28> client do not break when cluster slot: OK +08:25:43> client can handle keys with hash tag: OK Testing unit: 16-transactions-on-replica.tcl -11:44:40> (init) Restart killed instances: OK -11:44:40> Cluster nodes are reachable: OK -11:44:40> Cluster nodes hard reset: OK -11:44:41> Cluster Join and auto-discovery test: OK -11:44:43> Before slots allocation, all nodes report cluster failure: OK -11:44:43> Create a primary with a replica: OK -11:44:48> Cluster should start ok: OK -11:44:48> Cant read from replica without READONLY: OK -11:44:48> Can read from replica after READONLY: OK -11:44:48> Can preform HSET primary and HGET from replica: OK -11:44:48> Can MULTI-EXEC transaction of HGET operations from replica: OK -11:44:48> MULTI-EXEC with write operations is MOVED: OK -11:44:48> read-only blocking operations from replica: OK +08:25:44> (init) Restart killed instances: OK +08:25:44> Cluster nodes are reachable: OK +08:25:44> Cluster nodes hard reset: OK +08:25:44> Cluster Join and auto-discovery test: OK +08:25:49> Before slots allocation, all nodes report cluster failure: OK +08:25:49> Create a primary with a replica: OK +08:25:54> Cluster should start ok: OK +08:25:54> Cant read from replica without READONLY: OK +08:25:54> Can read from replica after READONLY: OK +08:25:54> Can preform HSET primary and HGET from replica: OK +08:25:54> Can MULTI-EXEC transaction of HGET operations from replica: OK +08:25:54> MULTI-EXEC with write operations is MOVED: OK +08:25:54> read-only blocking operations from replica: OK Testing unit: 17-diskless-load-swapdb.tcl -11:44:48> (init) Restart killed instances: OK -11:44:48> Cluster nodes are reachable: OK -11:44:48> Cluster nodes hard reset: OK -11:44:48> Cluster Join and auto-discovery test: OK -11:44:51> Before slots allocation, all nodes report cluster failure: OK -11:44:51> Create a primary with a replica: OK -11:44:56> Cluster should start ok: OK -11:44:56> Cluster is writable: OK -11:44:56> Right to restore backups when fail to diskless load : OK +08:25:54> (init) Restart killed instances: OK +08:25:54> Cluster nodes are reachable: OK +08:25:54> Cluster nodes hard reset: OK +08:25:55> Cluster Join and auto-discovery test: OK +08:25:58> Before slots allocation, all nodes report cluster failure: OK +08:25:58> Create a primary with a replica: OK +08:26:04> Cluster should start ok: OK +08:26:04> Cluster is writable: OK +08:26:05> Right to restore backups when fail to diskless load : OK Cleaning up... -killing stale instance 31401 -killing stale instance 31650 -killing stale instance 32085 -killing stale instance 32235 -killing stale instance 32447 -killing stale instance 32506 -killing stale instance 32671 -killing stale instance 32688 -killing stale instance 6766 -killing stale instance 6938 -killing stale instance 7083 -killing stale instance 5010 -killing stale instance 5114 -killing stale instance 5255 -killing stale instance 14214 -killing stale instance 23356 -killing stale instance 15893 -killing stale instance 3437 -killing stale instance 3605 +killing stale instance 17833 +killing stale instance 18240 +killing stale instance 18848 +killing stale instance 18975 +killing stale instance 19197 +killing stale instance 19335 +killing stale instance 19438 +killing stale instance 19457 +killing stale instance 23479 +killing stale instance 23501 +killing stale instance 23509 +killing stale instance 25790 +killing stale instance 25798 +killing stale instance 25806 +killing stale instance 25931 +killing stale instance 27706 +killing stale instance 31600 +killing stale instance 8721 +killing stale instance 11285 GOOD! No errors. ./runtest-sentinel || true Starting sentinel #0 at port 20000 @@ -2421,96 +3073,96 @@ Starting redis #3 at port 30003 Starting redis #4 at port 30004 Testing unit: 00-base.tcl -11:45:31> (init) Restart killed instances: OK -11:45:31> (init) Remove old master entry from sentinels: OK -11:45:31> (init) Create a master-slaves cluster of 5 instances: OK -11:45:31> (init) Sentinels can start monitoring a master: OK -11:45:32> (init) Sentinels can talk with the master: OK -11:45:32> (init) Sentinels are able to auto-discover other sentinels: OK -11:45:34> (init) Sentinels are able to auto-discover slaves: OK -11:45:34> Basic failover works if the master is down: OK -11:45:37> New master 127.0.0.1:30001 role matches: OK -11:45:37> All the other slaves now point to the new master: OK -11:45:37> The old master eventually gets reconfigured as a slave: OK -11:45:47> ODOWN is not possible without N (quorum) Sentinels reports: OK -11:45:47> Failover is not possible without majority agreement: OK -11:45:48> Failover works if we configure for absolute agreement: OK -11:45:52> New master 127.0.0.1:30002 role matches: OK +08:26:47> (init) Restart killed instances: OK +08:26:47> (init) Remove old master entry from sentinels: OK +08:26:47> (init) Create a master-slaves cluster of 5 instances: OK +08:26:48> (init) Sentinels can start monitoring a master: OK +08:26:48> (init) Sentinels can talk with the master: OK +08:26:48> (init) Sentinels are able to auto-discover other sentinels: OK +08:26:50> (init) Sentinels are able to auto-discover slaves: OK +08:26:50> Basic failover works if the master is down: OK +08:26:53> New master 127.0.0.1:30003 role matches: OK +08:26:53> All the other slaves now point to the new master: OK +08:26:53> The old master eventually gets reconfigured as a slave: OK +08:27:04> ODOWN is not possible without N (quorum) Sentinels reports: OK +08:27:04> Failover is not possible without majority agreement: OK +08:27:05> Failover works if we configure for absolute agreement: OK +08:27:09> New master 127.0.0.1:30001 role matches: OK Testing unit: 01-conf-update.tcl -11:45:52> (init) Restart killed instances: OK -11:45:52> (init) Remove old master entry from sentinels: OK -11:45:52> (init) Create a master-slaves cluster of 5 instances: OK -11:45:53> (init) Sentinels can start monitoring a master: OK -11:45:53> (init) Sentinels can talk with the master: OK -11:45:53> (init) Sentinels are able to auto-discover other sentinels: OK -11:45:55> (init) Sentinels are able to auto-discover slaves: OK -11:45:55> We can failover with Sentinel 1 crashed: OK -11:45:59> After Sentinel 1 is restarted, its config gets updated: OK -11:45:59> New master 127.0.0.1:30001 role matches: OK +08:27:09> (init) Restart killed instances: OK +08:27:09> (init) Remove old master entry from sentinels: OK +08:27:09> (init) Create a master-slaves cluster of 5 instances: OK +08:27:11> (init) Sentinels can start monitoring a master: OK +08:27:11> (init) Sentinels can talk with the master: OK +08:27:11> (init) Sentinels are able to auto-discover other sentinels: OK +08:27:13> (init) Sentinels are able to auto-discover slaves: OK +08:27:13> We can failover with Sentinel 1 crashed: OK +08:27:16> After Sentinel 1 is restarted, its config gets updated: OK +08:27:16> New master 127.0.0.1:30004 role matches: OK Testing unit: 02-slaves-reconf.tcl -11:45:59> (init) Restart killed instances: OK -11:45:59> (init) Remove old master entry from sentinels: OK -11:45:59> (init) Create a master-slaves cluster of 5 instances: OK -11:46:00> (init) Sentinels can start monitoring a master: OK -11:46:00> (init) Sentinels can talk with the master: OK -11:46:00> (init) Sentinels are able to auto-discover other sentinels: OK -11:46:02> (init) Sentinels are able to auto-discover slaves: OK -11:46:02> Check that slaves replicate from current master: OK -11:46:02> Crash the master and force a failover: OK -11:46:05> Check that slaves replicate from current master: OK -11:46:27> Kill a slave instance: OK -11:46:27> Crash the master and force a failover: OK -11:46:31> Check that slaves replicate from current master: OK -11:46:42> Wait for failover to end: OK -11:46:42> Restart killed slave and test replication of slaves again...: OK -11:46:42> Check that slaves replicate from current master: OK +08:27:16> (init) Restart killed instances: OK +08:27:16> (init) Remove old master entry from sentinels: OK +08:27:16> (init) Create a master-slaves cluster of 5 instances: OK +08:27:18> (init) Sentinels can start monitoring a master: OK +08:27:18> (init) Sentinels can talk with the master: OK +08:27:18> (init) Sentinels are able to auto-discover other sentinels: OK +08:27:20> (init) Sentinels are able to auto-discover slaves: OK +08:27:20> Check that slaves replicate from current master: OK +08:27:20> Crash the master and force a failover: OK +08:27:23> Check that slaves replicate from current master: OK +08:27:44> Kill a slave instance: OK +08:27:44> Crash the master and force a failover: OK +08:27:48> Check that slaves replicate from current master: OK +08:27:58> Wait for failover to end: OK +08:27:58> Restart killed slave and test replication of slaves again...: OK +08:27:58> Check that slaves replicate from current master: OK Testing unit: 03-runtime-reconf.tcl Testing unit: 04-slave-selection.tcl Testing unit: 05-manual.tcl -11:47:03> (init) Restart killed instances: OK -11:47:03> (init) Remove old master entry from sentinels: OK -11:47:03> (init) Create a master-slaves cluster of 5 instances: OK -11:47:04> (init) Sentinels can start monitoring a master: OK -11:47:04> (init) Sentinels can talk with the master: OK -11:47:04> (init) Sentinels are able to auto-discover other sentinels: OK -11:47:06> (init) Sentinels are able to auto-discover slaves: OK -11:47:06> Manual failover works: OK -11:47:07> New master 127.0.0.1:30001 role matches: OK -11:47:07> All the other slaves now point to the new master: OK -11:47:07> The old master eventually gets reconfigured as a slave: OK +08:28:19> (init) Restart killed instances: OK +08:28:19> (init) Remove old master entry from sentinels: OK +08:28:19> (init) Create a master-slaves cluster of 5 instances: OK +08:28:20> (init) Sentinels can start monitoring a master: OK +08:28:20> (init) Sentinels can talk with the master: OK +08:28:20> (init) Sentinels are able to auto-discover other sentinels: OK +08:28:22> (init) Sentinels are able to auto-discover slaves: OK +08:28:22> Manual failover works: OK +08:28:23> New master 127.0.0.1:30004 role matches: OK +08:28:23> All the other slaves now point to the new master: OK +08:28:23> The old master eventually gets reconfigured as a slave: OK Testing unit: 06-ckquorum.tcl -11:47:18> (init) Restart killed instances: OK -11:47:18> (init) Remove old master entry from sentinels: OK -11:47:18> (init) Create a master-slaves cluster of 5 instances: OK -11:47:18> (init) Sentinels can start monitoring a master: OK -11:47:18> (init) Sentinels can talk with the master: OK -11:47:18> (init) Sentinels are able to auto-discover other sentinels: OK -11:47:20> (init) Sentinels are able to auto-discover slaves: OK -11:47:20> CKQUORUM reports OK and the right amount of Sentinels: OK -11:47:20> CKQUORUM detects quorum cannot be reached: OK -11:47:20> CKQUORUM detects failover authorization cannot be reached: OK +08:28:33> (init) Restart killed instances: OK +08:28:33> (init) Remove old master entry from sentinels: OK +08:28:34> (init) Create a master-slaves cluster of 5 instances: OK +08:28:34> (init) Sentinels can start monitoring a master: OK +08:28:34> (init) Sentinels can talk with the master: OK +08:28:34> (init) Sentinels are able to auto-discover other sentinels: OK +08:28:36> (init) Sentinels are able to auto-discover slaves: OK +08:28:36> CKQUORUM reports OK and the right amount of Sentinels: OK +08:28:36> CKQUORUM detects quorum cannot be reached: OK +08:28:36> CKQUORUM detects failover authorization cannot be reached: OK Testing unit: 07-down-conditions.tcl -11:47:26> (init) Restart killed instances: OK -11:47:26> (init) Remove old master entry from sentinels: OK -11:47:26> (init) Create a master-slaves cluster of 5 instances: OK -11:47:26> (init) Sentinels can start monitoring a master: OK -11:47:26> (init) Sentinels can talk with the master: OK -11:47:26> (init) Sentinels are able to auto-discover other sentinels: OK -11:47:28> (init) Sentinels are able to auto-discover slaves: OK -11:47:28> Crash the majority of Sentinels to prevent failovers for this unit: OK -11:47:28> SDOWN is triggered by non-responding but not crashed instance: OK -11:47:38> SDOWN is triggered by crashed instance: OK -11:47:40> SDOWN is triggered by masters advertising as slaves: OK -11:48:18> SDOWN is triggered by misconfigured instance repling with errors: OK -11:48:21> SDOWN is triggered if we rename PING to PONG: OK +08:28:42> (init) Restart killed instances: OK +08:28:42> (init) Remove old master entry from sentinels: OK +08:28:42> (init) Create a master-slaves cluster of 5 instances: OK +08:28:42> (init) Sentinels can start monitoring a master: OK +08:28:42> (init) Sentinels can talk with the master: OK +08:28:42> (init) Sentinels are able to auto-discover other sentinels: OK +08:28:44> (init) Sentinels are able to auto-discover slaves: OK +08:28:44> Crash the majority of Sentinels to prevent failovers for this unit: OK +08:28:44> SDOWN is triggered by non-responding but not crashed instance: OK +08:28:54> SDOWN is triggered by crashed instance: OK +08:28:57> SDOWN is triggered by masters advertising as slaves: OK +08:29:35> SDOWN is triggered by misconfigured instance repling with errors: OK +08:29:37> SDOWN is triggered if we rename PING to PONG: OK Cleaning up... -killing stale instance 3753 -killing stale instance 3773 -killing stale instance 3780 -killing stale instance 3787 -killing stale instance 3940 -killing stale instance 4498 -killing stale instance 4624 +killing stale instance 12572 +killing stale instance 12585 +killing stale instance 12592 +killing stale instance 13024 +killing stale instance 15146 +killing stale instance 16644 +killing stale instance 16864 GOOD! No errors. make[1]: Leaving directory '/build/redis-6.0.16' create-stamp debian/debhelper-build-stamp @@ -2543,18 +3195,18 @@ dh_strip -a dh_makeshlibs -a dh_shlibdeps -a -dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/redis-tools/usr/bin/redis-cli debian/redis-tools/usr/bin/redis-check-rdb debian/redis-tools/usr/bin/redis-check-aof debian/redis-tools/usr/bin/redis-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/redis-tools/usr/bin/redis-cli debian/redis-tools/usr/bin/redis-check-rdb debian/redis-tools/usr/bin/redis-check-aof debian/redis-tools/usr/bin/redis-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/redis-tools/usr/bin/redis-cli debian/redis-tools/usr/bin/redis-check-rdb debian/redis-tools/usr/bin/redis-check-aof debian/redis-tools/usr/bin/redis-benchmark were not linked against librt.so.1 (they use none of the library's symbols) +dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/redis-tools/usr/bin/redis-check-aof debian/redis-tools/usr/bin/redis-check-rdb debian/redis-tools/usr/bin/redis-cli debian/redis-tools/usr/bin/redis-benchmark were not linked against librt.so.1 (they use none of the library's symbols) +dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/redis-tools/usr/bin/redis-check-aof debian/redis-tools/usr/bin/redis-check-rdb debian/redis-tools/usr/bin/redis-cli debian/redis-tools/usr/bin/redis-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/redis-tools/usr/bin/redis-check-aof debian/redis-tools/usr/bin/redis-check-rdb debian/redis-tools/usr/bin/redis-cli debian/redis-tools/usr/bin/redis-benchmark 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 'redis-sentinel' in '../redis-sentinel_6.0.16-1+deb11u2_arm64.deb'. dpkg-deb: building package 'redis' in '../redis_6.0.16-1+deb11u2_all.deb'. -dpkg-deb: building package 'redis-tools' in '../redis-tools_6.0.16-1+deb11u2_arm64.deb'. dpkg-deb: building package 'redis-server' in '../redis-server_6.0.16-1+deb11u2_arm64.deb'. dpkg-deb: building package 'redis-tools-dbgsym' in '../redis-tools-dbgsym_6.0.16-1+deb11u2_arm64.deb'. -dpkg-deb: building package 'redis-sentinel' in '../redis-sentinel_6.0.16-1+deb11u2_arm64.deb'. +dpkg-deb: building package 'redis-tools' in '../redis-tools_6.0.16-1+deb11u2_arm64.deb'. dpkg-genbuildinfo --build=binary dpkg-genchanges --build=binary >../redis_6.0.16-1+deb11u2_arm64.changes dpkg-genchanges: info: binary-only upload (no source code included) @@ -2562,12 +3214,14 @@ dpkg-buildpackage: info: binary-only upload (no source included) dpkg-genchanges: info: not including original source code in upload I: copying local configuration +I: user script /srv/workspace/pbuilder/5366/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/5366/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/13786 and its subdirectories -I: Current time: Fri Apr 28 11:48:49 -12 2023 -I: pbuilder-time-stamp: 1682725729 +I: removing directory /srv/workspace/pbuilder/5366 and its subdirectories +I: Current time: Sun Mar 27 08:30:09 +14 2022 +I: pbuilder-time-stamp: 1648319409