The cause of this is a broken back port of the upstream change set:

https://github.com/memcached/memcached/commit/d9cd01ede97f4145af9781d448c62a3318952719

That changeset uses strncmp whereas the .diff file uses strcmp


++                if (ptr - c->rcurr > 100 ||
++                      strcmp(ptr, "get ") && strcmp(ptr, "gets ")) {
++                    conn_set_state(c, conn_closing);
++                    return 1;
++                }

Given that the string being compared contains either "get HUGE KEY" or
"gets HUGE KEYS" the check in the ubuntu diff will *always* return
false.

Simply correcting that back port appears to solve the problem for us.

-- 
You received this bug notification because you are a member of Ubuntu
Server Team, which is subscribed to memcached in Ubuntu.
https://bugs.launchpad.net/bugs/637114

Title:
  Large multiget requests randomly broken

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/memcached/+bug/637114/+subscriptions

-- 
Ubuntu-server-bugs mailing list
Ubuntu-server-bugs@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-server-bugs

Reply via email to