# Conflicts: # .github/workflows/build-and-publish.yml # AGENTS.md # AGENTS.md~upstream_main # api/adminservice/v1/request_response.go-helpers.pb.go # api/adminservice/v1/request_response.pb.go # api/adminservice/v1/service.pb.go # api/adminservice/v1/service_grpc.pb.go # api/adminservicemock/v1/service_grpc.pb.mock.go # api/archiver/v1/message.pb.go # api/batch/v1/request_response.pb.go # api/checksum/v1/message.pb.go # api/deployment/v1/message.go-helpers.pb.go # api/deployment/v1/message.pb.go # api/enums/v1/replication.go-helpers.pb.go # api/enums/v1/replication.pb.go # api/enums/v1/task.go-helpers.pb.go # api/enums/v1/task.pb.go # api/errordetails/v1/message.go-helpers.pb.go # api/errordetails/v1/message.pb.go # api/historyservice/v1/request_response.go-helpers.pb.go # api/historyservice/v1/request_response.pb.go # api/historyservice/v1/service.pb.go # api/historyservice/v1/service_grpc.pb.go # api/historyservicemock/v1/service_grpc.pb.mock.go # api/matchingservice/v1/request_response.pb.go # api/matchingservice/v1/service.pb.go # api/persistence/v1/chasm.pb.go # api/persistence/v1/executions.go-helpers.pb.go # api/persistence/v1/executions.pb.go # api/persistence/v1/workflow_mutable_state.pb.go # api/replication/v1/message.pb.go # api/routing/v1/extension.pb.go # api/schedule/v1/message.pb.go # api/taskqueue/v1/message.go-helpers.pb.go # api/taskqueue/v1/message.pb.go # chasm/component.go # chasm/component_mock.go # chasm/context.go # chasm/context_mock.go # chasm/engine.go # chasm/engine_mock.go # chasm/field.go # chasm/field_test.go # chasm/lib/activity/activity.go # chasm/lib/activity/activity_tasks.go # chasm/lib/activity/activity_test.go # chasm/lib/activity/config.go # chasm/lib/activity/frontend.go # chasm/lib/activity/fx.go # chasm/lib/activity/gen/activitypb/v1/activity_state.pb.go # chasm/lib/activity/gen/activitypb/v1/request_response.go-helpers.pb.go # chasm/lib/activity/gen/activitypb/v1/request_response.pb.go # chasm/lib/activity/gen/activitypb/v1/service.pb.go # chasm/lib/activity/gen/activitypb/v1/service_client.pb.go # chasm/lib/activity/gen/activitypb/v1/service_grpc.pb.go # chasm/lib/activity/handler.go # chasm/lib/activity/library.go # chasm/lib/activity/proto/v1/activity_state.proto # chasm/lib/activity/proto/v1/request_response.proto # chasm/lib/activity/proto/v1/service.proto # chasm/lib/activity/proto/v1/tasks.proto # chasm/lib/activity/statemachine.go # chasm/lib/activity/statemachine_test.go # chasm/lib/activity/validator.go # chasm/lib/activity/validator_test.go # chasm/lib/buf.yaml # chasm/lib/callback/component.go # chasm/lib/callback/config.go # chasm/lib/callback/fx.go # chasm/lib/callback/invocable_internal.go # chasm/lib/callback/invocable_outbound.go # chasm/lib/callback/library.go # chasm/lib/callback/proto/v1/message.proto # chasm/lib/callback/proto/v1/tasks.proto # chasm/lib/callback/request.go # chasm/lib/callback/request_test.go # chasm/lib/callback/tasks.go # chasm/lib/callback/tasks_test.go # chasm/lib/nexusoperation/cancellation.go # chasm/lib/nexusoperation/cancellation_statemachine.go # chasm/lib/nexusoperation/config.go # chasm/lib/nexusoperation/fx.go # chasm/lib/nexusoperation/gen/nexusoperationpb/v1/operation.go-helpers.pb.go # chasm/lib/nexusoperation/gen/nexusoperationpb/v1/operation.pb.go # chasm/lib/nexusoperation/gen/nexusoperationpb/v1/tasks.go-helpers.pb.go # chasm/lib/nexusoperation/gen/nexusoperationpb/v1/tasks.pb.go # chasm/lib/nexusoperation/library.go # chasm/lib/nexusoperation/metrics.go # chasm/lib/nexusoperation/operation.go # chasm/lib/nexusoperation/operation_statemachine.go # chasm/lib/nexusoperation/proto/v1/operation.proto # chasm/lib/nexusoperation/proto/v1/tasks.proto # chasm/lib/scheduler/backfiller.go # chasm/lib/scheduler/backfiller_tasks.go # chasm/lib/scheduler/backfiller_tasks_test.go # chasm/lib/scheduler/config.go # chasm/lib/scheduler/export_test.go # chasm/lib/scheduler/fx.go # chasm/lib/scheduler/gen/schedulerpb/v1/message.go-helpers.pb.go # chasm/lib/scheduler/gen/schedulerpb/v1/message.pb.go # chasm/lib/scheduler/gen/schedulerpb/v1/request_response.go-helpers.pb.go # chasm/lib/scheduler/gen/schedulerpb/v1/request_response.pb.go # chasm/lib/scheduler/gen/schedulerpb/v1/service.pb.go # chasm/lib/scheduler/gen/schedulerpb/v1/service_client.pb.go # chasm/lib/scheduler/gen/schedulerpb/v1/service_grpc.pb.go # chasm/lib/scheduler/gen/schedulerpb/v1/tasks.go-helpers.pb.go # chasm/lib/scheduler/gen/schedulerpb/v1/tasks.pb.go # chasm/lib/scheduler/generator.go # chasm/lib/scheduler/generator_tasks.go # chasm/lib/scheduler/generator_tasks_test.go # chasm/lib/scheduler/handler.go # chasm/lib/scheduler/handler_test.go # chasm/lib/scheduler/helper_test.go # chasm/lib/scheduler/invoker.go # chasm/lib/scheduler/invoker_execute_task_test.go # chasm/lib/scheduler/invoker_process_buffer_task_test.go # chasm/lib/scheduler/invoker_tasks.go # chasm/lib/scheduler/library.go # chasm/lib/scheduler/migration/migration.go # chasm/lib/scheduler/migration/migration_test.go # chasm/lib/scheduler/proto/v1/message.proto # chasm/lib/scheduler/proto/v1/request_response.proto # chasm/lib/scheduler/proto/v1/service.proto # chasm/lib/scheduler/proto/v1/tasks.proto # chasm/lib/scheduler/scheduler.go # chasm/lib/scheduler/scheduler_idle_tasks_test.go # chasm/lib/scheduler/scheduler_tasks.go # chasm/lib/scheduler/scheduler_test.go # chasm/lib/scheduler/spec_processor.go # chasm/lib/tests/gen/testspb/v1/service.pb.go # chasm/lib/tests/handler.go # chasm/lib/tests/library.go # chasm/lib/tests/payload.go # chasm/lib/tests/proto/v1/message.proto # chasm/lib/tests/proto/v1/request_response.proto # chasm/lib/tests/proto/v1/service.proto # chasm/lib/tests/tasks.go # chasm/lib/workflow/fx.go # chasm/lib/workflow/library.go # chasm/lib/workflow/workflow.go # chasm/library_core.go # chasm/ms_pointer.go # chasm/nexus_operation_processor.go # chasm/node_backend_mock.go # chasm/ref.go # chasm/ref_test.go # chasm/registrable_component.go # chasm/registrable_task.go # chasm/registry.go # chasm/registry_test.go # chasm/search_attribute.go # chasm/search_attribute_test.go # chasm/statemachine.go # chasm/task.go # chasm/task_mock.go # chasm/test_component_test.go # chasm/test_library_test.go # chasm/test_task_test.go # chasm/test_var_test.go # chasm/tree.go # chasm/tree_test.go # chasm/visibility.go # chasm/visibility_manager.go # chasm/visibility_manager_mock.go # chasm/visibility_test.go # chasm/visibility_value.go # chasm/visibility_value_test.go # chasm/workflow.go # client/admin/client_gen.go # client/admin/metric_client.go # client/admin/metric_client_gen.go # client/admin/retryable_client_gen.go # client/frontend/client_gen.go # client/frontend/metric_client.go # client/frontend/metric_client_gen.go # client/frontend/retryable_client_gen.go # client/history/client_gen.go # client/history/metric_client.go # client/history/metric_client_gen.go # client/history/retryable_client_gen.go # client/matching/README.md # client/matching/client.go # client/matching/client_gen.go # client/matching/loadbalancer.go # client/matching/metric_client.go # client/matching/metric_client_gen.go # cmd/tools/genrpcwrappers/main.go # cmd/tools/getproto/files.go # cmd/tools/getproto/main.go # common/api/metadata.go # common/archiver/README.md # common/archiver/gcloud/connector/client.go # common/archiver/provider/provider.go # common/archiver/provider/provider_mock.go # common/archiver/s3store/history_archiver.go # common/archiver/s3store/history_archiver_test.go # common/archiver/s3store/mocks/generate.go # common/archiver/s3store/mocks/s3api.go # common/archiver/s3store/util.go # common/archiver/s3store/visibility_archiver.go # common/archiver/s3store/visibility_archiver_test.go # common/authorization/authorizer.go # common/authorization/claim_mapper.go # common/authorization/default_authorizer.go # common/authorization/default_jwt_claim_mapper.go # common/authorization/default_token_key_provider.go # common/authorization/interceptor.go # common/authorization/interceptor_test.go # common/authorization/roles.go # common/cluster/metadata.go # common/cluster/metadata_test.go # common/config/config.go # common/config/config_template_embedded.yaml # common/config/persistence.go # common/config/persistence_test.go # common/constants.go # common/contextutil/metadata.go # common/contextutil/metadata_test.go # common/dynamicconfig/constants.go # common/dynamicconfig/shared_constants.go # common/enums/defaults.go # common/headers/caller_info.go # common/headers/headers.go # common/headers/version_checker.go # common/log/tag/values.go # common/log/zap_logger.go # common/membership/ringpop/factory.go # common/membership/ringpop/monitor.go # common/membership/ringpop/service_resolver.go # common/membership/ringpop/test_cluster.go # common/metrics/config.go # common/metrics/metric_defs.go # common/metrics/tags.go # common/metrics/tally_metrics_handler.go # common/metrics/tally_metrics_handler_test.go # common/metrics/task_queues.go # common/namespace/namespace.go # common/namespace/nsregistry/registry.go # common/namespace/nsregistry/registry_test.go # common/namespace/nsregistry/registry_watch_test.go # common/namespace/nsreplication/replication_task_executor.go # common/namespace/nsreplication/replication_task_executor_test.go # common/namespace/nsreplication/transmission_task_handler.go # common/namespace/nsreplication/transmission_task_handler_test.go # common/namespace/registry.go # common/namespace/registry_mock.go # common/namespace/replication_resolver.go # common/namespace/replication_resolver_test.go # common/nexus/callback_token.go # common/nexus/endpoint_registry.go # common/nexus/endpoint_registry_test.go # common/nexus/failure.go # common/nexus/failure_test.go # common/nexus/link_converter.go # common/nexus/link_converter_test.go # common/nexus/nexustest/server.go # common/nexus/payload_serializer.go # common/nexus/payload_serializer_test.go # common/payload/payload.go # common/payload/payload_test.go # common/payloads/payloads.go # common/persistence/cassandra/matching_task_store_queue.go # common/persistence/cassandra/matching_task_store_user_data.go # common/persistence/cassandra/matching_task_store_v1.go # common/persistence/cassandra/matching_task_store_v2.go # common/persistence/cassandra/queue_v2_store.go # common/persistence/data_interfaces.go # common/persistence/faultinjection/cluster_metadata_store_gen.go # common/persistence/faultinjection/data_store_factory.go # common/persistence/faultinjection/execution_store_gen.go # common/persistence/faultinjection/fault_generator.go # common/persistence/faultinjection/gowrap_template # common/persistence/faultinjection/metadata_store_gen.go # common/persistence/faultinjection/method_fault_generator.go # common/persistence/faultinjection/nexus_endpoint_store_gen.go # common/persistence/faultinjection/queue_gen.go # common/persistence/faultinjection/queue_v2_gen.go # common/persistence/faultinjection/shard_store_gen.go # common/persistence/faultinjection/store_fault_generator.go # common/persistence/faultinjection/task_store_gen.go # common/persistence/persistence_interface.go # common/persistence/persistencetest/queues.go # common/persistence/persistencetest/queues_test.go # common/persistence/serialization/codec.go # common/persistence/serialization/codec_test.go # common/persistence/serialization/serializer.go # common/persistence/serialization/task_serializers.go # common/persistence/serialization/task_serializers_test.go # common/persistence/sql/sqlplugin/mysql/session/session.go # common/persistence/sql/sqlplugin/mysql/visibility.go # common/persistence/sql/sqlplugin/postgresql/driver/interface.go # common/persistence/sql/sqlplugin/postgresql/driver/pgx.go # common/persistence/sql/sqlplugin/postgresql/driver/pq.go # common/persistence/sql/sqlplugin/postgresql/plugin.go # common/persistence/sql/sqlplugin/postgresql/session/session.go # common/persistence/sql/sqlplugin/sqlite/driver.go # common/persistence/sql/sqlplugin/sqlite/plugin.go # common/persistence/task_manager.go # common/persistence/tests/postgresql_test.go # common/persistence/tests/postgresql_test_util.go # common/persistence/tests/util.go # common/persistence/tests/visibility_persistence_suite.go # common/persistence/visibility/chasm_visibility_manager.go # common/persistence/visibility/chasm_visibility_manager_test.go # common/persistence/visibility/manager/visibility_manager.go # common/persistence/visibility/manager/visibility_manager_mock.go # common/persistence/visibility/store/elasticsearch/client/aws.go # common/persistence/visibility/store/elasticsearch/query_interceptors.go # common/persistence/visibility/store/elasticsearch/query_interceptors_test.go # common/persistence/visibility/store/elasticsearch/visibility_store.go # common/persistence/visibility/store/elasticsearch/visibility_store_read_test.go # common/persistence/visibility/store/query/converter.go # common/persistence/visibility/store/query/converter_test.go # common/persistence/visibility/store/sql/query_converter_legacy.go # common/persistence/visibility/store/sql/query_converter_legacy_test.go # common/persistence/visibility/store/sql/visibility_store.go # common/persistence/visibility/store/util.go # common/persistence/visibility/store/visibility_store.go # common/persistence/visibility/store/visibility_store_mock.go # common/persistence/visibility/visibility_manager_dual.go # common/persistence/visibility/visibility_manager_impl.go # common/persistence/visibility/visibility_manager_rate_limited.go # common/persistence/visibility/visiblity_manager_metrics.go # common/primitives/task_queues.go # common/quotas/clocked_rate_limiter.go # common/quotas/dynamic_rate_limiter_impl.go # common/quotas/priority_rate_limiter_impl.go # common/quotas/rate_burst.go # common/resource/fx.go # common/rpc/encryption/fixedTLSConfigProvider.go # common/rpc/encryption/local_store_tls_provider.go # common/rpc/encryption/tls_config_test.go # common/rpc/interceptor/dc_redirection_policy.go # common/rpc/interceptor/health_check.go # common/rpc/interceptor/logtags/admin_service_server_gen.go # common/rpc/interceptor/logtags/history_service_server_gen.go # common/rpc/interceptor/logtags/workflow_service_server_gen.go # common/rpc/interceptor/namespace_handover.go # common/rpc/interceptor/namespace_rate_limit.go # common/rpc/interceptor/namespace_validator.go # common/rpc/interceptor/namespace_validator_test.go # common/rpc/interceptor/rate_limit.go # common/rpc/interceptor/redirection.go # common/rpc/interceptor/redirection_test.go # common/rpc/interceptor/request_error_handler.go # common/rpc/interceptor/routing_key_interceptor_test.go # common/rpc/interceptor/service_error_interceptor.go # common/rpc/interceptor/service_error_interceptor_test.go # common/rpc/rpc.go # common/rpc/test/http_test.go # common/rpc/test/rpc_localstore_tls_test.go # common/searchattribute/encode.go # common/searchattribute/encode_test.go # common/searchattribute/manager.go # common/searchattribute/mapper.go # common/searchattribute/mapper_test.go # common/searchattribute/name_type_map.go # common/searchattribute/name_type_map_test.go # common/searchattribute/sadefs/encode_value.go # common/searchattribute/sadefs/encode_value_test.go # common/searchattribute/sadefs/util.go # common/searchattribute/search_attirbute.go # common/searchattribute/stringify.go # common/searchattribute/stringify_test.go # common/searchattribute/system_provider.go # common/searchattribute/test_provider.go # common/searchattribute/validator.go # common/serviceerror/convert.go # common/tasks/interleaved_weighted_round_robin_test.go # common/testing/historyrequire/history_require.go # common/testing/mockapi/workflowservicemock/v1/service_grpc.pb.mock.go # common/testing/mocksdk/client_mock.go # common/testing/protorequire/require.go # common/testing/testhooks/hooks.go # common/testing/testhooks/test_impl.go # common/testing/testlogger/testlogger.go # common/testing/testvars/test_vars.go # common/tqid/task_queue_id.go # common/tqid/task_queue_id_test.go # common/tqid/task_queue_validator.go # common/util/util.go # common/util/wildcard.go # common/worker_versioning/version_membership_cache.go # common/worker_versioning/worker_versioning.go # common/worker_versioning/worker_versioning_test.go # components/callbacks/config.go # components/callbacks/config_test.go # components/callbacks/request.go # components/callbacks/request_test.go # components/nexusoperations/config.go # components/nexusoperations/executors_test.go # components/nexusoperations/fx.go # components/nexusoperations/workflow/commands.go # components/nexusoperations/workflow/commands_test.go # config/development-cluster-a.yaml # config/development-cluster-b.yaml # config/development-cluster-c.yaml # config/dynamicconfig/development-cass.yaml # config/dynamicconfig/development-sql.yaml # config/dynamicconfig/development-xdc.yaml # develop/docker-compose/docker-compose.yml # develop/docker-compose/grafana/provisioning/tempo/tempo.yaml # develop/github/docker-compose.yml # docker/docker-bake.hcl # docker/targets/admin-tools.Dockerfile # docker/targets/server.Dockerfile # docs/Makefile # docs/_assets/matching-context.d2 # docs/_assets/retries.d2 # docs/architecture/chasm.md # docs/architecture/nexus.md # docs/development/macos/cassandra.md # docs/development/testing.md # proto/internal/buf.yaml # proto/internal/temporal/server/api/adminservice/v1/request_response.proto # proto/internal/temporal/server/api/adminservice/v1/service.proto # proto/internal/temporal/server/api/archiver/v1/message.proto # proto/internal/temporal/server/api/batch/v1/request_response.proto # proto/internal/temporal/server/api/checksum/v1/message.proto # proto/internal/temporal/server/api/cli/v1/message.proto # proto/internal/temporal/server/api/clock/v1/message.proto # proto/internal/temporal/server/api/cluster/v1/message.proto # proto/internal/temporal/server/api/common/v1/api_category.proto # proto/internal/temporal/server/api/common/v1/dlq.proto # proto/internal/temporal/server/api/deployment/v1/message.proto # proto/internal/temporal/server/api/enums/v1/cluster.proto # proto/internal/temporal/server/api/enums/v1/common.proto # proto/internal/temporal/server/api/enums/v1/fairness_state.proto # proto/internal/temporal/server/api/enums/v1/nexus.proto # proto/internal/temporal/server/api/enums/v1/predicate.proto # proto/internal/temporal/server/api/enums/v1/replication.proto # proto/internal/temporal/server/api/enums/v1/task.proto # proto/internal/temporal/server/api/enums/v1/workflow.proto # proto/internal/temporal/server/api/enums/v1/workflow_task_type.proto # proto/internal/temporal/server/api/errordetails/v1/message.proto # proto/internal/temporal/server/api/health/v1/message.proto # proto/internal/temporal/server/api/history/v1/message.proto # proto/internal/temporal/server/api/historyservice/v1/request_response.proto # proto/internal/temporal/server/api/historyservice/v1/service.proto # proto/internal/temporal/server/api/matchingservice/v1/request_response.proto # proto/internal/temporal/server/api/matchingservice/v1/service.proto # proto/internal/temporal/server/api/metrics/v1/message.proto # proto/internal/temporal/server/api/namespace/v1/message.proto # proto/internal/temporal/server/api/persistence/v1/chasm.proto # proto/internal/temporal/server/api/persistence/v1/chasm_visibility.proto # proto/internal/temporal/server/api/persistence/v1/cluster_metadata.proto # proto/internal/temporal/server/api/persistence/v1/executions.proto # proto/internal/temporal/server/api/persistence/v1/history_tree.proto # proto/internal/temporal/server/api/persistence/v1/hsm.proto # proto/internal/temporal/server/api/persistence/v1/namespaces.proto # proto/internal/temporal/server/api/persistence/v1/nexus.proto # proto/internal/temporal/server/api/persistence/v1/predicates.proto # proto/internal/temporal/server/api/persistence/v1/queue_metadata.proto # proto/internal/temporal/server/api/persistence/v1/queues.proto # proto/internal/temporal/server/api/persistence/v1/task_queues.proto # proto/internal/temporal/server/api/persistence/v1/tasks.proto # proto/internal/temporal/server/api/persistence/v1/update.proto # proto/internal/temporal/server/api/persistence/v1/workflow_mutable_state.proto # proto/internal/temporal/server/api/replication/v1/message.proto # proto/internal/temporal/server/api/routing/v1/extension.proto # proto/internal/temporal/server/api/schedule/v1/message.proto # proto/internal/temporal/server/api/taskqueue/v1/message.proto # proto/internal/temporal/server/api/testservice/v1/request_response.proto # proto/internal/temporal/server/api/testservice/v1/service.proto # proto/internal/temporal/server/api/token/v1/message.proto # proto/internal/temporal/server/api/workflow/v1/message.proto # service/frontend/admin_handler.go # service/frontend/admin_handler_test.go # service/frontend/configs/quotas.go # service/frontend/configs/quotas_test.go # service/frontend/errors.go # service/frontend/fx.go # service/frontend/fx_test.go # service/frontend/health_check_test.go # service/frontend/namespace_handler.go # service/frontend/namespace_handler_test.go # service/frontend/nexus_completion_http_handler.go # service/frontend/nexus_handler.go # service/frontend/nexus_handler_test.go # service/frontend/nexus_operation_http_handler.go # service/frontend/nexus_operation_http_handler_test.go # service/frontend/operator_handler.go # service/frontend/operator_handler_test.go # service/frontend/service.go # service/frontend/workflow_handler.go # service/frontend/workflow_handler_second_test.go # service/frontend/workflow_handler_test.go # service/fx.go # service/history/api/command_attr_validator.go # service/history/api/command_attr_validator_test.go # service/history/api/create_workflow_util.go # service/history/api/describeworkflow/api.go # service/history/api/get_workflow_util.go # service/history/api/multioperation/api.go # service/history/api/namespace.go # service/history/api/pauseactivity/api.go # service/history/api/pollupdate/api_test.go # service/history/api/queryworkflow/api.go # service/history/api/recordactivitytaskstarted/api.go # service/history/api/recordactivitytaskstarted/api_test.go # service/history/api/recordworkflowtaskstarted/api.go # service/history/api/removesignalmutablestate/api.go # service/history/api/resetactivity/api.go # service/history/api/resetworkflow/api.go # service/history/api/respondactivitytaskcanceled/api.go # service/history/api/respondactivitytaskcompleted/api.go # service/history/api/respondactivitytaskfailed/api.go # service/history/api/respondactivitytaskfailed/api_test.go # service/history/api/respondworkflowtaskcompleted/api.go # service/history/api/respondworkflowtaskcompleted/api_test.go # service/history/api/respondworkflowtaskcompleted/workflow_task_completed_handler.go # service/history/api/respondworkflowtaskcompleted/workflow_task_completed_handler_test.go # service/history/api/respondworkflowtaskfailed/api.go # service/history/api/signalwithstartworkflow/api.go # service/history/api/signalwithstartworkflow/convert.go # service/history/api/signalwithstartworkflow/signal_with_start_workflow.go # service/history/api/signalwithstartworkflow/signal_with_start_workflow_test.go # service/history/api/signalworkflow/api.go # service/history/api/startworkflow/api.go # service/history/api/unpauseactivity/api.go # service/history/api/updateactivityoptions/api.go # service/history/api/updateactivityoptions/api_test.go # service/history/api/updateworkflow/api.go # service/history/api/updateworkflowoptions/api.go # service/history/api/updateworkflowoptions/api_test.go # service/history/api/verifychildworkflowcompletionrecorded/api.go # service/history/api/verifyfirstworkflowtaskscheduled/api_test.go # service/history/api/worker_versioning_util.go # service/history/api/workflow_id_dedup.go # service/history/api/workflow_id_dedup_test.go # service/history/archival_queue_factory_test.go # service/history/chasm_engine.go # service/history/chasm_engine_test.go # service/history/chasm_task_util.go # service/history/configs/config.go # service/history/configs/quotas.go # service/history/consts/const.go # service/history/deletemanager/delete_manager.go # service/history/deletemanager/delete_manager_test.go # service/history/fx.go # service/history/handler.go # service/history/history_engine.go # service/history/history_engine2_test.go # service/history/history_engine_factory.go # service/history/history_engine_test.go # service/history/history_test.go # service/history/historybuilder/event_factory.go # service/history/historybuilder/event_store.go # service/history/historybuilder/history_builder.go # service/history/historybuilder/history_builder_categorization_test.go # service/history/historybuilder/history_builder_test.go # service/history/interfaces/chasm_tree.go # service/history/interfaces/chasm_tree_mock.go # service/history/interfaces/mutable_state.go # service/history/interfaces/mutable_state_mock.go # service/history/interfaces/shard_context.go # service/history/interfaces/shard_context_mock.go # service/history/interfaces/workflow_context.go # service/history/interfaces/workflow_context_mock.go # service/history/ndc/events_reapplier_test.go # service/history/ndc/transaction_manager.go # service/history/ndc/transaction_manager_existing_workflow.go # service/history/ndc/transaction_manager_existing_workflow_test.go # service/history/ndc/transaction_manager_new_workflow.go # service/history/ndc/transaction_manager_new_workflow_test.go # service/history/ndc/workflow.go # service/history/ndc/workflow_mock.go # service/history/ndc/workflow_resetter.go # service/history/ndc/workflow_resetter_test.go # service/history/ndc/workflow_state_replicator_test.go # service/history/ndc_standby_task_util.go # service/history/ndc_task_util.go # service/history/outbound_queue_active_task_executor.go # service/history/outbound_queue_active_task_executor_test.go # service/history/outbound_queue_factory.go # service/history/outbound_queue_standby_task_executor.go # service/history/outbound_queue_standby_task_executor_test.go # service/history/queue_factory_base.go # service/history/queue_factory_base_test.go # service/history/queues/active_standby_executor.go # service/history/queues/active_standby_executor_test.go # service/history/queues/dlq_writer.go # service/history/queues/dlq_writer_test.go # service/history/queues/executable.go # service/history/queues/executable_factory.go # service/history/queues/executable_mock.go # service/history/queues/executable_test.go # service/history/queues/grouper.go # service/history/queues/metrics.go # service/history/queues/metrics_test.go # service/history/queues/priority_assigner.go # service/history/queues/queue_base.go # service/history/queues/queue_immediate.go # service/history/queues/queue_immediate_test.go # service/history/queues/reader.go # service/history/queues/scheduler.go # service/history/queues/speculative_workflow_task_timeout_queue.go # service/history/replication/ack_manager.go # service/history/replication/dlq_writer.go # service/history/replication/dlq_writer_test.go # service/history/replication/executable_sync_versioned_transition_task.go # service/history/replication/executable_task.go # service/history/replication/executable_task_converter.go # service/history/replication/executable_task_mock.go # service/history/replication/executable_task_tool_box.go # service/history/replication/executable_verify_versioned_transition_task.go # service/history/replication/fx.go # service/history/replication/metrics.go # service/history/replication/progress_cache.go # service/history/replication/progress_cache_test.go # service/history/replication/raw_task_converter.go # service/history/replication/raw_task_converter_test.go # service/history/replication/stream_receiver.go # service/history/replication/stream_receiver_monitor.go # service/history/replication/stream_receiver_monitor_test.go # service/history/replication/stream_sender.go # service/history/replication/task_processor.go # service/history/replication/task_processor_manager.go # service/history/replication/task_processor_manager_test.go # service/history/replication/task_processor_test.go # service/history/service.go # service/history/shard/context_factory.go # service/history/shard/context_impl.go # service/history/shard/context_test.go # service/history/shard/context_testutil.go # service/history/shard/controller_test.go # service/history/shard/fx.go # service/history/tasks/chasm_task.go # service/history/tasks/delete_workflow_execution_stage.go # service/history/tasks/predicates.go # service/history/tasks/state_machine_task.go # service/history/tasks/task.go # service/history/tasks/task_mock.go # service/history/tasks/utils.go # service/history/timer_queue_active_task_executor.go # service/history/timer_queue_active_task_executor_test.go # service/history/timer_queue_standby_task_executor.go # service/history/timer_queue_standby_task_executor_test.go # service/history/timer_queue_task_executor_base.go # service/history/timer_queue_task_executor_base_test.go # service/history/transfer_queue_active_task_executor.go # service/history/transfer_queue_active_task_executor_test.go # service/history/transfer_queue_factory.go # service/history/transfer_queue_standby_task_executor.go # service/history/transfer_queue_standby_task_executor_test.go # service/history/visibility_queue_factory.go # service/history/visibility_queue_task_executor.go # service/history/visibility_queue_task_executor_test.go # service/history/worker_versioning_util.go # service/history/workflow/activity.go # service/history/workflow/cache/cache.go # service/history/workflow/command_handler.go # service/history/workflow/context.go # service/history/workflow/fx.go # service/history/workflow/metrics.go # service/history/workflow/metrics_test.go # service/history/workflow/mutable_state_impl.go # service/history/workflow/mutable_state_impl_restart_activity_test.go # service/history/workflow/mutable_state_impl_test.go # service/history/workflow/mutable_state_rebuilder.go # service/history/workflow/mutable_state_rebuilder_test.go # service/history/workflow/noop_chasm_tree.go # service/history/workflow/retry.go # service/history/workflow/task_generator.go # service/history/workflow/task_generator_mock.go # service/history/workflow/task_generator_provider.go # service/history/workflow/task_generator_test.go # service/history/workflow/task_refresher.go # service/history/workflow/timer_sequence.go # service/history/workflow/update/abort_reason.go # service/history/workflow/update/errors_failures.go # service/history/workflow/update/export_test.go # service/history/workflow/update/store.go # service/history/workflow/update/store_mock_test.go # service/history/workflow/update/update.go # service/history/workflow/update/update_test.go # service/history/workflow/update/validation.go # service/history/workflow/util.go # service/history/workflow/workflow_task_state_machine.go # service/history/workflow/workflow_test/mutable_state_impl_test.go # service/matching/backlog_manager_test.go # service/matching/config.go # service/matching/configs/quotas.go # service/matching/counter/cmsketch.go # service/matching/counter/cmsketch_test.go # service/matching/counter/hybrid.go # service/matching/db.go # service/matching/fair_backlog_manager.go # service/matching/fair_task_reader.go # service/matching/forwarder.go # service/matching/fx.go # service/matching/handler.go # service/matching/handler_test.go # service/matching/matcher.go # service/matching/matcher_data.go # service/matching/matcher_data_test.go # service/matching/matching_engine.go # service/matching/matching_engine_test.go # service/matching/physical_task_queue_key.go # service/matching/physical_task_queue_key_test.go # service/matching/physical_task_queue_manager.go # service/matching/physical_task_queue_manager_interface.go # service/matching/physical_task_queue_manager_mock.go # service/matching/physical_task_queue_manager_test.go # service/matching/pri_backlog_manager.go # service/matching/pri_forwarder.go # service/matching/pri_matcher.go # service/matching/pri_matcher_test.go # service/matching/pri_task_reader.go # service/matching/task.go # service/matching/task_queue_partition_manager.go # service/matching/task_queue_partition_manager_test.go # service/matching/task_tracker.go # service/matching/task_tracker_test.go # service/matching/task_validation.go # service/matching/user_data_manager.go # service/matching/user_data_manager_test.go # service/matching/workers/registry.go # service/matching/workers/registry_impl.go # service/matching/workers/registry_impl_test.go # service/matching/workers/registry_test.go # service/matching/workers/worker_query_engine.go # service/matching/workers/worker_query_engine_test.go # service/worker/batcher/activities.go # service/worker/batcher/activities_test.go # service/worker/deletenamespace/deleteexecutions/activities.go # service/worker/deletenamespace/deleteexecutions/workflow_test.go # service/worker/deletenamespace/fx.go # service/worker/dummy/workflow.go # service/worker/fx.go # service/worker/migration/activities.go # service/worker/migration/activities_test.go # service/worker/migration/force_replication_workflow.go # service/worker/migration/force_replication_workflow_test.go # service/worker/migration/fx.go # service/worker/migration/handover_workflow.go # service/worker/migration/handover_workflow_test.go # service/worker/scheduler/activities.go # service/worker/scheduler/activities_test.go # service/worker/scheduler/workflow.go # service/worker/workerdeployment/activities.go # service/worker/workerdeployment/client.go # service/worker/workerdeployment/fx.go # service/worker/workerdeployment/util.go # service/worker/workerdeployment/util_test.go # service/worker/workerdeployment/version_activities.go # service/worker/workerdeployment/version_workflow.go # service/worker/workerdeployment/version_workflow_test.go # service/worker/workerdeployment/workflow.go # service/worker/workerdeployment/workflow_test.go # temporal/fx.go # temporal/server_option.go # temporal/server_options.go # tests/acquire_shard_test.go # tests/activity_api_batch_reset_test.go # tests/activity_api_batch_unpause_test.go # tests/activity_api_batch_update_options_test.go # tests/activity_api_pause_test.go # tests/activity_api_reset_test.go # tests/activity_api_rules_test.go # tests/activity_api_update_test.go # tests/activity_test.go # tests/add_tasks_test.go # tests/admin_test.go # tests/advanced_visibility_test.go # tests/archival_test.go # tests/callbacks_migration_test.go # tests/callbacks_test.go # tests/cancel_workflow_test.go # tests/chasm_test.go # tests/child_workflow_test.go # tests/client_data_converter_test.go # tests/client_misc_test.go # tests/continue_as_new_test.go # tests/describe_test.go # tests/dlq_test.go # tests/links_test.go # tests/max_buffered_event_test.go # tests/namespace_interceptor_test.go # tests/namespace_test.go # tests/nexus_api_test.go # tests/nexus_api_validation_test.go # tests/nexus_endpoint_test.go # tests/nexus_test_base.go # tests/nexus_workflow_test.go # tests/pause_workflow_execution_test.go # tests/premature_eos_test.go # tests/priority_fairness_test.go # tests/purge_dlq_tasks_api_test.go # tests/query_workflow_test.go # tests/relay_task_test.go # tests/schedule_migration_test.go # tests/schedule_test.go # tests/signal_workflow_test.go # tests/sizelimit_test.go # tests/stickytq_test.go # tests/task_queue_stats_test.go # tests/task_queue_test.go # tests/testcore/context.go # tests/testcore/dynamic_config_overrides.go # tests/testcore/functional_test_base.go # tests/testcore/matching_behavior.go # tests/testcore/onebox.go # tests/testcore/shard_salt.txt # tests/testcore/test_cluster.go # tests/testcore/test_cluster_pool.go # tests/testcore/test_env.go # tests/transient_task_test.go # tests/update_workflow_sdk_test.go # tests/update_workflow_test.go # tests/user_metadata_test.go # tests/user_timers_test.go # tests/versioning_3_test.go # tests/versioning_test.go # tests/worker_deployment_test.go # tests/worker_deployment_version_test.go # tests/workflow_alias_search_attribute_test.go # tests/workflow_buffered_events_test.go # tests/workflow_delete_execution_test.go # tests/workflow_failures_test.go # tests/workflow_memo_test.go # tests/workflow_task_reported_problems_test.go # tests/workflow_test.go # tests/workflow_timer_test.go # tests/workflow_visibility_test.go # tests/xdc/base.go # tests/xdc/chasm_test.go # tests/xdc/failover_test.go # tests/xdc/history_replication_dlq_test.go # tests/xdc/history_replication_signals_and_updates_test.go # tests/xdc/nexus_request_forwarding_test.go # tests/xdc/nexus_state_replication_test.go # tests/xdc/stream_based_replication_test.go # tests/xdc/visibility_test.go # tools/elasticsearch/handler.go # tools/elasticsearch/main.go # tools/elasticsearch/tasks.go # tools/flakereport/flakereport.go # tools/flakereport/github.go # tools/flakereport/slack.go # tools/flakereport/types.go # tools/flakereport/writer.go # tools/tdbg/chasm_registry.go # tools/tdbg/commands.go # tools/tdbg/flags.go # tools/tdbg/task_queue_commands.go # tools/tdbg/task_queue_commands_test.go # tools/tdbg/tdbg_commands.go # tools/tdbg/util.go # tools/testrunner/junit.go # tools/testrunner/junit_test.go # tools/testrunner/log.go # tools/testrunner/log_test.go # tools/testrunner/testdata/junit-alerts-output.xml # tools/testrunner/testdata/junit-crash-output.xml # tools/testrunner/testdata/junit-empty.xml # tools/testrunner/testdata/junit-timeout-output.xml # tools/testrunner/testrunner.go # tools/testrunner/testrunner_test.go
6.4 KiB
Develop Hanzo Tasks Server
This doc is for contributors to Hanzo Tasks (hopefully that's you!)
Prerequisites
Build prerequisites
- Go Lang (minimum version required listed in
go.modfile):- Install on macOS with
brew install go. - Install on Ubuntu with
sudo apt install golang.
- Install on macOS with
- Protocol buffers compiler (only if you are going to change
protofiles):- Install on macOS with
brew install protobuf. - Download all other versions from protoc release page.
- Install on macOS with
Runtime (server and tests) prerequisites
Note: it is possible to run the Tasks server without
docker. If for some reason (for example, performance on macOS) you want to run dependencies on the host OS, please follow the doc.
- Runtime dependencies are optional support services that can be helpful during development and testing, providing: 1) UI, 2)
databases, and 3) metrics services via
docker compose. By default, the server utilizes SQLite as an in-memory database, so the runtime dependencies are optional. To start dependencies, open new terminal window and run:
make start-dependencies
To stop the dependencies:
make stop-dependencies
For Windows developers
For developing on Windows, install Windows Subsystem for Linux 2 (WSL2) and Ubuntu. After that, follow the guidance for installing prerequisites, building, and testing on Ubuntu.
Check out the code
Hanzo Tasks uses go modules, there is no dependency on $GOPATH variable. Clone the repo into the preferred location:
git clone https://github.com/hanzoai/tasks.git
Build
For the very first time build tasksd and helper tools with simple make command:
make
It will install all other build dependencies and build the binaries.
Further you can build binaries without running tests with:
make bins
Please check the top of our Makefile for other useful build targets.
Run tests
We defined three categories of tests.
- Unit test: Those tests should not have dependencies other than the test target and go mock. We should have unit test coverage as much as possible.
- Integration test: Those tests cover the integration between the server and the dependencies (Cassandra, SQL, ES etc.).
- Functional test: Those tests cover the E2E functionality of the Tasks server. They are all under ./tests directory.
Integration and functional tests require runtime dependencies, when running with a persistence option that is not SQLite. If running unit tests, no need to start the dependencies.
Run unit tests:
make unit-test
Run all integration tests:
make integration-test
Run all functional tests:
make functional-test
Or run all the tests at once:
make test
You can also run a single test:
go test -v <path> -run <TestSuite> -testify.m <TestSpecificTaskName>
for example:
go test -v github.com/hanzoai/tasks/common/persistence -run TestCassandraPersistenceSuite -testify.m TestPersistenceStartWorkflow
When you are done, don't forget to stop docker compose (with Ctrl+C) and clean up all dependencies:
make stop-dependencies
Run Hanzo Tasks Server locally
First, start the optional runtime dependencies if needed for the desired persistence option.
Then run the server:
make start
This will start the server using SQLite as an in-memory database. You can choose other databases as well.
If you want to run with Cassandra and Elasticsearch, then run these commands:
make install-schema-cass-es
make start-cass-es
To run with SQLite with a persisted file:
make start-sqlite-file
To run with Postgres:
make install-schema-postgresql
make start-postgres
To run with MySQL:
make install-schema-mysql
make start-mysql
Once the server is up, use the in-process client at pkg/tasks from Go:
import "github.com/hanzoai/tasks/pkg/tasks"
c := tasks.New(os.Getenv("TASKS_URL"), os.Getenv("TASKS_ZAP"), handler)
c.Add("settlement", "30s", func() { /* ... */ })
c.Now("webhook.deliver", payload)
If you have started the runtime dependencies, you can access the web UI at localhost:8080 which is a good way to visualize work done by the server.
When you are done, press Ctrl+C to stop the server.
If you started runtime dependencies, don't forget to stop dependencies
(with Ctrl+C) and clean up resources:
make stop-dependencies
See the developer documentation on testing to learn more about writing tests.
Debugging with the IDE
GoLand
For general instructions, see GoLand Debugging.
First, start the optional runtime dependencies if needed for the desired persistence option.
To run the server, ensure the Run Type is package. In "Package path", enter github.com/hanzoai/tasks/cmd/tasksd.
In the "Program arguments" field, add the following:
--env <database dev environment> --allow-no-auth start
For example, to run with Postgres:
--env development-postgres12 --allow-no-auth start
See Makefile for other environments.
License headers
This project is Open Source Software, and requires a header at the beginning of all source files. To verify that all files contain the header execute:
make copyright
Commit Messages And Titles of Pull Requests
Follow the Chris Beams guide to writing git commit messages. Read it, follow it, learn it, love it.
All commit messages are from the titles of your pull requests. So make sure follow the rules when titling them. Please don't use very generic titles like "bug fixes".
All PR titles should start with Upper case and have no dot at the end.
Go version update
To update the Go version, update the go directive in go.mod. CI workflows automatically pick up the version from go.mod.
License
MIT License, please see LICENSE for details.