temporalio / temporalite-archived Goto Github PK
View Code? Open in Web Editor NEWAn experimental distribution of Temporal that runs as a single process
License: MIT License
An experimental distribution of Temporal that runs as a single process
License: MIT License
Temporalite could create the directory first, then start writing to the database file.
User sees an error message like
2022/04/04 18:57:43 error setting up schema: unable to create SQLite admin DB: unable to open database file: no such file or directory
The error text doesn't include the file path that is being opened, which makes understanding the issue a bit more difficult.
temporalite start -f some_dir_that_does_not_exist/foo.db
main
Is your feature request related to a problem? Please describe.
In the Temporal test server based on Java there is functionality for skipping time. It's very useful for CI purposes.
The test framework provides a TestWorkflowEnvironment class which includes an in-memory implementation of the Temporal service that supports automatic time skipping.
This allows you to easily test long-running Workflows in seconds, without having to change your Workflow code.
Describe the solution you'd like
Similar way like in Java, but generally in Java test server skipping is enabled by default. So there should be new endpoint for enabling/disabling.
Builds on Windows.
Not building. From a fresh recursive git clone, a go build ./cmd/temporalite
gives:
C:\Users\user\go\pkg\mod\github.com\temporalio\[email protected]\server\server.go:47:113: pattern generated/ui/_app/assets/pages/namespaces/\[namespace\]/queues/\[queue\]/*: syntax error in pattern
Since the UI server was added, https://github.com/temporalio/ui-server/issues/104 is causing problems with Windows build. Supporting the UI as a build flag (or one prefixed with a bang for opt-out) per #33 could alleviate this temporarily. Also, I'd recommend adding Windows do the CI workflow.
This is on Go 1.17.7. I have not investigated the fix, this is just for tracking.
Workflow complete for simple case in samples-go/child-workflow-continue-as-new/
Workflow does not complete; observe "applyWorkflowMutationTx failed ... Error: no such column: schedule_id"
./temporalite start --namespace default --ephemeral
...
{"level":"debug","ts":"2021-09-23T23:42:17.833+0800","msg":"Assigning task ID","service":"history","shard-id":1,"address":"127.0.0.1:7234","shard-item":"0xc00083dc00","queue-task-id":38797312,"logging-call-at":"context_impl.go:897"}
{"level":"debug","ts":"2021-09-23T23:42:17.833+0800","msg":"Updating MaxTaskID","service":"history","shard-id":1,"address":"127.0.0.1:7234","shard-item":"0xc00083dc00","max-level":38797312,"logging-call-at":"context_impl.go:762"}
{"level":"debug","ts":"2021-09-23T23:42:17.834+0800","msg":"Workflow task updated","service":"history","shard-id":1,"address":"127.0.0.1:7234","shard-item":"0xc00083dc00","component":"history-cache","wf-schedule-id":0,"wf-started-id":0,"workflow-task-request-id":"emptyUuid","workflow-task-timeout":0,"attempt":1,"wf-started-timestamp":"1970-01-01T00:00:00.000Z","logging-call-at":"workflow_task_state_machine.go:615"}
{"level":"debug","ts":"2021-09-23T23:42:17.835+0800","msg":"Assigning task ID","service":"history","shard-id":1,"address":"127.0.0.1:7234","shard-item":"0xc00083dc00","queue-task-id":38797319,"logging-call-at":"context_impl.go:897"}
{"level":"error","ts":"2021-09-23T23:42:17.835+0800","msg":"Operation failed with internal error.","service":"history","error":"applyWorkflowMutationTx failed. Error: Failed to update child execution info. Failed to execute update query. Error: no such column: schedule_id","metric-scope":6,"logging-call-at":"persistenceMetricClients.go:640","stacktrace":"go.temporal.io/server/common/log.(*zapLogger).Error\n\t/Users/leow/go/pkg/mod/go.temporal.io/[email protected]/common/log/zap_logger.go:143\ngo.temporal.io/server/common/persistence.(*executionPersistenceClient).updateErrorMetric\n\t/Users/leow/go/pkg/mod/go.temporal.io/[email protected]/common/persistence/persistenceMetricClients.go:640\ngo.temporal.io/server/common/persistence.(*executionPersistenceClient).UpdateWorkflowExecution\n\t/Users/leow/go/pkg/mod/go.temporal.io/[email protected]/common/persistence/persistenceMetricClients.go:243\ngo.temporal.io/server/service/history/shard.(*ContextImpl).UpdateWorkflowExecution\n\t/Users/leow/go/pkg/mod/go.temporal.io/[email protected]/service/history/shard/context_impl.go:496\ngo.temporal.io/server/service/history/workflow.updateWorkflowExecutionWithRetry.func1\n\t/Users/leow/go/pkg/mod/go.temporal.io/[email protected]/service/history/workflow/transaction_impl.go:426\ngo.temporal.io/server/common/backoff.Retry.func1\n\t/Users/leow/go/pkg/mod/go.temporal.io/[email protected]/common/backoff/retry.go:104\ngo.temporal.io/server/common/backoff.RetryContext\n\t/Users/leow/go/pkg/mod/go.temporal.io/[email protected]/common/backoff/retry.go:125\ngo.temporal.io/server/common/backoff.Retry\n\t/Users/leow/go/pkg/mod/go.temporal.io/[email protected]/common/backoff/retry.go:105\ngo.temporal.io/server/service/history/workflow.updateWorkflowExecutionWithRetry\n\t/Users/leow/go/pkg/mod/go.temporal.io/[email protected]/service/history/workflow/transaction_impl.go:430\ngo.temporal.io/server/service/history/workflow.(*TransactionImpl).UpdateWorkflowExecution\n\t/Users/leow/go/pkg/mod/go.temporal.io/[email protected]/service/history/workflow/transaction_impl.go:145\ngo.temporal.io/server/service/history/workflow.(*ContextImpl).UpdateWorkflowExecutionWithNew\n\t/Users/leow/go/pkg/mod/go.temporal.io/[email protected]/service/history/workflow/context.go:686\ngo.temporal.io/server/service/history/workflow.(*ContextImpl).UpdateWorkflowExecutionAsActive\n\t/Users/leow/go/pkg/mod/go.temporal.io/[email protected]/service/history/workflow/context.go:556\ngo.temporal.io/server/service/history.(*workflowTaskHandlerCallbacksImpl).handleWorkflowTaskCompleted\n\t/Users/leow/go/pkg/mod/go.temporal.io/[email protected]/service/history/workflowTaskHandlerCallbacks.go:552\ngo.temporal.io/server/service/history.(*historyEngineImpl).RespondWorkflowTaskCompleted\n\t/Users/leow/go/pkg/mod/go.temporal.io/[email protected]/service/history/historyEngine.go:1358\ngo.temporal.io/server/service/history.(*Handler).RespondWorkflowTaskCompleted\n\t/Users/leow/go/pkg/mod/go.temporal.io/[email protected]/service/history/handler.go:489\ngo.temporal.io/server/api/historyservice/v1._HistoryService_RespondWorkflowTaskCompleted_Handler.func1\n\t/Users/leow/go/pkg/mod/go.temporal.io/[email protected]/api/historyservice/v1/service.pb.go:969\ngo.temporal.io/server/common/rpc/interceptor.(*RateLimitInterceptor).Intercept\n\t/Users/leow/go/pkg/mod/go.temporal.io/[email protected]/common/rpc/interceptor/rate_limit.go:83\ngoogle.golang.org/grpc.chainUnaryInterceptors.func1.1\n\t/Users/leow/go/pkg/mod/google.golang.org/[email protected]/server.go:1131\ngo.temporal.io/server/common/rpc/interceptor.(*TelemetryInterceptor).Intercept\n\t/Users/leow/go/pkg/mod/go.temporal.io/[email protected]/common/rpc/interceptor/telemetry.go:108\ngoogle.golang.org/grpc.chainUnaryInterceptors.func1.1\n\t/Users/leow/go/pkg/mod/google.golang.org/[email protected]/server.go:1134\ngo.temporal.io/server/common/metrics.NewServerMetricsTrailerPropagatorInterceptor.func1\n\t/Users/leow/go/pkg/mod/go.temporal.io/[email protected]/common/metrics/grpc.go:113\ngoogle.golang.org/grpc.chainUnaryInterceptors.func1.1\n\t/Users/leow/go/pkg/mod/google.golang.org/[email protected]/server.go:1134\ngo.temporal.io/server/common/metrics.NewServerMetricsContextInjectorInterceptor.func1\n\t/Users/leow/go/pkg/mod/go.temporal.io/[email protected]/common/metrics/grpc.go:66\ngoogle.golang.org/grpc.chainUnaryInterceptors.func1.1\n\t/Users/leow/go/pkg/mod/google.golang.org/[email protected]/server.go:1134\ngo.temporal.io/server/common/rpc.ServiceErrorInterceptor\n\t/Users/leow/go/pkg/mod/go.temporal.io/[email protected]/common/rpc/grpc.go:131\ngoogle.golang.org/grpc.chainUnaryInterceptors.func1.1\n\t/Users/leow/go/pkg/mod/google.golang.org/[email protected]/server.go:1134\ngoogle.golang.org/grpc.chainUnaryInterceptors.func1\n\t/Users/leow/go/pkg/mod/google.golang.org/[email protected]/server.go:1136\ngo.temporal.io/server/api/historyservice/v1._HistoryService_RespondWorkflowTaskCompleted_Handler\n\t/Users/leow/go/pkg/mod/go.temporal.io/[email protected]/api/historyservice/v1/service.pb.go:971\ngoogle.golang.org/grpc.(*Server).processUnaryRPC\n\t/Users/leow/go/pkg/mod/google.golang.org/[email protected]/server.go:1297\ngoogle.golang.org/grpc.(*Server).handleStream\n\t/Users/leow/go/pkg/mod/google.golang.org/[email protected]/server.go:1626\ngoogle.golang.org/grpc.(*Server).serveStreams.func1.2\n\t/Users/leow/go/pkg/mod/google.golang.org/[email protected]/server.go:941"}
Is your feature request related to a problem? Please describe.
Right now it's very hard to set dynamic config values
Describe the solution you'd like
system.forceSearchAttributesCacheRefreshOnRead
dynamic config value as true
which disables the search attribute cacheThis should probably wait on 1.18 when the dynamicconfig.Client gets greatly simplified down to one method (already the case in master
).
Golang Server for https://github.com/temporalio/ui
Library home page: https://proxy.golang.org/github.com/temporalio/ui-server/v2/@v/v2.6.2.zip
Found in HEAD commit: 56f2fecade180afece61567863f71550e21ddd13
CVE | Severity | CVSS | Dependency | Type | Fixed in | Remediation Available |
---|---|---|---|---|---|---|
WS-2021-0461 | Medium | 6.1 | github.com/temporalio/ui-server/v2-v2.6.2 | Direct | swagger-ui - 4.1.3;swagger-ui-dist - 4.1.3 | ❌ |
CVE-2018-25031 | Medium | 4.3 | github.com/temporalio/ui-server/v2-v2.6.2 | Direct | swagger-ui - 4.1.3;swagger-ui-dist - 4.1.3 | ❌ |
Golang Server for https://github.com/temporalio/ui
Library home page: https://proxy.golang.org/github.com/temporalio/ui-server/v2/@v/v2.6.2.zip
Dependency Hierarchy:
Found in HEAD commit: 56f2fecade180afece61567863f71550e21ddd13
Found in base branch: main
SwaggerUI supports displaying remote OpenAPI definitions through the ?url parameter. This enables robust demonstration capabilities on sites like petstore.swagger.io, editor.swagger.io, and similar sites, where users often want to see what their OpenAPI definitions would look like rendered.
However, this functionality may pose a risk for users who host their own SwaggerUI instances. In particular, including remote OpenAPI definitions opens a vector for phishing attacks by abusing the trusted names/domains of self-hosted instances.
Resolution:
We've made the decision to disable query parameters (#4872) by default starting with SwaggerUI version 4.1.3. Please update to this version when it becomes available (ETA: 2021 December). Users will still be able to be re-enable the options at their discretion. We'll continue to enable query parameters on the Swagger demo sites.
Publish Date: 2021-12-09
URL: WS-2021-0461
Base Score Metrics:
Type: Upgrade version
Origin: GHSA-qrmm-w75w-3wpx
Release Date: 2021-12-09
Fix Resolution: swagger-ui - 4.1.3;swagger-ui-dist - 4.1.3
Golang Server for https://github.com/temporalio/ui
Library home page: https://proxy.golang.org/github.com/temporalio/ui-server/v2/@v/v2.6.2.zip
Dependency Hierarchy:
Found in HEAD commit: 56f2fecade180afece61567863f71550e21ddd13
Found in base branch: main
Swagger UI before 4.1.3 could allow a remote attacker to conduct spoofing attacks. By persuading a victim to open a crafted URL, an attacker could exploit this vulnerability to display remote OpenAPI definitions.
Publish Date: 2022-03-11
URL: CVE-2018-25031
Base Score Metrics:
Type: Upgrade version
Origin: GHSA-qrmm-w75w-3wpx
Release Date: 2022-03-11
Fix Resolution: swagger-ui - 4.1.3;swagger-ui-dist - 4.1.3
The error that is being raised is super misleading when the address is already binded to another process. Ideally we should get something like
: Address already in use - bind(2) for "127.0.0.1" port 3001 (Errno::EADDRINUSE)
... backtrace ...
Panic error with no context in it.
❯ ./spec/support/go_server/main 3000 s [3.1.2]
2022/12/07 22:55:29 Let's do this!
2022/12/07 22:55:29 Starting server on port 3000 for namespace s
panic: Client must be created with client.Dial() or client.NewLazyClient()
goroutine 203 [running]:
go.temporal.io/sdk/internal.NewWorker(...)
/Users/laertipapa/go/pkg/mod/go.temporal.io/[email protected]/internal/worker.go:233
go.temporal.io/sdk/worker.New({0x0?, 0x0?}, {0x300c11c?, 0x23?}, {0xa, 0x0, 0x0, 0x0, 0x0, 0x8, ...})
/Users/laertipapa/go/pkg/mod/go.temporal.io/[email protected]/worker/worker.go:223 +0xdd
go.temporal.io/server/service/worker/scanner.(*Scanner).Start(0xc00030d8f0)
/Users/laertipapa/go/pkg/mod/go.temporal.io/[email protected]/service/worker/scanner/scanner.go:153 +0x7a6
go.temporal.io/server/service/worker.(*Service).startScanner(0xc0002d8180)
/Users/laertipapa/go/pkg/mod/go.temporal.io/[email protected]/service/worker/service.go:472 +0x22a
go.temporal.io/server/service/worker.(*Service).Start(0x0?)
/Users/laertipapa/go/pkg/mod/go.temporal.io/[email protected]/service/worker/service.go:374 +0x3dc
go.temporal.io/server/service/worker.ServiceLifetimeHooks.func1.1({0x34d8248?, 0xc0002d8180?}, 0xc000368880?)
/Users/laertipapa/go/pkg/mod/go.temporal.io/[email protected]/service/worker/fx.go:155 +0x2c
created by go.temporal.io/server/service/worker.ServiceLifetimeHooks.func1
/Users/laertipapa/go/pkg/mod/go.temporal.io/[email protected]/service/worker/fx.go:153 +0x98
./main 3001 s
Trying to start Temporalite in a sandboxed environment (no $HOME or $XDG_CONFIG_HOME environment variable set), specifying an absolute path should work.
An error "$HOME is not defined" is returned.
unset HOME && temporalite start --namespace default -f $(mktemp -d)/test.db
The problem is that the creation of a new server will fail when the default configuration is created - https://github.com/temporalio/temporalite/blob/f97473349ffc5f52640609c6cddbb61bfa96921f/internal/liteconfig/config.go#L81
func NewDefaultConfig() (*Config, error) {
userConfigDir, err := os.UserConfigDir()
if err != nil {
return nil, fmt.Errorf("cannot determine user config directory: %w", err)
}
// ...
In sandboxed environments os.UserConfigDir()
can return an error which is not handled here. If the path to the db file is explicitly specified it should still work. Maybe if os.UserConfigDir()
returns an error, the db should be created in the current directory as a fallback.
Hi, I am starting my experiments with Temporal and the getting started docs resulted in an error for me.
Temporal started normally when I pre-created the missing directory, but Temporal should probably either create it, or the docs should mention it is needed
mkdir -p /home/vpavlin/.config/temporalite/db
$ /home/vpavlin/devel/bin/temporalite start --namespace default
{"level":"info","ts":"2022-09-05T08:29:27.156+0200","msg":"Successfully saved cluster metadata.","component":"metadata-initializer","cluster-name":"active","logging-call-at":"fx.go:631"}
$ /home/vpavlin/devel/bin/temporalite start --namespace default
2022/09/05 08:27:57 error setting up schema: stat /home/vpavlin/.config/temporalite/db: no such file or directory
go install github.com/temporalio/temporalite/cmd/temporalite@latest
temporalite start --namespace default
Golang Server for https://github.com/temporalio/ui
Library home page: https://proxy.golang.org/github.com/temporalio/ui-server/v2/@v/v2.5.1.zip
Found in HEAD commit: 76d41244e782587db90e1b8e19ee16a1ee38a7c0
CVE | Severity | CVSS | Dependency | Type | Fixed in | Remediation Available |
---|---|---|---|---|---|---|
WS-2021-0461 | Medium | 6.1 | github.com/temporalio/ui-server/v2-v2.5.1 | Direct | swagger-ui - 4.1.3;swagger-ui-dist - 4.1.3 | ❌ |
CVE-2018-25031 | Medium | 4.3 | github.com/temporalio/ui-server/v2-v2.5.1 | Direct | swagger-ui - 4.1.3;swagger-ui-dist - 4.1.3 | ❌ |
Golang Server for https://github.com/temporalio/ui
Library home page: https://proxy.golang.org/github.com/temporalio/ui-server/v2/@v/v2.5.1.zip
Dependency Hierarchy:
Found in HEAD commit: 76d41244e782587db90e1b8e19ee16a1ee38a7c0
Found in base branch: main
SwaggerUI supports displaying remote OpenAPI definitions through the ?url parameter. This enables robust demonstration capabilities on sites like petstore.swagger.io, editor.swagger.io, and similar sites, where users often want to see what their OpenAPI definitions would look like rendered.
However, this functionality may pose a risk for users who host their own SwaggerUI instances. In particular, including remote OpenAPI definitions opens a vector for phishing attacks by abusing the trusted names/domains of self-hosted instances.
Resolution:
We've made the decision to disable query parameters (#4872) by default starting with SwaggerUI version 4.1.3. Please update to this version when it becomes available (ETA: 2021 December). Users will still be able to be re-enable the options at their discretion. We'll continue to enable query parameters on the Swagger demo sites.
Publish Date: 2021-12-09
URL: WS-2021-0461
Base Score Metrics:
Type: Upgrade version
Origin: GHSA-qrmm-w75w-3wpx
Release Date: 2021-12-09
Fix Resolution: swagger-ui - 4.1.3;swagger-ui-dist - 4.1.3
Golang Server for https://github.com/temporalio/ui
Library home page: https://proxy.golang.org/github.com/temporalio/ui-server/v2/@v/v2.5.1.zip
Dependency Hierarchy:
Found in HEAD commit: 76d41244e782587db90e1b8e19ee16a1ee38a7c0
Found in base branch: main
Swagger UI before 4.1.3 could allow a remote attacker to conduct spoofing attacks. By persuading a victim to open a crafted URL, an attacker could exploit this vulnerability to display remote OpenAPI definitions.
Publish Date: 2022-03-11
URL: CVE-2018-25031
Base Score Metrics:
Type: Upgrade version
Origin: GHSA-qrmm-w75w-3wpx
Release Date: 2022-03-11
Fix Resolution: swagger-ui - 4.1.3;swagger-ui-dist - 4.1.3
Golang Server for https://github.com/temporalio/ui
Library home page: https://proxy.golang.org/github.com/temporalio/ui-server/v2/@v/v2.6.0.zip
CVE | Severity | CVSS | Dependency | Type | Fixed in | Remediation Available |
---|---|---|---|---|---|---|
WS-2021-0461 | Medium | 6.1 | github.com/temporalio/ui-server/v2-v2.6.0 | Direct | swagger-ui - 4.1.3;swagger-ui-dist - 4.1.3 | ❌ |
CVE-2018-25031 | Medium | 4.3 | github.com/temporalio/ui-server/v2-v2.6.0 | Direct | swagger-ui - 4.1.3;swagger-ui-dist - 4.1.3 | ❌ |
Golang Server for https://github.com/temporalio/ui
Library home page: https://proxy.golang.org/github.com/temporalio/ui-server/v2/@v/v2.6.0.zip
Dependency Hierarchy:
Found in base branch: main
SwaggerUI supports displaying remote OpenAPI definitions through the ?url parameter. This enables robust demonstration capabilities on sites like petstore.swagger.io, editor.swagger.io, and similar sites, where users often want to see what their OpenAPI definitions would look like rendered.
However, this functionality may pose a risk for users who host their own SwaggerUI instances. In particular, including remote OpenAPI definitions opens a vector for phishing attacks by abusing the trusted names/domains of self-hosted instances.
Resolution:
We've made the decision to disable query parameters (#4872) by default starting with SwaggerUI version 4.1.3. Please update to this version when it becomes available (ETA: 2021 December). Users will still be able to be re-enable the options at their discretion. We'll continue to enable query parameters on the Swagger demo sites.
Publish Date: 2021-12-09
URL: WS-2021-0461
Base Score Metrics:
Type: Upgrade version
Origin: GHSA-qrmm-w75w-3wpx
Release Date: 2021-12-09
Fix Resolution: swagger-ui - 4.1.3;swagger-ui-dist - 4.1.3
Golang Server for https://github.com/temporalio/ui
Library home page: https://proxy.golang.org/github.com/temporalio/ui-server/v2/@v/v2.6.0.zip
Dependency Hierarchy:
Found in base branch: main
Swagger UI before 4.1.3 could allow a remote attacker to conduct spoofing attacks. By persuading a victim to open a crafted URL, an attacker could exploit this vulnerability to display remote OpenAPI definitions.
Publish Date: 2022-03-11
URL: CVE-2018-25031
Base Score Metrics:
Type: Upgrade version
Origin: GHSA-qrmm-w75w-3wpx
Release Date: 2022-03-11
Fix Resolution: swagger-ui - 4.1.3;swagger-ui-dist - 4.1.3
Allow external users visit the service through ip
service can only be visited on localhost.
If the service is packaged into a docker container, then other containers cannot visit.
Great project! Really makes temporal much more accessible and opens up some cool edge use cases (eg. raspberry pi, etc). While playing around for a low resource use case I noticed performance was lower than expected.
Is your feature request related to a problem? Please describe.
Using the Maru benchmarking tool I was getting ~1 workflows/s (3 activities) with persistence turned on. When using sqlite in memory, this increased to ~20 workflows/s. Sqlite has additional pragma settings that could improve the persisted perf.
Describe the solution you'd like
Add ability to CLI to adjusting sqlite connection attributes.
Tinkering around and hardcoding the following significantly improved performance to ~10 workflows/s including disk persistence:
sqliteConfig.ConnectAttributes["_journal"] = "WAL"
sqliteConfig.ConnectAttributes["_sync"] = "NORMAL"
It would be beneficial to have the ability to adjust the sqlite connection attributes. This could be done using a flag (eq --wal
) to enable WAL support, or just allow arbitrary sqlite connect attributes (eg. --sqlite-attrib _journal=WAL --sqlite-attrib _sync=NORMAL
) to be set.
Is your feature request related to a problem? Please describe.
When updating Temporalite's underlying temporal server version, the sqlite driver may require migrations in order to be compatible with old sqlite database files.
Describe the solution you'd like
Describe alternatives you've considered
Temporal provides a sql-schema-tool that we could probably invoke outside of Temporalite: https://github.com/temporalio/temporal/blob/release/v1.17.x/tools/sql/README.md
I think adding subcommands and/or flags to temporalite
directly should make for a much nicer user experience however.
Additional context
It would be great if Temporalite was published on nixpkgs :)
Is your feature request related to a problem? Please describe.
There's a Dockerfile provided but it would be useful to create an "official" docker distribution, via Dockerhub or GitHub packages
Describe the solution you'd like
It could be done via a GitHub workflow, like this: https://docs.github.com/en/actions/publishing-packages/publishing-docker-images#publishing-images-to-github-packages
the go install github.com/DataDog/temporalite/cmd/temporalite@latest
command should produce the binary for temporalite without any errors.
Getting this error when trying to install temporalite as suggested in Getting started page
../pkg/mod/go.temporal.io/[email protected]/common/metrics/config.go:31:2: ambiguous import: found package github.com/cactus/go-statsd-client/statsd in multiple modules:
github.com/cactus/go-statsd-client v3.1.1+incompatible (~/go/pkg/mod/github.com/cactus/[email protected]+incompatible/statsd)
github.com/cactus/go-statsd-client/statsd v0.0.0-20200423205355-cb0885a1018c (~/go/pkg/mod/github.com/cactus/go-statsd-client/[email protected])
go install github.com/DataDog/temporalite/cmd/temporalite@latest
Add this statement to go.mod file solved the problem on my side:
replace github.com/cactus/go-statsd-client => github.com/cactus/go-statsd-client v3.2.1+incompatible
Is your feature request related to a problem? Please describe.
I think we need to give alternative ways for installation temporalite. There is an easy way to use temporalite binary like homebrew for mac users. is there any obstacle to it?
Describe the solution you'd like
We can integrate brew release mechanism with goreleaser in an autonomous way and people can install temporalite easily on their macs.
Describe alternatives you've considered
I don't have alternative
Additional context
if it's acceptable I can work on it. Temporalio project has already homebrew repository. I can easily integrate with it in an autonomous way .
Golang Server for https://github.com/temporalio/ui
Library home page: https://proxy.golang.org/github.com/temporalio/ui-server/v2/@v/v2.8.1.zip
Found in HEAD commit: 93862e567fbc04975632cbd0df362110e74b1dd1
CVE | Severity | CVSS | Dependency | Type | Fixed in (github.com/temporalio/ui-server/v2-v2.8.1 version) | Remediation Available |
---|---|---|---|---|---|---|
WS-2021-0461 | Medium | 6.1 | github.com/temporalio/ui-server/v2-v2.8.1 | Direct | swagger-ui - 4.1.3;swagger-ui-dist - 4.1.3 | ❌ |
CVE-2018-25031 | Medium | 4.3 | github.com/temporalio/ui-server/v2-v2.8.1 | Direct | swagger-ui - 4.1.3;swagger-ui-dist - 4.1.3 | ❌ |
Golang Server for https://github.com/temporalio/ui
Library home page: https://proxy.golang.org/github.com/temporalio/ui-server/v2/@v/v2.8.1.zip
Dependency Hierarchy:
Found in HEAD commit: 93862e567fbc04975632cbd0df362110e74b1dd1
Found in base branch: main
SwaggerUI supports displaying remote OpenAPI definitions through the ?url parameter. This enables robust demonstration capabilities on sites like petstore.swagger.io, editor.swagger.io, and similar sites, where users often want to see what their OpenAPI definitions would look like rendered.
However, this functionality may pose a risk for users who host their own SwaggerUI instances. In particular, including remote OpenAPI definitions opens a vector for phishing attacks by abusing the trusted names/domains of self-hosted instances.
Resolution:
We've made the decision to disable query parameters (#4872) by default starting with SwaggerUI version 4.1.3. Please update to this version when it becomes available (ETA: 2021 December). Users will still be able to be re-enable the options at their discretion. We'll continue to enable query parameters on the Swagger demo sites.
Publish Date: 2021-12-09
URL: WS-2021-0461
Base Score Metrics:
Type: Upgrade version
Origin: GHSA-qrmm-w75w-3wpx
Release Date: 2021-12-09
Fix Resolution: swagger-ui - 4.1.3;swagger-ui-dist - 4.1.3
Golang Server for https://github.com/temporalio/ui
Library home page: https://proxy.golang.org/github.com/temporalio/ui-server/v2/@v/v2.8.1.zip
Dependency Hierarchy:
Found in HEAD commit: 93862e567fbc04975632cbd0df362110e74b1dd1
Found in base branch: main
Swagger UI before 4.1.3 could allow a remote attacker to conduct spoofing attacks. By persuading a victim to open a crafted URL, an attacker could exploit this vulnerability to display remote OpenAPI definitions.
Publish Date: 2022-03-11
URL: CVE-2018-25031
Base Score Metrics:
Type: Upgrade version
Origin: GHSA-qrmm-w75w-3wpx
Release Date: 2022-03-11
Fix Resolution: swagger-ui - 4.1.3;swagger-ui-dist - 4.1.3
Should have installed correctly
go install github.com/temporalio/temporalite/cmd/temporalite@latest
go: downloading github.com/temporalio/temporalite v0.3.0
go: github.com/temporalio/temporalite/cmd/temporalite@latest (in github.com/temporalio/[email protected]):
The go.mod file for the module providing named packages contains one or
more replace directives. It must not contain directives that would cause
it to be interpreted differently than if it were the main module.
Golang Server for https://github.com/temporalio/ui
Library home page: https://proxy.golang.org/github.com/temporalio/ui-server/v2/@v/v2.8.3.zip
Path to dependency file: /go.mod
Path to vulnerable library: /go.mod
Found in HEAD commit: fdc0165780ae650730a59957dc8b227794444190
CVE | Severity | CVSS | Dependency | Type | Fixed in (github.com/temporalio/ui-server/v2-v2.8.3 version) | Remediation Possible** |
---|---|---|---|---|---|---|
CVE-2018-25031 | Medium | 4.3 | github.com/temporalio/ui-server/v2-v2.8.3 | Direct | swagger-ui - 4.1.3;swagger-ui-dist - 4.1.3 | ✅ |
**In some cases, Remediation PR cannot be created automatically for a vulnerability despite the availability of remediation
Golang Server for https://github.com/temporalio/ui
Library home page: https://proxy.golang.org/github.com/temporalio/ui-server/v2/@v/v2.8.3.zip
Path to dependency file: /go.mod
Path to vulnerable library: /go.mod
Dependency Hierarchy:
Found in HEAD commit: fdc0165780ae650730a59957dc8b227794444190
Found in base branch: main
Swagger UI before 4.1.3 could allow a remote attacker to conduct spoofing attacks. By persuading a victim to open a crafted URL, an attacker could exploit this vulnerability to display remote OpenAPI definitions.
Mend Note: Converted from WS-2021-0461, on 2022-12-21.
Publish Date: 2022-03-11
URL: CVE-2018-25031
Base Score Metrics:
Type: Upgrade version
Origin: GHSA-qrmm-w75w-3wpx
Release Date: 2022-03-11
Fix Resolution: swagger-ui - 4.1.3;swagger-ui-dist - 4.1.3
⛑️ Automatic Remediation will be attempted for this issue.
⛑️Automatic Remediation will be attempted for this issue.
Running docker build .
in the temporalite root folder when it is checked out as a submodule should complete with success and yield a temporalite image.
error obtaining VCS status: exit status 128
Use -buildvcs=false to disable VCS stamping.
~/temporal-ts-example/temporalite$ docker build .
Sending build context to Docker daemon 248.8kB
Step 1/10 : FROM golang:1.18 as builder
---> 5fedf7be08ce
Step 2/10 : WORKDIR ${GOPATH:-/go}/src/temporalite
---> Using cache
---> 6eade41865ba
Step 3/10 : COPY . .
---> 07766e30a072
Step 4/10 : RUN go mod download
---> Running in 9cae528d1223
Removing intermediate container 9cae528d1223
---> b1e44ea7077d
Step 5/10 : RUN go get -d -v ./...
---> Running in 23828201d0e2
Removing intermediate container 23828201d0e2
---> b523f95c1c35
Step 6/10 : RUN go build -o ${GOPATH:-/go}/bin/ ${GOPATH:-/go}/src/temporalite/cmd/temporalite
---> Running in c13724713caf
error obtaining VCS status: exit status 128
Use -buildvcs=false to disable VCS stamping.
The command '/bin/sh -c go build -o ${GOPATH:-/go}/bin/ ${GOPATH:-/go}/src/temporalite/cmd/temporalite' returned a non-zero code: 1
git init
)git submodule add https://github.com/temporalio/temporalite.git
cd temporalite && docker build .
$ git log -n1
commit 81d76ce23f943bcb6468d793e7dcba436b6cfc55 (HEAD -> main, origin/main, origin/HEAD)
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu Oct 20 04:15:00 2022 +0000
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.6 LTS"
$ docker version
Client: Docker Engine - Community
Version: 20.10.18
API version: 1.41
Go version: go1.18.6
Git commit: b40c2f6
Built: Thu Sep 8 23:11:34 2022
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.18
API version: 1.41 (minimum version 1.12)
Go version: go1.18.6
Git commit: e42327a
Built: Thu Sep 8 23:09:28 2022
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.8
GitCommit: 9cd3357b7fd7218e4aec3eae239db1f68a5a6ec6
runc:
Version: 1.1.4
GitCommit: v1.1.4-0-g5fd4c4d
docker-init:
Version: 0.19.0
GitCommit: de40ad0
Golang Server for https://github.com/temporalio/ui
Library home page: https://proxy.golang.org/github.com/temporalio/ui-server/v2/@v/v2.7.1.zip
Found in HEAD commit: 61fc4f32a63860c6ff5fbd83dc393bc623f432ed
CVE | Severity | CVSS | Dependency | Type | Fixed in | Remediation Available |
---|---|---|---|---|---|---|
WS-2021-0461 | Medium | 6.1 | github.com/temporalio/ui-server/v2-v2.7.1 | Direct | swagger-ui - 4.1.3;swagger-ui-dist - 4.1.3 | ❌ |
CVE-2018-25031 | Medium | 4.3 | github.com/temporalio/ui-server/v2-v2.7.1 | Direct | swagger-ui - 4.1.3;swagger-ui-dist - 4.1.3 | ❌ |
Golang Server for https://github.com/temporalio/ui
Library home page: https://proxy.golang.org/github.com/temporalio/ui-server/v2/@v/v2.7.1.zip
Dependency Hierarchy:
Found in HEAD commit: 61fc4f32a63860c6ff5fbd83dc393bc623f432ed
Found in base branch: main
SwaggerUI supports displaying remote OpenAPI definitions through the ?url parameter. This enables robust demonstration capabilities on sites like petstore.swagger.io, editor.swagger.io, and similar sites, where users often want to see what their OpenAPI definitions would look like rendered.
However, this functionality may pose a risk for users who host their own SwaggerUI instances. In particular, including remote OpenAPI definitions opens a vector for phishing attacks by abusing the trusted names/domains of self-hosted instances.
Resolution:
We've made the decision to disable query parameters (#4872) by default starting with SwaggerUI version 4.1.3. Please update to this version when it becomes available (ETA: 2021 December). Users will still be able to be re-enable the options at their discretion. We'll continue to enable query parameters on the Swagger demo sites.
Publish Date: 2021-12-09
URL: WS-2021-0461
Base Score Metrics:
Type: Upgrade version
Origin: GHSA-qrmm-w75w-3wpx
Release Date: 2021-12-09
Fix Resolution: swagger-ui - 4.1.3;swagger-ui-dist - 4.1.3
Golang Server for https://github.com/temporalio/ui
Library home page: https://proxy.golang.org/github.com/temporalio/ui-server/v2/@v/v2.7.1.zip
Dependency Hierarchy:
Found in HEAD commit: 61fc4f32a63860c6ff5fbd83dc393bc623f432ed
Found in base branch: main
Swagger UI before 4.1.3 could allow a remote attacker to conduct spoofing attacks. By persuading a victim to open a crafted URL, an attacker could exploit this vulnerability to display remote OpenAPI definitions.
Publish Date: 2022-03-11
URL: CVE-2018-25031
Base Score Metrics:
Type: Upgrade version
Origin: GHSA-qrmm-w75w-3wpx
Release Date: 2022-03-11
Fix Resolution: swagger-ui - 4.1.3;swagger-ui-dist - 4.1.3
Is your feature request related to a problem? Please describe.
In order to not see output, I have to add > /dev/null 2>&1 &
like:
temporalite start --namespace default --ephemeral > /dev/null 2>&1 &
Describe the solution you'd like
Something like docker-compose's -d flag:
-d, --detach Detached mode: Run containers in the background
Workflow should terminate after clicking on "Terminate" in the UI
Cannot terminate workflow
pops up
Log of the failure:
{
"time": "2023-03-07T11:32:39.178439386Z",
"id": "",
"remote_ip": "172.20.0.1",
"host": "temporal:8233",
"method": "POST",
"uri": "/api/v1/namespaces/dev/workflows/Plan%2520(planId%253A%25201)/runs/b0523d3e-d771-4bb5-b78d-d4063b23c2e0/terminate?",
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36",
"status": 400,
"error": "code=400, message=missing csrf token in request header",
"latency": 27652,
"latency_human": "27.652µs",
"bytes_in": 16,
"bytes_out": 51
}
Is your feature request related to a problem? Please describe.
Users should be able to quickly spin up Temporalite instances in container environments like Kubernetes, docker-compose, and various CI providers.
Describe the solution you'd like
Configure goreleaser to build & push container images for Temporalite to a temporalio owned container repository.
Describe alternatives you've considered
Docker compose users can already leverage Temporalite by building from source, eg.
# docker-compose.yaml
version: '3.9'
services:
temporalite:
build: https://github.com/temporalio/temporalite.git#main
ports:
- 7233:7233
- 8233:8233
Additional context
Temporalite installs successfully using go install
Installation fails with the following error:
go: github.com/temporalio/temporalite/cmd/[email protected] (in github.com/temporalio/[email protected]):
The go.mod file for the module providing named packages contains one or
more replace directives. It must not contain directives that would cause
it to be interpreted differently than if it were the main module.
go install github.com/temporalio/temporalite/cmd/[email protected]
I don't think this is really a "bug" but a common issue for me nonetheless. When trying to start temporalite
it fails for me with the following error message:
{"level":"fatal","ts":"2021-12-31T16:21:07.116+0100","msg":"Failed to start ringpop listener","error":"listen tcp 127.0.0.1:7335: bind: address already in use","address":"127.0.0.1:7335","logging-call-at":"rpc.go:195","stacktrace":"go.temporal.io/server/common/log.(*zapLogger).Fatal\n\t/Users/schickling/Code/go/pkg/mod/go.temporal.io/[email protected]/common/log/zap_logger.go:150\ngo.temporal.io/server/common/rpc.(*RPCFactory).GetRingpopChannel\n\t/Users/schickling/Code/go/pkg/mod/go.temporal.io/[email protected]/common/rpc/rpc.go:195\ngo.temporal.io/server/temporal.newBootstrapParams.func1\n\t/Users/schickling/Code/go/pkg/mod/go.temporal.io/[email protected]/temporal/server_impl.go:212\ngo.temporal.io/server/common/resource.MembershipFactoryProvider\n\t/Users/schickling/Code/go/pkg/mod/go.temporal.io/[email protected]/common/resource/fx.go:231\nreflect.Value.call\n\t/nix/store/wapbf2yn132n0644hzaic6qzrj62qjd3-go-1.17.3/share/go/src/reflect/value.go:543\nreflect.Value.Call\n\t/nix/store/wapbf2yn132n0644hzaic6qzrj62qjd3-go-1.17.3/share/go/src/reflect/value.go:339\ngo.uber.org/dig.defaultInvoker\n\t/Users/schickling/Code/go/pkg/mod/go.uber.org/[email protected]/dig.go:439\ngo.uber.org/dig.(*node).Call\n\t/Users/schickling/Code/go/pkg/mod/go.uber.org/[email protected]/dig.go:912\ngo.uber.org/dig.paramSingle.Build\n\t/Users/schickling/Code/go/pkg/mod/go.uber.org/[email protected]/param.go:240\ngo.uber.org/dig.paramList.BuildList\n\t/Users/schickling/Code/go/pkg/mod/go.uber.org/[email protected]/param.go:196\ngo.uber.org/dig.(*node).Call\n\t/Users/schickling/Code/go/pkg/mod/go.uber.org/[email protected]/dig.go:903\ngo.uber.org/dig.paramSingle.Build\n\t/Users/schickling/Code/go/pkg/mod/go.uber.org/[email protected]/param.go:240\ngo.uber.org/dig.paramList.BuildList\n\t/Users/schickling/Code/go/pkg/mod/go.uber.org/[email protected]/param.go:196\ngo.uber.org/dig.(*Container).Invoke\n\t/Users/schickling/Code/go/pkg/mod/go.uber.org/[email protected]/dig.go:587\ngo.uber.org/fx.(*App).executeInvoke\n\t/Users/schickling/Code/go/pkg/mod/go.uber.org/[email protected]/app.go:873\ngo.uber.org/fx.(*App).executeInvokes\n\t/Users/schickling/Code/go/pkg/mod/go.uber.org/[email protected]/app.go:846\ngo.uber.org/fx.New\n\t/Users/schickling/Code/go/pkg/mod/go.uber.org/[email protected]/app.go:594\ngo.temporal.io/server/temporal.MatchingServiceProvider\n\t/Users/schickling/Code/go/pkg/mod/go.temporal.io/[email protected]/temporal/fx.go:324\nreflect.Value.call\n\t/nix/store/wapbf2yn132n0644hzaic6qzrj62qjd3-go-1.17.3/share/go/src/reflect/value.go:543\nreflect.Value.Call\n\t/nix/store/wapbf2yn132n0644hzaic6qzrj62qjd3-go-1.17.3/share/go/src/reflect/value.go:339\ngo.uber.org/dig.defaultInvoker\n\t/Users/schickling/Code/go/pkg/mod/go.uber.org/[email protected]/dig.go:439\ngo.uber.org/dig.(*node).Call\n\t/Users/schickling/Code/go/pkg/mod/go.uber.org/[email protected]/dig.go:912\ngo.uber.org/dig.paramGroupedSlice.Build\n\t/Users/schickling/Code/go/pkg/mod/go.uber.org/[email protected]/param.go:458\ngo.uber.org/dig.paramObjectField.Build\n\t/Users/schickling/Code/go/pkg/mod/go.uber.org/[email protected]/param.go:396\ngo.uber.org/dig.paramObject.Build\n\t/Users/schickling/Code/go/pkg/mod/go.uber.org/[email protected]/param.go:323\ngo.uber.org/dig.paramList.BuildList\n\t/Users/schickling/Code/go/pkg/mod/go.uber.org/[email protected]/param.go:196\ngo.uber.org/dig.(*node).Call\n\t/Users/schickling/Code/go/pkg/mod/go.uber.org/[email protected]/dig.go:903\ngo.uber.org/dig.paramSingle.Build\n\t/Users/schickling/Code/go/pkg/mod/go.uber.org/[email protected]/param.go:240\ngo.uber.org/dig.paramList.BuildList\n\t/Users/schickling/Code/go/pkg/mod/go.uber.org/[email protected]/param.go:196\ngo.uber.org/dig.(*node).Call\n\t/Users/schickling/Code/go/pkg/mod/go.uber.org/[email protected]/dig.go:903\ngo.uber.org/dig.paramSingle.Build\n\t/Users/schickling/Code/go/pkg/mod/go.uber.org/[email protected]/param.go:240\ngo.uber.org/dig.paramList.BuildList\n\t/Users/schickling/Code/go/pkg/mod/go.uber.org/[email protected]/param.go:196\ngo.uber.org/dig.(*Container).Invoke\n\t/Users/schickling/Code/go/pkg/mod/go.uber.org/[email protected]/dig.go:587\ngo.uber.org/fx.(*App).executeInvoke\n\t/Users/schickling/Code/go/pkg/mod/go.uber.org/[email protected]/app.go:873\ngo.uber.org/fx.(*App).executeInvokes\n\t/Users/schickling/Code/go/pkg/mod/go.uber.org/[email protected]/app.go:846\ngo.uber.org/fx.New\n\t/Users/schickling/Code/go/pkg/mod/go.uber.org/[email protected]/app.go:594\ngo.temporal.io/server/temporal.NewServerFx\n\t/Users/schickling/Code/go/pkg/mod/go.temporal.io/[email protected]/temporal/fx.go:97\ngo.temporal.io/server/temporal.NewServer\n\t/Users/schickling/Code/go/pkg/mod/go.temporal.io/[email protected]/temporal/server.go:58\ngithub.com/DataDog/temporalite.NewServer\n\t/Users/schickling/Code/go/pkg/mod/github.com/!data!dog/[email protected]/server.go:91\nmain.buildCLI.func2\n\t/Users/schickling/Code/go/pkg/mod/github.com/!data!dog/[email protected]/cmd/temporalite/main.go:149\ngithub.com/urfave/cli/v2.(*Command).Run\n\t/Users/schickling/Code/go/pkg/mod/github.com/urfave/cli/[email protected]/command.go:163\ngithub.com/urfave/cli/v2.(*App).RunContext\n\t/Users/schickling/Code/go/pkg/mod/github.com/urfave/cli/[email protected]/app.go:313\ngithub.com/urfave/cli/v2.(*App).Run\n\t/Users/schickling/Code/go/pkg/mod/github.com/urfave/cli/[email protected]/app.go:224\nmain.main\n\t/Users/schickling/Code/go/pkg/mod/github.com/!data!dog/[email protected]/cmd/temporalite/main.go:45\nruntime.main\n\t/nix/store/wapbf2yn132n0644hzaic6qzrj62qjd3-go-1.17.3/share/go/src/runtime/proc.go:255"}
The terminal process "/Users/schickling/.nix-profile/bin/fish '-c', 'temporalite start --filename tmp/temporalite.db --namespace default'" terminated with exit code: 1.
This seems to be due to a port conflict on 7335
between Temporal via ringpop and figma_agent
.
My current work around is to run killall figma_agent
Update: After learning more about ringpop it doesn't seem to be needed by temporalite and thus should not expose this port.
Be able to run temporalite start --namespace default
after installing
Here's what I did:
$ go version
go version go1.18 linux/amd64
$ go install github.com/DataDog/temporalite/cmd/temporalite@latest
$ temporalite start --namespace default
2022/03/18 10:52:57 proto: duplicate proto type registered: temporal.api.workflowservice.v1.RegisterNamespaceRequest
2022/03/18 10:52:57 proto: duplicate proto type registered: temporal.api.workflowservice.v1.RegisterNamespaceRequest.DataEntry
2022/03/18 10:52:57 proto: duplicate proto type registered: temporal.api.workflowservice.v1.RegisterNamespaceResponse
2022/03/18 10:52:57 proto: duplicate proto type registered: temporal.api.workflowservice.v1.ListNamespacesRequest
2022/03/18 10:52:57 proto: duplicate proto type registered: temporal.api.workflowservice.v1.ListNamespacesResponse
One possibility: I previously had Go 1.16 installed and tried to install temporalite. That failed, so I upgraded to Go 1.18, installed successfully, and ran ☝️ . Maybe I need to run some command to clear some data somewhere?
See bash input/output above
latest
is right nowI am trying to upgrade Temporalite to Temporal 1.20. When I update go.mod
to have the following dependencies:
go.temporal.io/api v1.18.2-0.20230324225508-f2c7ab685b44
go.temporal.io/sdk v1.21.2
go.temporal.io/server v1.20.2
go test
should pass after the upgrade.
go test
fails with the following error:
go test ./...
? github.com/temporalio/temporalite [no test files]
? github.com/temporalio/temporalite/internal/copyright [no test files]
? github.com/temporalio/temporalite/internal/examples/helloworld [no test files]
? github.com/temporalio/temporalite/internal/examples/mtls [no test files]
? github.com/temporalio/temporalite/internal/liteconfig [no test files]
2023/05/08 16:44:22 INFO No logger configured for temporal client. Created default one.
[Fx] PROVIDE *pprof.PProfInitializerImpl <= go.temporal.io/server/common/pprof.NewInitializer()
[Fx] PROVIDE *temporal.ServerImpl <= go.temporal.io/server/temporal.NewServerFxImpl()
[Fx] PROVIDE temporal.Server <= go.temporal.io/server/temporal.glob..func9()
[Fx] SUPPLY []temporal.ServerOption
[Fx] PROVIDE *temporal.serverOptions <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE chan interface {} <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE *config.Config <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE *config.PProf <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE log.Config <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE resource.ServiceNames <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE resource.NamespaceLogger <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE resolver.ServiceResolver <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE client.AbstractDataStoreFactory <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE searchattribute.Mapper <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE []grpc.UnaryServerInterceptor <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE authorization.Authorizer <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE authorization.ClaimMapper <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE authorization.JWTAudienceMapper <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE log.Logger <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE client.FactoryProvider <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE dynamicconfig.Client <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE *dynamicconfig.Collection <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE encryption.TLSConfigProvider <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE *client.Config <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE client.Client <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE metrics.Handler <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE []trace.SpanExporter <= go.temporal.io/server/temporal.glob..func2()
[Fx] PROVIDE client.FactoryProviderFn <= go.temporal.io/server/temporal.PersistenceFactoryProvider()
[Fx] PROVIDE *temporal.ServicesMetadata[group = "services"] <= go.temporal.io/server/temporal.HistoryServiceProvider()
[Fx] PROVIDE *temporal.ServicesMetadata[group = "services"] <= go.temporal.io/server/temporal.MatchingServiceProvider()
[Fx] PROVIDE *temporal.ServicesMetadata[group = "services"] <= go.temporal.io/server/temporal.FrontendServiceProvider()
[Fx] PROVIDE *temporal.ServicesMetadata[group = "services"] <= go.temporal.io/server/temporal.InternalFrontendServiceProvider()
[Fx] PROVIDE *temporal.ServicesMetadata[group = "services"] <= go.temporal.io/server/temporal.WorkerServiceProvider()
[Fx] PROVIDE *cluster.Config <= go.temporal.io/server/temporal.ApplyClusterMetadataConfigProvider()
[Fx] PROVIDE config.Persistence <= go.temporal.io/server/temporal.ApplyClusterMetadataConfigProvider()
[Fx] PROVIDE fx.Lifecycle <= go.uber.org/fx.New.func1()
[Fx] PROVIDE fx.Shutdowner <= go.uber.org/fx.(*App).shutdowner-fm()
[Fx] PROVIDE fx.DotGraph <= go.uber.org/fx.(*App).dotGraph-fm()
[Fx] ERROR Failed to initialize custom logger: could not build arguments for function "go.uber.org/fx".(*App).constructCustomLogger.func2
/Users/hartmut.ferentschik/go/pkg/mod/go.uber.org/[email protected]/app.go:414:
failed to build fxevent.Logger:
could not build arguments for function "go.temporal.io/server/temporal".glob..func8
/Users/hartmut.ferentschik/go/pkg/mod/go.temporal.io/[email protected]/temporal/fx.go:1025:
failed to build log.Logger:
received non-nil error from function "go.temporal.io/server/temporal".ServerOptionsProvider
/Users/hartmut.ferentschik/go/pkg/mod/go.temporal.io/[email protected]/temporal/fx.go:159:
config validation error: "internal-frontend" service is missing in config
Server closed with error: unable to instantiate server: could not build arguments for function "go.uber.org/fx".(*App).constructCustomLogger.func2 (/Users/hartmut.ferentschik/go/pkg/mod/go.uber.org/[email protected]/app.go:414): failed to build fxevent.Logger: could not build arguments for function "go.temporal.io/server/temporal".glob..func8 (/Users/hartmut.ferentschik/go/pkg/mod/go.temporal.io/[email protected]/temporal/fx.go:1025): failed to build log.Logger: received non-nil error from function "go.temporal.io/server/temporal".ServerOptionsProvider (/Users/hartmut.ferentschik/go/pkg/mod/go.temporal.io/[email protected]/temporal/fx.go:159): config validation error: "internal-frontend" service is missing in config
2023/05/08 16:44:22 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:22 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:23 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:23 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:23 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:23 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:23 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:23 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:23 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:23 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:23 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:24 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:24 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:24 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:24 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:24 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:24 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:24 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:24 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:24 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:24 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:25 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:25 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:25 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:25 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:25 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:25 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:25 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:25 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:25 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:26 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:26 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:26 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:26 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:26 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:26 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:26 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:26 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:26 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:26 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:27 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:27 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:27 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:27 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:27 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:27 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:27 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:27 INFO No logger configured for temporal client. Created default one.
2023/05/08 16:44:27 INFO No logger configured for temporal client. Created default one.
--- FAIL: TestCreateDataDirectory (5.28s)
--- FAIL: TestCreateDataDirectory/default_db_path (5.27s)
main_test.go:110: failed reaching server: last connection error: connection error: desc = "transport: Error while dialing: dial tcp [::1]:57199: connect: connection refused"
panic: runtime error: invalid memory address or nil pointer dereference [recovered]
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x2 addr=0x20 pc=0x1020522e4]
goroutine 11 [running]:
testing.tRunner.func1.2({0x103b501c0, 0x1051f4030})
/opt/homebrew/Cellar/go/1.20.3/libexec/src/testing/testing.go:1526 +0x1c8
testing.tRunner.func1()
/opt/homebrew/Cellar/go/1.20.3/libexec/src/testing/testing.go:1529 +0x384
panic({0x103b501c0, 0x1051f4030})
/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/panic.go:884 +0x204
github.com/temporalio/temporalite/cmd/temporalite.assertServerHealth(_, {_, _}, {{0x14000a103b0, 0xf}, {0x102073ef2, 0xf}, {0x0, 0x0}, {0x0, ...}, ...})
/Users/hartmut.ferentschik/go/src/github.com/temporalio/temporalite/cmd/temporalite/main_test.go:113 +0x134
github.com/temporalio/temporalite/cmd/temporalite.TestCreateDataDirectory.func3(0x14000583d40)
/Users/hartmut.ferentschik/go/src/github.com/temporalio/temporalite/cmd/temporalite/main_test.go:178 +0x1e0
testing.tRunner(0x14000583d40, 0x140009fd080)
/opt/homebrew/Cellar/go/1.20.3/libexec/src/testing/testing.go:1576 +0x10c
created by testing.(*T).Run
/opt/homebrew/Cellar/go/1.20.3/libexec/src/testing/testing.go:1629 +0x368
FAIL github.com/temporalio/temporalite/cmd/temporalite 6.469s
[Fx] PROVIDE *pprof.PProfInitializerImpl <= go.temporal.io/server/common/pprof.NewInitializer()
[Fx] PROVIDE *temporal.ServerImpl <= go.temporal.io/server/temporal.NewServerFxImpl()
[Fx] PROVIDE temporal.Server <= go.temporal.io/server/temporal.glob..func9()
[Fx] SUPPLY []temporal.ServerOption
[Fx] PROVIDE *temporal.serverOptions <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE chan interface {} <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE *config.Config <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE *config.PProf <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE log.Config <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE resource.ServiceNames <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE resource.NamespaceLogger <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE resolver.ServiceResolver <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE client.AbstractDataStoreFactory <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE searchattribute.Mapper <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE []grpc.UnaryServerInterceptor <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE authorization.Authorizer <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE authorization.ClaimMapper <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE authorization.JWTAudienceMapper <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE log.Logger <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE client.FactoryProvider <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE dynamicconfig.Client <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE *dynamicconfig.Collection <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE encryption.TLSConfigProvider <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE *client.Config <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE client.Client <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE metrics.Handler <= go.temporal.io/server/temporal.ServerOptionsProvider()
[Fx] PROVIDE []trace.SpanExporter <= go.temporal.io/server/temporal.glob..func2()
[Fx] PROVIDE client.FactoryProviderFn <= go.temporal.io/server/temporal.PersistenceFactoryProvider()
[Fx] PROVIDE *temporal.ServicesMetadata[group = "services"] <= go.temporal.io/server/temporal.HistoryServiceProvider()
[Fx] PROVIDE *temporal.ServicesMetadata[group = "services"] <= go.temporal.io/server/temporal.MatchingServiceProvider()
[Fx] PROVIDE *temporal.ServicesMetadata[group = "services"] <= go.temporal.io/server/temporal.FrontendServiceProvider()
[Fx] PROVIDE *temporal.ServicesMetadata[group = "services"] <= go.temporal.io/server/temporal.InternalFrontendServiceProvider()
[Fx] PROVIDE *temporal.ServicesMetadata[group = "services"] <= go.temporal.io/server/temporal.WorkerServiceProvider()
[Fx] PROVIDE *cluster.Config <= go.temporal.io/server/temporal.ApplyClusterMetadataConfigProvider()
[Fx] PROVIDE config.Persistence <= go.temporal.io/server/temporal.ApplyClusterMetadataConfigProvider()
[Fx] PROVIDE fx.Lifecycle <= go.uber.org/fx.New.func1()
[Fx] PROVIDE fx.Shutdowner <= go.uber.org/fx.(*App).shutdowner-fm()
[Fx] PROVIDE fx.DotGraph <= go.uber.org/fx.(*App).dotGraph-fm()
[Fx] ERROR Failed to initialize custom logger: could not build arguments for function "go.uber.org/fx".(*App).constructCustomLogger.func2
/Users/hartmut.ferentschik/go/pkg/mod/go.uber.org/[email protected]/app.go:414:
failed to build fxevent.Logger:
could not build arguments for function "go.temporal.io/server/temporal".glob..func8
/Users/hartmut.ferentschik/go/pkg/mod/go.temporal.io/[email protected]/temporal/fx.go:1025:
failed to build log.Logger:
received non-nil error from function "go.temporal.io/server/temporal".ServerOptionsProvider
/Users/hartmut.ferentschik/go/pkg/mod/go.temporal.io/[email protected]/temporal/fx.go:159:
config validation error: "internal-frontend" service is missing in config
--- FAIL: TestNewServer (0.01s)
server.go:39: error creating server: unable to instantiate server: could not build arguments for function "go.uber.org/fx".(*App).constructCustomLogger.func2 (/Users/hartmut.ferentschik/go/pkg/mod/go.uber.org/[email protected]/app.go:414): failed to build fxevent.Logger: could not build arguments for function "go.temporal.io/server/temporal".glob..func8 (/Users/hartmut.ferentschik/go/pkg/mod/go.temporal.io/[email protected]/temporal/fx.go:1025): failed to build log.Logger: received non-nil error from function "go.temporal.io/server/temporal".ServerOptionsProvider (/Users/hartmut.ferentschik/go/pkg/mod/go.temporal.io/[email protected]/temporal/fx.go:159): config validation error: "internal-frontend" service is missing in config
panic: runtime error: invalid memory address or nil pointer dereference [recovered]
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x2 addr=0x10 pc=0x1027f318c]
goroutine 10 [running]:
testing.tRunner.func1.2({0x102f83b80, 0x104566f90})
/opt/homebrew/Cellar/go/1.20.3/libexec/src/testing/testing.go:1526 +0x1c8
testing.tRunner.func1()
/opt/homebrew/Cellar/go/1.20.3/libexec/src/testing/testing.go:1529 +0x384
panic({0x102f83b80, 0x104566f90})
/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/panic.go:884 +0x204
github.com/temporalio/temporalite.(*Server).Stop(0x0)
/Users/hartmut.ferentschik/go/src/github.com/temporalio/temporalite/server.go:144 +0x1c
github.com/temporalio/temporalite/temporaltest.(*TestServer).Stop(0x1400042d080)
/Users/hartmut.ferentschik/go/src/github.com/temporalio/temporalite/temporaltest/server.go:116 +0xbc
github.com/temporalio/temporalite/temporaltest.NewServer.func1()
/Users/hartmut.ferentschik/go/src/github.com/temporalio/temporalite/temporaltest/server.go:142 +0x20
testing.(*common).Cleanup.func1()
/opt/homebrew/Cellar/go/1.20.3/libexec/src/testing/testing.go:1150 +0x100
testing.(*common).runCleanup(0x140005c3040, 0x0?)
/opt/homebrew/Cellar/go/1.20.3/libexec/src/testing/testing.go:1328 +0xd8
testing.tRunner.func2()
/opt/homebrew/Cellar/go/1.20.3/libexec/src/testing/testing.go:1570 +0x2c
runtime.Goexit()
/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/panic.go:522 +0x180
testing.(*common).FailNow(0x140005c3040)
/opt/homebrew/Cellar/go/1.20.3/libexec/src/testing/testing.go:980 +0x44
testing.(*common).Fatal(0x140005c3040, {0x14000ae5c50?, 0x14000ae5c50?, 0x1?})
/opt/homebrew/Cellar/go/1.20.3/libexec/src/testing/testing.go:1057 +0x54
github.com/temporalio/temporalite/temporaltest.(*TestServer).fatal(...)
/Users/hartmut.ferentschik/go/src/github.com/temporalio/temporalite/temporaltest/server.go:39
github.com/temporalio/temporalite/temporaltest.NewServer({0x14000aace18, 0x1, 0x59a00000006?})
/Users/hartmut.ferentschik/go/src/github.com/temporalio/temporalite/temporaltest/server.go:158 +0x62c
github.com/temporalio/temporalite/temporaltest_test.TestNewServer(0x140005c3040)
/Users/hartmut.ferentschik/go/src/github.com/temporalio/temporalite/temporaltest/server_test.go:58 +0xc8
testing.tRunner(0x140005c3040, 0x1033005c8)
/opt/homebrew/Cellar/go/1.20.3/libexec/src/testing/testing.go:1576 +0x10c
created by testing.(*T).Run
/opt/homebrew/Cellar/go/1.20.3/libexec/src/testing/testing.go:1629 +0x368
FAIL github.com/temporalio/temporalite/temporaltest 0.619s
FAIL
I believe the problem is the following code - https://github.com/temporalio/temporalite/blob/c5c2ad375e186a1eb5eb00cd04d7caae0198085c/server.go#L90:
serverOpts := []temporal.ServerOption{
temporal.WithConfig(cfg),
temporal.ForServices(temporal.Services),
temporal.WithLogger(c.Logger),
temporal.WithAuthorizer(authorizer),
temporal.WithClaimMapper(func(cfg *config.Config) authorization.ClaimMapper {
return claimMapper
}),
}
temporal.Services
is a list of all Temporal services. In Temporal 1.20 there is a new service "Internal frontend" which is added this way. However, the required configuration for internal frontend is missing. I think for Temporalite it makes sense to eventually make use of internal frontend, but a intermediate step could be the following:
services := []string{
string(primitives.FrontendService),
string(primitives.HistoryService),
string(primitives.MatchingService),
string(primitives.WorkerService),
}
serverOpts := []temporal.ServerOption{
temporal.WithConfig(cfg),
temporal.ForServices(services),
temporal.WithLogger(c.Logger),
temporal.WithAuthorizer(authorizer),
temporal.WithClaimMapper(func(cfg *config.Config) authorization.ClaimMapper {
return claimMapper
}),
}
This excludes the internal frontend service for now.
Is your feature request related to a problem? Please describe.
It seems goreleaser is setup, but there are no tags to trigger releases to build binaries. Having downloadable binaries helps users of Temporalite who don't want to build. For my use case in particular, the Python SDK would love to download and run Temporalite instead of building it in CI.
Describe the solution you'd like
Tag releases. Granted I can't figure out what the best release numbering scheme would be considering this is also a Go library so must remain on semver, but it may make sense to align with server version.
(this is obviously non-urgent as building Temporalite is trivial)
Is your feature request related to a problem? Please describe.
A web UI would simplify local development/debugging and help people new to Temporal explore and get familiar.
Describe the solution you'd like
Embed https://github.com/temporalio/ui assets and run https://github.com/temporalio/ui-server as part of the Temporalite server.
Additional context
There may be similar efforts planned or ongoing in the https://github.com/temporalio/temporal project, so we should coordinate with maintainers. Preferably this could be exposed as an upstream temporal.ServerOption. If we implement this feature first in Temporalite, then it should be forward-compatible with moving outside of the temporalite
package at some point.
Note on binary size: while keeping binary size minimal is not an explicit goal of Temporalite, we should be mindful of the binary size change this introduces and consider including a build tag to conditionally skip embedding static assets.
https://github.com/prabhatsharma/zinc
100% golang built on top of the excellent Bluge golang code.
This will work well with SQLite for a single binary solution.
the http api matches Elastic too so easy to plug into . Not everything is supported yet
has a web gui. Not sure if temporalite has one yet .
no cli yet , but relatively easy to do with cobra and making http calls to server . Might already be an issue for it.
it’s fast too .
I am using it and it’s been great .
It’s a new project and still got some rough edges compared to Elastic.
there is also the possibility to integrate via litestream but I doubt you need it. Litestream ( https://github.com/benbjohnson/litestream) gives you a type of changefeed off SQLite as well as real time backup to s3.
if you have any questions feel free to holler !
Is your feature request related to a problem? Please describe.
Temporalite logs at the debug level by default, which is super verbose, logging many individual RPCs and cluster membership changes. For running in the foreground, this adds a lot of noise, especially if interleaved with any other processes like one might do with docker-compose or a shell script.
Describe the solution you'd like
It'd be great to run all the components at the info/warn level
Describe alternatives you've considered
grep -v
works but adds annoying signal handling concerns and it'd be nice to have this right in the command line usage documentation instead of having to pull in other tools.
Additional context
Thanks!
We plan to deprecate the https://github.com/temporalio/temporalite git repository but retain its functionality in https://github.com/temporalio/temporal and https://github.com/temporalio/cli respectively.
Our goals for this migration are to:
temporalite
and temporaltest
package in the server Go module. Anyone who already imports the Temporal server module should be able to write e2e tests easily.github.com/temporalio/temporalite
=> go.temporal.io/server/temporalite
github.com/temporalio/temporalite/temporaltest
=> go.temporal.io/server/temporalite/temporaltest
github.com/temporalio/temporalite/cmd/temporalite
=> a subcommand under https://github.com/temporalio/cligo.temporal.io/server/temporalite
instead.Is your feature request related to a problem? Please describe.
Hi,
First of all, thank you for all the great work on Temporal and Temporalite; I am "sort of" new here and am looking forward to incorporating Temporal framework into my project!
Would it be possible to use Temporalite to support the testing of different server and/or sdk versions? For example, if I have a project that was running sdk version 1.6 and server version 1.13; would it be possible to start Temporalite with those specifications for unit testing purposes?
Describe the solution you'd like
Ability to start Temporalite with a configuration file or add command line arguments to specify server and sdk version.
Describe alternatives you've considered
The only alternative I am aware of is to use docker-compose to run an actual dev Temporal server cluster with a specified version.
Additional context
I had evaluated Temporal.io a couple of years back with sdk 1.2 (Temporal's Java sdk) and really liked how Temporal as a micro-service orchestration framework. Due to other priorities, I had to switch my focus and only recently started to revisit/incorporate Temporal into my project. I was pleasantly surprised and encouraged to see the tremendous progress the team had made, obviously, the evaluation code I wrote can simply be updated to work on the latest versions. As I proceed to refresh my old dev cluster with updated docker-compose, I saw Temporalite as an alternative to running a dev cluster and decided to give it a try. I think Temporalite is an extremely valuable tool for developers to test their workflow locally (and run CI) but I couldn't stop thinking what if a team's production environment is running a slightly older version, how could we make it easier for development teams to use Temporalite across server/sdk versions.
Please introduce option to disable UI server - ideally both at run and at build time which reduces the binary size.
Hi, I'd like to know if temporalite also supports Temporal Web UI or if we can only read information from the server through tctl.
After starting Temporal Lite, the UI must appear when you visit http://localhost:8233/ in the browser.
After starting Temporal Lite, the UI remains completely blank when you visit http://localhost:8233/ in the browser.
go install github.com/DataDog/temporalite/cmd/temporalite@latest
)temporalite start --ephemeral --namespace default
)http://localhost:8233/
in the browser.I can observe that a connection is estambished and "somethng" is received by the browser. However, the view remains completely blank. Here is the source of the page as shown by the browser:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="icon" href="[/favicon.ico](view-source:http://localhost:8233/favicon.ico)" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" href="[/css/normalize.css](view-source:http://localhost:8233/css/normalize.css)" />
<link rel="stylesheet" href="[/css/override.css](view-source:http://localhost:8233/css/override.css)" />
<link rel="stylesheet" href="[/prism/prism.css](view-source:http://localhost:8233/prism/prism.css)" />
<meta http-equiv="content-security-policy" content="">
<link rel="modulepreload" href="[/_app/start-c7f9f9fa.js](view-source:http://localhost:8233/_app/start-c7f9f9fa.js)">
<link rel="modulepreload" href="[/_app/chunks/index-d3b4e788.js](view-source:http://localhost:8233/_app/chunks/index-d3b4e788.js)">
<link rel="modulepreload" href="[/_app/chunks/index-d96c6995.js](view-source:http://localhost:8233/_app/chunks/index-d96c6995.js)">
<link rel="modulepreload" href="[/_app/chunks/singletons-d1fb5791.js](view-source:http://localhost:8233/_app/chunks/singletons-d1fb5791.js)">
</head>
<body>
<div id="svelte">
<script type="module" data-hydrate="45h">
import { start } from "/_app/start-c7f9f9fa.js";
start({
target: document.querySelector('[data-hydrate="45h"]').parentNode,
paths: {"base":"","assets":""},
session: {},
route: true,
spa: true,
trailing_slash: "never",
hydrate: null
});
</script></div>
<script src="[/prism/prism.js](view-source:http://localhost:8233/prism/prism.js)"></script>
</body>
</html>
Note that I can actually successfully run requests against the server just started (Start Workflow, Send Signal etc).
There is a bunch of diagnostic output in the Console Window where Temporal Lite is started. The log below represents starting the server, loading a page (with the above blant result, pressing Ctrl-C and letting the server shut down.
Please note, the log below has indeed error messages implying the UI is shut does, but I am not sure of a root cause or a possilbe workaround.
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.RegisterNamespaceRequest
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.RegisterNamespaceRequest.DataEntry
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.RegisterNamespaceResponse
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.ListNamespacesRequest
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.ListNamespacesResponse
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.DescribeNamespaceRequest
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.DescribeNamespaceResponse
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.UpdateNamespaceRequest
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.UpdateNamespaceResponse
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.DeprecateNamespaceRequest
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.DeprecateNamespaceResponse
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.StartWorkflowExecutionRequest
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.StartWorkflowExecutionResponse
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryRequest
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryResponse
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryReverseRequest
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.GetWorkflowExecutionHistoryReverseResponse
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.PollWorkflowTaskQueueRequest
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.PollWorkflowTaskQueueResponse
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.PollWorkflowTaskQueueResponse.QueriesEntry
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.RespondWorkflowTaskCompletedRequest
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.RespondWorkflowTaskCompletedRequest.QueryResultsEntry
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.RespondWorkflowTaskCompletedResponse
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.RespondWorkflowTaskFailedRequest
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.RespondWorkflowTaskFailedResponse
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.PollActivityTaskQueueRequest
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.PollActivityTaskQueueResponse
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.RecordActivityTaskHeartbeatRequest
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.RecordActivityTaskHeartbeatResponse
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.RecordActivityTaskHeartbeatByIdRequest
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.RecordActivityTaskHeartbeatByIdResponse
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.RespondActivityTaskCompletedRequest
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.RespondActivityTaskCompletedResponse
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.RespondActivityTaskCompletedByIdRequest
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.RespondActivityTaskCompletedByIdResponse
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.RespondActivityTaskFailedRequest
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.RespondActivityTaskFailedResponse
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.RespondActivityTaskFailedByIdRequest
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.RespondActivityTaskFailedByIdResponse
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.RespondActivityTaskCanceledRequest
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.RespondActivityTaskCanceledResponse
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.RespondActivityTaskCanceledByIdRequest
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.RespondActivityTaskCanceledByIdResponse
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.RequestCancelWorkflowExecutionRequest
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.RequestCancelWorkflowExecutionResponse
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.SignalWorkflowExecutionRequest
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.SignalWorkflowExecutionResponse
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.SignalWithStartWorkflowExecutionRequest
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.SignalWithStartWorkflowExecutionResponse
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.ResetWorkflowExecutionRequest
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.ResetWorkflowExecutionResponse
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.TerminateWorkflowExecutionRequest
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.TerminateWorkflowExecutionResponse
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.ListOpenWorkflowExecutionsRequest
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.ListOpenWorkflowExecutionsResponse
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.ListClosedWorkflowExecutionsRequest
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.ListClosedWorkflowExecutionsResponse
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.ListWorkflowExecutionsRequest
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.ListWorkflowExecutionsResponse
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.ListArchivedWorkflowExecutionsRequest
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.ListArchivedWorkflowExecutionsResponse
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.ScanWorkflowExecutionsRequest
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.ScanWorkflowExecutionsResponse
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.CountWorkflowExecutionsRequest
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.CountWorkflowExecutionsResponse
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.GetSearchAttributesRequest
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.GetSearchAttributesResponse
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.GetSearchAttributesResponse.KeysEntry
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.RespondQueryTaskCompletedRequest
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.RespondQueryTaskCompletedResponse
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.ResetStickyTaskQueueRequest
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.ResetStickyTaskQueueResponse
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.QueryWorkflowRequest
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.QueryWorkflowResponse
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.DescribeWorkflowExecutionRequest
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.DescribeWorkflowExecutionResponse
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.DescribeTaskQueueRequest
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.DescribeTaskQueueResponse
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.GetClusterInfoRequest
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.GetClusterInfoResponse
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.GetClusterInfoResponse.SupportedClientsEntry
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.GetSystemInfoRequest
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.GetSystemInfoResponse
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.GetSystemInfoResponse.Capabilities
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.ListTaskQueuePartitionsRequest
2022/05/14 18:15:51 proto: duplicate proto type registered: temporal.api.workflowservice.v1.ListTaskQueuePartitionsResponse
{"level":"info","ts":"2022-05-14T18:15:51.354-0700","msg":"Successfully saved cluster metadata.","component":"metadata-initializer","cluster-name":"active","logging-call-at":"fx.go:630"}
{"level":"info","ts":"2022-05-14T18:15:51.378-0700","msg":"Created gRPC listener","service":"history","address":"127.0.0.1:63796","logging-call-at":"rpc.go:156"}
{"level":"info","ts":"2022-05-14T18:15:51.383-0700","msg":"Created gRPC listener","service":"matching","address":"127.0.0.1:63798","logging-call-at":"rpc.go:156"}
{"level":"info","ts":"2022-05-14T18:15:51.392-0700","msg":"Created gRPC listener","service":"frontend","address":"127.0.0.1:7233","logging-call-at":"rpc.go:156"}
Starting UI server...
{"level":"info","ts":"2022-05-14T18:15:51.396-0700","msg":"PProf listen on ","port":63794,"logging-call-at":"pprof.go:73"}
____ __
/ __/___/ / ___
/ _// __/ _ \/ _ \
/___/\__/_//_/\___/ v4.6.3
High performance, minimalist Go web framework
https://echo.labstack.com
____________________________________O/_______
O\
{"level":"info","ts":"2022-05-14T18:15:51.396-0700","msg":"Starting server for services","value":{"frontend":{},"history":{},"matching":{},"worker":{}},"logging-call-at":"server_impl.go:99"}
⇨ http server started on 127.0.0.1:8233
{"level":"info","ts":"2022-05-14T18:15:51.403-0700","msg":"Membership heartbeat upserted successfully","service":"frontend","address":"127.0.0.1","port":63795,"hostId":"8f70a8f2-d3ec-11ec-a7d1-507b9db6fe6c","logging-call-at":"rpMonitor.go:229"}
{"level":"info","ts":"2022-05-14T18:15:51.404-0700","msg":"bootstrap hosts fetched","service":"frontend","bootstrap-hostports":"127.0.0.1:63795","logging-call-at":"rpMonitor.go:271"}
{"level":"info","ts":"2022-05-14T18:15:51.408-0700","msg":"Current reachable members","service":"frontend","component":"service-resolver","service":"frontend","addresses":["127.0.0.1:7233"],"logging-call-at":"rpServiceResolver.go:266"}
{"level":"info","ts":"2022-05-14T18:15:51.408-0700","msg":"RuntimeMetricsReporter started","service":"frontend","logging-call-at":"runtime.go:140"}
{"level":"info","ts":"2022-05-14T18:15:51.409-0700","msg":"frontend starting","service":"frontend","logging-call-at":"service.go:258"}
{"level":"info","ts":"2022-05-14T18:15:51.409-0700","msg":"Starting to serve on frontend listener","service":"frontend","logging-call-at":"service.go:277"}
{"level":"info","ts":"2022-05-14T18:15:51.409-0700","msg":"Membership heartbeat upserted successfully","service":"worker","address":"127.0.0.1","port":63801,"hostId":"8f716c49-d3ec-11ec-a7d1-507b9db6fe6c","logging-call-at":"rpMonitor.go:229"}
{"level":"info","ts":"2022-05-14T18:15:51.410-0700","msg":"bootstrap hosts fetched","service":"worker","bootstrap-hostports":"127.0.0.1:63795,127.0.0.1:63801","logging-call-at":"rpMonitor.go:271"}
{"level":"info","ts":"2022-05-14T18:15:51.415-0700","msg":"Current reachable members","service":"worker","component":"service-resolver","service":"frontend","addresses":["127.0.0.1:7233"],"logging-call-at":"rpServiceResolver.go:266"}
{"level":"info","ts":"2022-05-14T18:15:51.416-0700","msg":"Current reachable members","service":"worker","component":"service-resolver","service":"worker","addresses":["127.0.0.1:63800"],"logging-call-at":"rpServiceResolver.go:266"}
{"level":"info","ts":"2022-05-14T18:15:51.417-0700","msg":"RuntimeMetricsReporter started","service":"worker","logging-call-at":"runtime.go:140"}
{"level":"info","ts":"2022-05-14T18:15:51.418-0700","msg":"worker starting","service":"worker","component":"worker","logging-call-at":"service.go:329"}
{"level":"info","ts":"2022-05-14T18:15:51.420-0700","msg":"Membership heartbeat upserted successfully","service":"matching","address":"127.0.0.1","port":63799,"hostId":"8f6f4a90-d3ec-11ec-a7d1-507b9db6fe6c","logging-call-at":"rpMonitor.go:229"}
{"level":"info","ts":"2022-05-14T18:15:51.423-0700","msg":"bootstrap hosts fetched","service":"matching","bootstrap-hostports":"127.0.0.1:63799,127.0.0.1:63795,127.0.0.1:63801","logging-call-at":"rpMonitor.go:271"}
{"level":"info","ts":"2022-05-14T18:15:51.426-0700","msg":"Current reachable members","service":"matching","component":"service-resolver","service":"frontend","addresses":["127.0.0.1:7233"],"logging-call-at":"rpServiceResolver.go:266"}
{"level":"info","ts":"2022-05-14T18:15:51.426-0700","msg":"Current reachable members","service":"matching","component":"service-resolver","service":"matching","addresses":["127.0.0.1:63798"],"logging-call-at":"rpServiceResolver.go:266"}
{"level":"info","ts":"2022-05-14T18:15:51.427-0700","msg":"Current reachable members","service":"worker","component":"service-resolver","service":"matching","addresses":["127.0.0.1:63798"],"logging-call-at":"rpServiceResolver.go:266"}
{"level":"info","ts":"2022-05-14T18:15:51.428-0700","msg":"Current reachable members","service":"matching","component":"service-resolver","service":"worker","addresses":["127.0.0.1:63800"],"logging-call-at":"rpServiceResolver.go:266"}
{"level":"info","ts":"2022-05-14T18:15:51.430-0700","msg":"RuntimeMetricsReporter started","service":"matching","logging-call-at":"runtime.go:140"}
{"level":"info","ts":"2022-05-14T18:15:51.430-0700","msg":"matching starting","service":"matching","logging-call-at":"service.go:91"}
{"level":"info","ts":"2022-05-14T18:15:51.431-0700","msg":"Starting to serve on matching listener","service":"matching","logging-call-at":"service.go:102"}
{"level":"info","ts":"2022-05-14T18:15:51.431-0700","msg":"Membership heartbeat upserted successfully","service":"history","address":"127.0.0.1","port":63797,"hostId":"8f6c7749-d3ec-11ec-a7d1-507b9db6fe6c","logging-call-at":"rpMonitor.go:229"}
{"level":"info","ts":"2022-05-14T18:15:51.433-0700","msg":"bootstrap hosts fetched","service":"history","bootstrap-hostports":"127.0.0.1:63799,127.0.0.1:63795,127.0.0.1:63801,127.0.0.1:63797","logging-call-at":"rpMonitor.go:271"}
{"level":"info","ts":"2022-05-14T18:15:51.438-0700","msg":"Current reachable members","service":"history","component":"service-resolver","service":"worker","addresses":["127.0.0.1:63800"],"logging-call-at":"rpServiceResolver.go:266"}
{"level":"info","ts":"2022-05-14T18:15:51.439-0700","msg":"Current reachable members","service":"history","component":"service-resolver","service":"frontend","addresses":["127.0.0.1:7233"],"logging-call-at":"rpServiceResolver.go:266"}
{"level":"info","ts":"2022-05-14T18:15:51.439-0700","msg":"Current reachable members","service":"history","component":"service-resolver","service":"history","addresses":["127.0.0.1:63796"],"logging-call-at":"rpServiceResolver.go:266"}
{"level":"info","ts":"2022-05-14T18:15:51.440-0700","msg":"Current reachable members","service":"history","component":"service-resolver","service":"matching","addresses":["127.0.0.1:63798"],"logging-call-at":"rpServiceResolver.go:266"}
{"level":"info","ts":"2022-05-14T18:15:51.441-0700","msg":"RuntimeMetricsReporter started","service":"history","logging-call-at":"runtime.go:140"}
{"level":"info","ts":"2022-05-14T18:15:51.442-0700","msg":"history starting","service":"history","logging-call-at":"service.go:96"}
{"level":"info","ts":"2022-05-14T18:15:51.443-0700","msg":"Replication task fetchers started.","logging-call-at":"replicationTaskFetcher.go:141"}
{"level":"info","ts":"2022-05-14T18:15:51.444-0700","msg":"none","shard-id":1,"address":"127.0.0.1:63796","lifecycle":"Started","component":"shard-context","logging-call-at":"controller_impl.go:256"}
{"level":"info","ts":"2022-05-14T18:15:51.444-0700","msg":"Range updated for shardID","shard-id":1,"address":"127.0.0.1:63796","shard-range-id":1,"previous-shard-range-id":0,"number":0,"next-number":0,"logging-call-at":"context_impl.go:1083"}
{"level":"info","ts":"2022-05-14T18:15:51.445-0700","msg":"Current reachable members","service":"frontend","component":"service-resolver","service":"matching","addresses":["127.0.0.1:63798"],"logging-call-at":"rpServiceResolver.go:266"}
{"level":"info","ts":"2022-05-14T18:15:51.445-0700","msg":"Current reachable members","service":"frontend","component":"service-resolver","service":"worker","addresses":["127.0.0.1:63800"],"logging-call-at":"rpServiceResolver.go:266"}
{"level":"info","ts":"2022-05-14T18:15:51.445-0700","msg":"Acquired shard","shard-id":1,"address":"127.0.0.1:63796","logging-call-at":"context_impl.go:1744"}
{"level":"info","ts":"2022-05-14T18:15:51.447-0700","msg":"none","shard-id":1,"address":"127.0.0.1:63796","lifecycle":"Starting","component":"shard-engine","logging-call-at":"context_impl.go:1350"}
{"level":"info","ts":"2022-05-14T18:15:51.448-0700","msg":"none","shard-id":1,"address":"127.0.0.1:63796","component":"history-engine","lifecycle":"Starting","logging-call-at":"historyEngine.go:245"}
{"level":"info","ts":"2022-05-14T18:15:51.448-0700","msg":"none","shard-id":1,"address":"127.0.0.1:63796","component":"transfer-queue-processor","cluster-name":"active","lifecycle":"Starting","component":"transfer-queue-processor","logging-call-at":"queueProcessor.go:140"}
{"level":"info","ts":"2022-05-14T18:15:51.450-0700","msg":"Task processor started.","shard-id":1,"address":"127.0.0.1:63796","component":"transfer-queue-processor","cluster-name":"active","logging-call-at":"taskProcessor.go:147"}
{"level":"info","ts":"2022-05-14T18:15:51.455-0700","msg":"none","shard-id":1,"address":"127.0.0.1:63796","component":"transfer-queue-processor","cluster-name":"active","lifecycle":"Started","component":"transfer-queue-processor","logging-call-at":"queueProcessor.go:149"}
{"level":"info","ts":"2022-05-14T18:15:51.457-0700","msg":"Task processor started.","shard-id":1,"address":"127.0.0.1:63796","component":"timer-queue-processor","cluster-name":"active","component":"timer-queue-processor","logging-call-at":"taskProcessor.go:147"}
{"level":"info","ts":"2022-05-14T18:15:51.458-0700","msg":"Timer queue processor started.","shard-id":1,"address":"127.0.0.1:63796","component":"timer-queue-processor","cluster-name":"active","component":"timer-queue-processor","logging-call-at":"timerQueueProcessorBase.go:150"}
{"level":"info","ts":"2022-05-14T18:15:51.459-0700","msg":"none","shard-id":1,"address":"127.0.0.1:63796","component":"visibility-queue-processor","lifecycle":"Starting","component":"transfer-queue-processor","logging-call-at":"queueProcessor.go:140"}
{"level":"info","ts":"2022-05-14T18:15:51.459-0700","msg":"Task processor started.","shard-id":1,"address":"127.0.0.1:63796","component":"visibility-queue-processor","logging-call-at":"taskProcessor.go:147"}
{"level":"info","ts":"2022-05-14T18:15:51.460-0700","msg":"none","shard-id":1,"address":"127.0.0.1:63796","component":"visibility-queue-processor","lifecycle":"Started","component":"transfer-queue-processor","logging-call-at":"queueProcessor.go:149"}
{"level":"info","ts":"2022-05-14T18:15:51.461-0700","msg":"none","shard-id":1,"address":"127.0.0.1:63796","component":"history-engine","lifecycle":"Started","logging-call-at":"historyEngine.go:261"}
{"level":"info","ts":"2022-05-14T18:15:51.461-0700","msg":"none","shard-id":1,"address":"127.0.0.1:63796","lifecycle":"Started","component":"shard-engine","logging-call-at":"context_impl.go:1353"}
{"level":"info","ts":"2022-05-14T18:15:51.480-0700","msg":"none","component":"shard-controller","address":"127.0.0.1:63796","lifecycle":"Started","logging-call-at":"controller_impl.go:118"}
{"level":"info","ts":"2022-05-14T18:15:51.480-0700","msg":"Starting to serve on history listener","service":"history","logging-call-at":"service.go:107"}
{"level":"info","ts":"2022-05-14T18:15:51.511-0700","msg":"Current reachable members","service":"frontend","component":"service-resolver","service":"history","addresses":["127.0.0.1:63796"],"logging-call-at":"rpServiceResolver.go:266"}
{"level":"info","ts":"2022-05-14T18:15:51.770-0700","msg":"Started Worker","service":"worker","Namespace":"temporal-system","TaskQueue":"temporal-sys-tq-scanner-taskqueue-0","WorkerID":"47496@Gragus-P70@","logging-call-at":"scanner.go:155"}
{"level":"info","ts":"2022-05-14T18:15:51.774-0700","msg":"Started Worker","service":"worker","Namespace":"temporal-system","TaskQueue":"temporal-sys-batcher-taskqueue","WorkerID":"47496@Gragus-P70@","logging-call-at":"batcher.go:94"}
{"level":"info","ts":"2022-05-14T18:15:51.776-0700","msg":"none","service":"matching","component":"matching-engine","wf-task-queue-name":"/_sys/temporal-sys-tq-scanner-taskqueue-0/3","wf-task-queue-type":"Activity","wf-namespace":"temporal-system","lifecycle":"Started","logging-call-at":"taskQueueManager.go:246"}
{"level":"info","ts":"2022-05-14T18:15:51.777-0700","msg":"none","service":"matching","component":"matching-engine","wf-task-queue-name":"/_sys/temporal-sys-tq-scanner-taskqueue-0/3","wf-task-queue-type":"Workflow","wf-namespace":"temporal-system","lifecycle":"Started","logging-call-at":"taskQueueManager.go:246"}
{"level":"info","ts":"2022-05-14T18:15:51.778-0700","msg":"Started Worker","service":"worker","Namespace":"temporal-system","TaskQueue":"temporal-sys-processor-parent-close-policy","WorkerID":"47496@Gragus-P70@","logging-call-at":"processor.go:100"}
{"level":"info","ts":"2022-05-14T18:15:51.778-0700","msg":"none","service":"matching","component":"matching-engine","wf-task-queue-name":"/_sys/temporal-sys-tq-scanner-taskqueue-0/1","wf-task-queue-type":"Workflow","wf-namespace":"temporal-system","lifecycle":"Started","logging-call-at":"taskQueueManager.go:246"}
{"level":"info","ts":"2022-05-14T18:15:51.780-0700","msg":"none","service":"matching","component":"matching-engine","wf-task-queue-name":"/_sys/temporal-sys-batcher-taskqueue/1","wf-task-queue-type":"Workflow","wf-namespace":"temporal-system","lifecycle":"Started","logging-call-at":"taskQueueManager.go:246"}
{"level":"info","ts":"2022-05-14T18:15:51.781-0700","msg":"none","service":"matching","component":"matching-engine","wf-task-queue-name":"/_sys/temporal-sys-processor-parent-close-policy/1","wf-task-queue-type":"Workflow","wf-namespace":"temporal-system","lifecycle":"Started","logging-call-at":"taskQueueManager.go:246"}
{"level":"info","ts":"2022-05-14T18:15:51.782-0700","msg":"Started Worker","service":"worker","Namespace":"temporal-system","TaskQueue":"default-worker-tq","WorkerID":"47496@Gragus-P70@","logging-call-at":"worker.go:98"}
{"level":"info","ts":"2022-05-14T18:15:51.783-0700","msg":"none","component":"worker-manager","lifecycle":"Started","logging-call-at":"worker.go:101"}
{"level":"info","ts":"2022-05-14T18:15:51.782-0700","msg":"none","service":"matching","component":"matching-engine","wf-task-queue-name":"Gragus-P70:066f6336-ca19-4a1d-a48a-0a06733fd0a2","wf-task-queue-type":"Workflow","wf-namespace":"temporal-system","lifecycle":"Started","logging-call-at":"taskQueueManager.go:246"}
{"level":"info","ts":"2022-05-14T18:15:51.784-0700","msg":"worker service started","service":"worker","component":"worker","address":"127.0.0.1:63800","logging-call-at":"service.go:372"}
{"level":"info","ts":"2022-05-14T18:15:51.785-0700","msg":"none","service":"matching","component":"matching-engine","wf-task-queue-name":"/_sys/default-worker-tq/2","wf-task-queue-type":"Activity","wf-namespace":"temporal-system","lifecycle":"Started","logging-call-at":"taskQueueManager.go:246"}
{"level":"info","ts":"2022-05-14T18:15:51.787-0700","msg":"none","service":"matching","component":"matching-engine","wf-task-queue-name":"Gragus-P70:dbe05cd8-b3e9-48b0-998f-3022dea399c5","wf-task-queue-type":"Workflow","wf-namespace":"temporal-system","lifecycle":"Started","logging-call-at":"taskQueueManager.go:246"}
{"level":"info","ts":"2022-05-14T18:15:51.788-0700","msg":"none","service":"matching","component":"matching-engine","wf-task-queue-name":"/_sys/temporal-sys-processor-parent-close-policy/3","wf-task-queue-type":"Activity","wf-namespace":"temporal-system","lifecycle":"Started","logging-call-at":"taskQueueManager.go:246"}
{"level":"info","ts":"2022-05-14T18:15:51.789-0700","msg":"none","service":"matching","component":"matching-engine","wf-task-queue-name":"temporal-sys-tq-scanner-taskqueue-0","wf-task-queue-type":"Activity","wf-namespace":"temporal-system","lifecycle":"Started","logging-call-at":"taskQueueManager.go:246"}
{"level":"info","ts":"2022-05-14T18:15:51.792-0700","msg":"none","service":"matching","component":"matching-engine","wf-task-queue-name":"Gragus-P70:a94f1e4d-03c5-4a11-95ac-935b01706738","wf-task-queue-type":"Workflow","wf-namespace":"temporal-system","lifecycle":"Started","logging-call-at":"taskQueueManager.go:246"}
{"level":"info","ts":"2022-05-14T18:15:51.795-0700","msg":"none","service":"matching","component":"matching-engine","wf-task-queue-name":"/_sys/temporal-sys-batcher-taskqueue/3","wf-task-queue-type":"Workflow","wf-namespace":"temporal-system","lifecycle":"Started","logging-call-at":"taskQueueManager.go:246"}
{"level":"info","ts":"2022-05-14T18:15:51.796-0700","msg":"none","service":"matching","component":"matching-engine","wf-task-queue-name":"/_sys/temporal-sys-batcher-taskqueue/2","wf-task-queue-type":"Activity","wf-namespace":"temporal-system","lifecycle":"Started","logging-call-at":"taskQueueManager.go:246"}
{"level":"info","ts":"2022-05-14T18:15:51.797-0700","msg":"none","service":"matching","component":"matching-engine","wf-task-queue-name":"Gragus-P70:7aeedb1c-d250-4ced-bbd0-fbe80376851b","wf-task-queue-type":"Workflow","wf-namespace":"temporal-system","lifecycle":"Started","logging-call-at":"taskQueueManager.go:246"}
{"level":"info","ts":"2022-05-14T18:15:51.798-0700","msg":"none","service":"matching","component":"matching-engine","wf-task-queue-name":"temporal-sys-tq-scanner-taskqueue-0","wf-task-queue-type":"Workflow","wf-namespace":"temporal-system","lifecycle":"Started","logging-call-at":"taskQueueManager.go:246"}
{"level":"info","ts":"2022-05-14T18:15:51.799-0700","msg":"none","service":"matching","component":"matching-engine","wf-task-queue-name":"/_sys/temporal-sys-batcher-taskqueue/1","wf-task-queue-type":"Activity","wf-namespace":"temporal-system","lifecycle":"Started","logging-call-at":"taskQueueManager.go:246"}
{"level":"info","ts":"2022-05-14T18:15:51.800-0700","msg":"none","service":"matching","component":"matching-engine","wf-task-queue-name":"/_sys/temporal-sys-tq-scanner-taskqueue-0/1","wf-task-queue-type":"Activity","wf-namespace":"temporal-system","lifecycle":"Started","logging-call-at":"taskQueueManager.go:246"}
{"level":"info","ts":"2022-05-14T18:15:51.801-0700","msg":"none","service":"matching","component":"matching-engine","wf-task-queue-name":"/_sys/temporal-sys-batcher-taskqueue/3","wf-task-queue-type":"Activity","wf-namespace":"temporal-system","lifecycle":"Started","logging-call-at":"taskQueueManager.go:246"}
{"level":"info","ts":"2022-05-14T18:15:51.802-0700","msg":"none","service":"matching","component":"matching-engine","wf-task-queue-name":"/_sys/temporal-sys-tq-scanner-taskqueue-0/2","wf-task-queue-type":"Activity","wf-namespace":"temporal-system","lifecycle":"Started","logging-call-at":"taskQueueManager.go:246"}
{"level":"info","ts":"2022-05-14T18:15:51.803-0700","msg":"none","service":"matching","component":"matching-engine","wf-task-queue-name":"temporal-sys-processor-parent-close-policy","wf-task-queue-type":"Activity","wf-namespace":"temporal-system","lifecycle":"Started","logging-call-at":"taskQueueManager.go:246"}
{"level":"info","ts":"2022-05-14T18:15:51.803-0700","msg":"none","service":"matching","component":"matching-engine","wf-task-queue-name":"/_sys/temporal-sys-processor-parent-close-policy/1","wf-task-queue-type":"Activity","wf-namespace":"temporal-system","lifecycle":"Started","logging-call-at":"taskQueueManager.go:246"}
{"level":"info","ts":"2022-05-14T18:15:51.804-0700","msg":"none","service":"matching","component":"matching-engine","wf-task-queue-name":"temporal-sys-processor-parent-close-policy","wf-task-queue-type":"Workflow","wf-namespace":"temporal-system","lifecycle":"Started","logging-call-at":"taskQueueManager.go:246"}
{"level":"info","ts":"2022-05-14T18:15:51.805-0700","msg":"none","service":"matching","component":"matching-engine","wf-task-queue-name":"temporal-sys-batcher-taskqueue","wf-task-queue-type":"Workflow","wf-namespace":"temporal-system","lifecycle":"Started","logging-call-at":"taskQueueManager.go:246"}
{"level":"info","ts":"2022-05-14T18:15:51.809-0700","msg":"none","service":"matching","component":"matching-engine","wf-task-queue-name":"default-worker-tq","wf-task-queue-type":"Workflow","wf-namespace":"temporal-system","lifecycle":"Started","logging-call-at":"taskQueueManager.go:246"}
{"level":"info","ts":"2022-05-14T18:15:51.809-0700","msg":"none","service":"matching","component":"matching-engine","wf-task-queue-name":"default-worker-tq","wf-task-queue-type":"Activity","wf-namespace":"temporal-system","lifecycle":"Started","logging-call-at":"taskQueueManager.go:246"}
{"level":"info","ts":"2022-05-14T18:15:51.810-0700","msg":"none","service":"matching","component":"matching-engine","wf-task-queue-name":"temporal-sys-batcher-taskqueue","wf-task-queue-type":"Activity","wf-namespace":"temporal-system","lifecycle":"Started","logging-call-at":"taskQueueManager.go:246"}
{"level":"info","ts":"2022-05-14T18:15:55.458-0700","msg":"temporal-sys-tq-scanner-workflow workflow successfully started","service":"worker","logging-call-at":"scanner.go:202"}
{"time":"2022-05-14T18:15:58.7056828-07:00","id":"","remote_ip":"127.0.0.1","host":"localhost:8233","method":"GET","uri":"/namespaces/default/workflows","user_agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0","status":200,"error":"","latency":50100,"latency_human":"50.1µs","bytes_in":0,"bytes_out":1104}
{"time":"2022-05-14T18:15:58.9932673-07:00","id":"","remote_ip":"127.0.0.1","host":"localhost:8233","method":"GET","uri":"/css/override.css","user_agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0","status":200,"error":"","latency":97906600,"latency_human":"97.9066ms","bytes_in":0,"bytes_out":55}
{"time":"2022-05-14T18:15:58.9932673-07:00","id":"","remote_ip":"127.0.0.1","host":"localhost:8233","method":"GET","uri":"/css/normalize.css","user_agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0","status":200,"error":"","latency":109765200,"latency_human":"109.7652ms","bytes_in":0,"bytes_out":1815}
{"time":"2022-05-14T18:15:58.9932673-07:00","id":"","remote_ip":"127.0.0.1","host":"localhost:8233","method":"GET","uri":"/prism/prism.css","user_agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0","status":200,"error":"","latency":97362400,"latency_human":"97.3624ms","bytes_in":0,"bytes_out":1877}
{"time":"2022-05-14T18:15:58.9932673-07:00","id":"","remote_ip":"127.0.0.1","host":"localhost:8233","method":"GET","uri":"/prism/prism.js","user_agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0","status":200,"error":"","latency":113272800,"latency_human":"113.2728ms","bytes_in":0,"bytes_out":7865}
{"time":"2022-05-14T18:15:58.9932673-07:00","id":"","remote_ip":"127.0.0.1","host":"localhost:8233","method":"GET","uri":"/_app/start-c7f9f9fa.js","user_agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0","status":200,"error":"","latency":111595700,"latency_human":"111.5957ms","bytes_in":0,"bytes_out":48278}
{"time":"2022-05-14T18:15:59.0049761-07:00","id":"","remote_ip":"127.0.0.1","host":"localhost:8233","method":"GET","uri":"/favicon.ico","user_agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0","status":200,"error":"","latency":848800,"latency_human":"848.8µs","bytes_in":0,"bytes_out":15406}
{"level":"info","ts":"2022-05-14T18:16:01.417-0700","msg":"Current reachable members","service":"worker","component":"service-resolver","service":"history","addresses":["127.0.0.1:63796"],"logging-call-at":"rpServiceResolver.go:266"}
{"level":"info","ts":"2022-05-14T18:16:01.432-0700","msg":"Current reachable members","service":"matching","component":"service-resolver","service":"history","addresses":["127.0.0.1:63796"],"logging-call-at":"rpServiceResolver.go:266"}
{"level":"info","ts":"2022-05-14T18:16:03.191-0700","msg":"Received interrupt signal, stopping the server.","value":"interrupt","logging-call-at":"server_impl.go:123"}
{"level":"info","ts":"2022-05-14T18:16:03.193-0700","msg":"Stopped Worker","service":"worker","Namespace":"temporal-system","TaskQueue":"default-worker-tq","WorkerID":"47496@Gragus-P70@","logging-call-at":"worker.go:114"}
{"level":"info","ts":"2022-05-14T18:16:03.202-0700","msg":"none","component":"worker-manager","lifecycle":"Stopped","logging-call-at":"worker.go:116"}
{"level":"warn","ts":"2022-05-14T18:16:03.193-0700","msg":"Failed to poll for task.","service":"worker","Namespace":"temporal-system","TaskQueue":"default-worker-tq","WorkerID":"47496@Gragus-P70@","WorkerType":"WorkflowWorker","Error":"worker stopping","logging-call-at":"internal_worker_base.go:276"}
{"level":"info","ts":"2022-05-14T18:16:03.193-0700","msg":"ShutdownHandler: Updating gRPC health status to ShuttingDown","service":"frontend","logging-call-at":"service.go:301"}
{"level":"warn","ts":"2022-05-14T18:16:03.193-0700","msg":"Failed to poll for task.","service":"worker","Namespace":"temporal-system","TaskQueue":"default-worker-tq","WorkerID":"47496@Gragus-P70@","WorkerType":"ActivityWorker","Error":"worker stopping","logging-call-at":"internal_worker_base.go:276"}
{"level":"info","ts":"2022-05-14T18:16:03.193-0700","msg":"ShutdownHandler: Evicting self from membership ring","service":"history","logging-call-at":"service.go:137"}
{"level":"info","ts":"2022-05-14T18:16:03.194-0700","msg":"ShutdownHandler: Evicting self from membership ring","service":"matching","logging-call-at":"service.go:115"}
{"level":"info","ts":"2022-05-14T18:16:03.206-0700","msg":"worker service stopped","service":"worker","component":"worker","address":"127.0.0.1:63800","logging-call-at":"service.go:399"}
{"level":"info","ts":"2022-05-14T18:16:03.216-0700","msg":"ShutdownHandler: Waiting for others to discover I am unhealthy","service":"frontend","logging-call-at":"service.go:304"}
{"level":"info","ts":"2022-05-14T18:16:03.236-0700","msg":"Current reachable members","service":"history","component":"service-resolver","service":"history","addresses":[],"logging-call-at":"rpServiceResolver.go:266"}
{"level":"info","ts":"2022-05-14T18:16:03.238-0700","msg":"Current reachable members","service":"matching","component":"service-resolver","service":"matching","addresses":[],"logging-call-at":"rpServiceResolver.go:266"}
{"level":"info","ts":"2022-05-14T18:16:03.238-0700","msg":"Current reachable members","service":"matching","component":"service-resolver","service":"history","addresses":[],"logging-call-at":"rpServiceResolver.go:266"}
{"level":"info","ts":"2022-05-14T18:16:03.238-0700","msg":"Current reachable members","service":"frontend","component":"service-resolver","service":"history","addresses":[],"logging-call-at":"rpServiceResolver.go:266"}
{"level":"info","ts":"2022-05-14T18:16:03.238-0700","msg":"ShutdownHandler: Waiting for others to discover I am unhealthy","service":"history","logging-call-at":"service.go:140"}
{"level":"info","ts":"2022-05-14T18:16:03.239-0700","msg":"Current reachable members","service":"frontend","component":"service-resolver","service":"matching","addresses":[],"logging-call-at":"rpServiceResolver.go:266"}
{"level":"info","ts":"2022-05-14T18:16:03.239-0700","msg":"ShutdownHandler: Waiting for others to discover I am unhealthy","service":"matching","logging-call-at":"service.go:117"}
{"level":"info","ts":"2022-05-14T18:16:03.239-0700","msg":"RuntimeMetricsReporter stopped","service":"worker","logging-call-at":"runtime.go:146"}
{"level":"info","ts":"2022-05-14T18:16:03.241-0700","msg":"ShutdownHandler: Draining traffic","service":"frontend","logging-call-at":"service.go:313"}
{"level":"info","ts":"2022-05-14T18:16:03.243-0700","msg":"none","component":"shard-controller","address":"127.0.0.1:63796","shard-update":"RingMembershipChangedEvent","number-processed":0,"number-deleted":1,"number":0,"logging-call-at":"controller_impl.go:305"}
{"level":"info","ts":"2022-05-14T18:16:03.254-0700","msg":"ShutdownHandler: Initiating shardController shutdown","service":"history","logging-call-at":"service.go:143"}
{"level":"info","ts":"2022-05-14T18:16:03.259-0700","msg":"matching client encountered error","service":"frontend","error":"error reading from server: EOF","service-error-type":"serviceerror.Unavailable","logging-call-at":"metricClient.go:268"}
{"level":"info","ts":"2022-05-14T18:16:03.259-0700","msg":"matching stopped","service":"matching","logging-call-at":"service.go:125"}
{"level":"info","ts":"2022-05-14T18:16:03.259-0700","msg":"matching client encountered error","service":"frontend","error":"error reading from server: EOF","service-error-type":"serviceerror.Unavailable","logging-call-at":"metricClient.go:268"}
{"level":"info","ts":"2022-05-14T18:16:03.259-0700","msg":"matching client encountered error","service":"frontend","error":"error reading from server: EOF","service-error-type":"serviceerror.Unavailable","logging-call-at":"metricClient.go:268"}
{"level":"info","ts":"2022-05-14T18:16:03.259-0700","msg":"matching client encountered error","service":"frontend","error":"error reading from server: EOF","service-error-type":"serviceerror.Unavailable","logging-call-at":"metricClient.go:268"}
{"level":"info","ts":"2022-05-14T18:16:03.259-0700","msg":"matching client encountered error","service":"matching","error":"error reading from server: EOF","service-error-type":"serviceerror.Unavailable","logging-call-at":"metricClient.go:268"}
{"level":"info","ts":"2022-05-14T18:16:03.259-0700","msg":"matching client encountered error","service":"matching","error":"error reading from server: EOF","service-error-type":"serviceerror.Unavailable","logging-call-at":"metricClient.go:268"}
{"level":"info","ts":"2022-05-14T18:16:03.259-0700","msg":"matching client encountered error","service":"frontend","error":"error reading from server: EOF","service-error-type":"serviceerror.Unavailable","logging-call-at":"metricClient.go:268"}
{"level":"info","ts":"2022-05-14T18:16:03.259-0700","msg":"matching client encountered error","service":"matching","error":"error reading from server: EOF","service-error-type":"serviceerror.Unavailable","logging-call-at":"metricClient.go:268"}
{"level":"info","ts":"2022-05-14T18:16:03.259-0700","msg":"matching client encountered error","service":"matching","error":"error reading from server: EOF","service-error-type":"serviceerror.Unavailable","logging-call-at":"metricClient.go:268"}
{"level":"info","ts":"2022-05-14T18:16:03.259-0700","msg":"matching client encountered error","service":"frontend","error":"error reading from server: EOF","service-error-type":"serviceerror.Unavailable","logging-call-at":"metricClient.go:268"}
{"level":"info","ts":"2022-05-14T18:16:03.259-0700","msg":"matching client encountered error","service":"frontend","error":"error reading from server: EOF","service-error-type":"serviceerror.Unavailable","logging-call-at":"metricClient.go:268"}
{"level":"info","ts":"2022-05-14T18:16:03.259-0700","msg":"matching client encountered error","service":"matching","error":"error reading from server: EOF","service-error-type":"serviceerror.Unavailable","logging-call-at":"metricClient.go:268"}
{"level":"info","ts":"2022-05-14T18:16:03.259-0700","msg":"matching client encountered error","service":"frontend","error":"error reading from server: EOF","service-error-type":"serviceerror.Unavailable","logging-call-at":"metricClient.go:268"}
{"level":"info","ts":"2022-05-14T18:16:03.259-0700","msg":"matching client encountered error","service":"frontend","error":"error reading from server: EOF","service-error-type":"serviceerror.Unavailable","logging-call-at":"metricClient.go:268"}
{"level":"info","ts":"2022-05-14T18:16:03.259-0700","msg":"matching client encountered error","service":"frontend","error":"error reading from server: EOF","service-error-type":"serviceerror.Unavailable","logging-call-at":"metricClient.go:268"}
{"level":"info","ts":"2022-05-14T18:16:03.259-0700","msg":"matching client encountered error","service":"frontend","error":"error reading from server: EOF","service-error-type":"serviceerror.Unavailable","logging-call-at":"metricClient.go:268"}
{"level":"info","ts":"2022-05-14T18:16:03.259-0700","msg":"matching client encountered error","service":"frontend","error":"error reading from server: EOF","service-error-type":"serviceerror.Unavailable","logging-call-at":"metricClient.go:268"}
{"level":"info","ts":"2022-05-14T18:16:03.260-0700","msg":"matching client encountered error","service":"frontend","error":"error reading from server: EOF","service-error-type":"serviceerror.Unavailable","logging-call-at":"metricClient.go:268"}
{"level":"info","ts":"2022-05-14T18:16:03.259-0700","msg":"matching client encountered error","service":"frontend","error":"error reading from server: EOF","service-error-type":"serviceerror.Unavailable","logging-call-at":"metricClient.go:268"}
{"level":"info","ts":"2022-05-14T18:16:03.260-0700","msg":"matching client encountered error","service":"frontend","error":"error reading from server: EOF","service-error-type":"serviceerror.Unavailable","logging-call-at":"metricClient.go:268"}
{"level":"info","ts":"2022-05-14T18:16:03.260-0700","msg":"matching client encountered error","service":"frontend","error":"error reading from server: EOF","service-error-type":"serviceerror.Unavailable","logging-call-at":"metricClient.go:268"}
{"level":"info","ts":"2022-05-14T18:16:03.260-0700","msg":"matching client encountered error","service":"frontend","error":"error reading from server: EOF","service-error-type":"serviceerror.Unavailable","logging-call-at":"metricClient.go:268"}
{"level":"info","ts":"2022-05-14T18:16:03.260-0700","msg":"matching client encountered error","service":"frontend","error":"error reading from server: EOF","service-error-type":"serviceerror.Unavailable","logging-call-at":"metricClient.go:268"}
{"level":"info","ts":"2022-05-14T18:16:03.260-0700","msg":"matching client encountered error","service":"frontend","error":"error reading from server: EOF","service-error-type":"serviceerror.Unavailable","logging-call-at":"metricClient.go:268"}
{"level":"info","ts":"2022-05-14T18:16:03.260-0700","msg":"matching client encountered error","service":"frontend","error":"error reading from server: EOF","service-error-type":"serviceerror.Unavailable","logging-call-at":"metricClient.go:268"}
{"level":"info","ts":"2022-05-14T18:16:03.260-0700","msg":"matching client encountered error","service":"matching","error":"error reading from server: EOF","service-error-type":"serviceerror.Unavailable","logging-call-at":"metricClient.go:268"}
{"level":"info","ts":"2022-05-14T18:16:03.261-0700","msg":"frontend stopped","service":"frontend","logging-call-at":"service.go:323"}
{"level":"warn","ts":"2022-05-14T18:16:03.261-0700","msg":"Failed to poll for task.","service":"worker","Namespace":"temporal-system","TaskQueue":"temporal-sys-processor-parent-close-policy","WorkerID":"47496@Gragus-P70@","WorkerType":"WorkflowWorker","Error":"error reading from server: EOF","logging-call-at":"internal_worker_base.go:276"}
{"level":"warn","ts":"2022-05-14T18:16:03.261-0700","msg":"Failed to poll for task.","service":"worker","Namespace":"temporal-system","TaskQueue":"temporal-sys-tq-scanner-taskqueue-0","WorkerID":"47496@Gragus-P70@","WorkerType":"ActivityWorker","Error":"error reading from server: EOF","logging-call-at":"internal_worker_base.go:276"}
{"level":"warn","ts":"2022-05-14T18:16:03.261-0700","msg":"Failed to poll for task.","service":"worker","Namespace":"temporal-system","TaskQueue":"temporal-sys-batcher-taskqueue","WorkerID":"47496@Gragus-P70@","WorkerType":"WorkflowWorker","Error":"error reading from server: EOF","logging-call-at":"internal_worker_base.go:276"}
{"level":"warn","ts":"2022-05-14T18:16:03.261-0700","msg":"Failed to poll for task.","service":"worker","Namespace":"temporal-system","TaskQueue":"temporal-sys-tq-scanner-taskqueue-0","WorkerID":"47496@Gragus-P70@","WorkerType":"WorkflowWorker","Error":"error reading from server: EOF","logging-call-at":"internal_worker_base.go:276"}
{"level":"warn","ts":"2022-05-14T18:16:03.261-0700","msg":"Failed to poll for task.","service":"worker","Namespace":"temporal-system","TaskQueue":"temporal-sys-processor-parent-close-policy","WorkerID":"47496@Gragus-P70@","WorkerType":"ActivityWorker","Error":"error reading from server: EOF","logging-call-at":"internal_worker_base.go:276"}
{"level":"warn","ts":"2022-05-14T18:16:03.261-0700","msg":"Failed to poll for task.","service":"worker","Namespace":"temporal-system","TaskQueue":"temporal-sys-batcher-taskqueue","WorkerID":"47496@Gragus-P70@","WorkerType":"ActivityWorker","Error":"error reading from server: EOF","logging-call-at":"internal_worker_base.go:276"}
{"level":"error","ts":"2022-05-14T18:16:03.264-0700","msg":"Error looking up host for shardID","component":"shard-controller","address":"127.0.0.1:63796","error":"Not enough hosts to serve the request","operation-result":"OperationFailed","shard-id":1,"logging-call-at":"controller_impl.go:335","stacktrace":"go.temporal.io/server/common/log.(*zapLogger).Error\n\tC:/Users/gregp/go/pkg/mod/go.temporal.io/[email protected]/common/log/zap_logger.go:142\ngo.temporal.io/server/service/history/shard.(*ControllerImpl).acquireShards.func1\n\tC:/Users/gregp/go/pkg/mod/go.temporal.io/[email protected]/service/history/shard/controller_impl.go:335"}
{"level":"info","ts":"2022-05-14T18:16:03.268-0700","msg":"RuntimeMetricsReporter stopped","service":"matching","logging-call-at":"runtime.go:146"}
{"level":"info","ts":"2022-05-14T18:16:03.291-0700","msg":"RuntimeMetricsReporter stopped","service":"frontend","logging-call-at":"runtime.go:146"}
{"level":"info","ts":"2022-05-14T18:16:03.298-0700","msg":"none","component":"shard-controller","address":"127.0.0.1:63796","lifecycle":"Stopping","logging-call-at":"controller_impl.go:372"}
{"level":"info","ts":"2022-05-14T18:16:03.300-0700","msg":"none","shard-id":1,"address":"127.0.0.1:63796","lifecycle":"Stopping","component":"shard-engine","logging-call-at":"context_impl.go:1406"}
{"level":"info","ts":"2022-05-14T18:16:03.301-0700","msg":"none","shard-id":1,"address":"127.0.0.1:63796","component":"history-engine","lifecycle":"Stopping","logging-call-at":"historyEngine.go:273"}
{"level":"info","ts":"2022-05-14T18:16:03.302-0700","msg":"Timer queue processor pump shutting down.","shard-id":1,"address":"127.0.0.1:63796","component":"timer-queue-processor","cluster-name":"active","component":"timer-queue-processor","logging-call-at":"timerQueueProcessorBase.go:188"}
{"level":"info","ts":"2022-05-14T18:16:03.302-0700","msg":"Timer processor exiting.","shard-id":1,"address":"127.0.0.1:63796","component":"timer-queue-processor","cluster-name":"active","component":"timer-queue-processor","logging-call-at":"timerQueueProcessorBase.go:189"}
{"level":"info","ts":"2022-05-14T18:16:03.303-0700","msg":"Task processor shutdown.","shard-id":1,"address":"127.0.0.1:63796","component":"timer-queue-processor","cluster-name":"active","component":"timer-queue-processor","logging-call-at":"taskProcessor.go:155"}
{"level":"info","ts":"2022-05-14T18:16:03.303-0700","msg":"Timer queue processor stopped.","shard-id":1,"address":"127.0.0.1:63796","component":"timer-queue-processor","cluster-name":"active","component":"timer-queue-processor","logging-call-at":"timerQueueProcessorBase.go:169"}
{"level":"info","ts":"2022-05-14T18:16:03.304-0700","msg":"none","shard-id":1,"address":"127.0.0.1:63796","component":"visibility-queue-processor","lifecycle":"Stopping","component":"transfer-queue-processor","logging-call-at":"queueProcessor.go:156"}
{"level":"info","ts":"2022-05-14T18:16:03.304-0700","msg":"Queue processor pump shut down.","shard-id":1,"address":"127.0.0.1:63796","component":"visibility-queue-processor","logging-call-at":"queueProcessor.go:231"}
{"level":"info","ts":"2022-05-14T18:16:03.305-0700","msg":"Task processor shutdown.","shard-id":1,"address":"127.0.0.1:63796","component":"visibility-queue-processor","logging-call-at":"taskProcessor.go:155"}
{"level":"info","ts":"2022-05-14T18:16:03.305-0700","msg":"none","shard-id":1,"address":"127.0.0.1:63796","component":"visibility-queue-processor","lifecycle":"Stopped","component":"transfer-queue-processor","logging-call-at":"queueProcessor.go:169"}
{"level":"info","ts":"2022-05-14T18:16:03.306-0700","msg":"none","shard-id":1,"address":"127.0.0.1:63796","component":"transfer-queue-processor","cluster-name":"active","lifecycle":"Stopping","component":"transfer-queue-processor","logging-call-at":"queueProcessor.go:156"}
{"level":"info","ts":"2022-05-14T18:16:03.307-0700","msg":"Queue processor pump shut down.","shard-id":1,"address":"127.0.0.1:63796","component":"transfer-queue-processor","cluster-name":"active","logging-call-at":"queueProcessor.go:231"}
{"level":"info","ts":"2022-05-14T18:16:03.310-0700","msg":"Task processor shutdown.","shard-id":1,"address":"127.0.0.1:63796","component":"transfer-queue-processor","cluster-name":"active","logging-call-at":"taskProcessor.go:155"}
{"level":"info","ts":"2022-05-14T18:16:03.310-0700","msg":"none","shard-id":1,"address":"127.0.0.1:63796","component":"transfer-queue-processor","cluster-name":"active","lifecycle":"Stopped","component":"transfer-queue-processor","logging-call-at":"queueProcessor.go:169"}
{"level":"info","ts":"2022-05-14T18:16:03.311-0700","msg":"none","shard-id":1,"address":"127.0.0.1:63796","component":"history-engine","lifecycle":"Stopped","logging-call-at":"historyEngine.go:288"}
{"level":"info","ts":"2022-05-14T18:16:03.311-0700","msg":"none","shard-id":1,"address":"127.0.0.1:63796","lifecycle":"Stopped","component":"shard-engine","logging-call-at":"context_impl.go:1408"}
{"level":"info","ts":"2022-05-14T18:16:03.312-0700","msg":"none","component":"shard-controller","address":"127.0.0.1:63796","lifecycle":"Stopped","logging-call-at":"controller_impl.go:142"}
{"level":"info","ts":"2022-05-14T18:16:03.313-0700","msg":"ShutdownHandler: Waiting for traffic to drain","service":"history","logging-call-at":"service.go:145"}
{"level":"info","ts":"2022-05-14T18:16:03.314-0700","msg":"ShutdownHandler: No longer taking rpc requests","service":"history","logging-call-at":"service.go:148"}
{"level":"info","ts":"2022-05-14T18:16:03.314-0700","msg":"Replication task fetchers stopped.","logging-call-at":"replicationTaskFetcher.go:160"}
{"level":"info","ts":"2022-05-14T18:16:03.315-0700","msg":"history stopped","service":"history","logging-call-at":"service.go:157"}
{"level":"info","ts":"2022-05-14T18:16:03.316-0700","msg":"RuntimeMetricsReporter stopped","service":"history","logging-call-at":"runtime.go:146"}
All services are stopped.
I personally only use this mode since I want to easily clean the server state for testing.
Wondering if others share this preference..
Is your feature request related to a problem? Please describe.
Homebrew is a popular package manager for macOS that would allow users to get started with Temporalite quickly and receive updates in the future. Homebrew uses pre-built binaries, so users would no longer need to have the Go toolchain installed.
Describe the solution you'd like
Configure goreleaser to update the temporalio homebrew tap: https://github.com/temporalio/homebrew-brew
Describe alternatives you've considered
Additional context
Golang Server for https://github.com/temporalio/ui
Library home page: https://proxy.golang.org/github.com/temporalio/ui-server/v2/@v/v2.8.0.zip
Found in HEAD commit: 4d2846ea5a1ebd31054fa47f97595d3be1ea3538
CVE | Severity | CVSS | Dependency | Type | Fixed in (github.com/temporalio/ui-server/v2-v2.8.0 version) | Remediation Available |
---|---|---|---|---|---|---|
WS-2021-0461 | Medium | 6.1 | github.com/temporalio/ui-server/v2-v2.8.0 | Direct | swagger-ui - 4.1.3;swagger-ui-dist - 4.1.3 | ❌ |
CVE-2018-25031 | Medium | 4.3 | github.com/temporalio/ui-server/v2-v2.8.0 | Direct | swagger-ui - 4.1.3;swagger-ui-dist - 4.1.3 | ❌ |
Golang Server for https://github.com/temporalio/ui
Library home page: https://proxy.golang.org/github.com/temporalio/ui-server/v2/@v/v2.8.0.zip
Dependency Hierarchy:
Found in HEAD commit: 4d2846ea5a1ebd31054fa47f97595d3be1ea3538
Found in base branch: main
SwaggerUI supports displaying remote OpenAPI definitions through the ?url parameter. This enables robust demonstration capabilities on sites like petstore.swagger.io, editor.swagger.io, and similar sites, where users often want to see what their OpenAPI definitions would look like rendered.
However, this functionality may pose a risk for users who host their own SwaggerUI instances. In particular, including remote OpenAPI definitions opens a vector for phishing attacks by abusing the trusted names/domains of self-hosted instances.
Resolution:
We've made the decision to disable query parameters (#4872) by default starting with SwaggerUI version 4.1.3. Please update to this version when it becomes available (ETA: 2021 December). Users will still be able to be re-enable the options at their discretion. We'll continue to enable query parameters on the Swagger demo sites.
Publish Date: 2021-12-09
URL: WS-2021-0461
Base Score Metrics:
Type: Upgrade version
Origin: GHSA-qrmm-w75w-3wpx
Release Date: 2021-12-09
Fix Resolution: swagger-ui - 4.1.3;swagger-ui-dist - 4.1.3
Golang Server for https://github.com/temporalio/ui
Library home page: https://proxy.golang.org/github.com/temporalio/ui-server/v2/@v/v2.8.0.zip
Dependency Hierarchy:
Found in HEAD commit: 4d2846ea5a1ebd31054fa47f97595d3be1ea3538
Found in base branch: main
Swagger UI before 4.1.3 could allow a remote attacker to conduct spoofing attacks. By persuading a victim to open a crafted URL, an attacker could exploit this vulnerability to display remote OpenAPI definitions.
Publish Date: 2022-03-11
URL: CVE-2018-25031
Base Score Metrics:
Type: Upgrade version
Origin: GHSA-qrmm-w75w-3wpx
Release Date: 2022-03-11
Fix Resolution: swagger-ui - 4.1.3;swagger-ui-dist - 4.1.3
Can i use this for android or ios app devolepment? Any documentation that can help me?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.