abdullah alamoudi has uploaded a new change for review.

  https://asterix-gerrit.ics.uci.edu/1955

Change subject: [ASTERIXDB-2052][OTH] Log failures during close of servlet 
response
......................................................................

[ASTERIXDB-2052][OTH] Log failures during close of servlet response

- user model changes: no
- storage format changes: no
- interface changes: no

details:
- Log all failures during close of servlet responses to id source
  of memory leak.

Change-Id: Ia0e3f3e6e2f94a31f296b3491a07f624a4fea604
---
M 
asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java
M 
hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/ChunkedNettyOutputStream.java
2 files changed, 17 insertions(+), 11 deletions(-)


  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb 
refs/changes/55/1955/1

diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java
index 1cec616..ed61857 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java
@@ -62,6 +62,7 @@
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ObjectNode;
+
 import io.netty.handler.codec.http.HttpResponseStatus;
 
 public class QueryServiceServlet extends AbstractQueryApiServlet {
@@ -89,7 +90,7 @@
     protected void post(IServletRequest request, IServletResponse response) {
         try {
             handleRequest(getRequestParameters(request), response);
-        } catch (IOException e) {
+        } catch (Throwable e) {
             // Servlet methods should not throw exceptions
             // http://cwe.mitre.org/data/definitions/600.html
             GlobalConfig.ASTERIX_LOGGER.log(Level.SEVERE, e.getMessage(), e);
diff --git 
a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/ChunkedNettyOutputStream.java
 
b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/ChunkedNettyOutputStream.java
index 0066b77..23d1095 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/ChunkedNettyOutputStream.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/ChunkedNettyOutputStream.java
@@ -83,19 +83,24 @@
 
     @Override
     public void close() throws IOException {
-        if (!closed) {
-            if (response.isHeaderSent() || response.status() != 
HttpResponseStatus.OK) {
-                try {
-                    flush();
-                } finally {
-                    buffer.release();
+        try {
+            if (!closed) {
+                if (response.isHeaderSent() || response.status() != 
HttpResponseStatus.OK) {
+                    try {
+                        flush();
+                    } finally {
+                        buffer.release();
+                    }
+                } else {
+                    response.fullReponse(buffer);
                 }
-            } else {
-                response.fullReponse(buffer);
+                super.close();
             }
-            super.close();
+            closed = true;
+        } catch (Throwable th) {
+            LOGGER.log(Level.SEVERE, "Failure during close of " + 
getClass().getSimpleName(), th);
+            throw th;
         }
-        closed = true;
     }
 
     @Override

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/1955
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia0e3f3e6e2f94a31f296b3491a07f624a4fea604
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: abdullah alamoudi <[email protected]>

Reply via email to