Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enabling some features on a site using SQL Server throws an exception #15628

Closed
sarahelsaig opened this issue Mar 29, 2024 · 3 comments · Fixed by #15942
Closed

Enabling some features on a site using SQL Server throws an exception #15628

sarahelsaig opened this issue Mar 29, 2024 · 3 comments · Fixed by #15942
Labels
Milestone

Comments

@sarahelsaig
Copy link
Contributor

Describe the bug

When I enable certain features, it seems to be successful but the application log records the exception you can see below.
I've noticed this while testing OC 1.9 with Lombq's modules so I know it worked in 1.8.2.

To Reproduce

Steps to reproduce the behavior:

  1. Create a new database in SQL Server.
  2. Set up OC using SQL Server database. I used this connection string:
    Server=.;Database=LombiqUITestingToolbox_1;User Id=sa;Password=Password1!;Connection Timeout=60;ConnectRetryCount=15;ConnectRetryInterval=5;TrustServerCertificate=True;Encrypt=False
    
  3. Go to Admon > Configuration > Features
  4. Enable Workflows (OrchardCore.Workflows).
  5. See this exception in src\OrchardCore.Cms.Web\App_Data\logs\orchard-log-2024-03-29.log:
2024-03-29 23:48:13.1720|||14|Microsoft.Hosting.Lifetime|INFO|Now listening on: https://localhost:5001 
2024-03-29 23:48:13.2122|||14|Microsoft.Hosting.Lifetime|INFO|Now listening on: http://localhost:5000 
2024-03-29 23:48:13.2122||||Microsoft.Hosting.Lifetime|INFO|Application started. Press Ctrl+C to shut down. 
2024-03-29 23:48:13.2122||||Microsoft.Hosting.Lifetime|INFO|Hosting environment: Development 
2024-03-29 23:48:13.2122||||Microsoft.Hosting.Lifetime|INFO|Content root path: E:\Repositories\orchard-core\OrchardCore-Sarah\src\OrchardCore.Cms.Web 
2024-03-29 23:50:43.6769|Default|00-c775f2ccefd605efbaf52ff954bafd1b-cf0afc31120a8251-00||OrchardCore.Environment.Shell.ShellFeaturesManager|ERROR|IFeatureEventHandler thrown from OrchardCore.Roles.Services.RoleUpdater by InvalidOperationException System.InvalidOperationException: There is already an open DataReader associated with this Connection which must be closed first.
   at Microsoft.Data.SqlClient.SqlCommand.<>c.<ExecuteDbDataReaderAsync>b__211_0(Task`1 result)
   at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke()
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
--- End of stack trace from previous location ---
   at Dapper.SqlMapper.QueryAsync[T](IDbConnection cnn, Type effectiveType, CommandDefinition command) in /_/Dapper/SqlMapper.Async.cs:line 434
   at YesSql.Store.ProduceAsync[T,TState](WorkerQueryKey key, Func`2 work, TState state)
   at YesSql.Services.DefaultQuery.Query`1.FirstOrDefaultImpl()
   at YesSql.Services.DefaultQuery.Query`1.FirstOrDefaultImpl()
   at OrchardCore.Data.Documents.DocumentStore.GetOrCreateMutableAsync[T](Func`1 factoryAsync) in E:\Repositories\orchard-core\OrchardCore-Sarah\src\OrchardCore\OrchardCore.Data.YesSql\Documents\DocumentStore.cs:line 38
   at OrchardCore.Documents.DocumentManager`1.GetOrCreateMutableAsync(Func`1 factoryAsync) in E:\Repositories\orchard-core\OrchardCore-Sarah\src\OrchardCore\OrchardCore.Infrastructure\Documents\DocumentManager.cs:line 71
   at OrchardCore.Roles.Services.RoleUpdater.UpdateRolesForInstalledFeatureAsync(IFeatureInfo feature) in E:\Repositories\orchard-core\OrchardCore-Sarah\src\OrchardCore.Modules\OrchardCore.Roles\Services\RoleUpdater.cs:line 64
   at OrchardCore.Modules.InvokeExtensions.InvokeAsync[TEvents,T1](IEnumerable`1 events, Func`3 dispatch, T1 arg1, ILogger logger) in E:\Repositories\orchard-core\OrchardCore-Sarah\src\OrchardCore\OrchardCore.Abstractions\Modules\Extensions\InvokeExtensions.cs:line 133    at Microsoft.Data.SqlClient.SqlCommand.<>c.<ExecuteDbDataReaderAsync>b__211_0(Task`1 result)
   at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke()
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
--- End of stack trace from previous location ---
   at Dapper.SqlMapper.QueryAsync[T](IDbConnection cnn, Type effectiveType, CommandDefinition command) in /_/Dapper/SqlMapper.Async.cs:line 434
   at YesSql.Store.ProduceAsync[T,TState](WorkerQueryKey key, Func`2 work, TState state)
   at YesSql.Services.DefaultQuery.Query`1.FirstOrDefaultImpl()
   at YesSql.Services.DefaultQuery.Query`1.FirstOrDefaultImpl()
   at OrchardCore.Data.Documents.DocumentStore.GetOrCreateMutableAsync[T](Func`1 factoryAsync) in E:\Repositories\orchard-core\OrchardCore-Sarah\src\OrchardCore\OrchardCore.Data.YesSql\Documents\DocumentStore.cs:line 38
   at OrchardCore.Documents.DocumentManager`1.GetOrCreateMutableAsync(Func`1 factoryAsync) in E:\Repositories\orchard-core\OrchardCore-Sarah\src\OrchardCore\OrchardCore.Infrastructure\Documents\DocumentManager.cs:line 71
   at OrchardCore.Roles.Services.RoleUpdater.UpdateRolesForInstalledFeatureAsync(IFeatureInfo feature) in E:\Repositories\orchard-core\OrchardCore-Sarah\src\OrchardCore.Modules\OrchardCore.Roles\Services\RoleUpdater.cs:line 64
   at OrchardCore.Modules.InvokeExtensions.InvokeAsync[TEvents,T1](IEnumerable`1 events, Func`3 dispatch, T1 arg1, ILogger logger) in E:\Repositories\orchard-core\OrchardCore-Sarah\src\OrchardCore\OrchardCore.Abstractions\Modules\Extensions\InvokeExtensions.cs:line 133
  1. Afterwards if you disable the same feature you see this new error in the log:
