Skip to content

[exception]: Executing test client: Bad protocol, as reply type byte. #328

Open
macmartine opened this Issue Feb 4, 2012 · 22 comments
@macmartine

With 2.4.7 happens every time when running 'make test'.

Linux 3.0.0-12-virtual #20-Ubuntu SMP Fri Oct 7 18:19:02 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux

Snippet below, and full output here: https://gist.github.com/1738975

[4697] 04 Feb 17:02:09 * Saving the final RDB snapshot before exiting.

Logged warnings (pid 4685):
[4685] 04 Feb 17:02:09 # Received SIGTERM, scheduling shutdown...

Logged warnings (pid 4652):
[4652] 04 Feb 17:02:10 # Received SIGTERM, scheduling shutdown...

[exception]: Executing test client: Bad protocol, as reply type byte.
Bad protocol, as reply type byte

@ElliotChong

Seeing the same issue in 2.4.8

@sebastiansito

Same here in 2.4.8. Barebone EC2 Linux Ami with make and gcc installed.

@coling
coling commented Jun 27, 2012

Yup same here it seems. x86_64 if it matters & gcc-4.7.1

@meltzerj
meltzerj commented Jul 2, 2012

same error on EC2 Linux... have you guys found this error to have an impact?

@coling
coling commented Jul 2, 2012

To be honest found it to be temperamental, likely timing based. Some builds it passed, some it failed. I've updated to latest stable here and the build passed. Not tried any more on our build cluster yet (one build was enough!)

@meltzerj
meltzerj commented Jul 2, 2012

It actually threw this error on the latest stable version for me (v. 2.4.15). Which version are you using?

@meltzerj
meltzerj commented Jul 2, 2012

I also just built v. 2.2.15 and same error. I'm on an Amazon Linux AMI micro instance.

@coling
coling commented Jul 2, 2012

I was using 2.4.7 when I saw the error but it was sporadic. Some builds had the error some didn't. I've not seen the error with 2.4.15 but I suspect it would show up again if I did enough builds.

@jamesstarr

I see the same flaky behavior coling describes, where some time the unit test pass. I am building 2.4.15.

@zuthan
zuthan commented Aug 2, 2012

I just got this same error: Executing test client: Bad protocol, '' as reply type byte. when trying to build 2.5.12 (2.6 RC6). The next time I tried to build I got a different error (might be completely unrelated).

@pjungwir

I just saw this error running make test on 2.6.0-rc8, here:

[exception]: Executing test client: Bad protocol, '' as reply type byte.
Bad protocol, '' as reply type byte
    while executing
"::redis::redis_read_reply $fd"
    (procedure "::redis::__dispatch__" line 23)
    invoked from within
"[srv $level "client"] {*}$args"
    (procedure "r" line 7)
    invoked from within
"r -1 debug digest"
. . .

This is on a 64-bit Ubuntu 12.04 LTS EC2 image.

@quanticle

I'm running Ubuntu 12.04 LTS 32 bit on a VirtualBox VM and I'm compiling Redis 2.6.2. For me, the error occurs every time I run make test.

[exception]: Executing test client: Bad protocol, '' as reply type byte.
Bad protocol, '' as reply type byte
    while executing
"::redis::redis_read_reply $fd"
    (procedure "::redis::__dispatch__" line 23)
    invoked from within
"[srv $level "client"] {*}$args"
    (procedure "r" line 7)
    invoked from within
"r -1 debug digest"
    ("uplevel" body line 6)
    invoked from within
"uplevel 1 $code"
    (procedure "test" line 29)
    invoked from within
"test {MASTER and SLAVE consistency with expire} {
            createComplexDataset r $numops useexpire
            after 4000 ;# Make sure everything ..."
    ("uplevel" body line 10)
    invoked from within
"uplevel 1 $code "
    (procedure "start_server" line 3)
    invoked from within
