Skip to content

Commit ec4cc7a

Browse files
committed
work around cb response 6.1 issue where total_results may not equal the number of results for a query
1 parent a293eb0 commit ec4cc7a

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

examples/response/walk_children.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ def main():
3535
print("Encountered unknown error retrieving process: {0:s}".format(str(e)))
3636
return 1
3737
elif args.query:
38-
procs = c.select(Process).where(args.query)
38+
procs = c.select(Process).where(args.query).group_by("id")
3939
else:
4040
print("Requires either a --process or --query argument")
4141
parser.print_usage()

src/cbapi/response/query.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@
55
from ..errors import ApiError
66
from ..utils import convert_query_params
77

8+
import logging
9+
10+
log = logging.getLogger(__name__)
11+
812

913
class Query(PaginatedQuery):
1014
"""Represents a prepared query to the Carbon Black Enterprise Response server.
@@ -183,7 +187,9 @@ def _search(self, start=0, rows=0):
183187
self._total_results = result.get('total_results')
184188
self._count_valid = True
185189

186-
for item in result.get('results'):
190+
results = result.get('results', [])
191+
192+
for item in results:
187193
yield item
188194
current += 1
189195
numrows += 1
@@ -195,3 +201,9 @@ def _search(self, start=0, rows=0):
195201

196202
if current >= self._total_results:
197203
break
204+
if not results:
205+
log.debug("server reported total_results overestimated the number of results for this query by {0}"
206+
.format(self._total_results - current))
207+
log.debug("resetting total_results for this query to {0}".format(current))
208+
self._total_results = current
209+
break

0 commit comments

Comments
 (0)