MCPcopy Create free account
hub / github.com/acl-dev/acl / move

Method move

lib_acl_cpp/src/redis/redis_client_cluster.cpp:353–392  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

351}
352
353redis_client* redis_client_cluster::move(redis_command& cmd,
354 redis_client* conn, const char* ptr, int ntried)
355{
356 // �������Ӷ���黹�����ӳض���
357 conn->get_pool()->put(conn, true);
358
359 const char* addr = cmd.get_addr(ptr);
360 if (addr == NULL) {
361 logger_warn("MOVED invalid, ptr: %s", ptr);
362 return NULL;
363 }
364
365 // �����ӳؼ�������ȡĿ��redis�ڵ���������������ڣ���Ĭ��ʹ��
366 // �����õĵ�һ��redis�ڵ��������
367 const conn_config* conf = this->get_config(addr, true);
368 if (conf == NULL) {
369 logger_error("no conn_config for addr=%s", addr);
370 return NULL;
371 }
372
373 conn = redirect(addr, conf->max);
374 if (conn == NULL) {
375 logger_error("redirect NULL, addr: %s", addr);
376 return NULL;
377 }
378
379 ptr = conn->get_pool()->get_addr();
380 cmd.set_client_addr(ptr);
381
382 // ��Ҫ�����ϣ��ֵ
383 cmd.clear(true);
384
385 if (ntried >= 2 && redirect_sleep_ > 0 && strcmp(ptr, addr) != 0) {
386 logger("redirect %d, curr %s, waiting %s ...",
387 ntried, ptr, addr);
388 acl_doze(redirect_sleep_);
389 }
390
391 return conn;
392}
393
394redis_client* redis_client_cluster::ask(redis_command& cmd,
395 redis_client* conn, const char* ptr, int ntried)

Callers

nothing calls this directly

Calls 6

acl_dozeFunction · 0.85
get_configMethod · 0.80
set_client_addrMethod · 0.80
putMethod · 0.45
get_addrMethod · 0.45
clearMethod · 0.45

Tested by

no test coverage detected