Hi Motivated by Claus' nice words :-) and to take a whiff of the Camel code, I analyzed my own Jira issue CAMEL-7146.
In the method "doAggregation" the aggregator evaluates if the aggregation is complete. With completionSize = 1 this is the case on every Exchange. Therefore the aggregator does not persist the Exchanges: => complete = "size", therefore every exchange goes in else-case ... if (complete == null) { doAggregationRepositoryAdd(newExchange.getContext(), key, originalExchange, answer); ... } else { ... On the other hand does the method "onCompletion" no such evaluation and tries to delete the Exchange in the Repository. Therefore the NPE. So, completionSize = 1 is a special case since it basically says "do not aggregate". This raises the question if Camel should throw an Exception on context startup