[#329] Reduce using mutex when update app settings
All checks were successful
/ DCO (pull_request) Successful in 57s
/ Vulncheck (pull_request) Successful in 1m15s
/ Builds (1.21) (pull_request) Successful in 1m33s
/ Builds (1.22) (pull_request) Successful in 1m31s
/ Lint (pull_request) Successful in 2m18s
/ Tests (1.21) (pull_request) Successful in 1m40s
/ Tests (1.22) (pull_request) Successful in 1m34s
All checks were successful
/ DCO (pull_request) Successful in 57s
/ Vulncheck (pull_request) Successful in 1m15s
/ Builds (1.21) (pull_request) Successful in 1m33s
/ Builds (1.22) (pull_request) Successful in 1m31s
/ Lint (pull_request) Successful in 2m18s
/ Tests (1.21) (pull_request) Successful in 1m40s
/ Tests (1.22) (pull_request) Successful in 1m34s
Signed-off-by: Roman Loginov <r.loginov@yadro.com>
This commit is contained in:
parent
20719bd85c
commit
e17738d187
1 changed files with 24 additions and 86 deletions
110
cmd/s3-gw/app.go
110
cmd/s3-gw/app.go
|
@ -221,38 +221,36 @@ func newAppSettings(log *Logger, v *viper.Viper) *appSettings {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *appSettings) update(v *viper.Viper, log *zap.Logger) {
|
func (s *appSettings) update(v *viper.Viper, log *zap.Logger) {
|
||||||
s.updateNamespacesSettings(v, log)
|
namespaceHeader := v.GetString(cfgResolveNamespaceHeader)
|
||||||
s.useDefaultXMLNamespace(v.GetBool(cfgKludgeUseDefaultXMLNS))
|
|
||||||
s.setBypassContentEncodingInChunks(v.GetBool(cfgKludgeBypassContentEncodingCheckInChunks))
|
|
||||||
s.setClientCut(v.GetBool(cfgClientCut))
|
|
||||||
s.setBufferMaxSizeForPut(v.GetUint64(cfgBufferMaxSizeForPut))
|
|
||||||
s.setMD5Enabled(v.GetBool(cfgMD5Enabled))
|
|
||||||
s.setPolicyDenyByDefault(v.GetBool(cfgPolicyDenyByDefault))
|
|
||||||
s.setSourceIPHeader(v.GetString(cfgSourceIPHeader))
|
|
||||||
s.setRetryMaxAttempts(fetchRetryMaxAttempts(v))
|
|
||||||
s.setRetryMaxBackoff(fetchRetryMaxBackoff(v))
|
|
||||||
s.setRetryStrategy(fetchRetryStrategy(v))
|
|
||||||
s.setVHSSettings(v, log)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *appSettings) updateNamespacesSettings(v *viper.Viper, log *zap.Logger) {
|
|
||||||
nsHeader := v.GetString(cfgResolveNamespaceHeader)
|
|
||||||
nsConfig, defaultNamespaces := fetchNamespacesConfig(log, v)
|
nsConfig, defaultNamespaces := fetchNamespacesConfig(log, v)
|
||||||
|
defaultXMLNS := v.GetBool(cfgKludgeUseDefaultXMLNS)
|
||||||
s.mu.Lock()
|
bypassContentEncodingInChunks := v.GetBool(cfgKludgeBypassContentEncodingCheckInChunks)
|
||||||
defer s.mu.Unlock()
|
clientCut := v.GetBool(cfgClientCut)
|
||||||
|
maxBufferSizeForPut := v.GetUint64(cfgBufferMaxSizeForPut)
|
||||||
s.namespaceHeader = nsHeader
|
md5Enabled := v.GetBool(cfgMD5Enabled)
|
||||||
s.defaultNamespaces = defaultNamespaces
|
policyDenyByDefault := v.GetBool(cfgPolicyDenyByDefault)
|
||||||
s.namespaces = nsConfig.Namespaces
|
sourceIPHeader := v.GetString(cfgSourceIPHeader)
|
||||||
}
|
retryMaxAttempts := fetchRetryMaxAttempts(v)
|
||||||
|
retryMaxBackoff := fetchRetryMaxBackoff(v)
|
||||||
func (s *appSettings) setVHSSettings(v *viper.Viper, _ *zap.Logger) {
|
retryStrategy := fetchRetryStrategy(v)
|
||||||
domains := v.GetStringSlice(cfgListenDomains)
|
domains := v.GetStringSlice(cfgListenDomains)
|
||||||
|
|
||||||
s.mu.Lock()
|
s.mu.Lock()
|
||||||
defer s.mu.Unlock()
|
defer s.mu.Unlock()
|
||||||
|
|
||||||
|
s.namespaceHeader = namespaceHeader
|
||||||
|
s.defaultNamespaces = defaultNamespaces
|
||||||
|
s.namespaces = nsConfig.Namespaces
|
||||||
|
s.defaultXMLNS = defaultXMLNS
|
||||||
|
s.bypassContentEncodingInChunks = bypassContentEncodingInChunks
|
||||||
|
s.clientCut = clientCut
|
||||||
|
s.maxBufferSizeForPut = maxBufferSizeForPut
|
||||||
|
s.md5Enabled = md5Enabled
|
||||||
|
s.policyDenyByDefault = policyDenyByDefault
|
||||||
|
s.sourceIPHeader = sourceIPHeader
|
||||||
|
s.retryMaxAttempts = retryMaxAttempts
|
||||||
|
s.retryMaxBackoff = retryMaxBackoff
|
||||||
|
s.retryStrategy = retryStrategy
|
||||||
s.domains = domains
|
s.domains = domains
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -262,36 +260,18 @@ func (s *appSettings) BypassContentEncodingInChunks() bool {
|
||||||
return s.bypassContentEncodingInChunks
|
return s.bypassContentEncodingInChunks
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *appSettings) setBypassContentEncodingInChunks(bypass bool) {
|
|
||||||
s.mu.Lock()
|
|
||||||
s.bypassContentEncodingInChunks = bypass
|
|
||||||
s.mu.Unlock()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *appSettings) ClientCut() bool {
|
func (s *appSettings) ClientCut() bool {
|
||||||
s.mu.RLock()
|
s.mu.RLock()
|
||||||
defer s.mu.RUnlock()
|
defer s.mu.RUnlock()
|
||||||
return s.clientCut
|
return s.clientCut
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *appSettings) setClientCut(clientCut bool) {
|
|
||||||
s.mu.Lock()
|
|
||||||
s.clientCut = clientCut
|
|
||||||
s.mu.Unlock()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *appSettings) BufferMaxSizeForPut() uint64 {
|
func (s *appSettings) BufferMaxSizeForPut() uint64 {
|
||||||
s.mu.RLock()
|
s.mu.RLock()
|
||||||
defer s.mu.RUnlock()
|
defer s.mu.RUnlock()
|
||||||
return s.maxBufferSizeForPut
|
return s.maxBufferSizeForPut
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *appSettings) setBufferMaxSizeForPut(size uint64) {
|
|
||||||
s.mu.Lock()
|
|
||||||
s.maxBufferSizeForPut = size
|
|
||||||
s.mu.Unlock()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *appSettings) DefaultPlacementPolicy(namespace string) netmap.PlacementPolicy {
|
func (s *appSettings) DefaultPlacementPolicy(namespace string) netmap.PlacementPolicy {
|
||||||
s.mu.RLock()
|
s.mu.RLock()
|
||||||
defer s.mu.RUnlock()
|
defer s.mu.RUnlock()
|
||||||
|
@ -339,12 +319,6 @@ func (s *appSettings) NewXMLDecoder(r io.Reader) *xml.Decoder {
|
||||||
return dec
|
return dec
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *appSettings) useDefaultXMLNamespace(useDefaultNamespace bool) {
|
|
||||||
s.mu.Lock()
|
|
||||||
s.defaultXMLNS = useDefaultNamespace
|
|
||||||
s.mu.Unlock()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *appSettings) DefaultMaxAge() int {
|
func (s *appSettings) DefaultMaxAge() int {
|
||||||
return s.defaultMaxAge
|
return s.defaultMaxAge
|
||||||
}
|
}
|
||||||
|
@ -363,12 +337,6 @@ func (s *appSettings) MD5Enabled() bool {
|
||||||
return s.md5Enabled
|
return s.md5Enabled
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *appSettings) setMD5Enabled(md5Enabled bool) {
|
|
||||||
s.mu.Lock()
|
|
||||||
s.md5Enabled = md5Enabled
|
|
||||||
s.mu.Unlock()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *appSettings) NamespaceHeader() string {
|
func (s *appSettings) NamespaceHeader() string {
|
||||||
s.mu.RLock()
|
s.mu.RLock()
|
||||||
defer s.mu.RUnlock()
|
defer s.mu.RUnlock()
|
||||||
|
@ -404,54 +372,24 @@ func (s *appSettings) PolicyDenyByDefault() bool {
|
||||||
return s.policyDenyByDefault
|
return s.policyDenyByDefault
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *appSettings) setPolicyDenyByDefault(policyDenyByDefault bool) {
|
|
||||||
s.mu.Lock()
|
|
||||||
s.policyDenyByDefault = policyDenyByDefault
|
|
||||||
s.mu.Unlock()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *appSettings) setSourceIPHeader(header string) {
|
|
||||||
s.mu.Lock()
|
|
||||||
s.sourceIPHeader = header
|
|
||||||
s.mu.Unlock()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *appSettings) SourceIPHeader() string {
|
func (s *appSettings) SourceIPHeader() string {
|
||||||
s.mu.RLock()
|
s.mu.RLock()
|
||||||
defer s.mu.RUnlock()
|
defer s.mu.RUnlock()
|
||||||
return s.sourceIPHeader
|
return s.sourceIPHeader
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *appSettings) setRetryMaxAttempts(maxAttempts int) {
|
|
||||||
s.mu.Lock()
|
|
||||||
s.retryMaxAttempts = maxAttempts
|
|
||||||
s.mu.Unlock()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *appSettings) RetryMaxAttempts() int {
|
func (s *appSettings) RetryMaxAttempts() int {
|
||||||
s.mu.RLock()
|
s.mu.RLock()
|
||||||
defer s.mu.RUnlock()
|
defer s.mu.RUnlock()
|
||||||
return s.retryMaxAttempts
|
return s.retryMaxAttempts
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *appSettings) setRetryMaxBackoff(maxBackoff time.Duration) {
|
|
||||||
s.mu.Lock()
|
|
||||||
s.retryMaxBackoff = maxBackoff
|
|
||||||
s.mu.Unlock()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *appSettings) RetryMaxBackoff() time.Duration {
|
func (s *appSettings) RetryMaxBackoff() time.Duration {
|
||||||
s.mu.RLock()
|
s.mu.RLock()
|
||||||
defer s.mu.RUnlock()
|
defer s.mu.RUnlock()
|
||||||
return s.retryMaxBackoff
|
return s.retryMaxBackoff
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *appSettings) setRetryStrategy(strategy handler.RetryStrategy) {
|
|
||||||
s.mu.Lock()
|
|
||||||
s.retryStrategy = strategy
|
|
||||||
s.mu.Unlock()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *appSettings) RetryStrategy() handler.RetryStrategy {
|
func (s *appSettings) RetryStrategy() handler.RetryStrategy {
|
||||||
s.mu.RLock()
|
s.mu.RLock()
|
||||||
defer s.mu.RUnlock()
|
defer s.mu.RUnlock()
|
||||||
|
|
Loading…
Reference in a new issue