codedrivenmitch / axon-open-admin Goto Github PK
View Code? Open in Web Editor NEWAxon Open Admin
License: MIT License
Axon Open Admin
License: MIT License
This issue bite us consistently, and prevents starting replays from Axon Open Admin. It seems to consistently affect processing groups where there is a @ResetHandler defined, those without still work.
org.axonframework.eventhandling.ResetNotSupportedException: An Error occurred while notifying handlers of the reset
at org.axonframework.eventhandling.AnnotationEventHandlerAdapter.prepareReset(AnnotationEventHandlerAdapter.java:134) ~[axon-messaging-4.6.3.jar:4.6.3]
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
Error has been observed at the following site(s):
*__checkpoint ⇢ org.springframework.security.web.server.authorization.AuthorizationWebFilter [DefaultWebFilterChain]
*__checkpoint ⇢ org.springframework.security.web.server.authorization.ExceptionTranslationWebFilter [DefaultWebFilterChain]
*__checkpoint ⇢ org.springframework.security.web.server.authentication.logout.LogoutWebFilter [DefaultWebFilterChain]
*__checkpoint ⇢ org.springframework.security.web.server.savedrequest.ServerRequestCacheWebFilter [DefaultWebFilterChain]
*__checkpoint ⇢ org.springframework.security.web.server.context.SecurityContextServerWebExchangeWebFilter [DefaultWebFilterChain]
*__checkpoint ⇢ org.springframework.security.web.server.authentication.AuthenticationWebFilter [DefaultWebFilterChain]
*__checkpoint ⇢ org.springframework.security.web.server.context.ReactorContextWebFilter [DefaultWebFilterChain]
*__checkpoint ⇢ org.springframework.security.web.server.csrf.CsrfWebFilter [DefaultWebFilterChain]
*__checkpoint ⇢ org.springframework.security.web.server.header.HttpHeaderWriterWebFilter [DefaultWebFilterChain]
*__checkpoint ⇢ org.springframework.security.config.web.server.ServerHttpSecurity$ServerWebExchangeReactorContextWebFilter [DefaultWebFilterChain]
*__checkpoint ⇢ org.springframework.security.web.server.WebFilterChainProxy [DefaultWebFilterChain]
*__checkpoint ⇢ org.springframework.boot.actuate.metrics.web.reactive.server.MetricsWebFilter [DefaultWebFilterChain]
*__checkpoint ⇢ HTTP POST "/api/axon-admin/command" [ExceptionHandlingWebHandler]
Original Stack Trace:
at org.axonframework.eventhandling.AnnotationEventHandlerAdapter.prepareReset(AnnotationEventHandlerAdapter.java:134) ~[axon-messaging-4.6.3.jar:4.6.3]
at org.axonframework.eventhandling.SimpleEventHandlerInvoker.performReset(SimpleEventHandlerInvoker.java:172) ~[axon-messaging-4.6.3.jar:4.6.3]
at org.axonframework.eventhandling.deadletter.DeadLetteringEventHandlerInvoker.performReset(DeadLetteringEventHandlerInvoker.java:150) ~[axon-messaging-4.6.3.jar:4.6.3]
at org.axonframework.eventhandling.MultiEventHandlerInvoker.lambda$performReset$2(MultiEventHandlerInvoker.java:111) ~[axon-messaging-4.6.3.jar:4.6.3]
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) ~[na:na]
at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) ~[na:na]
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(Unknown Source) ~[na:na]
at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) ~[na:na]
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) ~[na:na]
at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) ~[na:na]
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) ~[na:na]
at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) ~[na:na]
at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) ~[na:na]
at org.axonframework.eventhandling.MultiEventHandlerInvoker.performReset(MultiEventHandlerInvoker.java:111) ~[axon-messaging-4.6.3.jar:4.6.3]
at org.axonframework.eventhandling.pooled.PooledStreamingEventProcessor.lambda$resetTokens$10(PooledStreamingEventProcessor.java:326) ~[axon-messaging-4.6.3.jar:4.6.3]
at org.axonframework.common.transaction.TransactionManager.executeInTransaction(TransactionManager.java:47) ~[axon-messaging-4.6.3.jar:4.6.3]
at org.axonframework.eventhandling.pooled.PooledStreamingEventProcessor.resetTokens(PooledStreamingEventProcessor.java:319) ~[axon-messaging-4.6.3.jar:4.6.3]
at org.axonframework.eventhandling.pooled.PooledStreamingEventProcessor.resetTokens(PooledStreamingEventProcessor.java:311) ~[axon-messaging-4.6.3.jar:4.6.3]
at org.axonframework.eventhandling.pooled.PooledStreamingEventProcessor.resetTokens(PooledStreamingEventProcessor.java:298) ~[axon-messaging-4.6.3.jar:4.6.3]
at com.insidion.axon.openadmin.command.handlers.ResetProcessorAxonAdminCommandHandler.executeCommand(ResetProcessorAxonAdminCommandHandler.kt:18) ~[axon-open-admin-starter-0.2.7.jar:na]
at com.insidion.axon.openadmin.command.AxonAdminCommandHandler.executeCommand(AxonAdminCommandHandler.kt:16) ~[axon-open-admin-starter-0.2.7.jar:na]
at com.insidion.axon.openadmin.command.AxonOpenAdminCommandEndpoint.executeCommand(AxonOpenAdminCommandEndpoint.kt:26) ~[axon-open-admin-starter-0.2.7.jar:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Unknown Source) ~[na:na]
at org.springframework.web.reactive.result.method.InvocableHandlerMethod.lambda$invoke$0(InvocableHandlerMethod.java:145) ~[spring-webflux-5.3.24.jar:5.3.24]
at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:125) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.MonoZip$ZipCoordinator.signal(MonoZip.java:258) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.MonoZip$ZipInner.onNext(MonoZip.java:347) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.onNext(FluxDefaultIfEmpty.java:101) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:74) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:151) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onNext(FluxMapFuseable.java:299) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onNext(FluxFilterFuseable.java:337) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.MonoCollect$CollectSubscriber.onComplete(MonoCollect.java:160) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.FluxPeek$PeekSubscriber.onComplete(FluxPeek.java:260) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.netty.channel.FluxReceive.terminateReceiver(FluxReceive.java:481) ~[reactor-netty-core-1.0.26.jar:1.0.26]
at reactor.netty.channel.FluxReceive.drainReceiver(FluxReceive.java:273) ~[reactor-netty-core-1.0.26.jar:1.0.26]
at reactor.netty.channel.FluxReceive.request(FluxReceive.java:134) ~[reactor-netty-core-1.0.26.jar:1.0.26]
at reactor.core.publisher.FluxMap$MapSubscriber.request(FluxMap.java:164) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.FluxPeek$PeekSubscriber.request(FluxPeek.java:138) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.FluxMap$MapSubscriber.request(FluxMap.java:164) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.MonoCollect$CollectSubscriber.onSubscribe(MonoCollect.java:104) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.FluxMap$MapSubscriber.onSubscribe(FluxMap.java:92) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.FluxPeek$PeekSubscriber.onSubscribe(FluxPeek.java:171) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.FluxMap$MapSubscriber.onSubscribe(FluxMap.java:92) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.netty.channel.FluxReceive.startReceiver(FluxReceive.java:172) ~[reactor-netty-core-1.0.26.jar:1.0.26]
at reactor.netty.channel.FluxReceive.lambda$subscribe$2(FluxReceive.java:151) ~[reactor-netty-core-1.0.26.jar:1.0.26]
at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174) ~[netty-common-4.1.86.Final.jar:4.1.86.Final]
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167) ~[netty-common-4.1.86.Final.jar:4.1.86.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470) ~[netty-common-4.1.86.Final.jar:4.1.86.Final]
at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:403) ~[netty-transport-classes-epoll-4.1.86.Final.jar:4.1.86.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[netty-common-4.1.86.Final.jar:4.1.86.Final]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.86.Final.jar:4.1.86.Final]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.86.Final.jar:4.1.86.Final]
at java.base/java.lang.Thread.run(Unknown Source) ~[na:na]
Caused by: java.lang.IllegalStateException: No UnitOfWork is currently started for this thread.
at org.axonframework.messaging.unitofwork.CurrentUnitOfWork.get(CurrentUnitOfWork.java:88) ~[axon-messaging-4.6.3.jar:4.6.3]
at com.insidion.axon.openadmin.insights.InsightHandlerEnhancer$wrapHandler$1.handle(InsightHandlerEnhancer.kt:31) ~[axon-open-admin-starter-0.2.7.jar:na]
at org.axonframework.messaging.annotation.WrappedMessageHandlingMember.handle(WrappedMessageHandlingMember.java:64) ~[axon-messaging-4.6.3.jar:4.6.3]
at org.axonframework.tracing.TracingHandlerEnhancerDefinition$1.lambda$handle$1(TracingHandlerEnhancerDefinition.java:84) ~[axon-messaging-4.6.3.jar:4.6.3]
at org.axonframework.tracing.Span.runCallable(Span.java:103) ~[axon-messaging-4.6.3.jar:4.6.3]
at org.axonframework.tracing.TracingHandlerEnhancerDefinition$1.handle(TracingHandlerEnhancerDefinition.java:84) ~[axon-messaging-4.6.3.jar:4.6.3]
at org.axonframework.eventhandling.AnnotationEventHandlerAdapter.prepareReset(AnnotationEventHandlerAdapter.java:131) ~[axon-messaging-4.6.3.jar:4.6.3]
at org.axonframework.eventhandling.SimpleEventHandlerInvoker.performReset(SimpleEventHandlerInvoker.java:172) ~[axon-messaging-4.6.3.jar:4.6.3]
at org.axonframework.eventhandling.deadletter.DeadLetteringEventHandlerInvoker.performReset(DeadLetteringEventHandlerInvoker.java:150) ~[axon-messaging-4.6.3.jar:4.6.3]
at org.axonframework.eventhandling.MultiEventHandlerInvoker.lambda$performReset$2(MultiEventHandlerInvoker.java:111) ~[axon-messaging-4.6.3.jar:4.6.3]
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) ~[na:na]
at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) ~[na:na]
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(Unknown Source) ~[na:na]
at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) ~[na:na]
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) ~[na:na]
at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) ~[na:na]
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) ~[na:na]
at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) ~[na:na]
at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) ~[na:na]
at org.axonframework.eventhandling.MultiEventHandlerInvoker.performReset(MultiEventHandlerInvoker.java:111) ~[axon-messaging-4.6.3.jar:4.6.3]
at org.axonframework.eventhandling.pooled.PooledStreamingEventProcessor.lambda$resetTokens$10(PooledStreamingEventProcessor.java:326) ~[axon-messaging-4.6.3.jar:4.6.3]
at org.axonframework.common.transaction.TransactionManager.executeInTransaction(TransactionManager.java:47) ~[axon-messaging-4.6.3.jar:4.6.3]
at org.axonframework.eventhandling.pooled.PooledStreamingEventProcessor.resetTokens(PooledStreamingEventProcessor.java:319) ~[axon-messaging-4.6.3.jar:4.6.3]
at org.axonframework.eventhandling.pooled.PooledStreamingEventProcessor.resetTokens(PooledStreamingEventProcessor.java:311) ~[axon-messaging-4.6.3.jar:4.6.3]
at org.axonframework.eventhandling.pooled.PooledStreamingEventProcessor.resetTokens(PooledStreamingEventProcessor.java:298) ~[axon-messaging-4.6.3.jar:4.6.3]
at com.insidion.axon.openadmin.command.handlers.ResetProcessorAxonAdminCommandHandler.executeCommand(ResetProcessorAxonAdminCommandHandler.kt:18) ~[axon-open-admin-starter-0.2.7.jar:na]
at com.insidion.axon.openadmin.command.AxonAdminCommandHandler.executeCommand(AxonAdminCommandHandler.kt:16) ~[axon-open-admin-starter-0.2.7.jar:na]
at com.insidion.axon.openadmin.command.AxonOpenAdminCommandEndpoint.executeCommand(AxonOpenAdminCommandEndpoint.kt:26) ~[axon-open-admin-starter-0.2.7.jar:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Unknown Source) ~[na:na]
at org.springframework.web.reactive.result.method.InvocableHandlerMethod.lambda$invoke$0(InvocableHandlerMethod.java:145) ~[spring-webflux-5.3.24.jar:5.3.24]
at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:125) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.MonoZip$ZipCoordinator.signal(MonoZip.java:258) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.MonoZip$ZipInner.onNext(MonoZip.java:347) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.onNext(FluxDefaultIfEmpty.java:101) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:74) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:151) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onNext(FluxMapFuseable.java:299) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onNext(FluxFilterFuseable.java:337) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1839) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.MonoCollect$CollectSubscriber.onComplete(MonoCollect.java:160) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.FluxPeek$PeekSubscriber.onComplete(FluxPeek.java:260) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.netty.channel.FluxReceive.terminateReceiver(FluxReceive.java:481) ~[reactor-netty-core-1.0.26.jar:1.0.26]
at reactor.netty.channel.FluxReceive.drainReceiver(FluxReceive.java:273) ~[reactor-netty-core-1.0.26.jar:1.0.26]
at reactor.netty.channel.FluxReceive.request(FluxReceive.java:134) ~[reactor-netty-core-1.0.26.jar:1.0.26]
at reactor.core.publisher.FluxMap$MapSubscriber.request(FluxMap.java:164) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.FluxPeek$PeekSubscriber.request(FluxPeek.java:138) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.FluxMap$MapSubscriber.request(FluxMap.java:164) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.MonoCollect$CollectSubscriber.onSubscribe(MonoCollect.java:104) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.FluxMap$MapSubscriber.onSubscribe(FluxMap.java:92) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.FluxPeek$PeekSubscriber.onSubscribe(FluxPeek.java:171) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.core.publisher.FluxMap$MapSubscriber.onSubscribe(FluxMap.java:92) ~[reactor-core-3.4.26.jar:3.4.26]
at reactor.netty.channel.FluxReceive.startReceiver(FluxReceive.java:172) ~[reactor-netty-core-1.0.26.jar:1.0.26]
at reactor.netty.channel.FluxReceive.lambda$subscribe$2(FluxReceive.java:151) ~[reactor-netty-core-1.0.26.jar:1.0.26]
at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174) ~[netty-common-4.1.86.Final.jar:4.1.86.Final]
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167) ~[netty-common-4.1.86.Final.jar:4.1.86.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470) ~[netty-common-4.1.86.Final.jar:4.1.86.Final]
at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:403) ~[netty-transport-classes-epoll-4.1.86.Final.jar:4.1.86.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[netty-common-4.1.86.Final.jar:4.1.86.Final]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.86.Final.jar:4.1.86.Final]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.86.Final.jar:4.1.86.Final]
at java.base/java.lang.Thread.run(Unknown Source) ~[na:na]
2023-01-17 05:20:45.425 INFO 7 --- [r-http-epoll-11] c.i.a.o.c.AxonOpenAdminCommandEndpoint : Executing command for Axon Admin: AxonAdminCommand(nodeId=7@493d8adf-0488-4d87-7647-0f9c, type=RESET_PROCESSOR, processorName=Reporting, segment=null)
As user of Axon Open Admin I would like to be able to load an aggregate and show it serialized into a certain format in the UI. This is useful for debugging. Optionally, it would be nice to have a time-traveling feature.
Hi @MORLACK
meanwhile I am using axon-admin:0.2.5
but the DLQ detail view is still not working properly. In the overview on /axon-admin
I have a DQL which has entries. When I click it, I am redirected to /dlq/spring-application-name/myProcessingGroup
. Backend is not called and the page remains empty.
Is this intended? From a security perspective it would be good to have everything under /axon-admin
so that we don't have to define permissions for two or more paths.
Thanks for your support!
Stefan
Note: We have a setup that is admittedly a bit tricky. We use camunda process orchestration to execute an asynchronous job that sends a command.
We also have included the axon-open-admin module to our app.
Now, whenver the async job sends the command, we get the following error.
From analysing the code, it seems that
CurrentUnitOfWork.get().getResource("__AXON_OPEN_ADMIN_HANDLER") as Handler, publishedMessages
is null at this point.
The command is handled correctly and we see the resulting DomainEvent in the event store, so it is an annoying side-effect, not a blocking error.
But we would like to address this, because having a log full of npe/casting errors ist not desireable.
java.lang.NullPointerException: null cannot be cast to non-null type com.insidion.axon.openadmin.insights.Handler
at com.insidion.axon.openadmin.insights.InsightDispatchInterceptor$handle$2.accept(InsightDispatchInterceptor.kt:39)
at com.insidion.axon.openadmin.insights.InsightDispatchInterceptor$handle$2.accept(InsightDispatchInterceptor.kt:37)
at org.axonframework.messaging.unitofwork.MessageProcessingContext.notifyHandlers(MessageProcessingContext.java:72)
at org.axonframework.messaging.unitofwork.DefaultUnitOfWork.notifyHandlers(DefaultUnitOfWork.java:109)
at org.axonframework.messaging.unitofwork.AbstractUnitOfWork.changePhase(AbstractUnitOfWork.java:236)
at org.axonframework.messaging.unitofwork.AbstractUnitOfWork.commitAsRoot(AbstractUnitOfWork.java:87)
at org.axonframework.messaging.unitofwork.AbstractUnitOfWork.commit(AbstractUnitOfWork.java:75)
at org.axonframework.messaging.unitofwork.DefaultUnitOfWork.executeWithResult(DefaultUnitOfWork.java:95)
at org.axonframework.commandhandling.SimpleCommandBus.lambda$handle$3(SimpleCommandBus.java:198)
at org.axonframework.tracing.Span.run(Span.java:72)
at org.axonframework.commandhandling.SimpleCommandBus.handle(SimpleCommandBus.java:189)
at org.axonframework.commandhandling.SimpleCommandBus.doDispatch(SimpleCommandBus.java:163)
at org.axonframework.commandhandling.SimpleCommandBus.dispatch(SimpleCommandBus.java:130)
at io.holixon.axon.gateway.command.DispatchAwareAxonServerCommandBus.dispatch(DispatchAwareAxonServerCommandBus.kt:38)
at org.axonframework.commandhandling.gateway.AbstractCommandGateway.send(AbstractCommandGateway.java:76)
at org.axonframework.commandhandling.gateway.DefaultCommandGateway.send(DefaultCommandGateway.java:83)
at io.holunda.polyflow.taskpool.sender.gateway.AxonCommandListGateway.sendToGateway(AxonCommandListGateway.kt:31)
at io.holunda.polyflow.taskpool.sender.EngineTaskCommandsSendingJobHandler.execute(EngineTaskCommandsSendingJobHandler.kt:42)
at io.holunda.polyflow.taskpool.sender.EngineTaskCommandsSendingJobHandler.execute(EngineTaskCommandsSendingJobHandler.kt:16)
at org.camunda.bpm.engine.impl.persistence.entity.JobEntity.execute(JobEntity.java:133)
at org.camunda.bpm.engine.impl.cmd.ExecuteJobsCmd.execute(ExecuteJobsCmd.java:110)
at org.camunda.bpm.engine.impl.cmd.ExecuteJobsCmd.execute(ExecuteJobsCmd.java:43)
at org.camunda.bpm.engine.impl.interceptor.CommandExecutorImpl.execute(CommandExecutorImpl.java:28)
at org.camunda.bpm.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:110)
at org.camunda.bpm.engine.spring.SpringTransactionInterceptor.lambda$execute$0(SpringTransactionInterceptor.java:71)
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140)
at org.camunda.bpm.engine.spring.SpringTransactionInterceptor.execute(SpringTransactionInterceptor.java:71)
at org.camunda.bpm.engine.impl.interceptor.ProcessApplicationContextInterceptor.execute(ProcessApplicationContextInterceptor.java:70)
at org.camunda.bpm.engine.impl.interceptor.CommandCounterInterceptor.execute(CommandCounterInterceptor.java:35)
at org.camunda.bpm.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:33)
at org.camunda.bpm.engine.impl.interceptor.ExceptionCodeInterceptor.execute(ExceptionCodeInterceptor.java:55)
at org.camunda.bpm.engine.impl.jobexecutor.ExecuteJobHelper.executeJob(ExecuteJobHelper.java:57)
at org.camunda.bpm.engine.impl.jobexecutor.ExecuteJobsRunnable.executeJob(ExecuteJobsRunnable.java:110)
at org.camunda.bpm.engine.impl.jobexecutor.ExecuteJobsRunnable.run(ExecuteJobsRunnable.java:71)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
As of 4.6.0, Axon Framework has a Dead-Letter Queue.
Being able to monitor activities of this DLQ through some form of a UI would be very helpful.
Without this, users are inclined to check out the storage solution directly for this.
Although workable, having something out of the box on this UI would be nice.
As an added thought, we could think about implementing a basic retry mechanism for failed sequences within the DLQ.
Although I don't see this a part of the MVP, it would be a nice addition afterwards.
Currently the front-end simply fires requests until it hits the right one. This means when starting or stopping an event-processor we might not hit all nodes. For this issue:
Steps to reproduce:
I assume the 204 is a consequence of nodeId not matching the node the command is sent to.
java.util.ConcurrentModificationException: null at java.base/java.util.HashMap.computeIfAbsent(HashMap.java:1221) at com.insidion.axon.openadmin.insights.InsightRegistrationService.reportHandlerMessagesPublished(InsightRegistrationService.kt:28) at com.insidion.axon.openadmin.insights.InsightDispatchInterceptor$handle$1$1.accept(InsightDispatchInterceptor.kt:41) at com.insidion.axon.openadmin.insights.InsightDispatchInterceptor$handle$1$1.accept(InsightDispatchInterceptor.kt:40) at org.axonframework.messaging.unitofwork.MessageProcessingContext.notifyHandlers(MessageProcessingContext.java:72) at org.axonframework.messaging.unitofwork.BatchingUnitOfWork.lambda$notifyHandlers$2(BatchingUnitOfWork.java:161) at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133) at org.axonframework.messaging.unitofwork.BatchingUnitOfWork.notifyHandlers(BatchingUnitOfWork.java:161) at org.axonframework.messaging.unitofwork.AbstractUnitOfWork.changePhase(AbstractUnitOfWork.java:236) at org.axonframework.messaging.unitofwork.AbstractUnitOfWork.commitAsRoot(AbstractUnitOfWork.java:87) at org.axonframework.messaging.unitofwork.AbstractUnitOfWork.commit(AbstractUnitOfWork.java:75) at org.axonframework.messaging.unitofwork.BatchingUnitOfWork.executeWithResult(BatchingUnitOfWork.java:117) at org.axonframework.eventhandling.AbstractEventProcessor.processInUnitOfWork(AbstractEventProcessor.java:165) at org.axonframework.eventhandling.pooled.WorkPackage.processEvents(WorkPackage.java:320) at org.axonframework.eventhandling.pooled.WorkPackage.lambda$scheduleWorker$5(WorkPackage.java:281) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) at java.base/java.lang.Thread.run(Thread.java:833)
Probably because class "HandlerStats" defines a HashMap instead of ConcurrentHashMap. Also the Int usage instead of AtomicInt could lead to wrong stats.
I get this exception when using the starter in a Spring Boot 2.7.7 java project.
Removing the default null value for the EventStorageEngine parameter resolves the issue.
Also opening the 'Event Explorer' when the eventstore is still empty, using the JdbcEventStorageEngine, causes NullPointer exceptions which should be handled in a proper way.
Currently the library only supports the JdbcTokenStore. Add support for the JpaTokenStore and a demo project a long with it
Maybe a really rare case but the axon open admin should not block axon functionalities.
`Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.util.ConcurrentModificationException] with root cause
java.util.ConcurrentModificationException: null
at java.base/java.util.HashMap.computeIfAbsent(HashMap.java:1221)
at com.insidion.axon.openadmin.insights.InsightRegistrationService.reportOriginMessage(InsightRegistrationService.kt:16)
at com.insidion.axon.openadmin.insights.InsightDispatchInterceptor.originDispatchInterceptor$lambda-2(InsightDispatchInterceptor.kt:49)
at org.axonframework.messaging.MessageDispatchInterceptor.handle(MessageDispatchInterceptor.java:43)
at org.axonframework.axonserver.connector.DispatchInterceptors.intercept(DispatchInterceptors.java:45)
at org.axonframework.axonserver.connector.query.AxonServerQueryBus.query(AxonServerQueryBus.java:258)
at org.axonframework.queryhandling.DefaultQueryGateway.query(DefaultQueryGateway.java:84)
at org.axonframework.queryhandling.QueryGateway.query(QueryGateway.java:91)`
Axon version: 4.6.8
Axon open admin version: 0.2.8
I have several DeadLetterEntries, which do no have an aggregateIdentifier (they got a sequenceIdentifier though).
When I open the DQL details view, I get an error:
2022-11-21 06:43:01.538 ERROR 1 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException: Cannot invoke "Object.toString()" because the return value of "org.axonframework.eventhandling.async.SequencingPolicy.getSequenceIdentifierFor(Object)" is null] with root cause
java.lang.NullPointerException: Cannot invoke "Object.toString()" because the return value of "org.axonframework.eventhandling.async.SequencingPolicy.getSequenceIdentifierFor(Object)" is null
at com.insidion.axon.openadmin.dlq.DlqActionEndpoint$processorMessages$1.invoke(DlqActionEndpoint.kt:33)
at com.insidion.axon.openadmin.EndpointService.ifReady(EndpointService.kt:38)
at com.insidion.axon.openadmin.dlq.DlqActionEndpoint.processorMessages(DlqActionEndpoint.kt:25)
Looking into it, it seems that this statement fails:
val sequence = sequencingPolicy.getSequenceIdentifierFor(firstMessage).toString()
because the default SequentialPerAggregatePolicy
returns null
. The DeadLetteringEventHandlerInvoker
takes the event.identifier
in that case, basically making the sequenceIdentifier
the same as the message.identifier
.
Axon-Admin should apply the same behavior.
2023-06-14 08:19:10.065 INFO [query,,] 7 --- [ses-internal]-3] o.a.e.d.jpa.JpaSequencedDeadLetterQueue : Storing DeadLetter (id: [9835881b-8c83-4973-8a9b-73f5e7fe71c3]) for sequence [21-102-464-1] with index [0] in processing group [cases-internal].
2023-06-14 08:19:10.090 WARN [query,,] 7 --- [ses-internal]-3] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 0, SQLState: 22001
2023-06-14 08:19:10.107 WARN [query,,] 7 --- [ses-internal]-3] o.a.eventhandling.pooled.WorkPackage : Error while processing batch in Work Package [14]-[cases-internal]. Aborting Work Package...
2023-06-14 08:19:12.942 INFO [query,,] 7 --- [ses-internal]-0] o.a.eventhandling.pooled.Coordinator : Processor [cases-internal] claimed 1 new segments for processing
org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; nested exception is org.hibernate.exception.DataException: could not execute statement
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:280) ~[spring-orm-5.3.27.jar:5.3.27]
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:233) ~[spring-orm-5.3.27.jar:5.3.27]
at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:566) ~[spring-orm-5.3.27.jar:5.3.27]
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:743) ~[spring-tx-5.3.27.jar:5.3.27]
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:711) ~[spring-tx-5.3.27.jar:5.3.27]
at org.axonframework.spring.messaging.unitofwork.SpringTransactionManager.commitTransaction(SpringTransactionManager.java:86) ~[axon-spring-4.6.3.jar:4.6.3]
at org.axonframework.spring.messaging.unitofwork.SpringTransactionManager$1.commit(SpringTransactionManager.java:69) ~[axon-spring-4.6.3.jar:4.6.3]
at org.axonframework.messaging.unitofwork.UnitOfWork.lambda$attachTransaction$0(UnitOfWork.java:274) ~[axon-messaging-4.6.3.jar:4.6.3]
at org.axonframework.messaging.unitofwork.MessageProcessingContext.notifyHandlers(MessageProcessingContext.java:72) ~[axon-messaging-4.6.3.jar:4.6.3]
at org.axonframework.messaging.unitofwork.BatchingUnitOfWork.lambda$notifyHandlers$2(BatchingUnitOfWork.java:161) ~[axon-messaging-4.6.3.jar:4.6.3]
at java.base/java.util.Iterator.forEachRemaining(Unknown Source) ~[na:na]
at org.axonframework.messaging.unitofwork.BatchingUnitOfWork.notifyHandlers(BatchingUnitOfWork.java:161) ~[axon-messaging-4.6.3.jar:4.6.3]
at org.axonframework.messaging.unitofwork.AbstractUnitOfWork.changePhase(AbstractUnitOfWork.java:236) ~[axon-messaging-4.6.3.jar:4.6.3]
at org.axonframework.messaging.unitofwork.AbstractUnitOfWork.commitAsRoot(AbstractUnitOfWork.java:87) ~[axon-messaging-4.6.3.jar:4.6.3]
at org.axonframework.messaging.unitofwork.AbstractUnitOfWork.commit(AbstractUnitOfWork.java:75) ~[axon-messaging-4.6.3.jar:4.6.3]
at org.axonframework.messaging.unitofwork.BatchingUnitOfWork.executeWithResult(BatchingUnitOfWork.java:117) ~[axon-messaging-4.6.3.jar:4.6.3]
at org.axonframework.eventhandling.AbstractEventProcessor.processInUnitOfWork(AbstractEventProcessor.java:166) ~[axon-messaging-4.6.3.jar:4.6.3]
at org.axonframework.eventhandling.pooled.WorkPackage.processEvents(WorkPackage.java:305) ~[axon-messaging-4.6.3.jar:4.6.3]
at org.axonframework.eventhandling.pooled.WorkPackage.lambda$scheduleWorker$5(WorkPackage.java:270) ~[axon-messaging-4.6.3.jar:4.6.3]
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[na:na]
at java.base/java.util.concurrent.FutureTask.run(Unknown Source) ~[na:na]
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[na:na]
at java.base/java.lang.Thread.run(Unknown Source) ~[na:na]
Caused by: org.hibernate.exception.DataException: could not execute statement
at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:115) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final]
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:37) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final]
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:113) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final]
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:99) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final]
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:200) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final]
at org.hibernate.engine.jdbc.batch.internal.NonBatchingBatch.addToBatch(NonBatchingBatch.java:46) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final]
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3375) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final]
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3937) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final]
at org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:107) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final]
at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:604) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final]
at org.hibernate.engine.spi.ActionQueue.lambda$executeActions$1(ActionQueue.java:478) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final]
at java.base/java.util.LinkedHashMap.forEach(Unknown Source) ~[na:na]
at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:475) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final]
at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:344) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final]
at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:40) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final]
at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:107) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final]
at org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1407) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final]
at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:489) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final]
at org.hibernate.internal.SessionImpl.flushBeforeTransactionCompletion(SessionImpl.java:3303) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final]
at org.hibernate.internal.SessionImpl.beforeTransactionCompletion(SessionImpl.java:2438) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final]
at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.beforeTransactionCompletion(JdbcCoordinatorImpl.java:449) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final]
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.beforeCompletionCallback(JdbcResourceLocalTransactionCoordinatorImpl.java:183) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final]
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.access$300(JdbcResourceLocalTransactionCoordinatorImpl.java:40) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final]
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.commit(JdbcResourceLocalTransactionCoordinatorImpl.java:281) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final]
at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:101) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final]
at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:562) ~[spring-orm-5.3.27.jar:5.3.27]
... 22 common frames omitted
Caused by: org.postgresql.util.PSQLException: ERROR: value too long for type character varying(255)
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2675) ~[postgresql-42.3.8.jar:42.3.8]
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2365) ~[postgresql-42.3.8.jar:42.3.8]
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:355) ~[postgresql-42.3.8.jar:42.3.8]
at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:490) ~[postgresql-42.3.8.jar:42.3.8]
at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:408) ~[postgresql-42.3.8.jar:42.3.8]
at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:167) ~[postgresql-42.3.8.jar:42.3.8]
at org.postgresql.jdbc.PgPreparedStatement.executeUpdate(PgPreparedStatement.java:135) ~[postgresql-42.3.8.jar:42.3.8]
at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeUpdate(ProxyPreparedStatement.java:61) ~[HikariCP-4.0.3.jar:na]
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeUpdate(HikariProxyPreparedStatement.java) ~[HikariCP-4.0.3.jar:na]
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:197) ~[hibernate-core-5.6.15.Final.jar:5.6.15.Final]
... 43 common frames omitted
2023-06-14 08:19:10.092 INFO [query,,] 7 --- [ses-internal]-3] o.h.e.j.b.internal.AbstractBatchImpl : HHH000010: On release of batch it still contained JDBC statements
2023-06-14 08:19:10.090 ERROR [query,,] 7 --- [ses-internal]-3] o.h.engine.jdbc.spi.SqlExceptionHelper : ERROR: value too long for type character varying(255)
Using the following DDL:
create table dead_letter_entry
(
dead_letter_id varchar(255) not null
primary key,
cause_message varchar(255),
cause_type varchar(255),
diagnostics bytea,
enqueued_at timestamp not null,
last_touched timestamp,
aggregate_identifier varchar(255),
event_identifier varchar(255) not null,
message_type varchar(255) not null,
meta_data bytea,
payload bytea not null,
payload_revision varchar(255),
payload_type varchar(255) not null,
sequence_number bigint,
time_stamp varchar(255) not null,
token bytea,
token_type varchar(255),
type varchar(255),
processing_group varchar(255) not null,
processing_started timestamp,
sequence_identifier varchar(255) not null,
sequence_index bigint not null
);
create index dead_letter_entry_processing_group_idx
on dead_letter_entry (processing_group);
create index dead_letter_entry_processing_group_seq_identifier_idx
on dead_letter_entry (processing_group, sequence_identifier);
create unique index dead_letter_entry_processing_group_seq_identifier_seq_index_idx
on dead_letter_entry (processing_group, sequence_identifier, sequence_index);
Is there a missing error message truncation, or would it be more appropriate to remove the size limit of the varchar?
The application fails to start when the property axon.admin.base-url is set in application.yml
:
axon.admin.base-url: /axon-admin
Error message:
***************************
APPLICATION FAILED TO START
***************************
Description:
Failed to bind properties under 'axon.admin' to com.insidion.axon.openadmin.AxonAdminProperties:
Property: axon.admin.base-url
Value: "/axon-admin"
Origin: class path resource [application.yml] - 43:15
Reason: java.lang.IllegalStateException: No setter found for property: base-url
Action:
Update your application's configuration
The AxonAdminProperties class should probably have @ConstructorBinding.
The 2.7.x branch of Spring Boot is approaching end of OSS support, with 2023-11-24 as the official date. (https://spring.io/projects/spring-boot#support)
Support for 3.x is desired, while at the same time allowing older applications to use axon-open-admin with 2.7.x.
I am actively seeking a solution to re-running saga events and I came across this interesting project, so I am interested in knowing if it offers a solution for this purpose. I am aware that the latest version of Axon Framework has introduced a Dead-letter queue to store problematic events and restart the process later, but it does not currently support sagas. In light of this, I was curious if this project offers a solution for re-running saga events in case of errors.
Best regards,
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.