Hi.
I'm creating test application with Axon Framework. When I was trying
to use EventCountSnapshotterTrigger, I had run into
NoSuchElementException:
java.util.NoSuchElementException
at java.util.LinkedList$ListItr.next(LinkedList.java:698)
at
org.axonframework.domain.SimpleDomainEventStream.peek(SimpleDomainEventStream.java:
91)
at
org.axonframework.eventsourcing.EventCountSnapshotterTrigger.appendEvents(EventCountSnapshotterTrigger.java:
55)
at
org.axonframework.eventsourcing.EventSourcingRepository.doSave(EventSourcingRepository.java:
78)
at
org.axonframework.eventsourcing.EventSourcingRepository.doSave(EventSourcingRepository.java:
48)
at org.axonframework.repository.AbstractRepository
$SimpleSaveAggregateCallback.save(AbstractRepository.java:159)
at org.axonframework.unitofwork.DefaultUnitOfWork
$AggregateEntry.saveAggregate(DefaultUnitOfWork.java:214)
at
org.axonframework.unitofwork.DefaultUnitOfWork.saveAggregates(DefaultUnitOfWork.java:
159)
at
org.axonframework.unitofwork.DefaultUnitOfWork.commit(DefaultUnitOfWork.java:
85)
at
org.axonframework.commandhandling.interceptors.SimpleUnitOfWorkInterceptor.startNewUnitOfWorkAndProceed(SimpleUnitOfWorkInterceptor.java:
61)
at
org.axonframework.commandhandling.interceptors.SimpleUnitOfWorkInterceptor.handle(SimpleUnitOfWorkInterceptor.java:
48)
at
org.axonframework.commandhandling.DefaultInterceptorChain.proceed(DefaultInterceptorChain.java:
52)
at
org.axonframework.commandhandling.SimpleCommandBus.dispatch(SimpleCommandBus.java:
81)
at ua.dp.mins.cqrs.Client.createContract(Client.java:29)
at ua.dp.mins.cqrs.TheTest.main(TheTest.java:24)
This exception is thrown during commit of UnitOfWork if an AR is
loaded but isn't changed. Example of command handler that produces
such exception is:
public class ContractCommandHandler {
@Resource(name = "contractRepository")
private Repository<Contract> contractRepository;
@Resource(name = "personRepository")
private Repository<Person> personRepository;
@CommandHandler
public UUID handle(CreateContractCommand command) {
personRepository.load(command.getPerson(), null);
final Contract contract = new Contract(command.getPerson(),
command.getContractNumber());
contractRepository.add(contract);
return contract.getIdentifier();
}
}
If line "personRepository.load(command.getPerson(), null);" is
commented, the exception doesn't appear.
Is it known issue and something wrong with my configuration?
P.S. I don't include spring configs in this message intentionally,
because this message is big enough and may be I did some trivial
mistake in Axon configuration. But if any addition info is required,
please let me know
Thanks,
Bogdan Prishedko