Skip to content

Commit b6804c0

Browse files
authored
Stream state more efficient loading of subjects (#1179)
1 parent f80d42d commit b6804c0

File tree

2 files changed

+12
-4
lines changed

2 files changed

+12
-4
lines changed

src/main/java/io/nats/client/api/StreamState.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import io.nats.client.support.JsonValue;
1717

1818
import java.time.ZonedDateTime;
19+
import java.util.ArrayList;
1920
import java.util.HashMap;
2021
import java.util.List;
2122
import java.util.Map;
@@ -48,13 +49,20 @@ public class StreamState {
4849
lastTime = readDate(vStreamState, LAST_TS);
4950
subjectCount = readLong(vStreamState, NUM_SUBJECTS, 0);
5051
deletedCount = readLong(vStreamState, NUM_DELETED, 0);
51-
subjects = Subject.listOf(readValue(vStreamState, SUBJECTS));
5252
deletedStreamSequences = readLongList(vStreamState, DELETED);
5353
lostStreamData = LostStreamData.optionalInstance(readValue(vStreamState, LOST));
5454

55+
subjects = new ArrayList<>();
5556
subjectMap = new HashMap<>();
56-
for (Subject s : subjects) {
57-
subjectMap.put(s.getName(), s.getCount());
57+
JsonValue vSubjects = readValue(vStreamState, SUBJECTS);
58+
if (vSubjects != null && vSubjects.map != null) {
59+
for (String subject : vSubjects.map.keySet()) {
60+
Long count = getLong(vSubjects.map.get(subject));
61+
if (count != null) {
62+
subjects.add(new Subject(subject, count));
63+
subjectMap.put(subject, count);
64+
}
65+
}
5866
}
5967
}
6068

src/main/java/io/nats/client/api/Subject.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ static List<Subject> listOf(JsonValue vSubjects) {
3737
return list;
3838
}
3939

40-
private Subject(String name, long count) {
40+
public Subject(String name, long count) {
4141
this.name = name;
4242
this.count = count;
4343
}

0 commit comments

Comments
 (0)