Hi,
-
Template: microservice
-
Created ABP Studio Version: 0.9.11
-
Current ABP Studio Version: 0.9.25
-
Multi-Tenancy: Yes
-
UI Framework: mvc
-
Theme: leptonx
-
Theme Style: system
-
Database Provider: ef
-
Database Management System: postgresql
-
Mobile Framework: react-native
-
Public Website: Yes
-
Include Tests: Yes
We have an issue in Identity Module when we call Gdpr Pro Module delete personal data endpoint. User Data modified is done in every microservice but after user data modification Volo.Abp.Gdpr.GdprUserDataDeletionRequestedEto is waiting in the EventInBox table and can't execute other events after that.
"Id" "ExtraProperties" "MessageId" "EventName" "EventData" "CreationTime" "Processed" "ProcessedTime" "convert_from"
"3a193769-e27d-e644-5b9a-753e4b1891db" "{""X-Correlation-Id"":""cc04ba9fd7f2442e94772f4094dedd09""}" "3a193769e24632979f73306251f20306" "Volo.Abp.Gdpr.GdprUserDataDeletionRequestedEto" "binary data" "2025-04-11 14:24:39.549966" false "{""userId"":""3a193766-4c87-919c-5f71-b95c181521d8""}"
[14:36:25 INF] Found 1 events in the inbox.
[14:36:25 ERR] There is no such an entity. Entity type: Volo.Abp.Identity.IdentityUser, id: 3a193766-4c87-919c-5f71-b95c181521d8
Volo.Abp.Domain.Entities.EntityNotFoundException: There is no such an entity. Entity type: Volo.Abp.Identity.IdentityUser, id: 3a193766-4c87-919c-5f71-b95c181521d8
at Volo.Abp.Identity.IdentityUserManager.GetByIdAsync(Guid id)
at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo)
at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue1.ProceedAsync() at Volo.Abp.Uow.UnitOfWorkInterceptor.InterceptAsync(IAbpMethodInvocation invocation) at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter
1.InterceptAsync[TResult](IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed) at Volo.Abp.Identity.Gdpr.IdentityGdprEventHandler.HandleEventAsync(GdprUserDataDeletionRequestedEto eventData) at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous(IInvocation invocation, IInvocationProceedInfo proceedInfo) at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapter.ProceedAsync() at Volo.Abp.Uow.UnitOfWorkInterceptor.InterceptAsync(IAbpMethodInvocation invocation) at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter
1.InterceptAsync(IInvocation invocation, IInvocationProceedInfo proceedInfo, Func3 proceed) at Volo.Abp.EventBus.EventHandlerInvoker.InvokeAsync(IEventHandler eventHandler, Object eventData, Type eventType) at Volo.Abp.EventBus.EventBusBase.TriggerHandlerAsync(IEventHandlerFactory asyncHandlerFactory, Type eventType, Object eventData, List
1 exceptions, InboxConfig inboxConfig)
at Volo.Abp.EventBus.EventBusBase.ThrowOriginalExceptions(Type eventType, List`1 exceptions)
at Volo.Abp.EventBus.RabbitMq.RabbitMqDistributedEventBus.ProcessFromInboxAsync(IncomingEventInfo incomingEvent, InboxConfig inboxConfig)
at Volo.Abp.EventBus.Distributed.InboxProcessor.RunAsync()
at Volo.Abp.EventBus.Distributed.InboxProcessor.RunAsync()
at Volo.Abp.EventBus.Distributed.InboxProcessor.TimerOnElapsed(AbpAsyncTimer arg)
at Volo.Abp.Threading.AbpAsyncTimer.Timer_Elapsed()
1 Answer(s)
-
0
Hi, there is a class named
IdentityGdprEventHandler
in the Identity Pro Module (domain layer) and it's responsible for subscribing to theGdprUserDataDeletionRequestedEto
, anonymizing the user and then deleting the user.Since you're using a microservices architecture, there can be multiple handlers attempting to retrieve and process the same user. To improve this, we’ll enhance the
IdentityGdprEventHandler
so that it gracefully does nothing if the user cannot be found, instead of causing an error.I'll check this and fix the problem. Your ticket is refunded. Thanks for reporting.
Best Regards.