Skip to content

get/getMulti return RES_NOTFOUND after buffered increment with result RES_UNKNOWN_READ_FAILURE with OPT_BINARY_PROTOCOL #554

Open
@degtyaryov

Description

@degtyaryov

Hello!

Code:

<?php

$key = 'KEY';
$value = 'VALUE';

$memcached = new Memcached();

$memcached->addServer('127.0.0.1', '11211', 1);

$memcached->setOption( Memcached::OPT_BINARY_PROTOCOL, true);

$memcached->setOption(Memcached::OPT_BUFFER_WRITES, true);
$memcached->setOption(Memcached::OPT_NOREPLY, true);

$memcached->set($key, $value);
echo 'increment ', $key, ' ', $memcached->increment($key, 1, 1, 600), ' ', $memcached->getResultMessage(), "\n";
echo 'get ', $key, ' ', $memcached->get($key), ' ', $memcached->getResultMessage(), "\n";

Expect:

increment KEY  SUCCESS
get KEY VALUE SUCCESS

Result:

increment KEY  SUCCESS
get KEY  NOT FOUND

libmemcached send request 1 TCP package for set, incr and get

server memcached return 1 TCP package with 2 results:

  • for incr return "Non-numeric server-side value for incr or decr"
  • for get return "VALUE"

But php-memcached for get return NOT FOUND

Text protocol:

<?php

$key = 'KEY';
$value = 'VALUE';

$memcached = new Memcached();

$memcached->addServer('127.0.0.1', '11211', 1);


$memcached->setOption(Memcached::OPT_BUFFER_WRITES, true);
$memcached->setOption(Memcached::OPT_NOREPLY, true);

$memcached->set($key, $value);
echo 'increment ', $key, ' ', $memcached->increment($key, 1), ' ', $memcached->getResultMessage(), "\n";
echo 'get ', $key, ' ', $memcached->get($key), ' ', $memcached->getResultMessage(), "\n";

Expect:

increment KEY  SUCCESS
get KEY VALUE SUCCESS

Result:

increment KEY  SUCCESS
get KEY VALUE SUCCESS

libmemcached send request 1 TCP package for incr and get

server memcached return 1 TCP package with 1 results:

  • for get return "VALUE"

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions