Bug #72453 InnoDB Memcached Plugin "gets" command
| Submitted: | 25 Apr 2014 13:51 | Modified: | 24 Jul 2014 14:57 |
|---|---|---|---|
| Reporter: | qixiu xiao | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: Memcached | Severity: | S3 (Non-critical) |
| Version: | 5.7.4-m14, 5.6.20 | OS: | Linux (ubuntu 12.04 server x64) |
| Assigned to: | Allen Lai | CPU Architecture: | Any |
| Tags: | InnoDB Memcached Plugin | ||
[25 Apr 2014 13:51]
qixiu xiao
[25 Apr 2014 14:15]
qixiu xiao
The bug of multiple value
Attachment: 20140425220902.png (image/png, text), 30.50 KiB.
[29 Apr 2014 18:42]
Hartmut Holzgraefe
Wrong Category? Should me Server: MemCached, not Cluster: MemCached?
[2 May 2014 6:11]
Erlend Dahl
Allen, can you please take a look?
[8 Jul 2014 12:38]
MySQL Verification Team
Hello Xiao, Thank you for the report and test case. Verified as described. Thanks, Umesh
[8 Jul 2014 12:41]
MySQL Verification Team
5.7.4/5.6.20 - affected $ telnet 127.0.0.1 11211 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. add AA1 0 0 12 Hello, Hello STORED get AA VALUE AA 8 12 HELLO, HELLO END get AA1 VALUE AA1 0 12 Hello, Hello END gets AA AA1 VALUE AA 8 12 0 Hello, Hell VALUE AA1 0 12 4 Hello, Hello END quit Connection closed by foreign host.
[22 Jul 2014 12:04]
qixiu xiao
yeah, but "get" command also cannot obtain multiple records , show the follow picture:
[22 Jul 2014 12:05]
qixiu xiao
"get"commad
Attachment: QQ截图20140722195514.png (image/png, text), 7.75 KiB.
[22 Jul 2014 12:15]
qixiu xiao
The database records
Attachment: 20140722201335.png (image/png, text), 18.02 KiB.
[23 Jul 2014 8:21]
Allen Lai
Posted by developer: We block multi-gets for now. Just return an error message to client instead of returning wrong results.
[23 Jul 2014 13:23]
Daniel Price
Fixed as of the upcoming 5.6.21, 5.7.5 release, and here's the changelog entry: Retrieval of multiple values with a single "get" command would return incorrect results instead of an error message. The "InnoDB" "memcached" plugin does not currently support retrieval of multiple values with a single "get" command. Thank you for the bug report.
[23 Jul 2014 13:26]
Daniel Price
Fixed as of the upcoming 5.6.21, 5.7.5 release, and here's the changelog entry: Retrieval of multiple values with a single "get" command would return incorrect results instead of an error message. The "InnoDB" "memcached" plugin does not currently support retrieval of multiple values with a single "get" command. Thank you for the bug report.
[24 Jul 2014 3:48]
Erlend Dahl
Bug#73014 was marked as a duplicate.
[24 Jul 2014 13:27]
qixiu xiao
I modify the code, and it can get multiple values.
[24 Jul 2014 13:29]
qixiu xiao
header file
Attachment: memcached.h (text/plain), 15.36 KiB.
[24 Jul 2014 13:30]
qixiu xiao
c file
Attachment: memcached.c (text/plain), 259.33 KiB.
[24 Jul 2014 14:40]
qixiu xiao
This problem is attributed to obtain the same "item*" pointer.
At method:
static inline char* process_get_command(conn *c, token_t *tokens, size_t ntokens, bool return_cas)
code lines:
if (ret == ENGINE_SUCCESS) {
ret = settings.engine.v1->get(settings.engine.v0, c, &it, key, nkey, 0);
}
But why each value of key is right ? key value is also get from "item* it" pointer
[24 Jul 2014 14:57]
qixiu xiao
The pointer of key reference the same pointer of "item* it".
[25 Jul 2014 1:05]
qixiu xiao
update the change
Attachment: memcached.c (text/plain), 259.39 KiB.
[25 Jul 2014 1:46]
Allen Lai
Thanks for your anlysis, Qixiu. Yes, we can solve this problem by modifying memcached layer. But since we don't want to break any current mechanism in memcached, so I think, the final solution would be that we provide fully support to handle get multi-values by one "get" or "gets" command in our InnoDB memcached plugin.
[25 Sep 2014 12:02]
Laurynas Biveinis
revno: 6091 committer: Allen lai <zheng.lai@oracle.com> branch nick: mysql-5.6 timestamp: Wed 2014-07-23 16:10:01 +0800 message: Bug#19172212 InnoDB Memcached Plugin "gets" command We don't support multi-gets yet. This will be addressed in worklog 6650. We block multi-gets for now. Just return an error message to client instead of returning wrong results. Approved by Jimmy on IM.
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.076 sec. using MySQL 8.4.7-u6-cloud
Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the
respective copyright holders.
It is not reviewed in advance
by Oracle and does not necessarily represent the opinion of
Oracle or any other party.