projects
/
m6w6
/
libmemcached
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
Merge in bug fix for 456080.
[m6w6/libmemcached]
/
libmemcached
/
get.c
diff --git
a/libmemcached/get.c
b/libmemcached/get.c
index a6cb549fce434185ebbcb6269cf40a7af558b7e6..aa4e6f53de49eb2fba940dc08046f50c9ef6909e 100644
(file)
--- a/
libmemcached/get.c
+++ b/
libmemcached/get.c
@@
-144,7
+144,7
@@
static memcached_return_t memcached_mget_by_key_real(memcached_st *ptr,
size_t number_of_keys,
bool mget_mode)
{
size_t number_of_keys,
bool mget_mode)
{
-
memcached_return_t rc= MEMCACHED_NOTFOUND
;
+
bool failures_occured_in_sending= false
;
const char *get_command= "get ";
uint8_t get_command_length= 4;
unsigned int master_server_key= (unsigned int)-1; /* 0 is a valid server id! */
const char *get_command= "get ";
uint8_t get_command_length= 4;
unsigned int master_server_key= (unsigned int)-1; /* 0 is a valid server id! */
@@
-211,6
+211,8
@@
static memcached_return_t memcached_mget_by_key_real(memcached_st *ptr,
If a server fails we warn about errors and start all over with sending keys
to the server.
*/
If a server fails we warn about errors and start all over with sending keys
to the server.
*/
+ memcached_return_t rc= MEMCACHED_SUCCESS;
+ size_t hosts_connected= 0;
for (uint32_t x= 0; x < number_of_keys; x++)
{
memcached_server_write_instance_st instance;
for (uint32_t x= 0; x < number_of_keys; x++)
{
memcached_server_write_instance_st instance;
@@
-241,12
+243,14
@@
static memcached_return_t memcached_mget_by_key_real(memcached_st *ptr,
rc= memcached_connect(instance);
if (rc != MEMCACHED_SUCCESS)
rc= memcached_connect(instance);
if (rc != MEMCACHED_SUCCESS)
+ {
continue;
continue;
+ }
+ hosts_connected++;
if ((memcached_io_writev(instance, vector, 4, false)) == -1)
{
if ((memcached_io_writev(instance, vector, 4, false)) == -1)
{
- fprintf(stderr, "%s:%d (%s)\n", __FILE__, __LINE__,__func__);fflush(stdout);
- rc= MEMCACHED_SOME_ERRORS;
+ failures_occured_in_sending= true;
continue;
}
WATCHPOINT_ASSERT(instance->cursor_active == 0);
continue;
}
WATCHPOINT_ASSERT(instance->cursor_active == 0);
@@
-258,16
+262,27
@@
static memcached_return_t memcached_mget_by_key_real(memcached_st *ptr,
if ((memcached_io_writev(instance, (vector + 1), 3, false)) == -1)
{
memcached_server_response_reset(instance);
if ((memcached_io_writev(instance, (vector + 1), 3, false)) == -1)
{
memcached_server_response_reset(instance);
- fprintf(stderr, "%s:%d (%s)\n", __FILE__, __LINE__,__func__);fflush(stdout);
- rc= MEMCACHED_SOME_ERRORS;
+ failures_occured_in_sending= true;
continue;
}
}
}
continue;
}
}
}
+ if (hosts_connected == 0)
+ {
+ LIBMEMCACHED_MEMCACHED_MGET_END();
+
+ if (rc != MEMCACHED_SUCCESS)
+ return rc;
+
+ return MEMCACHED_NO_SERVERS;
+ }
+
+
/*
Should we muddle on if some servers are dead?
*/
/*
Should we muddle on if some servers are dead?
*/
+ bool success_happened= false;
for (uint32_t x= 0; x < memcached_server_count(ptr); x++)
{
memcached_server_write_instance_st instance=
for (uint32_t x= 0; x < memcached_server_count(ptr); x++)
{
memcached_server_write_instance_st instance=
@@
-278,14
+293,24
@@
static memcached_return_t memcached_mget_by_key_real(memcached_st *ptr,
/* We need to do something about non-connnected hosts in the future */
if ((memcached_io_write(instance, "\r\n", 2, true)) == -1)
{
/* We need to do something about non-connnected hosts in the future */
if ((memcached_io_write(instance, "\r\n", 2, true)) == -1)
{
- fprintf(stderr, "%s:%d (%s)\n", __FILE__, __LINE__,__func__);fflush(stdout);
- rc= MEMCACHED_SOME_ERRORS;
+ failures_occured_in_sending= true;
+ }
+ else
+ {
+ success_happened= true;
}
}
}
LIBMEMCACHED_MEMCACHED_MGET_END();
}
}
}
LIBMEMCACHED_MEMCACHED_MGET_END();
- return rc;
+
+ if (failures_occured_in_sending && success_happened)
+ return MEMCACHED_SOME_ERRORS;
+
+ if (success_happened)
+ return MEMCACHED_SUCCESS;
+
+ return MEMCACHED_FAILURE;
}
memcached_return_t memcached_mget_by_key(memcached_st *ptr,
}
memcached_return_t memcached_mget_by_key(memcached_st *ptr,
@@
-412,7
+437,6
@@
static memcached_return_t simple_binary_mget(memcached_st *ptr,
if (memcached_io_writev(instance, vector, 3, flush) == -1)
{
memcached_server_response_reset(instance);
if (memcached_io_writev(instance, vector, 3, flush) == -1)
{
memcached_server_response_reset(instance);
- fprintf(stderr, "%s:%d (%s)\n", __FILE__, __LINE__,__func__);fflush(stdout);
rc= MEMCACHED_SOME_ERRORS;
continue;
}
rc= MEMCACHED_SOME_ERRORS;
continue;
}
@@
-422,7
+446,6
@@
static memcached_return_t simple_binary_mget(memcached_st *ptr,
memcached_server_response_increment(instance);
if ((x > 0 && x == ptr->io_key_prefetch) && memcached_flush_buffers(ptr) != MEMCACHED_SUCCESS)
{
memcached_server_response_increment(instance);
if ((x > 0 && x == ptr->io_key_prefetch) && memcached_flush_buffers(ptr) != MEMCACHED_SUCCESS)
{
- fprintf(stderr, "%s:%d (%s)\n", __FILE__, __LINE__,__func__);fflush(stdout);
rc= MEMCACHED_SOME_ERRORS;
}
}
rc= MEMCACHED_SOME_ERRORS;
}
}
@@
-448,7
+471,6
@@
static memcached_return_t simple_binary_mget(memcached_st *ptr,
{
memcached_server_response_reset(instance);
memcached_io_reset(instance);
{
memcached_server_response_reset(instance);
memcached_io_reset(instance);
- fprintf(stderr, "%s:%d (%s)\n", __FILE__, __LINE__,__func__);fflush(stdout);
rc= MEMCACHED_SOME_ERRORS;
}
rc= MEMCACHED_SOME_ERRORS;
}
@@
-457,7
+479,6
@@
static memcached_return_t simple_binary_mget(memcached_st *ptr,
{
memcached_server_response_reset(instance);
memcached_io_reset(instance);
{
memcached_server_response_reset(instance);
memcached_io_reset(instance);
- fprintf(stderr, "%s:%d (%s)\n", __FILE__, __LINE__,__func__);fflush(stdout);
rc= MEMCACHED_SOME_ERRORS;
}
}
rc= MEMCACHED_SOME_ERRORS;
}
}