"start_server {} {
        test {First server should have role slave after SLAVEOF} {
            r -1 slaveof [srv 0 host] [srv 0 port]
            af..."
    ("uplevel" body line 2)
    invoked from within
"uplevel 1 $code "
    (procedure "start_server" line 3)
    invoked from within
"start_server {tags {"repl"}} {
    start_server {} {
        test {First server should have role slave after SLAVEOF} {
            r -1 slaveof [srv ..."
    (file "tests/integration/replication-3.tcl" line 1)
    invoked from within
"source $path"
    (procedure "execute_tests" line 4)
    invoked from within
"execute_tests $data"
    (procedure "test_client_main" line 9)
    invoked from within
"test_client_main $::test_server_port "
make[1]: *** [test] Error 1
make[1]: Leaving directory `/home/quanticle/redis-2.6.2/redis-2.6.2/src'
make: *** [test] Error 2
@soiitaire

same error on centos 6.3 in VirtualBox

@pmontrasio

Same error with version 2.6.6 on Debian 6.0.6 32-bit in VirtualBox 4.2.6

@sente
sente commented Jan 30, 2013

Ubuntu 12.04 LTS 64bit reporting in

@jaivikram

Same error on Ubuntu12.04 LTS 64bit on Amazon ec2

@antirez
Owner
antirez commented Feb 5, 2013

I've a Virtual Box Linux instance, I'm trying there to see if I can reproduce it, Thanks.

@antirez
Owner
antirez commented Feb 5, 2013

I can't reproduce, but I made a change in the github 2.6 branch that may fix this issue. Please could you try? Thank you.

@pjungwir

Hi @antirez, I thought I'd pop onto one of my EC2 instances and test 2.6.10, but it seemed to require a lot more work to build than before. I had to run make in each deps/* dir individually, and it looks like I need to run make install in each one before running tests. Is this expected? I don't see any notes about this in the README.

@badboy
badboy commented Feb 22, 2013

@pjungwir That's definitely not expected. make in the main directory should build all dependencies, make install should install the redis-server and redis-cli binary (which are self-contained, no extra installed packages needed).

Just tried make on a clean git checkout and it worked just fine.

@pjungwir

Okay, just built 2.6.10 on a fresh instance (still Ubuntu 12.04 64-bit), and this time simple make did the trick, and all tests passed. I remember the first time around I did something like this:

$ make
make not found
$ sudo apt-get install make
$ make
cc not found
$ sudo apt-get install build-essential
$ make
jemalloc.h not found

On yet another fresh instance, I confirmed that if I try building before installing build-essential, it gets the source repo into a weird state where it fails due to these missing dependencies. make clean doesn't fix it, but make distclean does. Not sure you care, but perhaps it will help someone else who hits that problem: install build-essential first, and if you forget, do a distclean.

Thanks for Redis, btw. It's great software!

@l0b0
l0b0 commented Sep 30, 2013

Another failure on Amazon EC2 Red Hat Enterprise Linux 6.4 64 bit micro instance (maybe it's running out of memory?):

make -C /.../redis
cd /.../redis
./runtest
...
[exception]: Executing test client: Bad protocol,  as reply type byte.
Bad protocol,  as reply type byte
    while executing
"::redis::redis_read_reply $fd"
    (procedure "::redis::__dispatch__" line 23)
    invoked from within
"[srv $level "client"] {*}$args"
    (procedure "r" line 7)
    invoked from within
"r -1 debug digest"
    ("uplevel" body line 4)
    invoked from within
"uplevel 1 $code"
    (procedure "test" line 29)
    invoked from within
"test {MASTER and SLAVE dataset should be identical after complex ops} {
            createComplexDataset r 10000
            after 500
            if ..."
    ("uplevel" body line 8)
    invoked from within
"uplevel 1 $code "
    (procedure "start_server" line 3)
    invoked from within
"start_server {} {
        test {First server should have role slave after SLAVEOF} {
            r -1 slaveof [srv 0 host] [srv 0 port]
            af..."
    ("uplevel" body line 2)
    invoked from within
"uplevel 1 $code "
    (procedure "start_server" line 3)
    invoked from within
"start_server {tags {"repl"}} {
    start_server {} {
        test {First server should have role slave after SLAVEOF} {
            r -1 slaveof [srv ..."
    (file "tests/integration/replication-2.tcl" line 1)
    invoked from within
"source $path"
    (procedure "execute_tests" line 4)
    invoked from within
"execute_tests $data"
    (procedure "test_client_main" line 9)
    invoked from within
"test_client_main $::test_server_port "

Tried to killall redis-server, make distclean and make clean before rerunning, but got the same result.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.