2024-03-29 23:59:35.7642|Default|00-dff83223bfe210c44e1379cd5f5fb9d0-d6f3ceee7c33cc13-00||OrchardCore.Navigation.NavigationManager|ERROR|An exception occurred while building the menu 'admin' System.ArgumentException: An item with the same key has already been added. Key: 42
   at System.Collections.Generic.Dictionary`2.TryInsert(TKey key, TValue value, InsertionBehavior behavior)
   at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value)
   at YesSql.Indexes.IdentityMap.AddEntity(Int64 id, Object entity)
   at YesSql.Session.Get[T](IList`1 documents, String collection)
   at YesSql.Services.DefaultQuery.Query`1.FirstOrDefaultImpl()
   at YesSql.Services.DefaultQuery.Query`1.FirstOrDefaultImpl()
   at OrchardCore.Data.Documents.DocumentStore.GetOrCreateImmutableAsync[T](Func`1 factoryAsync) in E:\Repositories\orchard-core\OrchardCore-Sarah\src\OrchardCore\OrchardCore.Data.YesSql\Documents\DocumentStore.cs:line 56
   at OrchardCore.Documents.DocumentManager`1.GetOrCreateImmutableAsync(Func`1 factoryAsync) in E:\Repositories\orchard-core\OrchardCore-Sarah\src\OrchardCore\OrchardCore.Infrastructure\Documents\DocumentManager.cs:line 143
   at OrchardCore.ContentManagement.ContentDefinitionManager.ListTypeDefinitionsAsync() in E:\Repositories\orchard-core\OrchardCore-Sarah\src\OrchardCore\OrchardCore.ContentManagement\ContentDefinitionManager.cs:line 48
   at OrchardCore.CustomSettings.Services.CustomSettingsService.GetContentTypeAsync() in E:\Repositories\orchard-core\OrchardCore-Sarah\src\OrchardCore.Modules\OrchardCore.CustomSettings\Services\CustomSettingsService.cs:line 121
   at OrchardCore.CustomSettings.Services.CustomSettingsService.GetAllSettingsTypesAsync() in E:\Repositories\orchard-core\OrchardCore-Sarah\src\OrchardCore.Modules\OrchardCore.CustomSettings\Services\CustomSettingsService.cs:line 43
   at OrchardCore.CustomSettings.AdminMenu.BuildNavigationAsync(String name, NavigationBuilder builder) in E:\Repositories\orchard-core\OrchardCore-Sarah\src\OrchardCore.Modules\OrchardCore.CustomSettings\AdminMenu.cs:line 32
   at OrchardCore.Navigation.NavigationManager.BuildMenuAsync(String name, ActionContext actionContext) in E:\Repositories\orchard-core\OrchardCore-Sarah\src\OrchardCore\OrchardCore.Navigation.Core\NavigationManager.cs:line 49    at System.Collections.Generic.Dictionary`2.TryInsert(TKey key, TValue value, InsertionBehavior behavior)
   at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value)
   at YesSql.Indexes.IdentityMap.AddEntity(Int64 id, Object entity)
   at YesSql.Session.Get[T](IList`1 documents, String collection)
   at YesSql.Services.DefaultQuery.Query`1.FirstOrDefaultImpl()
   at YesSql.Services.DefaultQuery.Query`1.FirstOrDefaultImpl()
   at OrchardCore.Data.Documents.DocumentStore.GetOrCreateImmutableAsync[T](Func`1 factoryAsync) in E:\Repositories\orchard-core\OrchardCore-Sarah\src\OrchardCore\OrchardCore.Data.YesSql\Documents\DocumentStore.cs:line 56
   at OrchardCore.Documents.DocumentManager`1.GetOrCreateImmutableAsync(Func`1 factoryAsync) in E:\Repositories\orchard-core\OrchardCore-Sarah\src\OrchardCore\OrchardCore.Infrastructure\Documents\DocumentManager.cs:line 143
   at OrchardCore.ContentManagement.ContentDefinitionManager.ListTypeDefinitionsAsync() in E:\Repositories\orchard-core\OrchardCore-Sarah\src\OrchardCore\OrchardCore.ContentManagement\ContentDefinitionManager.cs:line 48
   at OrchardCore.CustomSettings.Services.CustomSettingsService.GetContentTypeAsync() in E:\Repositories\orchard-core\OrchardCore-Sarah\src\OrchardCore.Modules\OrchardCore.CustomSettings\Services\CustomSettingsService.cs:line 121
   at OrchardCore.CustomSettings.Services.CustomSettingsService.GetAllSettingsTypesAsync() in E:\Repositories\orchard-core\OrchardCore-Sarah\src\OrchardCore.Modules\OrchardCore.CustomSettings\Services\CustomSettingsService.cs:line 43
   at OrchardCore.CustomSettings.AdminMenu.BuildNavigationAsync(String name, NavigationBuilder builder) in E:\Repositories\orchard-core\OrchardCore-Sarah\src\OrchardCore.Modules\OrchardCore.CustomSettings\AdminMenu.cs:line 32
   at OrchardCore.Navigation.NavigationManager.BuildMenuAsync(String name, ActionContext actionContext) in E:\Repositories\orchard-core\OrchardCore-Sarah\src\OrchardCore\OrchardCore.Navigation.Core\NavigationManager.cs:line 49
  1. After that enabling it again shows this, so perhaps something is "stuck":
