mirror of
				https://git.haproxy.org/git/haproxy.git/
				synced 2025-10-31 16:41:01 +01:00 
			
		
		
		
	When threads are enabled and running on a machine with multiple CCX or multiple nodes, thread groups are now enabled since 3.3-dev2, causing load-balancing algorithms to randomly fail due to incoming connections spreading over multiple groups and using different load balancing indexes. Let's just force "thread-groups 1" into all configs when threads are enabled to avoid this.
		
			
				
	
	
		
			66 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| #commit b406b87
 | |
| # BUG/MEDIUM: connection: don't store recv() result into trash.data
 | |
| #
 | |
| # Cyril Bonté discovered that the proxy protocol randomly fails since
 | |
| # commit 843b7cb ("MEDIUM: chunks: make the chunk struct's fields match
 | |
| # the buffer struct"). This is because we used to store recv()'s return
 | |
| # code into trash.data which is now unsigned, so it never compares as
 | |
| # negative against 0. Let's clean this up and test the result itself
 | |
| # without storing it first.
 | |
| 
 | |
| varnishtest "PROXY protocol random failures"
 | |
| #REQUIRE_OPTIONS=OPENSSL
 | |
| 
 | |
| feature ignore_unknown_macro
 | |
| 
 | |
| #REGTEST_TYPE=broken
 | |
| 
 | |
| syslog Slog_1 -repeat 8 -level info {
 | |
|     recv
 | |
|     expect ~ "Connect from .* to ${h1_ssl_addr}:${h1_ssl_port}"
 | |
|     recv
 | |
|     expect ~ "ssl-offload-http/http .* \"POST (https://.*:${h1_ssl_port})?/[1-8] HTTP/(2\\.0|1\\.1)\""
 | |
| } -start
 | |
| 
 | |
| haproxy h1 -conf {
 | |
|     global
 | |
|     .if feature(THREAD)
 | |
|         thread-groups 1
 | |
|     .endif
 | |
| 
 | |
|     .if !ssllib_name_startswith(AWS-LC)
 | |
|         tune.ssl.default-dh-param 2048
 | |
|     .endif
 | |
|         log ${Slog_1_addr}:${Slog_1_port} len 2048 local0 debug err
 | |
| 
 | |
|     defaults
 | |
|         mode http
 | |
|         timeout client "${HAPROXY_TEST_TIMEOUT-5s}"
 | |
|         timeout server "${HAPROXY_TEST_TIMEOUT-5s}"
 | |
|         timeout connect "${HAPROXY_TEST_TIMEOUT-5s}"
 | |
|         log global
 | |
| 
 | |
|     listen http
 | |
|         bind unix@"${tmpdir}/http.socket" accept-proxy name ssl-offload-http
 | |
|         option forwardfor
 | |
| 
 | |
|     listen ssl-offload-http
 | |
|         option httplog
 | |
|         bind "fd@${ssl}" ssl crt ${testdir}/common.pem ssl no-sslv3 alpn h2,http/1.1
 | |
|         server http unix@"${tmpdir}/http.socket" send-proxy
 | |
| } -start
 | |
| 
 | |
| 
 | |
| shell {
 | |
|     HOST=${h1_ssl_addr}
 | |
|     if [ "$HOST" = "::1" ] ; then
 | |
|         HOST="\[::1\]"
 | |
|     fi
 | |
|     for i in 1 2 3 4 5 6 7 8 ; do
 | |
|         urls="$urls https://$HOST:${h1_ssl_port}/$i"
 | |
|     done
 | |
|     curl -i -k -d 'x=x' $urls & wait $!
 | |
| }
 | |
| 
 | |
| syslog Slog_1 -wait
 |