featureflag

package
v15.7.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 9, 2023 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var CatfileRepoSize = NewFeatureFlag(
	"catfile_repo_size",
	"v15.3.0",
	"https://gitlab.com/gitlab-org/gitaly/-/issues/4421",
	false,
)

CatfileRepoSize will enable the rate limiter to reject requests beyond a configured rate.

View Source
var ConvertErrToStatus = NewFeatureFlag(
	"convert_err_to_status",
	"v15.6.0",
	"https://gitlab.com/gitlab-org/gitaly/-/issues/4603",
	true,
)

ConvertErrToStatus turns on error translation into gRPC status.

View Source
var DeleteRefsStructuredErrors = NewFeatureFlag(
	"delete_refs_structured_errors",
	"v15.3.0",
	"https://gitlab.com/gitlab-org/gitaly/-/issues/4348",
	false,
)

DeleteRefsStructuredErrors turns on metrics for pack objects

View Source
var (
	// EnableAllFeatureFlagsEnvVar will cause Gitaly to treat all feature flags as
	// enabled in case its value is set to `true`. Only used for testing purposes.
	EnableAllFeatureFlagsEnvVar = "GITALY_TESTING_ENABLE_ALL_FEATURE_FLAGS"
)
View Source
var GoFindLicense = NewFeatureFlag(
	"go_find_license",
	"v14.3.0",
	"https://gitlab.com/gitlab-org/gitaly/-/issues/3759",
	false,
)

GoFindLicense enables Go implementation of FindLicense

View Source
var NodeErrorCancelsVoter = NewFeatureFlag(
	"node_error_cancels_voter",
	"v15.6.0",
	"https://gitlab.com/gitlab-org/gitaly/-/issues/4552",
	true,
)

NodeErrorCancelsVoter enables cancellation of the voter associated with a failed node RPC. By canceling voters that can no longer vote, the transaction can fail faster if quorum becomes impossible.

View Source
var PackObjectsLimitingRepo = NewFeatureFlag(
	"pack_objects_limiting_repo",
	"v15.6.0",
	"https://gitlab.com/gitlab-org/gitaly/-/issues/4413",
	false,
)

PackObjectsLimitingRepo will enable a concurrency limiter for pack objects based off of the repository.

View Source
var PackObjectsLimitingUser = NewFeatureFlag(
	"pack_objects_limiting_user",
	"v15.6.0",
	"https://gitlab.com/gitlab-org/gitaly/-/issues/4413",
	false,
)

PackObjectsLimitingUser will enable a concurrency limiter for pack objects based off of the user

View Source
var PraefectUseYamuxConfigurationForGitaly = NewFeatureFlag(
	"praefect_use_yamux_configuration_for_gitaly",
	"v15.7.0",
	"https://gitlab.com/gitlab-org/gitaly/-/issues/4644",
	false,
)

PraefectUseYamuxConfigurationForGitaly switches the RPCs to be proxied over connections that are set up with custom Yamux configuration.

View Source
var RevlistForConnectivity = NewFeatureFlag(
	"revlist_for_connectivity",
	"v15.5.0",
	"https://gitlab.com/gitlab-org/gitaly/-/issues/4489",
	false,
)

RevlistForConnectivity causes the connectivity check when removing alternates files to use git-rev-list instead of git-fsck

View Source
var RevlistForRepoSize = NewFeatureFlag(
	"revlist_for_repo_size",
	"v14.10.0",
	"https://gitlab.com/gitlab-org/gitaly/-/issues/4317",
	false,
)

RevlistForRepoSize enables the RepositorySize RPC to use git rev-list to calculate the disk usage of the repository.

View Source
var RunCommandsInCGroup = NewFeatureFlag(
	"run_cmds_in_cgroup",
	"v14.10.0",
	"https://gitlab.com/gitlab-org/gitaly/-/issues/4102",
	false,
)

RunCommandsInCGroup allows all commands to be run within a cgroup

View Source
var TransactionalRestoreCustomHooks = NewFeatureFlag(
	"tx_restore_custom_hooks",
	"v15.0.0",
	"https://gitlab.com/gitlab-org/gitaly/-/issues/4203",
	false,
)

TransactionalRestoreCustomHooks will use transactional voting in the RestoreCustomHooks RPC

View Source
var UseNewRepoSize = NewFeatureFlag(
	"use_new_repository_size",
	"v15.4.0",
	"https://gitlab.com/gitlab-org/gitaly/-/issues/4448",
	false,
)

UseNewRepoSize will send the new repository size values in RepositorySize to the client.

