Git Product home page Git Product logo

axon-open-admin's People

Contributors

codedrivenmitch avatar jangalinski avatar lfgcampos avatar stefanzilske avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

axon-open-admin's Issues

Exception InsightHandlerEnhancer preventing replay

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)

Showing state of an aggregate

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.

DLQ details view does not load

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

NPE in InsightDispatchInterceptor - resource "__AXON_OPEN_ADMIN_HANDLER" not registered

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)

Provide Dead-Letter Queue monitoring/tooling

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.

Add discovery to the front-end

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:

  • Determine discovery type -> token owners / Periodic requests
  • Add discovery to the front-end
  • Make start/stop actions aware of nodes and keep firing until all processors have started

Processor commands don't work correctly when clustered

Steps to reproduce:

  • Scale up backend to 2 (or more) nodes
  • Trigger Replay
  • Replay doesn't start. Some of the stop/start/restart commands return 204. Note that the backend instances share a DNS A name with multiple IP addresses.

I assume the 204 is a consequence of nodeId not matching the node the command is sent to.

ConcurrentModification issue when using PooledStreamingProcessor

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.

java.lang.NoSuchMethodException: com.insidion.axon.openadmin.TokenProvider.<init>()

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.

Support JpaTokenStore

Currently the library only supports the JdbcTokenStore. Add support for the JpaTokenStore and a demo project a long with it

Interceptor should not block axon query

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

NPE when sequencingPolicy does not return a sequenceIdentifier

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.

PSQLException: ERROR: value too long for type character varying(255)

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?

Unable to bind property axon.admin.base-url

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.

Does this project support a solution for re-running a saga event handler.

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,

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.