From 90b55bc31837aa485ca3d89f40179bd10756e94b Mon Sep 17 00:00:00 2001 From: blake_bauman Date: Mon, 21 Apr 2025 13:46:01 -0700 Subject: [PATCH] Fix NullPointerException in MongoSequenceIncrementer When using a MongoDB repository for the first time, the collections used by MongoSequenceIncrementer don't yet exist, which results in the call to findOneAndUpdate().getLong() to reutrn a null, which then results in an NPE unboxing the Long into a long. Adding upsert(true) creates the initial document with a count of 0 and immediately increments it to 1. Signed-off-by: blake_bauman --- .../batch/core/repository/dao/MongoSequenceIncrementer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/MongoSequenceIncrementer.java b/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/MongoSequenceIncrementer.java index db78dc343a..7adf60c4e0 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/MongoSequenceIncrementer.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/MongoSequenceIncrementer.java @@ -47,7 +47,7 @@ public long nextLongValue() throws DataAccessException { return mongoTemplate.execute("BATCH_SEQUENCES", collection -> collection .findOneAndUpdate(new Document("_id", sequenceName), new Document("$inc", new Document("count", 1)), - new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER)) + new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER).upsert(true)) .getLong("count")); }