2024-03-30 00:03:16.7439|Default|00-6ac89769d935a5f499a392374e0203d2-e9691515dbdb292b-00||OrchardCore.Environment.Shell.ShellFeaturesManager|ERROR|IFeatureEventHandler thrown from OrchardCore.Roles.Services.RoleUpdater by InvalidOperationException System.InvalidOperationException: The connection does not support MultipleActiveResultSets.
   at Microsoft.Data.SqlClient.SqlCommand.<>c.<ExecuteDbDataReaderAsync>b__211_0(Task`1 result)
   at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke()
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
--- End of stack trace from previous location ---
   at Dapper.SqlMapper.QueryAsync[T](IDbConnection cnn, Type effectiveType, CommandDefinition command) in /_/Dapper/SqlMapper.Async.cs:line 434
   at YesSql.Store.ProduceAsync[T,TState](WorkerQueryKey key, Func`2 work, TState state)
   at YesSql.Services.DefaultQuery.Query`1.FirstOrDefaultImpl()
   at YesSql.Services.DefaultQuery.Query`1.FirstOrDefaultImpl()
   at OrchardCore.Data.Documents.DocumentStore.GetOrCreateMutableAsync[T](Func`1 factoryAsync) in E:\Repositories\orchard-core\OrchardCore-Sarah\src\OrchardCore\OrchardCore.Data.YesSql\Documents\DocumentStore.cs:line 38
   at OrchardCore.Documents.DocumentManager`1.GetOrCreateMutableAsync(Func`1 factoryAsync) in E:\Repositories\orchard-core\OrchardCore-Sarah\src\OrchardCore\OrchardCore.Infrastructure\Documents\DocumentManager.cs:line 71
   at OrchardCore.Roles.Services.RoleUpdater.UpdateRolesForEnabledFeatureAsync(IFeatureInfo feature) in E:\Repositories\orchard-core\OrchardCore-Sarah\src\OrchardCore.Modules\OrchardCore.Roles\Services\RoleUpdater.cs:line 108
   at OrchardCore.Modules.InvokeExtensions.InvokeAsync[TEvents,T1](IEnumerable`1 events, Func`3 dispatch, T1 arg1, ILogger logger) in E:\Repositories\orchard-core\OrchardCore-Sarah\src\OrchardCore\OrchardCore.Abstractions\Modules\Extensions\InvokeExtensions.cs:line 133    at Microsoft.Data.SqlClient.SqlCommand.<>c.<ExecuteDbDataReaderAsync>b__211_0(Task`1 result)
   at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke()
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
--- End of stack trace from previous location ---
   at Dapper.SqlMapper.QueryAsync[T](IDbConnection cnn, Type effectiveType, CommandDefinition command) in /_/Dapper/SqlMapper.Async.cs:line 434
   at YesSql.Store.ProduceAsync[T,TState](WorkerQueryKey key, Func`2 work, TState state)
   at YesSql.Services.DefaultQuery.Query`1.FirstOrDefaultImpl()
   at YesSql.Services.DefaultQuery.Query`1.FirstOrDefaultImpl()
   at OrchardCore.Data.Documents.DocumentStore.GetOrCreateMutableAsync[T](Func`1 factoryAsync) in E:\Repositories\orchard-core\OrchardCore-Sarah\src\OrchardCore\OrchardCore.Data.YesSql\Documents\DocumentStore.cs:line 38
   at OrchardCore.Documents.DocumentManager`1.GetOrCreateMutableAsync(Func`1 factoryAsync) in E:\Repositories\orchard-core\OrchardCore-Sarah\src\OrchardCore\OrchardCore.Infrastructure\Documents\DocumentManager.cs:line 71
   at OrchardCore.Roles.Services.RoleUpdater.UpdateRolesForEnabledFeatureAsync(IFeatureInfo feature) in E:\Repositories\orchard-core\OrchardCore-Sarah\src\OrchardCore.Modules\OrchardCore.Roles\Services\RoleUpdater.cs:line 108
   at OrchardCore.Modules.InvokeExtensions.InvokeAsync[TEvents,T1](IEnumerable`1 events, Func`3 dispatch, T1 arg1, ILogger logger) in E:\Repositories\orchard-core\OrchardCore-Sarah\src\OrchardCore\OrchardCore.Abstractions\Modules\Extensions\InvokeExtensions.cs:line 133

