diff --git a/common/client/versionChecker.go b/common/client/versionChecker.go index 7e67c0cb35d..ab4efaf611d 100644 --- a/common/client/versionChecker.go +++ b/common/client/versionChecker.go @@ -209,6 +209,7 @@ func (vc *versionChecker) SupportsStickyQuery(clientImpl string, clientFeatureVe // SupportsConsistentQuery returns error if consistent query is not supported otherwise nil. // In case client version lookup fails assume the client does not support feature. func (vc *versionChecker) SupportsConsistentQuery(clientImpl string, clientFeatureVersion string) error { + return vc.featureSupported(clientImpl, clientFeatureVersion, consistentQuery) } diff --git a/service/history/decision/handler.go b/service/history/decision/handler.go index 98bf51a4b68..07782763ea6 100644 --- a/service/history/decision/handler.go +++ b/service/history/decision/handler.go @@ -725,7 +725,15 @@ func (handler *handlerImpl) handleBufferedQueries( // Consistent query requires both server and client worker support. If a consistent query was requested (meaning there are // buffered queries) but worker does not support consistent query then all buffered queries should be failed. - if versionErr := handler.versionChecker.SupportsConsistentQuery(clientImpl, clientFeatureVersion); versionErr != nil { + versionErr := handler.versionChecker.SupportsConsistentQuery(clientImpl, clientFeatureVersion) + // todo (David.Porter) remove the skip on version check for + // clientImpl and clientFeatureVersion where they're nil + // There's a bug, probably in matching somewhere which isn't + // forwarding the client headers for version + // info correctly making this call erroneously fail sometimes. + // https://t3.uberinternal.com/browse/CDNC-8641 + // So defaulting just this flow to fail-open in the absence of headers. + if versionErr != nil && clientImpl != "" && clientFeatureVersion != "" { scope.IncCounter(metrics.WorkerNotSupportsConsistentQueryCount) failedTerminationState := &query.TerminationState{ TerminationType: query.TerminationTypeFailed,