+
+ if(maxDataSize == NO_MAX_SIZE) {
+ return new ArrayList<>(journal.subList(adjustedIndex, maxIndex));
+ } else {
+ List<ReplicatedLogEntry> retList = new ArrayList<>(maxIndex - adjustedIndex);
+ long totalSize = 0;
+ for(int i = adjustedIndex; i < maxIndex; i++) {
+ ReplicatedLogEntry entry = journal.get(i);
+ totalSize += entry.size();
+ if(totalSize <= maxDataSize) {
+ retList.add(entry);
+ } else {
+ if(retList.isEmpty()) {
+ // Edge case - the first entry's size exceeds the threshold. We need to return
+ // at least the first entry so add it here.
+ retList.add(entry);
+ }
+
+ break;
+ }
+ }
+
+ return retList;
+ }
+ } else {
+ return Collections.emptyList();