diff --git a/ChangeLog/7.1.3_dev.txt b/ChangeLog/7.1.3_dev.txt index e69de29bb2..ae0d7d4e6e 100644 --- a/ChangeLog/7.1.3_dev.txt +++ b/ChangeLog/7.1.3_dev.txt @@ -0,0 +1 @@ +[main] Addressed race condition issue with TranslatorState.NonVisitableExpressions \ No newline at end of file diff --git a/Orm/Xtensive.Orm/Orm/Linq/LocalCollectionKeyTypeExtractor.cs b/Orm/Xtensive.Orm/Orm/Linq/LocalCollectionKeyTypeExtractor.cs index db5884c8d2..0afc1c4d4f 100644 --- a/Orm/Xtensive.Orm/Orm/Linq/LocalCollectionKeyTypeExtractor.cs +++ b/Orm/Xtensive.Orm/Orm/Linq/LocalCollectionKeyTypeExtractor.cs @@ -24,14 +24,14 @@ public static Type Extract(BinaryExpression expression) return key.EntityType.UnderlyingType; } - var expr = VisitBinaryExpession(expression); + var expr = VisitBinaryExpression(expression); if (expr.Type.IsSubclassOf(WellKnownOrmTypes.Entity)) { return expr.Type; } throw new NotSupportedException(string.Format(Strings.ExCurrentTypeXIsNotSupported, expr.Type)); } - private static Expression VisitBinaryExpession(BinaryExpression binaryExpression) + private static Expression VisitBinaryExpression(BinaryExpression binaryExpression) { if (!(binaryExpression.Right is MemberExpression memberExpression)) { throw new InvalidOperationException(string.Format(Strings.ExCantConvertXToY, binaryExpression.Type, typeof(MemberExpression))); diff --git a/Orm/Xtensive.Orm/Orm/Linq/Translator.Queryable.cs b/Orm/Xtensive.Orm/Orm/Linq/Translator.Queryable.cs index 3128d3e508..d8322aa22a 100644 --- a/Orm/Xtensive.Orm/Orm/Linq/Translator.Queryable.cs +++ b/Orm/Xtensive.Orm/Orm/Linq/Translator.Queryable.cs @@ -33,7 +33,9 @@ internal sealed partial class Translator : QueryableVisitor private readonly TranslatorContext context; private readonly bool tagsEnabled; - internal TranslatorState State { get; private set; } = TranslatorState.InitState; + internal TranslatorState State { get; private set; } = new(TranslatorState.InitState) { + NonVisitableExpressions = new() + }; protected override Expression VisitConstant(ConstantExpression c) { diff --git a/Orm/Xtensive.Orm/Orm/Linq/TranslatorState.cs b/Orm/Xtensive.Orm/Orm/Linq/TranslatorState.cs index 1a83e0248f..0ac6c242e2 100644 --- a/Orm/Xtensive.Orm/Orm/Linq/TranslatorState.cs +++ b/Orm/Xtensive.Orm/Orm/Linq/TranslatorState.cs @@ -70,7 +70,7 @@ public TranslatorScope(Translator translator) /// - /// Expessions that were constructed during original expression translation + /// Expressions that were constructed during original expression translation /// and aim to replace original parts so they are avoidable to visit by Linq translator. /// ///