Skip to content

Commit db2a4d3

Browse files
committed
Changed default getKeyNames to user randomObject iteration - making it more performant on large datasets (used for mongodb)
1 parent 24686ce commit db2a4d3

1 file changed

Lines changed: 9 additions & 9 deletions

File tree

src/main/java/picoded/dstack/DataObjectMap.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -335,18 +335,18 @@ default Set<String> getKeyNames(int seekDepth) {
335335
Set<String> res = new HashSet<String>();
336336

337337
// Iterate the list, get key names
338-
int idx = 0;
339-
for (DataObject obj : values()) {
340-
341-
// Break iteration once seekdepth limits reached
342-
if (idx >= seekDepth && seekDepth >= 0) {
343-
break;
338+
DataObject obj = randomObject();
339+
res.addAll(obj.keySet());
340+
341+
// Lets iterate through
342+
for(int i=1; i<seekDepth; ++i) {
343+
obj = looselyIterateObject(obj);
344+
if(obj != null) {
345+
res.addAll(obj.keySet());
344346
}
345-
346-
// Add all the various key names
347-
res.addAll(obj.keySet());
348347
}
349348

349+
// Return the result set
350350
return res;
351351
}
352352

0 commit comments

Comments
 (0)