nexusoperation

package
v1.2.0 Latest Latest
Warning

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

Go to latest
Published: Apr 17, 2026 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var CallbackURLTemplate = dynamicconfig.NewGlobalStringSetting(
	"nexusoperation.callback.endpoint.template",
	"unset",
	`Controls the template for generating callback URLs included in Nexus operation requests, which are used to deliver
asynchronous completion for external endpoint targets. The template can be used to interpolate the {{.NamepaceName}}
and {{.NamespaceID}} parameters to construct a publicly accessible URL.
Must be set to call external endpoints.`,
)
View Source
var ChasmNexusEnabled = dynamicconfig.NewGlobalBoolSetting(
	"nexusoperation.enableChasm",
	false,
	`Feature flag that controls whether the legacy HSM-based implementation (when flag is false; default) or the newer
CHASM-based implementation of Nexus will be used when scheduling new Nexus Operations.`,
)
View Source
var DisallowedOperationHeaders = dynamicconfig.NewGlobalTypedSettingWithConverter(
	"nexusoperation.disallowedHeaders",
	func(in any) ([]string, error) {
		keys, err := dynamicconfig.ConvertStructure[[]string](nil)(in)
		if err != nil {
			return nil, err
		}
		for i, k := range keys {
			keys[i] = strings.ToLower(k)
		}
		return keys, nil
	},
	[]string{
		"request-timeout",
		interceptor.DCRedirectionApiHeaderName,
		interceptor.DCRedirectionContextHeaderName,
		headers.CallerNameHeaderName,
		headers.CallerTypeHeaderName,
		headers.CallOriginHeaderName,
	},
	`Case insensitive list of disallowed header keys for Nexus Operations. ScheduleNexusOperation commands with a
"nexus_header" field that contains any of these disallowed keys will be rejected.`,
)
View Source
var MaxConcurrentOperations = dynamicconfig.NewNamespaceIntSetting(
	"nexusoperation.limit.operation.concurrency",
	2000,
	`Limits the maximum allowed concurrent Nexus Operations for a given workflow execution. Once the limit is reached,
ScheduleNexusOperation commands will be rejected.`,
)
View Source
var MaxOperationHeaderSize = dynamicconfig.NewNamespaceIntSetting(
	"nexusoperation.limit.header.size",
	8192,
	`The maximum allowed header size for a Nexus Operation.
ScheduleNexusOperation commands with a "nexus_header" field that exceeds this limit will be rejected.
Uses Go's len() function on header keys and values to determine the total size.`,
)
View Source
var MaxOperationNameLength = dynamicconfig.NewNamespaceIntSetting(
	"nexusoperation.limit.operation.name.length",
	1000,
	`Limits the maximum allowed length for a Nexus Operation name. ScheduleNexusOperation commands with an operation name
that exceeds this limit will be rejected.  Uses Go's len() function to determine the length.`,
)
View Source
var MaxOperationScheduleToCloseTimeout = dynamicconfig.NewNamespaceDurationSetting(
	"nexusoperation.limit.scheduleToCloseTimeout",
	0,
	`Maximum allowed duration of a Nexus Operation. ScheduleOperation commands that specify no schedule-to-close timeout
or a longer timeout than permitted will have their schedule-to-close timeout capped to this value. 0 implies no limit.`,
)
View Source
var MaxOperationTokenLength = dynamicconfig.NewNamespaceIntSetting(
	"nexusoperation.limit.operation.token.length",
	4096,
	`Limits the maximum allowed length for a Nexus Operation token. Tokens returned via start responses or via async
completions that exceed this limit will be rejected. Uses Go's len() function to determine the length.
Leave this limit long enough to fit a workflow ID and namespace name plus padding at minimum since that's what the SDKs
use as the token.`,
)
View Source
var MaxServiceNameLength = dynamicconfig.NewNamespaceIntSetting(
	"nexusoperation.limit.service.name.length",
	1000,
	`Limits the maximum allowed length for a Nexus Service name. ScheduleNexusOperation commands with a service name that
exceeds this limit will be rejected.  Uses Go's len() function to determine the length.`,
)
View Source
var MetricTagConfiguration = dynamicconfig.NewGlobalTypedSetting(
	"nexusoperation.metrics.tags",
	NexusMetricTagConfig{},
	`Controls which metric tags are included with Nexus operation metrics. This configuration supports:
1. Service name tag - adds the Nexus service name as a metric dimension (IncludeServiceTag)
2. Operation name tag - adds the Nexus operation name as a metric dimension (IncludeOperationTag)
3. Header-based tags - maps values from request headers to metric tags (HeaderTagMappings)

Note: default metric tags (like namespace, endpoint) are always included and not affected by this configuration.
Adding high-cardinality tags (like unique operation names) can significantly increase metric storage requirements and
query complexity. Consider the cardinality impact when enabling these tags.`,
)
View Source
var MinDispatchTaskTimeout = dynamicconfig.NewNamespaceDurationSetting(
	"nexusoperation.limit.dispatch.task.timeout.min",
	time.Second,
	`Minimum time remaining for a request to be dispatched to the handler worker. If the remaining request timeout is less
than this value, a timeout error will be returned. Working in conjunction with MinRequestTimeout, both configs help
ensure that the server has enough time to complete a Nexus request.`,
)
View Source
var MinRequestTimeout = dynamicconfig.NewNamespaceDurationSetting(
	"nexusoperation.limit.request.timeout.min",
	time.Millisecond*1500,
	`Minimum time remaining for a request to complete for the server to make RPCs. If the remaining request timeout is
less than this value, a non-retryable timeout error will be returned.`,
)
View Source
var OutboundRequestCounter = metrics.NewCounterDef(
	"nexus_outbound_requests",
	metrics.WithDescription("The number of Nexus outbound requests made by the history service."),
)
View Source
var OutboundRequestLatency = metrics.NewTimerDef(
	"nexus_outbound_latency",
	metrics.WithDescription("Latency of outbound Nexus requests made by the history service."),
)
View Source
var RequestTimeout = dynamicconfig.NewDestinationDurationSetting(
	"nexusoperation.request.timeout",
	time.Second*10,
	`Timeout for making a single nexus start or cancel request.`,
)
View Source
var RetryPolicyInitialInterval = dynamicconfig.NewGlobalDurationSetting(
	"nexusoperation.retryPolicy.initialInterval",
	time.Second,
	`The initial backoff interval between every nexus StartOperation or CancelOperation request for a given operation.`,
)
View Source
var RetryPolicyMaximumInterval = dynamicconfig.NewGlobalDurationSetting(
	"nexusoperation.retryPolicy.maxInterval",
	time.Hour,
	`The maximum backoff interval between every nexus StartOperation or CancelOperation request for a given operation.`,
)
View Source
var UseNewFailureWireFormat = dynamicconfig.NewNamespaceBoolSetting(
	"nexusoperation.useNewFailureWireFormat",
	true,
	`Controls whether to use the new failure wire format via an HTTP header that is attached to StartOperation requests.
Added for safety. Defaults to true. Likely to be removed in future server versions.`,
)

Functions

This section is empty.

Types

type Cancellation

type Cancellation struct {
	chasm.UnimplementedComponent

	// Persisted internal state
	*nexusoperationpb.CancellationState
}

func NewCancellation

func NewCancellation() *Cancellation

func (*Cancellation) LifecycleState

func (o *Cancellation) LifecycleState(_ chasm.Context) chasm.LifecycleState

func (*Cancellation) SetStateMachineState

func (o *Cancellation) SetStateMachineState(status nexusoperationpb.CancellationStatus)

func (*Cancellation) StateMachineState

func (o *Cancellation) StateMachineState() nexusoperationpb.CancellationStatus

type CancellationBackoffTaskExecutor

type CancellationBackoffTaskExecutor struct {
	// contains filtered or unexported fields
}

func (*CancellationBackoffTaskExecutor) Execute

func (*CancellationBackoffTaskExecutor) Validate

type CancellationTaskExecutor

type CancellationTaskExecutor struct {
	// contains filtered or unexported fields
}

func (*CancellationTaskExecutor) Execute

func (*CancellationTaskExecutor) Validate

type CancellationTaskExecutorOptions

type CancellationTaskExecutorOptions struct {
	fx.In

	Config *Config

	MetricsHandler metrics.Handler
	Logger         log.Logger
}

type EventAttemptFailed

type EventAttemptFailed struct {
}

EventAttemptFailed is triggered when an invocation attempt is failed with a retryable error.

type EventCanceled

type EventCanceled struct {
}

EventCanceled is triggered when an operation is completed as canceled.

type EventCancellationAttemptFailed

type EventCancellationAttemptFailed struct {
}

EventCancellationAttemptFailed is triggered when a cancellation attempt is failed with a retryable error.

type EventCancellationFailed

type EventCancellationFailed struct {
}

