Issue with using EventCountSnapshotterTrigger

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 :slight_smile:

Thanks,
Bogdan Prishedko

Hi Bogdan,

it looks like you caught a bug. I will check to make sure.

Which version of Axon are you using? 0.6 or 0.7 snapshot?

Cheers,

Allard

I'm using 0.6.