mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-29 10:57:44 +09:00 
			
		
		
		
	Update go-chi/session (fixes "race" in tests) (#17031)
Update to latest go-chi/session where the NewManager causes a new Provider instantiation instead of reconfiguring an old one. (https://gitea.com/go-chi/session/pulls/1) The NewManager call is now concurrency safe and would allow live reconfiguration in future but for now this PR simply fixes an intermittent "data-race" detected in our tests. (See https://drone.gitea.io/go-gitea/gitea/43900/2/14) Related #17027 Related #1441 Signed-off-by: Andrew Thornton <art27@cantab.net>
This commit is contained in:
		
							
								
								
									
										2
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								go.mod
									
									
									
									
									
								
							| @@ -9,7 +9,7 @@ require ( | |||||||
| 	gitea.com/go-chi/binding v0.0.0-20210301195521-1fe1c9a555e7 | 	gitea.com/go-chi/binding v0.0.0-20210301195521-1fe1c9a555e7 | ||||||
| 	gitea.com/go-chi/cache v0.0.0-20210110083709-82c4c9ce2d5e | 	gitea.com/go-chi/cache v0.0.0-20210110083709-82c4c9ce2d5e | ||||||
| 	gitea.com/go-chi/captcha v0.0.0-20210110083842-e7696c336a1e | 	gitea.com/go-chi/captcha v0.0.0-20210110083842-e7696c336a1e | ||||||
| 	gitea.com/go-chi/session v0.0.0-20210108030337-0cb48c5ba8ee | 	gitea.com/go-chi/session v0.0.0-20210913064732-2ac132b0fa07 | ||||||
| 	gitea.com/lunny/levelqueue v0.4.1 | 	gitea.com/lunny/levelqueue v0.4.1 | ||||||
| 	github.com/Microsoft/go-winio v0.5.0 // indirect | 	github.com/Microsoft/go-winio v0.5.0 // indirect | ||||||
| 	github.com/NYTimes/gziphandler v1.1.1 | 	github.com/NYTimes/gziphandler v1.1.1 | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								go.sum
									
									
									
									
									
								
							| @@ -47,8 +47,8 @@ gitea.com/go-chi/cache v0.0.0-20210110083709-82c4c9ce2d5e h1:zgPGaf3kXP0cVm9J0l8 | |||||||
| gitea.com/go-chi/cache v0.0.0-20210110083709-82c4c9ce2d5e/go.mod h1:k2V/gPDEtXGjjMGuBJiapffAXTv76H4snSmlJRLUhH0= | gitea.com/go-chi/cache v0.0.0-20210110083709-82c4c9ce2d5e/go.mod h1:k2V/gPDEtXGjjMGuBJiapffAXTv76H4snSmlJRLUhH0= | ||||||
| gitea.com/go-chi/captcha v0.0.0-20210110083842-e7696c336a1e h1:YjaQU6XFicdhPN+MlGolcXO8seYY2+EY5g7vZPB17CQ= | gitea.com/go-chi/captcha v0.0.0-20210110083842-e7696c336a1e h1:YjaQU6XFicdhPN+MlGolcXO8seYY2+EY5g7vZPB17CQ= | ||||||
| gitea.com/go-chi/captcha v0.0.0-20210110083842-e7696c336a1e/go.mod h1:nfA7JaGv3hbGQ1ktdhAsZhdS84qKffI8NMlHr+Opsog= | gitea.com/go-chi/captcha v0.0.0-20210110083842-e7696c336a1e/go.mod h1:nfA7JaGv3hbGQ1ktdhAsZhdS84qKffI8NMlHr+Opsog= | ||||||
| gitea.com/go-chi/session v0.0.0-20210108030337-0cb48c5ba8ee h1:9U6HuKUBt/cGK6T/64dEuz0r7Yp97WAAEJvXHDlY3ws= | gitea.com/go-chi/session v0.0.0-20210913064732-2ac132b0fa07 h1:1xF0xbIgDWnBB0iURAUFCoac4KfhGDdI7y7+3/8I8i4= | ||||||
| gitea.com/go-chi/session v0.0.0-20210108030337-0cb48c5ba8ee/go.mod h1:Ozg8IchVNb/Udg+ui39iHRYqVHSvf3C99ixdpLR8Vu0= | gitea.com/go-chi/session v0.0.0-20210913064732-2ac132b0fa07/go.mod h1:Ozg8IchVNb/Udg+ui39iHRYqVHSvf3C99ixdpLR8Vu0= | ||||||
| gitea.com/lunny/levelqueue v0.4.1 h1:RZ+AFx5gBsZuyqCvofhAkPQ9uaVDPJnsULoJZIYaJNw= | gitea.com/lunny/levelqueue v0.4.1 h1:RZ+AFx5gBsZuyqCvofhAkPQ9uaVDPJnsULoJZIYaJNw= | ||||||
| gitea.com/lunny/levelqueue v0.4.1/go.mod h1:HBqmLbz56JWpfEGG0prskAV97ATNRoj5LDmPicD22hU= | gitea.com/lunny/levelqueue v0.4.1/go.mod h1:HBqmLbz56JWpfEGG0prskAV97ATNRoj5LDmPicD22hU= | ||||||
| gitea.com/xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a h1:lSA0F4e9A2NcQSqGqTOXqu2aRi/XEQxDCBwM8yJtE6s= | gitea.com/xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a h1:lSA0F4e9A2NcQSqGqTOXqu2aRi/XEQxDCBwM8yJtE6s= | ||||||
|   | |||||||
							
								
								
									
										31
									
								
								vendor/gitea.com/go-chi/session/session.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										31
									
								
								vendor/gitea.com/go-chi/session/session.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -23,6 +23,7 @@ import ( | |||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"net/http" | 	"net/http" | ||||||
| 	"net/url" | 	"net/url" | ||||||
|  | 	"reflect" | ||||||
| 	"time" | 	"time" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| @@ -291,17 +292,34 @@ type Provider interface { | |||||||
| 	GC() | 	GC() | ||||||
| } | } | ||||||
|  |  | ||||||
| var providers = make(map[string]Provider) | var providers = make(map[string]func() Provider) | ||||||
|  |  | ||||||
| // Register registers a provider. | // Register registers a provider. | ||||||
| func Register(name string, provider Provider) { | func Register(name string, provider Provider) { | ||||||
| 	if provider == nil { | 	if reflect.TypeOf(provider).Kind() == reflect.Ptr { | ||||||
|  | 		// Pointer: | ||||||
|  | 		RegisterFn(name, func() Provider { | ||||||
|  | 			return reflect.New(reflect.ValueOf(provider).Elem().Type()).Interface().(Provider) | ||||||
|  | 		}) | ||||||
|  | 		return | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	// Not a Pointer | ||||||
|  | 	RegisterFn(name, func() Provider { | ||||||
|  | 		return reflect.New(reflect.TypeOf(provider)).Elem().Interface().(Provider) | ||||||
|  | 	}) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // RegisterFn registers a provider function. | ||||||
|  | func RegisterFn(name string, providerfn func() Provider) { | ||||||
|  | 	if providerfn == nil { | ||||||
| 		panic("session: cannot register provider with nil value") | 		panic("session: cannot register provider with nil value") | ||||||
| 	} | 	} | ||||||
| 	if _, dup := providers[name]; dup { | 	if _, dup := providers[name]; dup { | ||||||
| 		panic(fmt.Errorf("session: cannot register provider '%s' twice", name)) | 		panic(fmt.Errorf("session: cannot register provider '%s' twice", name)) | ||||||
| 	} | 	} | ||||||
| 	providers[name] = provider |  | ||||||
|  | 	providers[name] = providerfn | ||||||
| } | } | ||||||
|  |  | ||||||
| //    _____ | //    _____ | ||||||
| @@ -318,12 +336,15 @@ type Manager struct { | |||||||
| } | } | ||||||
|  |  | ||||||
| // NewManager creates and returns a new session manager by given provider name and configuration. | // NewManager creates and returns a new session manager by given provider name and configuration. | ||||||
| // It panics when given provider isn't registered. | // It returns an error when requested provider name isn't registered. | ||||||
| func NewManager(name string, opt Options) (*Manager, error) { | func NewManager(name string, opt Options) (*Manager, error) { | ||||||
| 	p, ok := providers[name] | 	fn, ok := providers[name] | ||||||
| 	if !ok { | 	if !ok { | ||||||
| 		return nil, fmt.Errorf("session: unknown provider '%s'(forgotten import?)", name) | 		return nil, fmt.Errorf("session: unknown provider '%s'(forgotten import?)", name) | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	p := fn() | ||||||
|  |  | ||||||
| 	return &Manager{p, opt}, p.Init(opt.Maxlifetime, opt.ProviderConfig) | 	return &Manager{p, opt}, p.Init(opt.Maxlifetime, opt.ProviderConfig) | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								vendor/modules.txt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/modules.txt
									
									
									
									
										vendored
									
									
								
							| @@ -18,7 +18,7 @@ gitea.com/go-chi/cache/memcache | |||||||
| # gitea.com/go-chi/captcha v0.0.0-20210110083842-e7696c336a1e | # gitea.com/go-chi/captcha v0.0.0-20210110083842-e7696c336a1e | ||||||
| ## explicit | ## explicit | ||||||
| gitea.com/go-chi/captcha | gitea.com/go-chi/captcha | ||||||
| # gitea.com/go-chi/session v0.0.0-20210108030337-0cb48c5ba8ee | # gitea.com/go-chi/session v0.0.0-20210913064732-2ac132b0fa07 | ||||||
| ## explicit | ## explicit | ||||||
| gitea.com/go-chi/session | gitea.com/go-chi/session | ||||||
| gitea.com/go-chi/session/couchbase | gitea.com/go-chi/session/couchbase | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user