common/constants.go (136 lines of code) (raw):

// Copyright (c) 2017 Uber Technologies, Inc. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. package common import ( "time" "github.com/uber/cadence/.gen/go/shadower" ) 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 // BufferedEventID is the id of the buffered event BufferedEventID int64 = -123 // EmptyEventTaskID is uninitialized id of the task id within event EmptyEventTaskID int64 = -1234 // TransientEventID is the id of the transient event TransientEventID int64 = -124 // FirstBlobPageToken is the page token identifying the first blob for each history archival FirstBlobPageToken = 1 // LastBlobNextPageToken is the next page token on the last blob for each history archival LastBlobNextPageToken = -1 // EndMessageID is the id of the end message, here we use the int64 max EndMessageID int64 = 1<<63 - 1 // EmptyMessageID is the default start message ID for replication level EmptyMessageID = -1 // InitialPreviousFailoverVersion is the initial previous failover version InitialPreviousFailoverVersion int64 = -1 ) const ( // EmptyUUID is the placeholder for UUID when it's empty EmptyUUID = "emptyUuid" ) // Data encoding types const ( EncodingTypeJSON EncodingType = "json" EncodingTypeThriftRW EncodingType = "thriftrw" EncodingTypeGob EncodingType = "gob" EncodingTypeUnknown EncodingType = "unknow" EncodingTypeEmpty EncodingType = "" EncodingTypeProto EncodingType = "proto3" ) type ( // EncodingType is an enum that represents various data encoding types EncodingType string ) // MaxTaskTimeout is maximum task timeout allowed. 366 days in seconds const MaxTaskTimeout = 31622400 const ( // GetHistoryMaxPageSize is the max page size for get history GetHistoryMaxPageSize = 1000 // ReadDLQMessagesPageSize is the max page size for read DLQ messages ReadDLQMessagesPageSize = 1000 ) const ( // VisibilityAppName is used to find kafka topics and ES indexName for visibility VisibilityAppName = "visibility" PinotVisibilityAppName = "pinot-visibility" ) const ( // ESVisibilityStoreName is used to find es advanced visibility store ESVisibilityStoreName = "es-visibility" // PinotVisibilityStoreName is used to find pinot advanced visibility store PinotVisibilityStoreName = "pinot-visibility" ) // This was flagged by salus as potentially hardcoded credentials. This is a false positive by the scanner and should be // disregarded. // #nosec const ( // SystemGlobalDomainName is global domain name for cadence system workflows running globally SystemGlobalDomainName = "cadence-system-global" // SystemDomainID is domain id for all cadence system workflows SystemDomainID = "32049b68-7872-4094-8e63-d0dd59896a83" // SystemLocalDomainName is domain name for cadence system workflows running in local cluster SystemLocalDomainName = "cadence-system" // SystemDomainRetentionDays is retention config for all cadence system workflows SystemDomainRetentionDays = 7 // BatcherDomainID is domain id for batcher local domain BatcherDomainID = "3116607e-419b-4783-85fc-47726a4c3fe9" // BatcherLocalDomainName is domain name for batcher workflows running in local cluster // Batcher cannot use SystemLocalDomain because auth BatcherLocalDomainName = "cadence-batcher" // ShadowerDomainID is domain id for workflow shadower local domain ShadowerDomainID = "59c51119-1b41-4a28-986d-d6e377716f82" // ShadowerLocalDomainName ShadowerLocalDomainName = shadower.LocalDomainName ) const ( // MinLongPollTimeout is the minimum context timeout for long poll API, below which // the request won't be processed MinLongPollTimeout = time.Second * 2 // CriticalLongPollTimeout is a threshold for the context timeout passed into long poll API, // below which a warning will be logged CriticalLongPollTimeout = time.Second * 20 ) const ( // DefaultTransactionSizeLimit is the largest allowed transaction size to persistence DefaultTransactionSizeLimit = 14 * 1024 * 1024 ) const ( // DefaultIDLengthWarnLimit is the warning length for various ID types DefaultIDLengthWarnLimit = 128 // DefaultIDLengthErrorLimit is the maximum length allowed for various ID types DefaultIDLengthErrorLimit = 1000 ) const ( // ArchivalEnabled is the status for enabling archival ArchivalEnabled = "enabled" // ArchivalDisabled is the status for disabling archival ArchivalDisabled = "disabled" // ArchivalPaused is the status for pausing archival ArchivalPaused = "paused" ) // enum for dynamic config AdvancedVisibilityWritingMode const ( // AdvancedVisibilityWritingModeOff means do not write to advanced visibility store AdvancedVisibilityWritingModeOff = "off" // AdvancedVisibilityWritingModeOn means only write to advanced visibility store AdvancedVisibilityWritingModeOn = "on" // AdvancedVisibilityWritingModeDual means write to both normal visibility and advanced visibility store AdvancedVisibilityWritingModeDual = "dual" // AdvancedVisibilityWritingModeTriple means write to both normal visibility and advanced visibility store, includes ES and Pinot AdvancedVisibilityWritingModeTriple = "triple" ) const ( // DomainDataKeyForManagedFailover is key of DomainData for managed failover DomainDataKeyForManagedFailover = "IsManagedByCadence" // DomainDataKeyForPreferredCluster is the key of DomainData for domain rebalance DomainDataKeyForPreferredCluster = "PreferredCluster" // DomainDataKeyForReadGroups stores which groups have read permission of the domain API DomainDataKeyForReadGroups = "READ_GROUPS" // DomainDataKeyForWriteGroups stores which groups have write permission of the domain API DomainDataKeyForWriteGroups = "WRITE_GROUPS" ) type ( // TaskType is the enum for representing different task types TaskType int ) const ( // TaskTypeTransfer is the task type for transfer task // starting from 2 here to be consistent with the row type define for cassandra // TODO: we can remove +2 from the following definition // we don't have to make them consistent with cassandra definition // there's also no row type for sql or other nosql persistence implementation TaskTypeTransfer TaskType = iota + 2 // TaskTypeTimer is the task type for timer task TaskTypeTimer // TaskTypeReplication is the task type for replication task TaskTypeReplication // TaskTypeCrossCluster is the task type for cross cluster task TaskTypeCrossCluster TaskType = 6 ) const ( // DefaultESAnalyzerPause controls if we want to dynamically pause the analyzer DefaultESAnalyzerPause = false // DefaultESAnalyzerTimeWindow controls how many days to go back for ElasticSearch Analyzer DefaultESAnalyzerTimeWindow = time.Hour * 24 * 30 // DefaultESAnalyzerMaxNumDomains controls how many domains to check DefaultESAnalyzerMaxNumDomains = 500 // DefaultESAnalyzerMaxNumWorkflowTypes controls how many workflow types per domain to check DefaultESAnalyzerMaxNumWorkflowTypes = 100 // DefaultESAnalyzerNumWorkflowsToRefresh controls how many workflows per workflow type should be refreshed DefaultESAnalyzerNumWorkflowsToRefresh = 100 // DefaultESAnalyzerBufferWaitTime controls min time required to consider a worklow stuck DefaultESAnalyzerBufferWaitTime = time.Minute * 30 // DefaultESAnalyzerMinNumWorkflowsForAvg controls how many workflows to have at least to rely on workflow run time avg per type DefaultESAnalyzerMinNumWorkflowsForAvg = 100 // DefaultESAnalyzerLimitToTypes controls if we want to limit ESAnalyzer only to some workflow types DefaultESAnalyzerLimitToTypes = "" // DefaultESAnalyzerEnableAvgDurationBasedChecks controls if we want to enable avg duration based refreshes DefaultESAnalyzerEnableAvgDurationBasedChecks = false // DefaultESAnalyzerLimitToDomains controls if we want to limit ESAnalyzer only to some domains DefaultESAnalyzerLimitToDomains = "" // DefaultESAnalyzerWorkflowDurationWarnThreshold defines warning threshold for a workflow duration DefaultESAnalyzerWorkflowDurationWarnThresholds = "" ) // StickyTaskConditionFailedErrorMsg error msg for sticky task ConditionFailedError const StickyTaskConditionFailedErrorMsg = "StickyTaskConditionFailedError" // MemoKeyForOperator is the memo key for operator const MemoKeyForOperator = "operator" // ReservedTaskListPrefix is the required naming prefix for any task list partition other than partition 0 const ReservedTaskListPrefix = "/__cadence_sys/" type ( // VisibilityOperation is an enum that represents visibility message types VisibilityOperation string ) // Enum for visibility message type const ( RecordStarted VisibilityOperation = "RecordStarted" RecordClosed VisibilityOperation = "RecordClosed" UpsertSearchAttributes VisibilityOperation = "UpsertSearchAttributes" ) const ( numBitsPerLevel = 3 ) const ( // HighPriorityClass is the priority class for high priority tasks HighPriorityClass = iota << numBitsPerLevel // DefaultPriorityClass is the priority class for default priority tasks DefaultPriorityClass // LowPriorityClass is the priority class for low priority tasks LowPriorityClass ) const ( // HighPrioritySubclass is the priority subclass for high priority tasks HighPrioritySubclass = iota // DefaultPrioritySubclass is the priority subclass for high priority tasks DefaultPrioritySubclass // LowPrioritySubclass is the priority subclass for high priority tasks LowPrioritySubclass ) const ( // DefaultHistoryMaxAutoResetPoints is the default maximum number for auto reset points DefaultHistoryMaxAutoResetPoints = 20 ) const ( // WorkflowIDRateLimitReason is the reason set in ServiceBusyError when workflow ID rate limit is exceeded WorkflowIDRateLimitReason = "external-workflow-id-rate-limit" )