Expected behavior

No exceptions should be thrown, just like when we do the same using SQLite database.

@Piedone
Copy link
Member

Piedone commented Apr 10, 2024

BTW the Functional Tests - all Databases workflow brings this out, see a recent main run here:

  • Postgres:
Npgsql.NpgsqlOperationInProgressException (0x80004005): A command is already in progress: SELECT "t28nubq_Document".* FROM "t28nubq_Document" WHERE "t28nubq_Document"."Type" = @Type limit 1
         at Npgsql.Internal.NpgsqlConnector.<StartUserAction>g__DoStartUserAction|279_0(ConnectorState newState, NpgsqlCommand command, <>c__DisplayClass279_0&)
         at Npgsql.Internal.NpgsqlConnector.StartUserAction(ConnectorState newState, NpgsqlCommand command, CancellationToken cancellationToken, Boolean attemptPgCancellation)
         at Npgsql.Internal.NpgsqlConnector.StartUserAction(CancellationToken cancellationToken, Boolean attemptPgCancellation)
         at Npgsql.NpgsqlTransaction.Commit(Boolean async, CancellationToken cancellationToken)
         at YesSql.Session.CommitOrRollbackTransactionAsync()
         at YesSql.Session.CommitOrRollbackTransactionAsync()
         at YesSql.Session.SaveChangesAsync()
         at OrchardCore.Data.Documents.DocumentStore.CommitAsync() in /_/src/OrchardCore/OrchardCore.Data.YesSql/Documents/DocumentStore.cs:line 121
         at OrchardCore.Environment.Shell.Scope.ShellScope.BeforeDisposeAsync() in /_/src/OrchardCore/OrchardCore.Abstractions/Shell/Scope/ShellScope.cs:line 397
         at OrchardCore.Environment.Shell.Scope.ShellScope.UsingAsync(Func`2 execute, Boolean activateShell) in /_/src/OrchardCore/OrchardCore.Abstractions/Shell/Scope/ShellScope.cs:line 267
         at OrchardCore.Environment.Shell.Scope.ShellScope.UsingAsync(Func`2 execute, Boolean activateShell) in /_/src/OrchardCore/OrchardCore.Abstractions/Shell/Scope/ShellScope.cs:line 267
         at OrchardCore.Recipes.Services.RecipeExecutor.ExecuteStepAsync(RecipeExecutionContext recipeStep) in /_/src/OrchardCore/OrchardCore.Recipes.Core/Services/RecipeExecutor.cs:line [156](https://github.com/OrchardCMS/OrchardCore/actions/runs/8637826438/job/23680911954#step:5:157)
         at OrchardCore.Recipes.Services.RecipeExecutor.ExecuteAsync(String executionId, RecipeDescriptor recipeDescriptor, IDictionary`2 environment, CancellationToken cancellationToken) in /_/src/OrchardCore/OrchardCore.Recipes.Core/Services/RecipeExecutor.cs:line 99
         at OrchardCore.Recipes.Services.RecipeExecutor.ExecuteAsync(String executionId, RecipeDescriptor recipeDescriptor, IDictionary`2 environment, CancellationToken cancellationToken) in /_/src/OrchardCore/OrchardCore.Recipes.Core/Services/RecipeExecutor.cs:line 117
         at OrchardCore.Recipes.Services.RecipeExecutor.ExecuteAsync(String executionId, RecipeDescriptor recipeDescriptor, IDictionary`2 environment, CancellationToken cancellationToken) in /_/src/OrchardCore/OrchardCore.Recipes.Core/Services/RecipeExecutor.cs:line 132
         at OrchardCore.Recipes.Services.RecipeExecutor.ExecuteAsync(String executionId, RecipeDescriptor recipeDescriptor, IDictionary`2 environment, CancellationToken cancellationToken) in /_/src/OrchardCore/OrchardCore.Recipes.Core/Services/RecipeExecutor.cs:line 142
         at OrchardCore.Setup.Services.SetupService.SetupInternalAsync(SetupContext context) in /_/src/OrchardCore/OrchardCore.Setup.Core/SetupService.cs:line 231
         at OrchardCore.Setup.Services.SetupService.SetupInternalAsync(SetupContext context) in /_/src/OrchardCore/OrchardCore.Setup.Core/SetupService.cs:line 231
         at OrchardCore.Setup.Services.SetupService.SetupAsync(SetupContext context) in /_/src/OrchardCore/OrchardCore.Setup.Core/SetupService.cs:line 95
         at OrchardCore.Setup.Services.SetupService.SetupAsync(SetupContext context) in /_/src/OrchardCore/OrchardCore.Setup.Core/SetupService.cs:line 110
         at OrchardCore.Setup.Controllers.SetupController.IndexPOST(SetupViewModel model) in /_/src/OrchardCore.Modules/OrchardCore.Setup/Controllers/SetupController.cs:line 176
         at lambda_method963(Closure, Object)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfActionResultExecutor.Execute(ActionContext actionContext, IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
         at Microsoft.AspNetCore.Localization.RequestLocalizationMiddleware.Invoke(HttpContext context)
         at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
         at OrchardCore.Modules.ModularTenantRouterMiddleware.Invoke(HttpContext httpContext) in /_/src/OrchardCore/OrchardCore/Modules/ModularTenantRouterMiddleware.cs:line 47
         at OrchardCore.Modules.ModularTenantContainerMiddleware.<>c__DisplayClass4_0.<<Invoke>b__0>d.MoveNext() in /_/src/OrchardCore/OrchardCore/Modules/ModularTenantContainerMiddleware.cs:line 61
      --- End of stack trace from previous location ---
         at OrchardCore.Environment.Shell.Scope.ShellScope.UsingAsync(Func`2 execute, Boolean activateShell) in /_/src/OrchardCore/OrchardCore.Abstractions/Shell/Scope/ShellScope.cs:line 253
         at OrchardCore.Environment.Shell.Scope.ShellScope.UsingAsync(Func`2 execute, Boolean activateShell) in /_/src/OrchardCore/OrchardCore.Abstractions/Shell/Scope/ShellScope.cs:line 257
         at OrchardCore.Environment.Shell.Scope.ShellScope.UsingAsync(Func`2 execute, Boolean activateShell) in /_/src/OrchardCore/OrchardCore.Abstractions/Shell/Scope/ShellScope.cs:line 263
         at OrchardCore.Environment.Shell.Scope.ShellScope.UsingAsync(Func`2 execute, Boolean activateShell) in /_/src/OrchardCore/OrchardCore.Abstractions/Shell/Scope/ShellScope.cs:line 267
         a

[9:11:27 PM] t OrchardCore.Environment.Shell.Scope.ShellScope.UsingAsync(Func`2 execute, Boolean activateShell) in /_/src/OrchardCore/OrchardCore.Abstractions/Shell/Scope/ShellScope.cs:line 267
         at OrchardCore.Modules.ModularTenantContainerMiddleware.Invoke(HttpContext httpContext) in /_/src/OrchardCore/OrchardCore/Modules/ModularTenantContainerMiddleware.cs:line 59
         at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddlewareImpl.<Invoke>g__Awaited|10_0(ExceptionHandlerMiddlewareImpl middleware, HttpContext context, Task task)

  • MySQL:
[9:12:01 PM] fail: OrchardCore.Environment.Shell.ShellFeaturesManager[0]
      IFeatureEventHandler thrown from OrchardCore.Roles.Services.RoleUpdater by InvalidOperationException
      System.InvalidOperationException: This MySqlConnection is already in use. See https://fl.vu/mysql-conn-reuse
         at MySqlConnector.Core.ServerSession.StartQuerying(ICancellableCommand command) in /_/src/MySqlConnector/Core/ServerSession.cs:line 289
         at MySqlConnector.Core.CommandExecutor.ExecuteReaderAsync(CommandListPosition commandListPosition, ICommandPayloadCreator payloadCreator, CommandBehavior behavior, Activity activity, IOBehavior ioBehavior, CancellationToken cancellationToken)
         at MySqlConnector.MySqlCommand.ExecuteReaderAsync(CommandBehavior behavior, IOBehavior ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/MySqlCommand.cs:line 357
         at MySqlConnector.MySqlCommand.ExecuteDbDataReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/MySqlCommand.cs:line 350
         at Dapper.SqlMapper.QueryAsync[T](IDbConnection cnn, Type effectiveType, CommandDefinition command) in /_/Dapper/SqlMapper.Async.cs:line 434
         at YesSql.Store.ProduceAsync[T,TState](WorkerQueryKey key, Func`2 work, TState state)
         at YesSql.Services.DefaultQuery.Query`1.FirstOrDefaultImpl()
         at YesSql.Services.DefaultQuery.Query`1.FirstOrDefaultImpl()
         at OrchardCore.Data.Documents.DocumentStore.GetOrCreateMutableAsync[T](Func`1 factoryAsync)
         at OrchardCore.Documents.DocumentManager`1.GetOrCreateMutableAsync(Func`1 factoryAsync)
         at OrchardCore.Roles.Services.RoleUpdater.UpdateRolesForInstalledFeatureAsync(IFeatureInfo feature) in /_/src/OrchardCore.Modules/OrchardCore.Roles/Services/RoleUpdater.cs:line 65
         at OrchardCore.Modules.InvokeExtensions.InvokeAsync[TEvents,T1](IEnumerable`1 events, Func`3 dispatch, T1 arg1, ILogger logger) in /_/src/OrchardCore/OrchardCore.Abstractions/Modules/Extensions/InvokeExtensions.cs:line 133

And also a second one, which I guess is the other face of the same coin:

[9:12:04 PM] fail: OrchardCore.Navigation.NavigationManager[0]
      An exception occurred while building the menu 'admin'
      System.InvalidOperationException: Connection must be Open; current state is Connecting
         at MySqlConnector.MySqlConnection.get_Session() in /_/src/MySqlConnector/MySqlConnection.cs:line 733
         at MySqlConnector.Core.ICancellableCommandExtensions.ResetCommandTimeout(ICancellableCommand command) in /_/src/MySqlConnector/Core/ICancellableCommand.cs:line 42
         at MySqlConnector.MySqlCommand.ExecuteReaderAsync(CommandBehavior behavior, IOBehavior ioBehavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/MySqlCommand.cs:line 355
         at MySqlConnector.MySqlCommand.ExecuteDbDataReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken) in /_/src/MySqlConnector/MySqlCommand.cs:line 350
         at Dapper.SqlMapper.QueryAsync[T](IDbConnection cnn, Type effectiveType, CommandDefinition command) in /_/Dapper/SqlMapper.Async.cs:line 434
         at YesSql.Store.ProduceAsync[T,TState](WorkerQueryKey key, Func`2 work, TState state)
         at YesSql.Services.DefaultQuery.Query`1.FirstOrDefaultImpl()
         at YesSql.Services.DefaultQuery.Query`1.FirstOrDefaultImpl()
         at OrchardCore.Data.Documents.DocumentStore.GetOrCreateImmutableAsync[T](Func`1 factoryAsync)
         at OrchardCore.Documents.DocumentManager`1.GetOrCreateImmutableAsync(Func`1 factoryAsync)
         at OrchardCore.ContentManagement.ContentDefinitionManager.ListTypeDefinitionsAsync() in /_/src/OrchardCore/OrchardCore.ContentManagement/ContentDefinitionManager.cs:line 48
         at OrchardCore.Contents.AdminMenu.BuildNavigationAsync(String name, NavigationBuilder builder) in /_/src/OrchardCore.Modules/OrchardCore.Contents/AdminMenu.cs:line 69
         at OrchardCore.Navigation.NavigationManager.BuildMenuAsync(String name, ActionContext actionContext) in /_/src/OrchardCore/OrchardCore.Navigation.Core/NavigationManager.cs:line 49
  • SQL Server: you can see the above error.

@Piedone
Copy link
Member

Piedone commented Apr 11, 2024

While fixing this, we should also change the trigger of functional_all_db so it runs at least on PR reviews, so we can catch such issues earlier:

on:
  # Manual trigger.
  workflow_dispatch:
  pull_request_review:
    types: [submitted]

@MikeAlhayek
Copy link
Member

@sarahelsaig can you please try to reproduce this issue on your side using the latest code in main? I am unable to reproduce it but would be great if you can also confirm in the same environment you noticed this issue with

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants