Repository: hive Updated Branches: refs/heads/master 35d181100 -> a94f382a0
HIVE-19251: ObjectStore.getNextNotification with LIMIT should use less memory (Daniel Dai, reviewed by Thejas Nair, Vihang Karajgaonkar) Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/a94f382a Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/a94f382a Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/a94f382a Branch: refs/heads/master Commit: a94f382a0f55e72a4ab0bbeabe7bf7bbac5b384d Parents: 35d1811 Author: Daniel Dai <dai...@gmail.com> Authored: Fri Apr 20 14:29:35 2018 -0700 Committer: Daniel Dai <dai...@gmail.com> Committed: Fri Apr 20 14:29:35 2018 -0700 ---------------------------------------------------------------------- .../java/org/apache/hadoop/hive/metastore/ObjectStore.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hive/blob/a94f382a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java ---------------------------------------------------------------------- diff --git a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java index a7acdcb..d020d8e 100644 --- a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java +++ b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java @@ -9094,18 +9094,18 @@ public class ObjectStore implements RawStore, Configurable { try { openTransaction(); long lastEvent = rqst.getLastEvent(); + int maxEvents = rqst.getMaxEvents() > 0 ? rqst.getMaxEvents() : Integer.MAX_VALUE; query = pm.newQuery(MNotificationLog.class, "eventId > lastEvent"); query.declareParameters("java.lang.Long lastEvent"); query.setOrdering("eventId ascending"); + query.setRange(0, maxEvents); Collection<MNotificationLog> events = (Collection) query.execute(lastEvent); commited = commitTransaction(); if (events == null) { return result; } Iterator<MNotificationLog> i = events.iterator(); - int maxEvents = rqst.getMaxEvents() > 0 ? rqst.getMaxEvents() : Integer.MAX_VALUE; - int numEvents = 0; - while (i.hasNext() && numEvents++ < maxEvents) { + while (i.hasNext()) { result.addToEvents(translateDbToThrift(i.next())); } return result;