Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion packages/client/src/schedule-helpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {
extractWorkflowType,
LoadedDataConverter,
} from '@temporalio/common';
import { encodeUserMetadata, decodeUserMetadata } from '@temporalio/common/lib/user-metadata';
import { encodeUserMetadata, decodeUserMetadata } from '@temporalio/common/lib/internal-non-workflow/codec-helpers';
import {
encodeUnifiedSearchAttributes,
decodeSearchAttributes,
Expand Down
2 changes: 1 addition & 1 deletion packages/client/src/workflow-client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import {
WorkflowIdConflictPolicy,
compilePriority,
} from '@temporalio/common';
import { encodeUserMetadata } from '@temporalio/common/lib/user-metadata';
import { encodeUserMetadata } from '@temporalio/common/lib/internal-non-workflow/codec-helpers';
import { encodeUnifiedSearchAttributes } from '@temporalio/common/lib/converter/payload-search-attributes';
import { composeInterceptors } from '@temporalio/common/lib/interceptors';
import { History } from '@temporalio/common/lib/proto-utils';
Expand Down
38 changes: 37 additions & 1 deletion packages/common/src/internal-non-workflow/codec-helpers.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,16 @@
import type { temporal } from '@temporalio/proto';
import { Payload } from '../interfaces';
import { arrayFromPayloads, fromPayloadsAtIndex, toPayloads } from '../converter/payload-converter';
import {
arrayFromPayloads,
convertOptionalToPayload,
fromPayloadsAtIndex,
toPayloads,
} from '../converter/payload-converter';
import { PayloadConverterError } from '../errors';
import { PayloadCodec } from '../converter/payload-codec';
import { ProtoFailure } from '../failure';
import { LoadedDataConverter } from '../converter/data-converter';
import { UserMetadata } from '../user-metadata';
import { DecodedPayload, DecodedProtoFailure, EncodedPayload, EncodedProtoFailure } from './codec-types';

/**
Expand Down Expand Up @@ -359,3 +366,32 @@ export function noopDecodeMap<K extends string>(
): Record<K, DecodedPayload> | null | undefined {
return map as Record<K, DecodedPayload> | null | undefined;
}

export async function encodeUserMetadata(
dataConverter: LoadedDataConverter,
staticSummary: string | undefined,
staticDetails: string | undefined
): Promise<temporal.api.sdk.v1.IUserMetadata | undefined> {
if (staticSummary == null && staticDetails == null) return undefined;

const { payloadConverter, payloadCodecs } = dataConverter;
const summary = await encodeOptionalSingle(payloadCodecs, convertOptionalToPayload(payloadConverter, staticSummary));
const details = await encodeOptionalSingle(payloadCodecs, convertOptionalToPayload(payloadConverter, staticDetails));

if (summary == null && details == null) return undefined;

return { summary, details };
}

export async function decodeUserMetadata(
dataConverter: LoadedDataConverter,
metadata: temporal.api.sdk.v1.IUserMetadata | undefined | null
): Promise<UserMetadata> {
const res = { staticSummary: undefined, staticDetails: undefined };
if (metadata == null) return res;

const staticSummary = (await decodeOptionalSinglePayload<string>(dataConverter, metadata.summary)) ?? undefined;
const staticDetails = (await decodeOptionalSinglePayload<string>(dataConverter, metadata.details)) ?? undefined;

return { staticSummary, staticDetails };
}
33 changes: 1 addition & 32 deletions packages/common/src/user-metadata.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
import { temporal } from '@temporalio/proto';
import type { temporal } from '@temporalio/proto';
import { convertOptionalToPayload, PayloadConverter } from './converter/payload-converter';
import { LoadedDataConverter } from './converter/data-converter';
import { decodeOptionalSinglePayload, encodeOptionalSingle } from './internal-non-workflow';

/**
* User metadata that can be attached to workflow commands.
Expand All @@ -27,32 +25,3 @@ export function userMetadataToPayload(

return { summary, details };
}

export async function encodeUserMetadata(
dataConverter: LoadedDataConverter,
staticSummary: string | undefined,
staticDetails: string | undefined
): Promise<temporal.api.sdk.v1.IUserMetadata | undefined> {
if (staticSummary == null && staticDetails == null) return undefined;

const { payloadConverter, payloadCodecs } = dataConverter;
const summary = await encodeOptionalSingle(payloadCodecs, convertOptionalToPayload(payloadConverter, staticSummary));
const details = await encodeOptionalSingle(payloadCodecs, convertOptionalToPayload(payloadConverter, staticDetails));

if (summary == null && details == null) return undefined;

return { summary, details };
}

export async function decodeUserMetadata(
dataConverter: LoadedDataConverter,
metadata: temporal.api.sdk.v1.IUserMetadata | undefined | null
): Promise<UserMetadata> {
const res = { staticSummary: undefined, staticDetails: undefined };
if (metadata == null) return res;

const staticSummary = (await decodeOptionalSinglePayload<string>(dataConverter, metadata.summary)) ?? undefined;
const staticDetails = (await decodeOptionalSinglePayload<string>(dataConverter, metadata.details)) ?? undefined;

return { staticSummary, staticDetails };
}
2 changes: 1 addition & 1 deletion packages/core-bridge/sdk-core
Submodule sdk-core updated 50 files
+1 −1 .cargo/config.toml
+123 −0 client/src/callback_based.rs
+96 −28 client/src/lib.rs
+33 −5 client/src/metrics.rs
+40 −1 client/src/raw.rs
+12 −3 client/src/retry.rs
+2 −2 core-api/src/worker.rs
+2 −0 core-c-bridge/Cargo.toml
+105 −0 core-c-bridge/include/temporal-sdk-core-c-bridge.h
+265 −8 core-c-bridge/src/client.rs
+11 −0 core-c-bridge/src/tests/context.rs
+179 −3 core-c-bridge/src/tests/mod.rs
+4 −2 core/src/lib.rs
+62 −14 core/src/pollers/poll_buffer.rs
+9 −5 core/src/worker/client.rs
+3 −1 core/src/worker/heartbeat.rs
+1 −1 sdk-core-protos/protos/api_cloud_upstream/CODEOWNERS
+1 −1 sdk-core-protos/protos/api_cloud_upstream/README.md
+1 −1 sdk-core-protos/protos/api_cloud_upstream/VERSION
+1 −0 sdk-core-protos/protos/api_cloud_upstream/buf.yaml
+83 −0 sdk-core-protos/protos/api_cloud_upstream/temporal/api/cloud/cloudservice/v1/request_response.proto
+37 −0 sdk-core-protos/protos/api_cloud_upstream/temporal/api/cloud/cloudservice/v1/service.proto
+64 −0 sdk-core-protos/protos/api_cloud_upstream/temporal/api/cloud/connectivityrule/v1/message.proto
+3 −1 sdk-core-protos/protos/api_cloud_upstream/temporal/api/cloud/identity/v1/message.proto
+10 −0 sdk-core-protos/protos/api_cloud_upstream/temporal/api/cloud/namespace/v1/message.proto
+1 −0 sdk-core-protos/protos/api_cloud_upstream/temporal/api/cloud/operation/v1/message.proto
+644 −9 sdk-core-protos/protos/api_upstream/openapi/openapiv2.json
+635 −21 sdk-core-protos/protos/api_upstream/openapi/openapiv3.yaml
+60 −2 sdk-core-protos/protos/api_upstream/temporal/api/batch/v1/message.proto
+84 −15 sdk-core-protos/protos/api_upstream/temporal/api/common/v1/message.proto
+3 −0 sdk-core-protos/protos/api_upstream/temporal/api/enums/v1/batch_operation.proto
+11 −0 sdk-core-protos/protos/api_upstream/temporal/api/enums/v1/task_queue.proto
+5 −0 sdk-core-protos/protos/api_upstream/temporal/api/history/v1/message.proto
+1 −1 sdk-core-protos/protos/api_upstream/temporal/api/sdk/v1/task_complete_metadata.proto
+36 −0 sdk-core-protos/protos/api_upstream/temporal/api/sdk/v1/worker_config.proto
+29 −0 sdk-core-protos/protos/api_upstream/temporal/api/taskqueue/v1/message.proto
+11 −1 sdk-core-protos/protos/api_upstream/temporal/api/worker/v1/message.proto
+122 −4 sdk-core-protos/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto
+41 −0 sdk-core-protos/protos/api_upstream/temporal/api/workflowservice/v1/service.proto
+5 −1 sdk-core-protos/src/lib.rs
+1 −0 test-utils/Cargo.toml
+90 −3 test-utils/src/lib.rs
+11 −74 tests/cloud_tests.rs
+14 −10 tests/integ_tests/client_tests.rs
+8 −2 tests/integ_tests/worker_tests.rs
+13 −0 tests/integ_tests/workflow_tests/activities.rs
+2 −108 tests/integ_tests/workflow_tests/priority.rs
+3 −0 tests/main.rs
+43 −0 tests/shared_tests/mod.rs
+155 −0 tests/shared_tests/priority.rs
1 change: 1 addition & 0 deletions packages/core-bridge/src/client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,7 @@ async fn client_invoke(mut retry_client: CoreClient, call: RpcCall) -> BridgeRes
rpc_call!(retry_client, call, describe_workflow_rule)
}
"ExecuteMultiOperation" => rpc_call!(retry_client, call, execute_multi_operation),
"FetchWorkerConfig" => rpc_call!(retry_client, call, fetch_worker_config),
"GetClusterInfo" => rpc_call!(retry_client, call, get_cluster_info),
"GetCurrentDeployment" => rpc_call!(retry_client, call, get_current_deployment),
"GetDeploymentReachability" => {
Expand Down
Loading