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.
		
			
				
	
	
		
			82 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| # commit 7b6cc52784526c32efda44b873a4258d3ae0b8c7
 | |
| # BUG/MINOR: lua: Bad HTTP client request duration.
 | |
| #
 | |
| # HTTP LUA applet callback should not update the date on which the HTTP client requests
 | |
| # arrive. This was done just after the LUA applet has completed its job.
 | |
| #
 | |
| # This patch simply removes the affected statement. The same fix has been applied
 | |
| # to TCP LUA applet callback.
 | |
| #
 | |
| # To reproduce this issue, as reported by Patrick Hemmer, implement an HTTP LUA applet
 | |
| # which sleeps a bit before replying:
 | |
| #
 | |
| #   core.register_service("foo", "http", function(applet)
 | |
| #       core.msleep(100)
 | |
| #       applet:set_status(200)
 | |
| #       applet:start_response()
 | |
| #   end)
 | |
| #
 | |
| # This had as a consequence to log %TR field with approximately the same value as
 | |
| # the LUA sleep time.
 | |
| 
 | |
| varnishtest "LUA bug"
 | |
| #REQUIRE_OPTIONS=LUA
 | |
| #REGTEST_TYPE=bug
 | |
| 
 | |
| feature ignore_unknown_macro
 | |
| 
 | |
| syslog Slog {
 | |
|     recv info
 | |
|     expect ~ "[^:\\[ ]\\[[0-9]*\\]: Ta=[0-9]* Tc=[0-9]* Td=[0-9]* Th=[0-9]* Ti=[0-9]* Tq=[0-9]* TR=[0-9]* Tr=[0-9]* Tt=[0-9]* Tw=[0-9]*$"
 | |
| 
 | |
|     recv info
 | |
|     expect ~ "[^:\\[ ]\\[[0-9]*\\]: Tc=[0-9]* Td=[0-9]* Th=[0-9]* Tt=[0-9]* Tw=[0-9]*$"
 | |
| } -start
 | |
| 
 | |
| haproxy h1 -conf {
 | |
|     global
 | |
|     .if feature(THREAD)
 | |
|         thread-groups 1
 | |
|     .endif
 | |
| 
 | |
|         tune.lua.bool-sample-conversion normal
 | |
|         lua-load ${testdir}/bad_http_clt_req_duration.lua
 | |
| 
 | |
|     defaults
 | |
|         timeout client "${HAPROXY_TEST_TIMEOUT-5s}"
 | |
|         timeout server "${HAPROXY_TEST_TIMEOUT-5s}"
 | |
|         timeout connect "${HAPROXY_TEST_TIMEOUT-5s}"
 | |
| 
 | |
|     frontend f1
 | |
|         mode http
 | |
|         bind "fd@${f1}"
 | |
|         log ${Slog_addr}:${Slog_port} daemon
 | |
|         log-format Ta=%Ta\ Tc=%Tc\ Td=%Td\ Th=%Th\ Ti=%Ti\ Tq=%Tq\ TR=%TR\ Tr=%Tr\ Tt=%Tt\ Tw=%Tw
 | |
|         default_backend b1
 | |
| 
 | |
|     backend b1
 | |
|         mode http
 | |
|         http-request use-service lua.foo.http
 | |
| 
 | |
|     frontend f2
 | |
|         mode tcp
 | |
|         bind "fd@${f2}"
 | |
|         log ${Slog_addr}:${Slog_port} daemon
 | |
|         log-format Tc=%Tc\ Td=%Td\ Th=%Th\ Tt=%Tt\ Tw=%Tw
 | |
| 
 | |
|         tcp-request inspect-delay 1s
 | |
|         tcp-request content use-service lua.foo.tcp
 | |
| } -start
 | |
| 
 | |
| client c1 -connect "${h1_f1_sock}" {
 | |
|     txreq
 | |
|     rxresp
 | |
| } -run
 | |
| 
 | |
| client c2 -connect "${h1_f2_sock}" {
 | |
|     txreq
 | |
|     rxresp
 | |
| } -run
 | |
| 
 | |
| syslog Slog -wait
 |