View Source
var UserCommitFilesStructuredErrors = NewFeatureFlag(
	"user_commit_files_structured_errors",
	"v15.6.0",
	"https://gitlab.com/gitlab-org/gitaly/-/issues/4472",
	false,
)

UserCommitFilesStructuredErrors will enable the use of structured errors in the UserCommitFiles RPC.

Functions

func ContextWithExplicitFeatureFlags

func ContextWithExplicitFeatureFlags(ctx context.Context) context.Context

ContextWithExplicitFeatureFlags marks the context such that all feature flags which are checked must have been explicitly set in that context. If a feature flag wasn't set to an explicit value, then checking this feature flag will panic. This is not for use in production systems, but is intended for tests to verify that we test each feature flag properly.

func ContextWithFeatureFlag

func ContextWithFeatureFlag(ctx context.Context, flag FeatureFlag, enabled bool) context.Context

ContextWithFeatureFlag sets the feature flag in both the incoming and outgoing context.

func FromContext added in v15.2.0

func FromContext(ctx context.Context) map[FeatureFlag]bool

FromContext returns the set of all feature flags defined in the context. This returns both feature flags that are currently defined by Gitaly, but may also return some that aren't defined by us in case they match the feature flag prefix but don't have a definition. This function also returns the state of the feature flag *as defined in the context*. This value may be overridden.

func IncomingCtxWithFeatureFlag

func IncomingCtxWithFeatureFlag(ctx context.Context, flag FeatureFlag, enabled bool) context.Context

IncomingCtxWithFeatureFlag sets the feature flag for an incoming context. This is NOT meant for use in clients that transfer the context across process boundaries.

func IncomingCtxWithRubyFeatureFlag

func IncomingCtxWithRubyFeatureFlag(ctx context.Context, flag FeatureFlag, enabled bool) context.Context

IncomingCtxWithRubyFeatureFlag sets the Ruby feature flag for an incoming context. This is NOT meant for use in clients that transfer the context across process boundaries.

func OutgoingCtxWithFeatureFlag

func OutgoingCtxWithFeatureFlag(ctx context.Context, flag FeatureFlag, enabled bool) context.Context

OutgoingCtxWithFeatureFlag sets the feature flag for an outgoing context.

func OutgoingCtxWithRubyFeatureFlag

func OutgoingCtxWithRubyFeatureFlag(ctx context.Context, flag FeatureFlag, enabled bool) context.Context

OutgoingCtxWithRubyFeatureFlag sets the Ruby feature flag for an outgoing context.

Types

type FeatureFlag

type FeatureFlag struct {
	// Name is the name of the feature flag.
	Name string `json:"name"`
	// OnByDefault is the default value if the feature flag is not explicitly set in
	// the incoming context.
	OnByDefault bool `json:"on_by_default"`
}

FeatureFlag gates the implementation of new or changed functionality.

func DefinedFlags added in v15.2.0

func DefinedFlags() []FeatureFlag

DefinedFlags returns the set of feature flags that have been explicitly defined.

func FromMetadataKey added in v15.2.0

func FromMetadataKey(metadataKey string) (FeatureFlag, error)

FromMetadataKey parses the given gRPC metadata key into a Gitaly feature flag and performs the necessary conversions. Returns an error in case the metadata does not refer to a feature flag.

This function tries to look up the default value via our set of flag definitions. In case the flag definition is unknown to Gitaly it assumes a default value of `false`.

func NewFeatureFlag

func NewFeatureFlag(name, version, rolloutIssueURL string, onByDefault bool) FeatureFlag

NewFeatureFlag creates a new feature flag and adds it to the array of all existing feature flags. The name must be of the format `some_feature_flag`. Accepts a version and rollout issue URL as input that are not used for anything but only for the sake of linking to the feature flag rollout issue in the Gitaly project.

func (FeatureFlag) FormatWithValue added in v15.2.0

func (ff FeatureFlag) FormatWithValue(enabled bool) string

FormatWithValue converts the feature flag into a string with the given state. Note that this function uses the feature flag name and not the raw metadata key as used in gRPC metadata.

func (FeatureFlag) IsDisabled

func (ff FeatureFlag) IsDisabled(ctx context.Context) bool

IsDisabled determines whether the feature flag is disabled in the incoming context.

func (FeatureFlag) IsEnabled

func (ff FeatureFlag) IsEnabled(ctx context.Context) bool

IsEnabled checks if the feature flag is enabled for the passed context. Only returns true if the metadata for the feature flag is set to "true"

func (FeatureFlag) MetadataKey

func (ff FeatureFlag) MetadataKey() string

MetadataKey returns the key of the feature flag as it is present in the metadata map.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL