serialization

package
v1.36.1 Latest Latest
Warning

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

Go to latest
Published: Apr 24, 2026 License: MIT Imports: 21 Imported by: 0

Documentation

Index

Constants

View Source
const SerializerDataEncodingEnvVar = "TEMPORAL_TEST_DATA_ENCODING"

SerializerDataEncodingEnvVar controls which codec is used for encoding DataBlobs.

Currently supported values (case-insensitive):

  • "json"
  • "proto3"

Decoding always support all encodings regardless of this setting.

WARNING: This environment variable should only be used for testing; and never set it in production.

Variables

Functions

func Decode

func Decode(data *commonpb.DataBlob, result proto.Message) error

func EncodingTypeFromEnv

func EncodingTypeFromEnv() enumspb.EncodingType

EncodingTypeFromEnv returns an EncodingType based on the environment variable `TEMPORAL_TEST_DATA_ENCODING`. It defaults to "ENCODING_TYPE_PROTO3" codec if the environment variable is not set.

func NewDeserializationError

func NewDeserializationError(
	encodingType enumspb.EncodingType,
	deserializationErr error,
) error

NewDeserializationError returns a DeserializationError

func NewSerializationError

func NewSerializationError(
	encodingType enumspb.EncodingType,
	serializationErr error,
) error

NewSerializationError returns a SerializationError

func NewUnknownEncodingTypeError

func NewUnknownEncodingTypeError(
	providedType string,
	expectedEncoding ...enumspb.EncodingType,
) error

NewUnknownEncodingTypeError returns a new instance of encoding type error

func ProtoEncode

func ProtoEncode(m proto.Message) (*commonpb.DataBlob, error)

ProtoEncode is kept for backward compatibility.

func ReencodeEventBlobsAsProto3

func ReencodeEventBlobsAsProto3(serializer Serializer, blobs []*commonpb.DataBlob) ([]*commonpb.DataBlob, error)

ReencodeEventBlobsAsProto3 re-encodes event blobs as proto3 if the serializer uses a different encoding. In production (proto3 encoding), this returns the input unchanged.

Types

type Decoder

type Decoder interface {
	DeserializeEvents(data *commonpb.DataBlob) ([]*historypb.HistoryEvent, error)
	DeserializeEvent(data *commonpb.DataBlob) (*historypb.HistoryEvent, error)
	DeserializeStrippedEvents(data *commonpb.DataBlob) ([]*historyspb.StrippedHistoryEvent, error)
	DeserializeClusterMetadata(data *commonpb.DataBlob) (*persistencespb.ClusterMetadata, error)
	ShardInfoFromBlob(data *commonpb.DataBlob) (*persistencespb.ShardInfo, error)
	NamespaceDetailFromBlob(data *commonpb.DataBlob) (*persistencespb.NamespaceDetail, error)
	HistoryTreeInfoFromBlob(data *commonpb.DataBlob) (*persistencespb.HistoryTreeInfo, error)
	HistoryBranchFromBlob(data []byte) (*persistencespb.HistoryBranch, error)
	WorkflowExecutionInfoFromBlob(data *commonpb.DataBlob) (*persistencespb.WorkflowExecutionInfo, error)
	WorkflowExecutionStateFromBlob(data *commonpb.DataBlob) (*persistencespb.WorkflowExecutionState, error)
	ActivityInfoFromBlob(data *commonpb.DataBlob) (*persistencespb.ActivityInfo, error)
	ChildExecutionInfoFromBlob(data *commonpb.DataBlob) (*persistencespb.ChildExecutionInfo, error)
	SignalInfoFromBlob(data *commonpb.DataBlob) (*persistencespb.SignalInfo, error)
	RequestCancelInfoFromBlob(data *commonpb.DataBlob) (*persistencespb.RequestCancelInfo, error)
	TimerInfoFromBlob(data *commonpb.DataBlob) (*persistencespb.TimerInfo, error)
	TaskInfoFromBlob(data *commonpb.DataBlob) (*persistencespb.AllocatedTaskInfo, error)
	TaskQueueInfoFromBlob(data *commonpb.DataBlob) (*persistencespb.TaskQueueInfo, error)
	TaskQueueUserDataFromBlob(data *commonpb.DataBlob) (*persistencespb.TaskQueueUserData, error)
	ChecksumFromBlob(data *commonpb.DataBlob) (*persistencespb.Checksum, error)
	QueueMetadataFromBlob(data *commonpb.DataBlob) (*persistencespb.QueueMetadata, error)
	ReplicationTaskFromBlob(data *commonpb.DataBlob) (*replicationspb.ReplicationTask, error)
	NexusEndpointFromBlob(data *commonpb.DataBlob) (*persistencespb.NexusEndpoint, error)
	ChasmNodeFromBlob(blob *commonpb.DataBlob) (*persistencespb.ChasmNode, error)
	ChasmNodeFromBlobs(metadata *commonpb.DataBlob, data *commonpb.DataBlob) (*persistencespb.ChasmNode, error)
	TransferTaskInfoFromBlob(data *commonpb.DataBlob) (*persistencespb.TransferTaskInfo, error)
	TimerTaskInfoFromBlob(data *commonpb.DataBlob) (*persistencespb.TimerTaskInfo, error)
	ReplicationTaskInfoFromBlob(data *commonpb.DataBlob) (*persistencespb.ReplicationTaskInfo, error)
	VisibilityTaskInfoFromBlob(data *commonpb.DataBlob) (*persistencespb.VisibilityTaskInfo, error)
	ArchivalTaskInfoFromBlob(data *commonpb.DataBlob) (*persistencespb.ArchivalTaskInfo, error)
	OutboundTaskInfoFromBlob(data *commonpb.DataBlob) (*persistencespb.OutboundTaskInfo, error)
	QueueStateFromBlob(data *commonpb.DataBlob) (*persistencespb.QueueState, error)
	DeserializeTask(category tasks.Category, blob *commonpb.DataBlob) (tasks.Task, error)
	DeserializeReplicationTask(replicationTask *persistencespb.ReplicationTaskInfo) (tasks.Task, error)
}

Decoder is used to decode DataBlobs to objects.

var (
	DefaultDecoder Decoder = defaultSerializer
)

type DeserializationError

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

DeserializationError is an error type for deserialization

func (*DeserializationError) Error

func (e *DeserializationError) Error() string

func (*DeserializationError) IsTerminalTaskError

func (e *DeserializationError) IsTerminalTaskError() bool

IsTerminalTaskError informs our task processing subsystem that it is impossible to retry this error and that the task should be sent to a DLQ

func (*DeserializationError) Unwrap

func (e *DeserializationError) Unwrap() error

type Encoder

type Encoder interface {
	EncodingType() enumspb.EncodingType
	SerializeEvents(batch []*historypb.HistoryEvent) (*commonpb.DataBlob, error)
	SerializeEvent(event *historypb.HistoryEvent) (*commonpb.DataBlob, error)
	SerializeClusterMetadata(icm *persistencespb.ClusterMetadata) (*commonpb.DataBlob, error)
	ShardInfoToBlob(info *persistencespb.ShardInfo) (*commonpb.DataBlob, error)
	NamespaceDetailToBlob(info *persistencespb.NamespaceDetail) (*commonpb.DataBlob, error)
	HistoryTreeInfoToBlob(info *persistencespb.HistoryTreeInfo) (*commonpb.DataBlob, error)
	HistoryBranchToBlob(info *persistencespb.HistoryBranch) (*commonpb.DataBlob, error)
	WorkflowExecutionInfoToBlob(info *persistencespb.WorkflowExecutionInfo) (*commonpb.DataBlob, error)
	WorkflowExecutionStateToBlob(info *persistencespb.WorkflowExecutionState) (*commonpb.DataBlob, error)
	ActivityInfoToBlob(info *persistencespb.ActivityInfo) (*commonpb.DataBlob, error)
	ChildExecutionInfoToBlob(info *persistencespb.ChildExecutionInfo) (*commonpb.DataBlob, error)
	SignalInfoToBlob(info *persistencespb.SignalInfo) (*commonpb.DataBlob, error)
	RequestCancelInfoToBlob(info *persistencespb.RequestCancelInfo) (*commonpb.DataBlob, error)
	TimerInfoToBlob(info *persistencespb.TimerInfo) (*commonpb.DataBlob, error)
	TaskInfoToBlob(info *persistencespb.AllocatedTaskInfo) (*commonpb.DataBlob, error)
	TaskQueueInfoToBlob(info *persistencespb.TaskQueueInfo) (*commonpb.DataBlob, error)
	TaskQueueUserDataToBlob(info *persistencespb.TaskQueueUserData) (*commonpb.DataBlob, error)
	ChecksumToBlob(checksum *persistencespb.Checksum) (*commonpb.DataBlob, error)
	QueueMetadataToBlob(metadata *persistencespb.QueueMetadata) (*commonpb.DataBlob, error)
	ReplicationTaskToBlob(replicationTask *replicationspb.ReplicationTask) (*commonpb.DataBlob, error)
	NexusEndpointToBlob(endpoint *persistencespb.NexusEndpoint) (*commonpb.DataBlob, error)
	// ChasmNodeToBlob returns a single encoded blob for the node.
	ChasmNodeToBlob(node *persistencespb.ChasmNode) (*commonpb.DataBlob, error)
	// ChasmNodeToBlobs returns the metadata blob first, followed by the data blob.
	ChasmNodeToBlobs(node *persistencespb.ChasmNode) (*commonpb.DataBlob, *commonpb.DataBlob, error)
	TransferTaskInfoToBlob(info *persistencespb.TransferTaskInfo) (*commonpb.DataBlob, error)
	TimerTaskInfoToBlob(info *persistencespb.TimerTaskInfo) (*commonpb.DataBlob, error)
	ReplicationTaskInfoToBlob(info *persistencespb.ReplicationTaskInfo) (*commonpb.DataBlob, error)
	VisibilityTaskInfoToBlob(info *persistencespb.VisibilityTaskInfo) (*commonpb.DataBlob, error)
	ArchivalTaskInfoToBlob(info *persistencespb.ArchivalTaskInfo) (*commonpb.DataBlob, error)
	OutboundTaskInfoToBlob(info *persistencespb.OutboundTaskInfo) (*commonpb.DataBlob, error)
	QueueStateToBlob(info *persistencespb.QueueState) (*commonpb.DataBlob, error)
	SerializeTask(task tasks.Task) (*commonpb.DataBlob, error)
	SerializeReplicationTask(task tasks.Task) (*persistencespb.ReplicationTaskInfo, error)
}

Encoder is used to encode objects to DataBlobs.

type SerializationError

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

SerializationError is an error type for serialization

func (*SerializationError) Error

func (e *SerializationError) Error() string

func (*SerializationError) Unwrap

func (e *SerializationError) Unwrap() error

type Serializer

type Serializer interface {
	Encoder
	Decoder
}

Serializer is used to serialize and deserialize DataBlobs.

func NewSerializer

func NewSerializer() Serializer

type UnknownEncodingTypeError

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

UnknownEncodingTypeError is an error type for unknown or unsupported encoding type

func (*UnknownEncodingTypeError) Error

func (e *UnknownEncodingTypeError) Error() string

func (*UnknownEncodingTypeError) IsTerminalTaskError

func (e *UnknownEncodingTypeError) IsTerminalTaskError() bool

IsTerminalTaskError informs our task processing subsystem that it is impossible to retry this error

Jump to

Keyboard shortcuts

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