From 6c921d5b6640f44faf8814d10ce5b24d9c8a43ee Mon Sep 17 00:00:00 2001 From: ZZZank <47418975+ZZZank@users.noreply.github.com> Date: Wed, 23 Oct 2024 16:02:44 +0000 Subject: [PATCH] forgot to add generated id to used ids --- .../java/betterquesting/api2/storage/SimpleDatabase.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/betterquesting/api2/storage/SimpleDatabase.java b/src/main/java/betterquesting/api2/storage/SimpleDatabase.java index 86a011fa..41a20945 100644 --- a/src/main/java/betterquesting/api2/storage/SimpleDatabase.java +++ b/src/main/java/betterquesting/api2/storage/SimpleDatabase.java @@ -5,17 +5,24 @@ public class SimpleDatabase extends AbstractDatabase { private final IntOpenHashSet ids = new IntOpenHashSet(); + /** + * the "smallest acceptable" id, any id smaller than this is considered as used and can + * be skipped when searching for new id, this condition can be maintained by: + * - refresh lowerBound after new id is generated: {@link #nextID()} + * - refresh lowerBound after one id is removed: {@link #removeID(int)} + */ private int lowerBound = 0; @Override public synchronized int nextID() { for (int i = lowerBound; i < Integer.MAX_VALUE ; i++) { if (!ids.contains(i)) { + ids.add(i); lowerBound = i + 1; return i; } } - throw new IllegalStateException(String.format("All integer id from 0 to %s have been consumed", Integer.MAX_VALUE)); + throw new IllegalStateException(String.format("All integer id from 0 to %s have been consumed, it's abnormal", Integer.MAX_VALUE)); } @Override