RANGER-4606: /assets/assets/count API does not return the proper count if the number of services is greater than 200
Signed-off-by: Madhan Neethiraj <madhan@apache.org>
diff --git a/security-admin/src/main/java/org/apache/ranger/rest/AssetREST.java b/security-admin/src/main/java/org/apache/ranger/rest/AssetREST.java
index 2e1982c..e5ef779 100644
--- a/security-admin/src/main/java/org/apache/ranger/rest/AssetREST.java
+++ b/security-admin/src/main/java/org/apache/ranger/rest/AssetREST.java
@@ -277,9 +277,26 @@
logger.debug("==> AssetREST.countXAssets()");
}
+ SearchFilter filter = searchUtil.getSearchFilterFromLegacyRequest(request, xResourceService.sortFields);
+
+ filter.setMaxRows(Integer.MAX_VALUE);
+
+ List<RangerService> services = serviceREST.getServices(filter);
+ int servicesCount = 0;
+
+ if (services != null) {
+ for (RangerService service : services) {
+ VXAsset asset = serviceUtil.toVXAsset(service);
+
+ if (asset != null) {
+ servicesCount++;
+ }
+ }
+ }
+
VXLong ret = new VXLong();
- ret.setValue(searchXAssets(request).getListSize());
+ ret.setValue(servicesCount);
if(logger.isDebugEnabled()) {
logger.debug("<== AssetREST.countXAssets(): " + ret);