comparison src/stream/ngx_stream_upstream_hash_module.c @ 7513:d964b0aee8e7

Upstream hash: fall back to round-robin if hash key is empty.
author Niklas Keller <me@kelunik.com>
date Thu, 23 May 2019 16:49:22 +0300
parents ed599ea6c1f1
children
comparison
equal deleted inserted replaced
7512:99ef05560b96 7513:d964b0aee8e7
176 ngx_log_debug1(NGX_LOG_DEBUG_STREAM, pc->log, 0, 176 ngx_log_debug1(NGX_LOG_DEBUG_STREAM, pc->log, 0,
177 "get hash peer, try: %ui", pc->tries); 177 "get hash peer, try: %ui", pc->tries);
178 178
179 ngx_stream_upstream_rr_peers_rlock(hp->rrp.peers); 179 ngx_stream_upstream_rr_peers_rlock(hp->rrp.peers);
180 180
181 if (hp->tries > 20 || hp->rrp.peers->single) { 181 if (hp->tries > 20 || hp->rrp.peers->single || hp->key.len == 0) {
182 ngx_stream_upstream_rr_peers_unlock(hp->rrp.peers); 182 ngx_stream_upstream_rr_peers_unlock(hp->rrp.peers);
183 return hp->get_rr_peer(pc, &hp->rrp); 183 return hp->get_rr_peer(pc, &hp->rrp);
184 } 184 }
185 185
186 now = ngx_time(); 186 now = ngx_time();
509 ngx_log_debug1(NGX_LOG_DEBUG_STREAM, pc->log, 0, 509 ngx_log_debug1(NGX_LOG_DEBUG_STREAM, pc->log, 0,
510 "get consistent hash peer, try: %ui", pc->tries); 510 "get consistent hash peer, try: %ui", pc->tries);
511 511
512 ngx_stream_upstream_rr_peers_wlock(hp->rrp.peers); 512 ngx_stream_upstream_rr_peers_wlock(hp->rrp.peers);
513 513
514 if (hp->tries > 20 || hp->rrp.peers->single) { 514 if (hp->tries > 20 || hp->rrp.peers->single || hp->key.len == 0) {
515 ngx_stream_upstream_rr_peers_unlock(hp->rrp.peers); 515 ngx_stream_upstream_rr_peers_unlock(hp->rrp.peers);
516 return hp->get_rr_peer(pc, &hp->rrp); 516 return hp->get_rr_peer(pc, &hp->rrp);
517 } 517 }
518 518
519 pc->connection = NULL; 519 pc->connection = NULL;