Skip to content

Commit e59ee58

Browse files
committed
Need a specific bypass constructor for queries now
1 parent b127715 commit e59ee58

File tree

2 files changed

+19
-4
lines changed

2 files changed

+19
-4
lines changed

src/Temporalio/Worker/WorkflowInstance.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1145,13 +1145,13 @@ private void ApplyQueryWorkflow(QueryWorkflow query)
11451145
if (query.QueryType == "__stack_trace")
11461146
{
11471147
Func<string> getter = GetStackTrace;
1148-
queryDefn = WorkflowQueryDefinition.CreateWithoutAttribute(
1148+
queryDefn = WorkflowQueryDefinition.CreateWithoutAttributeReservedName(
11491149
"__stack_trace", getter);
11501150
}
11511151
else if (query.QueryType == "__temporal_workflow_metadata")
11521152
{
11531153
Func<Api.Sdk.V1.WorkflowMetadata> getter = GetWorkflowMetadata;
1154-
queryDefn = WorkflowQueryDefinition.CreateWithoutAttribute(
1154+
queryDefn = WorkflowQueryDefinition.CreateWithoutAttributeReservedName(
11551155
"__temporal_workflow_metadata", getter);
11561156
}
11571157
else

src/Temporalio/Workflows/WorkflowQueryDefinition.cs

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ public class WorkflowQueryDefinition
2424
private static readonly ConcurrentDictionary<MethodInfo, WorkflowQueryDefinition> MethodDefinitions = new();
2525
private static readonly ConcurrentDictionary<PropertyInfo, WorkflowQueryDefinition> PropertyDefinitions = new();
2626

27-
private WorkflowQueryDefinition(string? name, string? description, MethodInfo? method, Delegate? del)
27+
private WorkflowQueryDefinition(string? name, string? description, MethodInfo? method, Delegate? del, bool bypassReserved = false)
2828
{
29-
if (name != null)
29+
if (!bypassReserved && name != null)
3030
{
3131
foreach (var reservedQ in ReservedQueryHandlerPrefixes)
3232
{
@@ -127,6 +127,21 @@ public static WorkflowQueryDefinition CreateWithoutAttribute(
127127
return new(name, description, null, del);
128128
}
129129

130+
/// <summary>
131+
/// Internal version of <see cref="CreateWithoutAttribute" /> that bypasses reserved name checks.
132+
/// </summary>
133+
/// <param name="name">Query name. Null for dynamic query.</param>
134+
/// <param name="del">Query delegate.</param>
135+
/// <param name="description">Optional description. WARNING: This setting is experimental.
136+
/// </param>
137+
/// <returns>Query definition.</returns>
138+
internal static WorkflowQueryDefinition CreateWithoutAttributeReservedName(
139+
string name, Delegate del, string? description = null)
140+
{
141+
AssertValid(del.Method, dynamic: name == null);
142+
return new(name, description, null, del, bypassReserved: true);
143+
}
144+
130145
/// <summary>
131146
/// Gets the query name for calling or fail if no attribute or if dynamic.
132147
/// </summary>

0 commit comments

Comments
 (0)