Je suppose que vous mettez probablement à jour la collection à partir de laquelle vous lisez et que vous mettez également à jour un champ utilisé par la requête. Si c'est le cas, j'ai eu le même problème récemment.
Le MongoItemReader est un lecteur paginé. Ainsi, chaque fois que l'auteur met à jour ces enregistrements, le lecteur dispose d'un pool plus petit, mais la page continue d'augmenter.
Alors imaginez que nous avons 20 éléments et lisons 5 éléments à la fois :
1) Lit les éléments 1 à 5 sur un total de 20.
2) Met à jour les éléments 1 à 5 et il y a maintenant un total de 15 éléments possibles
3) Lit les éléments 6 à 10 sur un total de 15.
4) Met à jour les éléments 6 à 10 et il y a maintenant un total de 10 éléments possibles.
5) Lit les éléments 11 à 15 sur 10 éléments possibles
6) Read renvoie null car rien n'est renvoyé pour cette page.
Alors maintenant, vous n'en avez traité que la moitié.
J'ai suivi le tutoriel ci-dessous pour créer un MongoDbCursorItemReader qui a résolu ce problème pour moi :https://blog.zenika.com/2012/05/23/spring-batch-and-mongodb-cursor-based-item-reader/