Welcome! Log In Create A New Profile

Advanced

Re: Using round robin for load balancing if hash key is empty

Maxim Dounin
May 27, 2019 12:58PM
Hello!

On Thu, May 23, 2019 at 04:49:32PM +0300, Roman Arutyunyan wrote:

[...]

> # HG changeset patch
> # User Niklas Keller <me@kelunik.com>
> # Date 1558614458 -10800
> # Thu May 23 15:27:38 2019 +0300
> # Node ID 34dff919b948dd9652b24459e6a40c303058df09
> # Parent 234373adb2ce6023e69e527cbf2b60adf70b1130
> Upstream hash: fall back to round-robin if hash key is empty.
>
> diff --git a/src/http/modules/ngx_http_upstream_hash_module.c b/src/http/modules/ngx_http_upstream_hash_module.c
> --- a/src/http/modules/ngx_http_upstream_hash_module.c
> +++ b/src/http/modules/ngx_http_upstream_hash_module.c
> @@ -178,7 +178,7 @@ ngx_http_upstream_get_hash_peer(ngx_peer
>
> ngx_http_upstream_rr_peers_rlock(hp->rrp.peers);
>
> - if (hp->tries > 20 || hp->rrp.peers->single) {
> + if (hp->tries > 20 || hp->rrp.peers->single || hp->key.len == 0) {
> ngx_http_upstream_rr_peers_unlock(hp->rrp.peers);
> return hp->get_rr_peer(pc, &hp->rrp);
> }
> @@ -509,7 +509,7 @@ ngx_http_upstream_get_chash_peer(ngx_pee
>
> ngx_http_upstream_rr_peers_wlock(hp->rrp.peers);
>
> - if (hp->tries > 20 || hp->rrp.peers->single) {
> + if (hp->tries > 20 || hp->rrp.peers->single || hp->key.len == 0) {
> ngx_http_upstream_rr_peers_unlock(hp->rrp.peers);
> return hp->get_rr_peer(pc, &hp->rrp);
> }
> diff --git a/src/stream/ngx_stream_upstream_hash_module.c b/src/stream/ngx_stream_upstream_hash_module.c
> --- a/src/stream/ngx_stream_upstream_hash_module.c
> +++ b/src/stream/ngx_stream_upstream_hash_module.c
> @@ -178,7 +178,7 @@ ngx_stream_upstream_get_hash_peer(ngx_pe
>
> ngx_stream_upstream_rr_peers_rlock(hp->rrp.peers);
>
> - if (hp->tries > 20 || hp->rrp.peers->single) {
> + if (hp->tries > 20 || hp->rrp.peers->single || hp->key.len == 0) {
> ngx_stream_upstream_rr_peers_unlock(hp->rrp.peers);
> return hp->get_rr_peer(pc, &hp->rrp);
> }
> @@ -511,7 +511,7 @@ ngx_stream_upstream_get_chash_peer(ngx_p
>
> ngx_stream_upstream_rr_peers_wlock(hp->rrp.peers);
>
> - if (hp->tries > 20 || hp->rrp.peers->single) {
> + if (hp->tries > 20 || hp->rrp.peers->single || hp->key.len == 0) {
> ngx_stream_upstream_rr_peers_unlock(hp->rrp.peers);
> return hp->get_rr_peer(pc, &hp->rrp);
> }

For the record: looks good to me, please commit.

--
Maxim Dounin
http://mdounin.ru/
_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

Using round robin for load balancing if hash key is empty

Niklas Keller 382 May 22, 2019 04:02PM

Re: Using round robin for load balancing if hash key is empty

Roman Arutyunyan 157 May 23, 2019 09:50AM

Re: Using round robin for load balancing if hash key is empty

Maxim Dounin 128 May 27, 2019 12:58PM

Re: Using round robin for load balancing if hash key is empty

Vladimir Homutov 147 May 23, 2019 11:22AM

Re: Using round robin for load balancing if hash key is empty

Niklas Keller 193 May 23, 2019 01:56PM

Re: Using round robin for load balancing if hash key is empty

Roman Arutyunyan 160 May 27, 2019 01:00PM

Re: Using round robin for load balancing if hash key is empty

Niklas Keller 153 May 27, 2019 05:02PM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 191
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready