diff --git a/src/VERSION b/src/VERSION index 460c8b9..2d5dc35 100644 --- a/src/VERSION +++ b/src/VERSION @@ -1 +1 @@ -v1.10.2 +v1.10.3.3 diff --git a/src/spaceone/core/model/mongo_model/__init__.py b/src/spaceone/core/model/mongo_model/__init__.py index 85996df..3a30733 100644 --- a/src/spaceone/core/model/mongo_model/__init__.py +++ b/src/spaceone/core/model/mongo_model/__init__.py @@ -903,7 +903,7 @@ def _make_aggregate_rules(cls, aggregate): return _aggregate_rules @classmethod - def _stat_aggregate(cls, vos, aggregate, page): + def _stat_aggregate(cls, vos, aggregate, page, allow_disk_use): result = {} pipeline = [] _aggregate_rules = cls._make_aggregate_rules(aggregate) @@ -931,7 +931,11 @@ def _stat_aggregate(cls, vos, aggregate, page): '$limit': limit }) - cursor = vos.aggregate(pipeline) + if allow_disk_use: + _LOGGER.debug(f'[_stat_aggregate] allow_disk_use: {allow_disk_use}') + cursor = vos.aggregate(pipeline, allowDiskUse=True) + else: + cursor = vos.aggregate(pipeline) result['results'] = cls._make_aggregate_values(cursor) return result @@ -958,7 +962,7 @@ def _stat_distinct(cls, vos, distinct, page): @classmethod def stat(cls, *args, aggregate=None, distinct=None, filter=None, filter_or=None, page=None, - target='SECONDARY_PREFERRED', **kwargs): + target='SECONDARY_PREFERRED', allow_disk_use=False, **kwargs): if filter is None: filter = [] @@ -978,7 +982,7 @@ def stat(cls, *args, aggregate=None, distinct=None, filter=None, filter_or=None, vos = cls._get_target_objects(target).filter(_filter) if aggregate: - return cls._stat_aggregate(vos, aggregate, page) + return cls._stat_aggregate(vos, aggregate, page, allow_disk_use) elif distinct: return cls._stat_distinct(vos, distinct, page)