EventCancellationFailed is triggered when a cancellation attempt is failed with a non retryable error.

type EventCancellationRescheduled

type EventCancellationRescheduled struct {
}

EventCancellationRescheduled is triggered when cancellation is meant to be rescheduled after backing off from a previous attempt.

type EventCancellationScheduled

type EventCancellationScheduled struct {
}

EventCancellationScheduled is triggered when cancellation is meant to be scheduled for the first time - immediately after it has been requested.

type EventCancellationSucceeded

type EventCancellationSucceeded struct {
}

EventCancellationSucceeded is triggered when a cancellation attempt succeeds.

type EventFailed

type EventFailed struct {
}

EventFailed is triggered when an invocation attempt is failed with a non retryable error.

type EventRescheduled

type EventRescheduled struct {
}

EventRescheduled is triggered when the operation is meant to be rescheduled after backing off from a previous attempt.

type EventScheduled

type EventScheduled struct {
}

EventScheduled is triggered when the operation is meant to be scheduled - immediately after initialization.

type EventStarted

type EventStarted struct {
}

EventStarted is triggered when an invocation attempt succeeds and the handler indicates that it started an asynchronous operation.

type EventSucceeded

type EventSucceeded struct {
}

EventSucceeded is triggered when an invocation attempt succeeds.

type EventTimedOut

type EventTimedOut struct {
}

EventTimedOut is triggered when the schedule-to-close timeout is triggered for an operation.

type Library

type Library struct {
	chasm.UnimplementedLibrary

	OperationInvocationTaskExecutor *OperationInvocationTaskExecutor
	OperationBackoffTaskExecutor    *OperationBackoffTaskExecutor
	OperationTimeoutTaskExecutor    *OperationTimeoutTaskExecutor

	CancellationTaskExecutor        *CancellationTaskExecutor
	CancellationBackoffTaskExecutor *CancellationBackoffTaskExecutor
}

func (*Library) Components

func (l *Library) Components() []*chasm.RegistrableComponent

func (*Library) Name

func (l *Library) Name() string

func (*Library) RegisterServices

func (l *Library) RegisterServices(_ *grpc.Server)

func (*Library) Tasks

func (l *Library) Tasks() []*chasm.RegistrableTask

type NexusHeaderTagMapping

type NexusHeaderTagMapping struct {
	// Name of the request header to extract value from
	SourceHeader string
	// Name of the metric tag to set with the header value
	TargetTag string
}

type NexusMetricTagConfig

type NexusMetricTagConfig struct {
	// Include service name as a metric tag
	IncludeServiceTag bool
	// Include operation name as a metric tag
	IncludeOperationTag bool
	// Configuration for mapping request headers to metric tags
	HeaderTagMappings []NexusHeaderTagMapping
}

type Operation

type Operation struct {
	chasm.UnimplementedComponent

	// Persisted internal state
	*nexusoperationpb.OperationState
}

func NewOperation

func NewOperation() *Operation

func (*Operation) LifecycleState

func (o *Operation) LifecycleState(_ chasm.Context) chasm.LifecycleState

func (*Operation) SetStateMachineState

func (o *Operation) SetStateMachineState(status nexusoperationpb.OperationStatus)

func (*Operation) StateMachineState

func (o *Operation) StateMachineState() nexusoperationpb.OperationStatus

type OperationBackoffTaskExecutor

type OperationBackoffTaskExecutor struct {
	// contains filtered or unexported fields
}

func (*OperationBackoffTaskExecutor) Execute

func (*OperationBackoffTaskExecutor) Validate

type OperationInvocationTaskExecutor

type OperationInvocationTaskExecutor struct {
	// contains filtered or unexported fields
}

func (*OperationInvocationTaskExecutor) Execute

func (*OperationInvocationTaskExecutor) Validate

type OperationTaskExecutorOptions

type OperationTaskExecutorOptions struct {
	fx.In

	Config *Config

	MetricsHandler metrics.Handler
	Logger         log.Logger
}

OperationTaskExecutorOptions is the fx parameter object for common options supplied to all operation task executors.

type OperationTimeoutTaskExecutor

type OperationTimeoutTaskExecutor struct {
	// contains filtered or unexported fields
}

func (*OperationTimeoutTaskExecutor) Execute

func (*OperationTimeoutTaskExecutor) Validate

Directories

Path Synopsis
gen
nexusoperationpb/v1
Code generated by protoc-gen-go-helpers.
Code generated by protoc-gen-go-helpers.

Jump to

Keyboard shortcuts

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