Repository: drill
Updated Branches:
  refs/heads/master da17f2867 -> 60bc9459b


DRILL-3398: Fix memory leak in WebServer


Project: http://git-wip-us.apache.org/repos/asf/drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/drill/commit/60bc9459
Tree: http://git-wip-us.apache.org/repos/asf/drill/tree/60bc9459
Diff: http://git-wip-us.apache.org/repos/asf/drill/diff/60bc9459

Branch: refs/heads/master
Commit: 60bc9459bd8ef29e9d90ffe885771090ab658a40
Parents: 153baeb
Author: vkorukanti <[email protected]>
Authored: Fri Jun 26 11:41:35 2015 -0700
Committer: vkorukanti <[email protected]>
Committed: Fri Jun 26 11:46:47 2015 -0700

----------------------------------------------------------------------
 .../drill/exec/server/rest/QueryWrapper.java    | 39 ++++++++++++--------
 1 file changed, 23 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/drill/blob/60bc9459/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/QueryWrapper.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/QueryWrapper.java
 
b/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/QueryWrapper.java
index 4629dd0..ee31929 100644
--- 
a/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/QueryWrapper.java
+++ 
b/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/QueryWrapper.java
@@ -146,23 +146,30 @@ public class QueryWrapper {
       try {
         final int rows = result.getHeader().getRowCount();
         if (result.hasData()) {
-          final RecordBatchLoader loader = new RecordBatchLoader(allocator);
-          loader.load(result.getHeader().getDef(), result.getData());
-          // TODO:  Clean:  DRILL-2933:  That load(...) no longer throws
-          // SchemaChangeException, so check/clean catch clause below.
-          for (int i = 0; i < loader.getSchema().getFieldCount(); ++i) {
-            
columns.add(loader.getSchema().getColumn(i).getPath().getAsUnescapedPath());
-          }
-          for (int i = 0; i < rows; ++i) {
-            final Map<String, String> record = Maps.newHashMap();
-            for (VectorWrapper<?> vw : loader) {
-              final String field = 
vw.getValueVector().getMetadata().getNamePart().getName();
-              final ValueVector.Accessor accessor = 
vw.getValueVector().getAccessor();
-              final Object value = i < accessor.getValueCount() ? 
accessor.getObject(i) : null;
-              final String display = value == null ? null : value.toString();
-              record.put(field, display);
+          RecordBatchLoader loader = null;
+          try {
+            loader = new RecordBatchLoader(allocator);
+            loader.load(result.getHeader().getDef(), result.getData());
+            // TODO:  Clean:  DRILL-2933:  That load(...) no longer throws
+            // SchemaChangeException, so check/clean catch clause below.
+            for (int i = 0; i < loader.getSchema().getFieldCount(); ++i) {
+              
columns.add(loader.getSchema().getColumn(i).getPath().getAsUnescapedPath());
+            }
+            for (int i = 0; i < rows; ++i) {
+              final Map<String, String> record = Maps.newHashMap();
+              for (VectorWrapper<?> vw : loader) {
+                final String field = 
vw.getValueVector().getMetadata().getNamePart().getName();
+                final ValueVector.Accessor accessor = 
vw.getValueVector().getAccessor();
+                final Object value = i < accessor.getValueCount() ? 
accessor.getObject(i) : null;
+                final String display = value == null ? null : value.toString();
+                record.put(field, display);
+              }
+              results.add(record);
+            }
+          } finally {
+            if (loader != null) {
+              loader.clear();
             }
-            results.add(record);
           }
         }
       } catch (SchemaChangeException e) {

Reply via email to