2020using Temporalio . Common ;
2121using Temporalio . Converters ;
2222using Temporalio . Exceptions ;
23+ using Temporalio . Runtime ;
2324using Temporalio . Worker . Interceptors ;
2425using Temporalio . Workflows ;
2526
@@ -939,7 +940,11 @@ private Task ApplyDoUpdateAsync(DoUpdate update)
939940 var updates = mutableUpdates . IsValueCreated ? mutableUpdates . Value : Definition . Updates ;
940941 if ( ! updates . TryGetValue ( update . Name , out var updateDefn ) )
941942 {
942- updateDefn = DynamicUpdate ;
943+ // Do not fall back onto dynamic update if using the reserved prefix
944+ if ( ! update . Name . StartsWith ( TemporalRuntime . ReservedNamePrefix ) )
945+ {
946+ updateDefn = DynamicUpdate ;
947+ }
943948 if ( updateDefn == null )
944949 {
945950 var knownUpdates = updates . Keys . OrderBy ( k => k ) ;
@@ -1136,26 +1141,27 @@ private void ApplyQueryWorkflow(QueryWorkflow query)
11361141 try
11371142 {
11381143 WorkflowQueryDefinition ? queryDefn ;
1139- // If it's a stack trace query, create definition
1144+ object ? resultObj ;
1145+
11401146 if ( query . QueryType == "__stack_trace" )
11411147 {
1142- Func < string > getter = GetStackTrace ;
1143- queryDefn = WorkflowQueryDefinition . CreateWithoutAttribute (
1144- "__stack_trace" , getter ) ;
1148+ resultObj = GetStackTrace ( ) ;
11451149 }
11461150 else if ( query . QueryType == "__temporal_workflow_metadata" )
11471151 {
1148- Func < Api . Sdk . V1 . WorkflowMetadata > getter = GetWorkflowMetadata ;
1149- queryDefn = WorkflowQueryDefinition . CreateWithoutAttribute (
1150- "__temporal_workflow_metadata" , getter ) ;
1152+ resultObj = GetWorkflowMetadata ( ) ;
11511153 }
11521154 else
11531155 {
11541156 // Find definition or fail
11551157 var queries = mutableQueries . IsValueCreated ? mutableQueries . Value : Definition . Queries ;
11561158 if ( ! queries . TryGetValue ( query . QueryType , out queryDefn ) )
11571159 {
1158- queryDefn = DynamicQuery ;
1160+ // Do not fall back onto dynamic query if using the reserved prefix
1161+ if ( ! query . QueryType . StartsWith ( TemporalRuntime . ReservedNamePrefix ) )
1162+ {
1163+ queryDefn = DynamicQuery ;
1164+ }
11591165 if ( queryDefn == null )
11601166 {
11611167 var knownQueries = queries . Keys . OrderBy ( k => k ) ;
@@ -1164,8 +1170,7 @@ private void ApplyQueryWorkflow(QueryWorkflow query)
11641170 $ "known queries: [{ string . Join ( " " , knownQueries ) } ]") ;
11651171 }
11661172 }
1167- }
1168- var resultObj = inbound . Value . HandleQuery ( new (
1173+ resultObj = inbound . Value . HandleQuery ( new (
11691174 Id : query . QueryId ,
11701175 Query : query . QueryType ,
11711176 Definition : queryDefn ,
@@ -1176,6 +1181,7 @@ private void ApplyQueryWorkflow(QueryWorkflow query)
11761181 dynamic : queryDefn . Dynamic ,
11771182 dynamicArgPrepend : query . QueryType ) ,
11781183 Headers : query . Headers ) ) ;
1184+ }
11791185 AddCommand ( new ( )
11801186 {
11811187 RespondToQuery = new ( )
@@ -1267,7 +1273,11 @@ private void ApplySignalWorkflow(SignalWorkflow signal)
12671273 var signals = mutableSignals . IsValueCreated ? mutableSignals . Value : Definition . Signals ;
12681274 if ( ! signals . TryGetValue ( signal . SignalName , out var signalDefn ) )
12691275 {
1270- signalDefn = DynamicSignal ;
1276+ // Do not fall back onto dynamic signal if using the reserved prefix
1277+ if ( ! signal . SignalName . StartsWith ( TemporalRuntime . ReservedNamePrefix ) )
1278+ {
1279+ signalDefn = DynamicSignal ;
1280+ }
12711281 if ( signalDefn == null )
12721282 {
12731283 // No definition found, buffer
0 commit comments