func()

in strategy/sampling/centralized_sampling_rule_manifest.go [39:83]


func (m *CentralizedManifest) putRule(svcRule *SamplingRule) (r *CentralizedRule, err error) {
	defer func() {
		if x := recover(); x != nil {
			err = fmt.Errorf("%v", x)
		}
	}()

	name := *svcRule.RuleName

	// Default rule
	if name == defaultRule {
		m.mu.RLock()
		r = m.Default
		m.mu.RUnlock()

		// Update rule if already exists
		if r != nil {
			m.updateDefaultRule(svcRule)

			return
		}

		// Create Default rule
		r = m.createDefaultRule(svcRule)

		return
	}

	// User-defined rule
	m.mu.RLock()
	r, ok := m.Index[name]
	m.mu.RUnlock()

	// Create rule if it does not exist
	if !ok {
		r = m.createUserRule(svcRule)

		return
	}

	// Update existing rule
	m.updateUserRule(r, svcRule)

	return
}