Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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
1 change: 1 addition & 0 deletions changelog/breaking-changes/fulminant-jaleesa.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Core: Replay detects changes to the service or operation of scheduled Nexus operations, reporting nondeterminism while retaining compatibility with histories recorded before these checks.
1 change: 1 addition & 0 deletions changelog/fixed/examinational-beau.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Core: A workflow task that arrives while a workflow waits on a local activity, such as a legacy query, now waits until the current workflow task is reported. Previously it replaced that workflow task ("Trying to send a new WFT for a run which already has one!"), which then timed out on the server and could leave the workflow stuck on a nondeterminism error.
3 changes: 3 additions & 0 deletions changelog/fixed/fulminant-jaleesa.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Core: Worker heartbeats now report correct task-slot and poller counts when using buffered or custom metrics backends, including the .NET SDK's `CustomMetricMeter`. Previously these counts could remain `0` because heartbeat accounting depended on reading labels from backend-owned attributes.
Core: Local activities still running when their workflow is evicted or the worker shuts down now always receive a cancellation. Local activities no longer retry ordinary failures or start-to-close timeouts after cancellation has been requested, matching non-local activities. Workflow code no longer observes a spurious local activity cancellation when its run is evicted or completes while the local activity is backing off between retries.
Core: Workers no longer panic when evicting a workflow with buffered local activity results. Completed activations' output is recorded before eviction, without recording eviction-induced cancellations.
258 changes: 176 additions & 82 deletions src/Temporalio/Api/Activity/V1/Message.cs

Large diffs are not rendered by default.

111 changes: 84 additions & 27 deletions src/Temporalio/Api/Compute/V1/Config.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,39 +28,40 @@ static ConfigReflection() {
"cmFsLmFwaS5jb21wdXRlLnYxGiZ0ZW1wb3JhbC9hcGkvY29tcHV0ZS92MS9w",
"cm92aWRlci5wcm90bxokdGVtcG9yYWwvYXBpL2NvbXB1dGUvdjEvc2NhbGVy",
"LnByb3RvGiZ0ZW1wb3JhbC9hcGkvZW51bXMvdjEvdGFza19xdWV1ZS5wcm90",
"bxogZ29vZ2xlL3Byb3RvYnVmL2ZpZWxkX21hc2sucHJvdG8izwEKGUNvbXB1",
"bxogZ29vZ2xlL3Byb3RvYnVmL2ZpZWxkX21hc2sucHJvdG8i4wEKGUNvbXB1",
"dGVDb25maWdTY2FsaW5nR3JvdXASPgoQdGFza19xdWV1ZV90eXBlcxgBIAMo",
"DjIkLnRlbXBvcmFsLmFwaS5lbnVtcy52MS5UYXNrUXVldWVUeXBlEjoKCHBy",
"b3ZpZGVyGAMgASgLMigudGVtcG9yYWwuYXBpLmNvbXB1dGUudjEuQ29tcHV0",
"ZVByb3ZpZGVyEjYKBnNjYWxlchgEIAEoCzImLnRlbXBvcmFsLmFwaS5jb21w",
"dXRlLnYxLkNvbXB1dGVTY2FsZXIizAEKDUNvbXB1dGVDb25maWcSUQoOc2Nh",
"bGluZ19ncm91cHMYASADKAsyOS50ZW1wb3JhbC5hcGkuY29tcHV0ZS52MS5D",
"b21wdXRlQ29uZmlnLlNjYWxpbmdHcm91cHNFbnRyeRpoChJTY2FsaW5nR3Jv",
"dXBzRW50cnkSCwoDa2V5GAEgASgJEkEKBXZhbHVlGAIgASgLMjIudGVtcG9y",
"YWwuYXBpLmNvbXB1dGUudjEuQ29tcHV0ZUNvbmZpZ1NjYWxpbmdHcm91cDoC",
"OAEinQEKH0NvbXB1dGVDb25maWdTY2FsaW5nR3JvdXBVcGRhdGUSSQoNc2Nh",
"bGluZ19ncm91cBgBIAEoCzIyLnRlbXBvcmFsLmFwaS5jb21wdXRlLnYxLkNv",
"bXB1dGVDb25maWdTY2FsaW5nR3JvdXASLwoLdXBkYXRlX21hc2sYAiABKAsy",
"Gi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrIuEBChRDb21wdXRlQ29uZmln",
"U3VtbWFyeRJYCg5zY2FsaW5nX2dyb3VwcxgBIAMoCzJALnRlbXBvcmFsLmFw",
"aS5jb21wdXRlLnYxLkNvbXB1dGVDb25maWdTdW1tYXJ5LlNjYWxpbmdHcm91",
"cHNFbnRyeRpvChJTY2FsaW5nR3JvdXBzRW50cnkSCwoDa2V5GAEgASgJEkgK",
"BXZhbHVlGAIgASgLMjkudGVtcG9yYWwuYXBpLmNvbXB1dGUudjEuQ29tcHV0",
"ZUNvbmZpZ1NjYWxpbmdHcm91cFN1bW1hcnk6AjgBInkKIENvbXB1dGVDb25m",
"aWdTY2FsaW5nR3JvdXBTdW1tYXJ5Ej4KEHRhc2tfcXVldWVfdHlwZXMYASAD",
"KA4yJC50ZW1wb3JhbC5hcGkuZW51bXMudjEuVGFza1F1ZXVlVHlwZRIVCg1w",
"cm92aWRlcl90eXBlGAIgASgJQo0BChppby50ZW1wb3JhbC5hcGkuY29tcHV0",
"ZS52MUILQ29uZmlnUHJvdG9QAVolZ28udGVtcG9yYWwuaW8vYXBpL2NvbXB1",
"dGUvdjE7Y29tcHV0ZaoCGVRlbXBvcmFsaW8uQXBpLkNvbXB1dGUuVjHqAhxU",
"ZW1wb3JhbGlvOjpBcGk6OkNvbXB1dGU6OlYxYgZwcm90bzM="));
"DjIkLnRlbXBvcmFsLmFwaS5lbnVtcy52MS5UYXNrUXVldWVUeXBlEhIKCnJl",
"Z2lvbl9pZHMYAiADKAkSOgoIcHJvdmlkZXIYAyABKAsyKC50ZW1wb3JhbC5h",
"cGkuY29tcHV0ZS52MS5Db21wdXRlUHJvdmlkZXISNgoGc2NhbGVyGAQgASgL",
"MiYudGVtcG9yYWwuYXBpLmNvbXB1dGUudjEuQ29tcHV0ZVNjYWxlciLMAQoN",
"Q29tcHV0ZUNvbmZpZxJRCg5zY2FsaW5nX2dyb3VwcxgBIAMoCzI5LnRlbXBv",
"cmFsLmFwaS5jb21wdXRlLnYxLkNvbXB1dGVDb25maWcuU2NhbGluZ0dyb3Vw",
"c0VudHJ5GmgKElNjYWxpbmdHcm91cHNFbnRyeRILCgNrZXkYASABKAkSQQoF",
"dmFsdWUYAiABKAsyMi50ZW1wb3JhbC5hcGkuY29tcHV0ZS52MS5Db21wdXRl",
"Q29uZmlnU2NhbGluZ0dyb3VwOgI4ASKdAQofQ29tcHV0ZUNvbmZpZ1NjYWxp",
"bmdHcm91cFVwZGF0ZRJJCg1zY2FsaW5nX2dyb3VwGAEgASgLMjIudGVtcG9y",
"YWwuYXBpLmNvbXB1dGUudjEuQ29tcHV0ZUNvbmZpZ1NjYWxpbmdHcm91cBIv",
"Cgt1cGRhdGVfbWFzaxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE1h",
"c2si4QEKFENvbXB1dGVDb25maWdTdW1tYXJ5ElgKDnNjYWxpbmdfZ3JvdXBz",
"GAEgAygLMkAudGVtcG9yYWwuYXBpLmNvbXB1dGUudjEuQ29tcHV0ZUNvbmZp",
"Z1N1bW1hcnkuU2NhbGluZ0dyb3Vwc0VudHJ5Gm8KElNjYWxpbmdHcm91cHNF",
"bnRyeRILCgNrZXkYASABKAkSSAoFdmFsdWUYAiABKAsyOS50ZW1wb3JhbC5h",
"cGkuY29tcHV0ZS52MS5Db21wdXRlQ29uZmlnU2NhbGluZ0dyb3VwU3VtbWFy",
"eToCOAEijQEKIENvbXB1dGVDb25maWdTY2FsaW5nR3JvdXBTdW1tYXJ5Ej4K",
"EHRhc2tfcXVldWVfdHlwZXMYASADKA4yJC50ZW1wb3JhbC5hcGkuZW51bXMu",
"djEuVGFza1F1ZXVlVHlwZRIVCg1wcm92aWRlcl90eXBlGAIgASgJEhIKCnJl",
"Z2lvbl9pZHMYAyADKAlCjQEKGmlvLnRlbXBvcmFsLmFwaS5jb21wdXRlLnYx",
"QgtDb25maWdQcm90b1ABWiVnby50ZW1wb3JhbC5pby9hcGkvY29tcHV0ZS92",
"MTtjb21wdXRlqgIZVGVtcG9yYWxpby5BcGkuQ29tcHV0ZS5WMeoCHFRlbXBv",
"cmFsaW86OkFwaTo6Q29tcHV0ZTo6VjFiBnByb3RvMw=="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { global::Temporalio.Api.Compute.V1.ProviderReflection.Descriptor, global::Temporalio.Api.Compute.V1.ScalerReflection.Descriptor, global::Temporalio.Api.Enums.V1.TaskQueueReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.FieldMaskReflection.Descriptor, },
new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
new pbr::GeneratedClrTypeInfo(typeof(global::Temporalio.Api.Compute.V1.ComputeConfigScalingGroup), global::Temporalio.Api.Compute.V1.ComputeConfigScalingGroup.Parser, new[]{ "TaskQueueTypes", "Provider", "Scaler" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::Temporalio.Api.Compute.V1.ComputeConfigScalingGroup), global::Temporalio.Api.Compute.V1.ComputeConfigScalingGroup.Parser, new[]{ "TaskQueueTypes", "RegionIds", "Provider", "Scaler" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::Temporalio.Api.Compute.V1.ComputeConfig), global::Temporalio.Api.Compute.V1.ComputeConfig.Parser, new[]{ "ScalingGroups" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
new pbr::GeneratedClrTypeInfo(typeof(global::Temporalio.Api.Compute.V1.ComputeConfigScalingGroupUpdate), global::Temporalio.Api.Compute.V1.ComputeConfigScalingGroupUpdate.Parser, new[]{ "ScalingGroup", "UpdateMask" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::Temporalio.Api.Compute.V1.ComputeConfigSummary), global::Temporalio.Api.Compute.V1.ComputeConfigSummary.Parser, new[]{ "ScalingGroups" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
new pbr::GeneratedClrTypeInfo(typeof(global::Temporalio.Api.Compute.V1.ComputeConfigScalingGroupSummary), global::Temporalio.Api.Compute.V1.ComputeConfigScalingGroupSummary.Parser, new[]{ "TaskQueueTypes", "ProviderType" }, null, null, null, null)
new pbr::GeneratedClrTypeInfo(typeof(global::Temporalio.Api.Compute.V1.ComputeConfigScalingGroupSummary), global::Temporalio.Api.Compute.V1.ComputeConfigScalingGroupSummary.Parser, new[]{ "TaskQueueTypes", "ProviderType", "RegionIds" }, null, null, null, null)
}));
}
#endregion
Expand Down Expand Up @@ -102,6 +103,7 @@ public ComputeConfigScalingGroup() {
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public ComputeConfigScalingGroup(ComputeConfigScalingGroup other) : this() {
taskQueueTypes_ = other.taskQueueTypes_.Clone();
regionIds_ = other.regionIds_.Clone();
provider_ = other.provider_ != null ? other.provider_.Clone() : null;
scaler_ = other.scaler_ != null ? other.scaler_.Clone() : null;
_unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
Expand Down Expand Up @@ -129,6 +131,21 @@ public ComputeConfigScalingGroup Clone() {
get { return taskQueueTypes_; }
}

/// <summary>Field number for the "region_ids" field.</summary>
public const int RegionIdsFieldNumber = 2;
private static readonly pb::FieldCodec<string> _repeated_regionIds_codec
= pb::FieldCodec.ForString(18);
private readonly pbc::RepeatedField<string> regionIds_ = new pbc::RepeatedField<string>();
/// <summary>
/// Optional. If set, this scaling group is used only while the namespace is
/// active in one of these regions.
/// </summary>
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public pbc::RepeatedField<string> RegionIds {
get { return regionIds_; }
}

/// <summary>Field number for the "provider" field.</summary>
public const int ProviderFieldNumber = 3;
private global::Temporalio.Api.Compute.V1.ComputeProvider provider_;
Expand Down Expand Up @@ -177,6 +194,7 @@ public bool Equals(ComputeConfigScalingGroup other) {
return true;
}
if(!taskQueueTypes_.Equals(other.taskQueueTypes_)) return false;
if(!regionIds_.Equals(other.regionIds_)) return false;
if (!object.Equals(Provider, other.Provider)) return false;
if (!object.Equals(Scaler, other.Scaler)) return false;
return Equals(_unknownFields, other._unknownFields);
Expand All @@ -187,6 +205,7 @@ public bool Equals(ComputeConfigScalingGroup other) {
public override int GetHashCode() {
int hash = 1;
hash ^= taskQueueTypes_.GetHashCode();
hash ^= regionIds_.GetHashCode();
if (provider_ != null) hash ^= Provider.GetHashCode();
if (scaler_ != null) hash ^= Scaler.GetHashCode();
if (_unknownFields != null) {
Expand All @@ -208,6 +227,7 @@ public void WriteTo(pb::CodedOutputStream output) {
output.WriteRawMessage(this);
#else
taskQueueTypes_.WriteTo(output, _repeated_taskQueueTypes_codec);
regionIds_.WriteTo(output, _repeated_regionIds_codec);
if (provider_ != null) {
output.WriteRawTag(26);
output.WriteMessage(Provider);
Expand All @@ -227,6 +247,7 @@ public void WriteTo(pb::CodedOutputStream output) {
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
taskQueueTypes_.WriteTo(ref output, _repeated_taskQueueTypes_codec);
regionIds_.WriteTo(ref output, _repeated_regionIds_codec);
if (provider_ != null) {
output.WriteRawTag(26);
output.WriteMessage(Provider);
Expand All @@ -246,6 +267,7 @@ public void WriteTo(pb::CodedOutputStream output) {
public int CalculateSize() {
int size = 0;
size += taskQueueTypes_.CalculateSize(_repeated_taskQueueTypes_codec);
size += regionIds_.CalculateSize(_repeated_regionIds_codec);
if (provider_ != null) {
size += 1 + pb::CodedOutputStream.ComputeMessageSize(Provider);
}
Expand All @@ -265,6 +287,7 @@ public void MergeFrom(ComputeConfigScalingGroup other) {
return;
}
taskQueueTypes_.Add(other.taskQueueTypes_);
regionIds_.Add(other.regionIds_);
if (other.provider_ != null) {
if (provider_ == null) {
Provider = new global::Temporalio.Api.Compute.V1.ComputeProvider();
Expand Down Expand Up @@ -297,6 +320,10 @@ public void MergeFrom(pb::CodedInputStream input) {
taskQueueTypes_.AddEntriesFrom(input, _repeated_taskQueueTypes_codec);
break;
}
case 18: {
regionIds_.AddEntriesFrom(input, _repeated_regionIds_codec);
break;
}
case 26: {
if (provider_ == null) {
Provider = new global::Temporalio.Api.Compute.V1.ComputeProvider();
Expand Down Expand Up @@ -331,6 +358,10 @@ public void MergeFrom(pb::CodedInputStream input) {
taskQueueTypes_.AddEntriesFrom(ref input, _repeated_taskQueueTypes_codec);
break;
}
case 18: {
regionIds_.AddEntriesFrom(ref input, _repeated_regionIds_codec);
break;
}
case 26: {
if (provider_ == null) {
Provider = new global::Temporalio.Api.Compute.V1.ComputeProvider();
Expand Down Expand Up @@ -610,7 +641,7 @@ public ComputeConfigScalingGroupUpdate Clone() {
/// - Empty mask for an existing scaling group is no-op: no change.
/// - Non-empty mask for an existing scaling group will update/unset only to the fields
/// mentioned in the mask.
/// - Accepted paths: "task_queue_types", "provider", "provider.type", "provider.details",
/// - Accepted paths: "task_queue_types", "region_ids", "provider", "provider.type", "provider.details",
/// "provider.nexus_endpoint", "scaler", "scaler.type", "scaler.details"
/// </summary>
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
Expand Down Expand Up @@ -1014,6 +1045,7 @@ public ComputeConfigScalingGroupSummary() {
public ComputeConfigScalingGroupSummary(ComputeConfigScalingGroupSummary other) : this() {
taskQueueTypes_ = other.taskQueueTypes_.Clone();
providerType_ = other.providerType_;
regionIds_ = other.regionIds_.Clone();
_unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
}

Expand Down Expand Up @@ -1046,6 +1078,17 @@ public string ProviderType {
}
}

/// <summary>Field number for the "region_ids" field.</summary>
public const int RegionIdsFieldNumber = 3;
private static readonly pb::FieldCodec<string> _repeated_regionIds_codec
= pb::FieldCodec.ForString(26);
private readonly pbc::RepeatedField<string> regionIds_ = new pbc::RepeatedField<string>();
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public pbc::RepeatedField<string> RegionIds {
get { return regionIds_; }
}

[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public override bool Equals(object other) {
Expand All @@ -1063,6 +1106,7 @@ public bool Equals(ComputeConfigScalingGroupSummary other) {
}
if(!taskQueueTypes_.Equals(other.taskQueueTypes_)) return false;
if (ProviderType != other.ProviderType) return false;
if(!regionIds_.Equals(other.regionIds_)) return false;
return Equals(_unknownFields, other._unknownFields);
}

Expand All @@ -1072,6 +1116,7 @@ public override int GetHashCode() {
int hash = 1;
hash ^= taskQueueTypes_.GetHashCode();
if (ProviderType.Length != 0) hash ^= ProviderType.GetHashCode();
hash ^= regionIds_.GetHashCode();
if (_unknownFields != null) {
hash ^= _unknownFields.GetHashCode();
}
Expand All @@ -1095,6 +1140,7 @@ public void WriteTo(pb::CodedOutputStream output) {
output.WriteRawTag(18);
output.WriteString(ProviderType);
}
regionIds_.WriteTo(output, _repeated_regionIds_codec);
if (_unknownFields != null) {
_unknownFields.WriteTo(output);
}
Expand All @@ -1110,6 +1156,7 @@ public void WriteTo(pb::CodedOutputStream output) {
output.WriteRawTag(18);
output.WriteString(ProviderType);
}
regionIds_.WriteTo(ref output, _repeated_regionIds_codec);
if (_unknownFields != null) {
_unknownFields.WriteTo(ref output);
}
Expand All @@ -1124,6 +1171,7 @@ public int CalculateSize() {
if (ProviderType.Length != 0) {
size += 1 + pb::CodedOutputStream.ComputeStringSize(ProviderType);
}
size += regionIds_.CalculateSize(_repeated_regionIds_codec);
if (_unknownFields != null) {
size += _unknownFields.CalculateSize();
}
Expand All @@ -1140,6 +1188,7 @@ public void MergeFrom(ComputeConfigScalingGroupSummary other) {
if (other.ProviderType.Length != 0) {
ProviderType = other.ProviderType;
}
regionIds_.Add(other.regionIds_);
_unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
}

Expand All @@ -1164,6 +1213,10 @@ public void MergeFrom(pb::CodedInputStream input) {
ProviderType = input.ReadString();
break;
}
case 26: {
regionIds_.AddEntriesFrom(input, _repeated_regionIds_codec);
break;
}
}
}
#endif
Expand All @@ -1188,6 +1241,10 @@ public void MergeFrom(pb::CodedInputStream input) {
ProviderType = input.ReadString();
break;
}
case 26: {
regionIds_.AddEntriesFrom(ref input, _repeated_regionIds_codec);
break;
}
}
}
}
Expand Down
Loading
Loading