Base solution for your next web application
Open Closed

Problems with the UserTokenExpirationWorker #12006


User avatar
0
Web2workNL created

We're experiencing problems with the UserTokenExpirationWorker. We are running ABP 7.2.1 This is the Call Stack:

Microsoft.Data.SqlClient.SqlException (0x80131904): The connection is broken and recovery is not possible. The connection is marked by the server as unrecoverable. No attempt was made to restore the connection. at Microsoft.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action 1 wrapCloseInAction) at Microsoft.Data.SqlClient.SqlConnection.ValidateAndReconnect(Action beforeDisconnect, Int32 timeout) at Microsoft.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean isAsync, Int32 timeout, Boolean asyncWrite) at Microsoft.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource 1 completion, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry, String methodName) at Microsoft.Data.SqlClient.SqlCommand.ExecuteNonQuery() at Microsoft.EntityFrameworkCore.Storage.RelationalTransaction.CreateSavepoint(String name) at Microsoft.EntityFrameworkCore.Update.Internal.BatchExecutor.Execute(IEnumerable 1 commandBatches, IRelationalConnection connection) at Microsoft.EntityFrameworkCore.Storage.RelationalDatabase.SaveChanges(IList 1 entries) at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChanges(IList 1 entriesToSave) at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChanges(DbContext _, Boolean acceptAllChangesOnSuccess) at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.Execute[TState,TResult](TState state, Func 3 operation, Func 3 verifySucceeded) at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChanges(Boolean acceptAllChangesOnSuccess) at Microsoft.EntityFrameworkCore.DbContext.SaveChanges(Boolean acceptAllChangesOnSuccess) at Abp.EntityFrameworkCore.AbpDbContext.SaveChanges() at Abp.Zero.EntityFrameworkCore.AbpZeroCommonDbContext 3.SaveChanges() at Abp.EntityFrameworkCore.Uow.EfCoreUnitOfWork.SaveChangesInDbContext(DbContext dbContext) at Abp.EntityFrameworkCore.Uow.EfCoreUnitOfWork.SaveChanges() at Abp.EntityFrameworkCore.Uow.EfCoreUnitOfWork.CompleteUow() at Abp.Domain.Uow.UnitOfWorkBase.Complete() at Abp.Authorization.Users.UserTokenExpirationWorker 2.DoWork() at Abp.Threading.BackgroundWorkers.PeriodicBackgroundWorkerBase.Timer_Elapsed(Object sender, EventArgs e) ClientConnectionId:022efa77-2eb9-4ee0-ac08-47d0cc25d538

Our normal Timer Jobs do not have the same issue, nor do the Background Jobs that are being kicked off through the AbpBackgroundJobs table

An alternative solution would be to make our own TimerJob that has the same purpose, clean up expired user tokens, but I am unable to find a way to completely kill the UserTokenExpirationWorker from abp Zero. Most I can do is set Configuration.BackgroundJobs.UserTokenExpirationPeriod = TimeSpan.FromDays(24); as apparently it is being parsed to Int32 somewhere and a TimeSpan for 24.8 days is the most that can fit in there.

Please offer assistance with either fixing the UserTokenExpirationWorker itself, or finding a way for us to completely disable this worker.


1 Answer(s)
  • User Avatar
    0
    ismcagdas created
    Support Team

    Hi @Web2workNL

    As a temporary solution, you can restart your app. Then, I suggest upgrading your Abp NuGet packages to latest version.