README ¶
Google Storage blobstore
Configuration
See https://cloud.google.com/docs/authentication#service-accounts to understand how is made the authentication against google cloud storage
Nowdays we support three different ways in order to let Temporal know where your google keyfile credentials are located
- Temporal archival deployment.yaml configuration file
GOOGLE_APPLICATION_CREDENTIALS
environment variable- Google default credentials location
If more than one credentials location is given, then Temporal will resolve the conflicts by the following priority:
GOOGLE_APPLICATION_CREDENTIALS > Temporal archival deployment.yaml > Google default credentials
Be sure that you have created your bucket first, and have enought rights in order to read/write over your bucket.
Gcloud Archival example
Enabling archival is done by using the configuration below. credentialsPath
is required but could be empty "" in order to allow a Google default credentials.
archival:
history:
state: "enabled"
enableRead: true
provider:
gstorage:
credentialsPath: "/tmp/keyfile.json"
visibility:
state: "enabled"
enableRead: true
provider:
gstorage:
credentialsPath: "/tmp/keyfile.json"
namespaceDefaults:
archival:
history:
state: "enabled"
URI: "gs://my-bucket-cad/temporal_archival/development"
visibility:
state: "enabled"
URI: "gs://my-bucket-cad/temporal_archival/visibility"
Visibility query syntax
You can query the visibility store by using the tctl workflow listarchived
command
The syntax for the query is based on SQL
Supported column names are
- WorkflowType String
- WorkflowID String
- StartTime Date
- CloseTime Date
- SearchPrecision String - Day, Hour, Minute, Second
One of these fields are required, StartTime or CloseTime and they are mutually exclusive and also SearchPrecision.
Searching for a record will be done in times in the UTC timezone
SearchPrecision specifies what range you want to search for records. If you use SearchPrecision = 'Day'
it will search all records starting from 2020-01-21T00:00:00Z
to 2020-01-21T59:59:59Z
Limitations
- The only operator supported is
=
- Currently It's not possible to guarantee the resulSet order, specially if the pageSize it's fullfilled.
Example
Searches the first 20 records for a given day 2020-01-21
./tctl --ns samples-namespace workflow listarchived -ps="20" -q "StartTime = '2020-01-21T00:00:00Z' AND SearchPrecision='Day'"
Archival query syntax
Once you have a workflowId and a runId you can retrieve your workflow history.
example:
./tctl --ns samples-namespace workflow show -w workflow-id -r runId
Documentation ¶
Overview ¶
Package gcloud is a generated GoMock package.
Index ¶
- Constants
- func NewHistoryArchiver(container *archiver.HistoryBootstrapContainer, config *config.GstorageArchiver) (archiver.HistoryArchiver, error)
- func NewVisibilityArchiver(container *archiver.VisibilityBootstrapContainer, ...) (archiver.VisibilityArchiver, error)
- type MockQueryParser
- type MockQueryParserMockRecorder
- type QueryParser
Constants ¶
const ( WorkflowID = "WorkflowId" RunID = "RunId" WorkflowType = "WorkflowType" CloseTime = "CloseTime" StartTime = "StartTime" SearchPrecision = "SearchPrecision" )
All allowed fields for filtering
const ( PrecisionDay = "Day" PrecisionHour = "Hour" PrecisionMinute = "Minute" PrecisionSecond = "Second" )
Precision specific values
const (
// URIScheme is the scheme for the gcloud storage implementation
URIScheme = "gs"
)
Variables ¶
This section is empty.
Functions ¶
func NewHistoryArchiver ¶
func NewHistoryArchiver( container *archiver.HistoryBootstrapContainer, config *config.GstorageArchiver, ) (archiver.HistoryArchiver, error)
NewHistoryArchiver creates a new gcloud storage HistoryArchiver
func NewVisibilityArchiver ¶
func NewVisibilityArchiver(container *archiver.VisibilityBootstrapContainer, config *config.GstorageArchiver) (archiver.VisibilityArchiver, error)
NewVisibilityArchiver creates a new archiver.VisibilityArchiver based on filestore
Types ¶
type MockQueryParser ¶
type MockQueryParser struct {
// contains filtered or unexported fields
}
MockQueryParser is a mock of QueryParser interface.
func NewMockQueryParser ¶
func NewMockQueryParser(ctrl *gomock.Controller) *MockQueryParser
NewMockQueryParser creates a new mock instance.
func (*MockQueryParser) EXPECT ¶
func (m *MockQueryParser) EXPECT() *MockQueryParserMockRecorder
EXPECT returns an object that allows the caller to indicate expected use.
func (*MockQueryParser) Parse ¶
func (m *MockQueryParser) Parse(query string) (*parsedQuery, error)
Parse mocks base method.
type MockQueryParserMockRecorder ¶
type MockQueryParserMockRecorder struct {
// contains filtered or unexported fields
}
MockQueryParserMockRecorder is the mock recorder for MockQueryParser.
func (*MockQueryParserMockRecorder) Parse ¶
func (mr *MockQueryParserMockRecorder) Parse(query interface{}) *gomock.Call
Parse indicates an expected call of Parse.
type QueryParser ¶
QueryParser parses a limited SQL where clause into a struct
func NewQueryParser ¶
func NewQueryParser() QueryParser
NewQueryParser creates a new query parser for filestore