Skip to content

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

@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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions