common

package
v0.3.11 Latest Latest
Warning

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

Go to latest
Published: Apr 16, 2018 License: MIT Imports: 20 Imported by: 68

Documentation

Index

Constants

View Source
const (
	// FirstEventID is the id of the first event in the history
	FirstEventID int64 = 1
	// EmptyEventID is the id of the empty event
	EmptyEventID int64 = -23
	// EmptyVersion is used as the default value for failover version when no value is provided
	EmptyVersion int64 = -24
	// EndEventID is the id of the end event, here we use the int64 max
	EndEventID int64 = 1<<63 - 1
)
View Source
const (
	// FrontendServiceName is the name of the frontend service
	FrontendServiceName = "cadence-frontend"
	// HistoryServiceName is the name of the history service
	HistoryServiceName = "cadence-history"
	// MatchingServiceName is the name of the matching service
	MatchingServiceName = "cadence-matching"
	// WorkerServiceName is the name of the worker service
	WorkerServiceName = "cadence-worker"
)
View Source
const (
	// LibraryVersionHeaderName refers to the name of the
	// tchannel / http header that contains the client
	// library version
	LibraryVersionHeaderName = "cadence-client-library-version"

	// FeatureVersionHeaderName refers to the name of the
	// tchannel / http header that contains the client
	// feature version
	// the feature version sent from client represents the
	// feature set of the cadence client library support.
	// This can be used for client capibility check, on
	// Cadence server, for backward compatibility
	FeatureVersionHeaderName = "cadence-client-feature-version"

	// ClientImplHeaderName refers to the name of the
	// header that contains the client implementation
	ClientImplHeaderName = "cadence-client-name"
)

Variables

This section is empty.

Functions

func ActivityTypePtr

func ActivityTypePtr(v s.ActivityType) *s.ActivityType

ActivityTypePtr makes a copy and returns the pointer to a ActivityType.

func AddSecondsToBaseTime

func AddSecondsToBaseTime(baseTimeInNanoSec int64, durationInSeconds int64) int64

AddSecondsToBaseTime - Gets the UnixNano with given duration and base time.

func AggregateYarpcOptions added in v0.3.5

func AggregateYarpcOptions(ctx context.Context, opts ...yarpc.CallOption) []yarpc.CallOption

AggregateYarpcOptions aggregate the header information from context to existing yarpc call options

func AwaitWaitGroup

func AwaitWaitGroup(wg *sync.WaitGroup, timeout time.Duration) bool

AwaitWaitGroup calls Wait on the given wait Returns true if the Wait() call succeeded before the timeout Returns false if the Wait() did not return before the timeout

func BoolDefault added in v0.3.2

func BoolDefault(v *bool) bool

BoolDefault returns value if bool pointer is set otherwise default value of bool

func BoolPtr

func BoolPtr(v bool) *bool

BoolPtr makes a copy and returns the pointer to a bool.

func CQLTimestampToUnixNano

func CQLTimestampToUnixNano(milliseconds int64) int64

CQLTimestampToUnixNano converts CQL timestamp to UnixNano

func CancelExternalWorkflowExecutionFailedCausePtr added in v0.3.2

func CancelExternalWorkflowExecutionFailedCausePtr(t s.CancelExternalWorkflowExecutionFailedCause) *s.CancelExternalWorkflowExecutionFailedCause

CancelExternalWorkflowExecutionFailedCausePtr makes a copy and returns the pointer to a CancelExternalWorkflowExecutionFailedCause.

func ChildPolicyPtr added in v0.3.2

func ChildPolicyPtr(t s.ChildPolicy) *s.ChildPolicy

ChildPolicyPtr makes a copy and returns the pointer to a ChildPolicy.

func ChildWorkflowExecutionFailedCausePtr added in v0.3.2

func ChildWorkflowExecutionFailedCausePtr(t s.ChildWorkflowExecutionFailedCause) *s.ChildWorkflowExecutionFailedCause

ChildWorkflowExecutionFailedCausePtr makes a copy and returns the pointer to a ChildWorkflowExecutionFailedCause.

func CreateCassandraKeyspace

func CreateCassandraKeyspace(s *gocql.Session, keyspace string, replicas int, overwrite bool) (err error)

CreateCassandraKeyspace creates the keyspace using this session for given replica count

func CreateFrontendServiceRetryPolicy added in v0.3.11

func CreateFrontendServiceRetryPolicy() backoff.RetryPolicy

CreateFrontendServiceRetryPolicy creates a retry policy for calls to frontend service

func CreateHistoryServiceRetryPolicy

func CreateHistoryServiceRetryPolicy() backoff.RetryPolicy

CreateHistoryServiceRetryPolicy creates a retry policy for calls to history service

func CreatePersistanceRetryPolicy

func CreatePersistanceRetryPolicy() backoff.RetryPolicy

CreatePersistanceRetryPolicy creates a retry policy for persistence layer operations

func DecisionTaskFailedCausePtr added in v0.3.2

func DecisionTaskFailedCausePtr(t s.DecisionTaskFailedCause) *s.DecisionTaskFailedCause

DecisionTaskFailedCausePtr makes a copy and returns the pointer to a DecisionTaskFailedCause.

func DecisionTypePtr

func DecisionTypePtr(t s.DecisionType) *s.DecisionType

DecisionTypePtr makes a copy and returns the pointer to a DecisionType.

func DropCassandraKeyspace

func DropCassandraKeyspace(s *gocql.Session, keyspace string) (err error)

DropCassandraKeyspace drops the given keyspace, if it exists

func EventTypePtr

func EventTypePtr(t s.EventType) *s.EventType

EventTypePtr makes a copy and returns the pointer to a EventType.

func Float64Ptr

func Float64Ptr(v float64) *float64

Float64Ptr makes a copy and returns the pointer to an int64.

func Int32Default added in v0.3.2

func Int32Default(v *int32) int32

Int32Default returns value if int32 pointer is set otherwise default value of int32

func Int32Ptr

func Int32Ptr(v int32) *int32

Int32Ptr makes a copy and returns the pointer to an int32.

func Int64Default added in v0.3.2

func Int64Default(v *int64) int64

Int64Default returns value if int64 pointer is set otherwise default value of int64

func Int64Ptr

func Int64Ptr(v int64) *int64

Int64Ptr makes a copy and returns the pointer to an int64.

func IntPtr

func IntPtr(v int) *int

IntPtr makes a copy and returns the pointer to an int.

func IsPersistenceTransientError

func IsPersistenceTransientError(err error) bool

IsPersistenceTransientError checks if the error is a transient persistence error

func IsServiceNonRetryableError

func IsServiceNonRetryableError(err error) bool

IsServiceNonRetryableError checks if the error is a non retryable error.

func IsServiceTransientError added in v0.3.11

func IsServiceTransientError(err error) bool

IsServiceTransientError checks if the error is a retryable error.

func IsValidContext

func IsValidContext(ctx context.Context) error

IsValidContext checks that the thrift context is not expired on cancelled. Returns nil if the context is still valid. Otherwise, returns the result of ctx.Err()

func LoadCassandraSchema

func LoadCassandraSchema(
	dir string, fileNames []string, port int, keyspace string, override bool,
) (err error)

LoadCassandraSchema loads the schema from the given .cql files on this keyspace

func MergeDictoRight

func MergeDictoRight(src map[string]string, dest map[string]string)

MergeDictoRight copies the contents of src to dest

func MergeDicts

func MergeDicts(dic1 map[string]string, dic2 map[string]string) (resultDict map[string]string)

MergeDicts creates a union of the two dicts

func NewCassandraCluster

func NewCassandraCluster(clusterHosts string, port int, user, password, dc string) *gocql.ClusterConfig

NewCassandraCluster creates a cassandra cluster given comma separated list of clusterHosts

func PrettyPrintHistory

func PrettyPrintHistory(history *workflow.History, logger bark.Logger)

PrettyPrintHistory prints history in human readable format

func SignalExternalWorkflowExecutionFailedCausePtr added in v0.3.6

func SignalExternalWorkflowExecutionFailedCausePtr(t s.SignalExternalWorkflowExecutionFailedCause) *s.SignalExternalWorkflowExecutionFailedCause

SignalExternalWorkflowExecutionFailedCausePtr makes a copy and returns the pointer to a SignalExternalWorkflowExecutionFailedCause.

func StringDefault added in v0.3.2

func StringDefault(v *string) string

StringDefault returns value if string pointer is set otherwise default value of string

func StringPtr

func StringPtr(v string) *string

StringPtr makes a copy and returns the pointer to a string.

func TDeserialize

func TDeserialize(msg thrift.TStruct, b []byte) (err error)

TDeserialize is used to deserialize []byte to thrift TStruct

func TDeserializeString

func TDeserializeString(msg thrift.TStruct, s string) (err error)

TDeserializeString is used to deserialize string to thrift TStruct

func TListDeserialize

func TListDeserialize(msgType reflect.Type, b []byte) (msgs []thrift.TStruct, err error)

TListDeserialize is used to deserialize []byte to list of thrift TStruct

func TListSerialize

func TListSerialize(msgs []thrift.TStruct) (b []byte, err error)

TListSerialize is used to serialize list of thrift TStruct to []byte

func TSerialize

func TSerialize(msg thrift.TStruct) (b []byte, err error)

TSerialize is used to serialize thrift TStruct to []byte

func TSerializeString

func TSerializeString(msg thrift.TStruct) (s string, err error)

TSerializeString is used to serialize thrift TStruct to string

func TaskListKindPtr added in v0.3.6

func TaskListKindPtr(t s.TaskListKind) *s.TaskListKind

TaskListKindPtr makes a copy and returns the pointer to a TaskListKind.

func TaskListPtr

func TaskListPtr(v s.TaskList) *s.TaskList

TaskListPtr makes a copy and returns the pointer to a TaskList.

func TimeoutTypePtr added in v0.3.2

func TimeoutTypePtr(t s.TimeoutType) *s.TimeoutType

TimeoutTypePtr makes a copy and returns the pointer to a TimeoutType.

func Uint32Ptr

func Uint32Ptr(v uint32) *uint32

Uint32Ptr makes a copy and returns the pointer to a uint32.

func Uint64Ptr

func Uint64Ptr(v uint64) *uint64

Uint64Ptr makes a copy and returns the pointer to a uint64.

func UnixNanoToCQLTimestamp

func UnixNanoToCQLTimestamp(timestamp int64) int64

UnixNanoToCQLTimestamp converts UnixNano to CQL timestamp

func WorkflowIDToHistoryShard

func WorkflowIDToHistoryShard(workflowID string, numberOfShards int) int

WorkflowIDToHistoryShard is used to map workflowID to a shardID

func WorkflowTypePtr

func WorkflowTypePtr(t s.WorkflowType) *s.WorkflowType

WorkflowTypePtr makes a copy and returns the pointer to a WorkflowType.

Types

type Daemon

type Daemon interface {
	Start()
	Stop()
}

Daemon is the base interfaces implemented by background tasks within cherami

type EncodingType

type EncodingType string

EncodingType is an enum that represents various data encoding types

const (
	EncodingTypeJSON EncodingType = "json"
	EncodingTypeGob               = "gob"
)

Data encoding types

type PProfInitializer added in v0.3.5

type PProfInitializer interface {
	Start() error
}

PProfInitializer initialize the pprof based on config

type QueryTaskToken added in v0.3.2

type QueryTaskToken struct {
	DomainID string `json:"domainId"`
	TaskList string `jaon:"taskList"`
	TaskID   string `jaon:"taskId"`
}

QueryTaskToken identifies a query task

type RPCFactory added in v0.3.2

type RPCFactory interface {
	CreateDispatcher() *yarpc.Dispatcher
	CreateDispatcherForOutbound(callerName, serviceName, hostName string) *yarpc.Dispatcher
}

RPCFactory Creates a dispatcher that knows how to transport requests.

type RWMutex added in v0.3.3

type RWMutex interface {
	Lock(context.Context) error
	Unlock()
	RLock(context.Context) error
	RUnlock()
}

RWMutex accepts a context in its Lock method. It blocks the goroutine until either the lock is acquired or the context is closed.

func NewRWMutex added in v0.3.3

func NewRWMutex() RWMutex

NewRWMutex creates a new RWMutex

type TaskToken

type TaskToken struct {
	DomainID        string `json:"domainId"`
	WorkflowID      string `json:"workflowId"`
	RunID           string `json:"runId"`
	ScheduleID      int64  `json:"scheduleId"`
	ScheduleAttempt int64  `json:"scheduleAttempt"`
	ActivityID      string `json:"activityId"`
}

TaskToken identifies a task

type TaskTokenSerializer

type TaskTokenSerializer interface {
	Serialize(token *TaskToken) ([]byte, error)
	Deserialize(data []byte) (*TaskToken, error)
	SerializeQueryTaskToken(token *QueryTaskToken) ([]byte, error)
	DeserializeQueryTaskToken(data []byte) (*QueryTaskToken, error)
}

TaskTokenSerializer serializes task tokens

func NewJSONTaskTokenSerializer

func NewJSONTaskTokenSerializer() TaskTokenSerializer

NewJSONTaskTokenSerializer creates a new instance of TaskTokenSerializer

type TimeSource

type TimeSource interface {
	Now() time.Time
}

TimeSource is an interface for any entity that provides the current time. Its primarily used to mock out timesources in unit test

func NewRealTimeSource

func NewRealTimeSource() TimeSource

NewRealTimeSource returns a time source that servers real wall clock time using CLOCK_REALTIME

type TokenBucket

type TokenBucket interface {
	// TryConsume attempts to take count tokens from the
	// bucket. Returns true on success, false
	// otherwise along with the duration for the next refill
	TryConsume(count int) (bool, time.Duration)
	// Consume waits up to timeout duration to take count
	// tokens from the bucket. Returns true if count
	// tokens were acquired before timeout, false
	// otherwise
	Consume(count int, timeout time.Duration) bool
}

TokenBucket is the interface for any implememtation of a token bucket rate limiter

func NewTokenBucket

func NewTokenBucket(rps int, timeSource TimeSource) TokenBucket

NewTokenBucket creates and returns a new token bucket rate limiter that repelenishes the bucket every 100 milliseconds. Thread safe.

@param rps

Desired rate per second

Golang.org has an alternative implementation of the rate limiter. On benchmarking, golang's implementation was order of magnitude slower. In addition, it does a lot more than what we need. These are the benchmarks under different scenarios

BenchmarkTokenBucketParallel 50000000 40.7 ns/op BenchmarkGolangRateParallel 10000000 150 ns/op BenchmarkTokenBucketParallel-8 20000000 124 ns/op BenchmarkGolangRateParallel-8 10000000 208 ns/op BenchmarkTokenBucketParallel 50000000 37.8 ns/op BenchmarkGolangRateParallel 10000000 153 ns/op BenchmarkTokenBucketParallel-8 10000000 129 ns/op BenchmarkGolangRateParallel-8 10000000 208 ns/op

type TokenBucketFactory

type TokenBucketFactory interface {
	CreateTokenBucket(rps int, timeSource TimeSource) TokenBucket
}

TokenBucketFactory is an interface mainly used for injecting mock implementation of TokenBucket for unit testing

func NewTokenBucketFactory

func NewTokenBucketFactory() TokenBucketFactory

NewTokenBucketFactory creates an instance of factory used for creating TokenBucket instances

Jump to

Keyboard shortcuts

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