Skip to content

Commit ac0697d

Browse files
committed
More review comments
1 parent 4ecc6c5 commit ac0697d

File tree

2 files changed

+13
-35
lines changed

2 files changed

+13
-35
lines changed

src/Temporalio/Worker/WorkflowInstance.cs

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1141,18 +1141,15 @@ private void ApplyQueryWorkflow(QueryWorkflow query)
11411141
try
11421142
{
11431143
WorkflowQueryDefinition? queryDefn;
1144-
// If it's a stack trace query, create definition
1144+
object? resultObj;
1145+
11451146
if (query.QueryType == "__stack_trace")
11461147
{
1147-
Func<string> getter = GetStackTrace;
1148-
queryDefn = WorkflowQueryDefinition.CreateWithoutAttributeReservedName(
1149-
"__stack_trace", getter);
1148+
resultObj = GetStackTrace();
11501149
}
11511150
else if (query.QueryType == "__temporal_workflow_metadata")
11521151
{
1153-
Func<Api.Sdk.V1.WorkflowMetadata> getter = GetWorkflowMetadata;
1154-
queryDefn = WorkflowQueryDefinition.CreateWithoutAttributeReservedName(
1155-
"__temporal_workflow_metadata", getter);
1152+
resultObj = GetWorkflowMetadata();
11561153
}
11571154
else
11581155
{
@@ -1173,8 +1170,7 @@ private void ApplyQueryWorkflow(QueryWorkflow query)
11731170
$"known queries: [{string.Join(" ", knownQueries)}]");
11741171
}
11751172
}
1176-
}
1177-
var resultObj = inbound.Value.HandleQuery(new(
1173+
resultObj = inbound.Value.HandleQuery(new(
11781174
Id: query.QueryId,
11791175
Query: query.QueryType,
11801176
Definition: queryDefn,
@@ -1185,6 +1181,7 @@ private void ApplyQueryWorkflow(QueryWorkflow query)
11851181
dynamic: queryDefn.Dynamic,
11861182
dynamicArgPrepend: query.QueryType),
11871183
Headers: query.Headers));
1184+
}
11881185
AddCommand(new()
11891186
{
11901187
RespondToQuery = new()

src/Temporalio/Workflows/WorkflowQueryDefinition.cs

Lines changed: 7 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Collections.Concurrent;
3+
using System.Linq;
34
using System.Reflection;
45
using System.Threading.Tasks;
56
using Temporalio.Runtime;
@@ -11,10 +12,7 @@ namespace Temporalio.Workflows
1112
/// </summary>
1213
public class WorkflowQueryDefinition
1314
{
14-
/// <summary>
15-
/// All known reserved query handler prefixes.
16-
/// </summary>
17-
internal static readonly string[] ReservedQueryHandlerPrefixes =
15+
private static readonly string[] ReservedQueryHandlerPrefixes =
1816
{
1917
TemporalRuntime.ReservedNamePrefix,
2018
"__stack_trace",
@@ -24,16 +22,14 @@ public class WorkflowQueryDefinition
2422
private static readonly ConcurrentDictionary<MethodInfo, WorkflowQueryDefinition> MethodDefinitions = new();
2523
private static readonly ConcurrentDictionary<PropertyInfo, WorkflowQueryDefinition> PropertyDefinitions = new();
2624

27-
private WorkflowQueryDefinition(string? name, string? description, MethodInfo? method, Delegate? del, bool bypassReserved = false)
25+
private WorkflowQueryDefinition(string? name, string? description, MethodInfo? method, Delegate? del)
2826
{
29-
if (!bypassReserved && name != null)
27+
if (name != null)
3028
{
31-
foreach (var reservedQ in ReservedQueryHandlerPrefixes)
29+
var reservedQ = ReservedQueryHandlerPrefixes.FirstOrDefault(p => name.StartsWith(p));
30+
if (!string.IsNullOrEmpty(reservedQ))
3231
{
33-
if (name.StartsWith(reservedQ))
34-
{
35-
throw new ArgumentException($"Query handler name {name} cannot start with {reservedQ}");
36-
}
32+
throw new ArgumentException($"Query handler name {name} cannot start with {reservedQ}");
3733
}
3834
}
3935
Name = name;
@@ -127,21 +123,6 @@ public static WorkflowQueryDefinition CreateWithoutAttribute(
127123
return new(name, description, null, del);
128124
}
129125

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-
145126
/// <summary>
146127
/// Gets the query name for calling or fail if no attribute or if dynamic.
147128
/// </summary>

0 commit comments

Comments
 (0)