Repository: incubator-trafodion
Updated Branches:
  refs/heads/master e8bdaba98 -> d283c95ee


TRAFODION-2717 odb give wrong data and dcsmaster hang


Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/3b9cb971
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/3b9cb971
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/3b9cb971

Branch: refs/heads/master
Commit: 3b9cb971136e93a65ad9e8570a15bf8180dad273
Parents: 93bb3df
Author: mashengchen <mashengc...@gmail.com>
Authored: Wed Aug 16 03:25:22 2017 +0000
Committer: mashengchen <mashengc...@gmail.com>
Committed: Wed Aug 16 03:25:22 2017 +0000

----------------------------------------------------------------------
 .../dcs/master/listener/ListenerWorker.java     | 64 +++++++++++---------
 .../dcs/master/listener/RequestCancelQuery.java | 10 ++-
 .../master/listener/RequestGetObjectRef.java    |  8 ++-
 .../dcs/master/listener/RequestUnknown.java     |  6 +-
 4 files changed, 52 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/3b9cb971/dcs/src/main/java/org/trafodion/dcs/master/listener/ListenerWorker.java
----------------------------------------------------------------------
diff --git 
a/dcs/src/main/java/org/trafodion/dcs/master/listener/ListenerWorker.java 
b/dcs/src/main/java/org/trafodion/dcs/master/listener/ListenerWorker.java
index 182e437..3683618 100644
--- a/dcs/src/main/java/org/trafodion/dcs/master/listener/ListenerWorker.java
+++ b/dcs/src/main/java/org/trafodion/dcs/master/listener/ListenerWorker.java
@@ -86,39 +86,43 @@ public class ListenerWorker extends Thread {
         DataEvent dataEvent;
     
         while(true) {
-            // Wait for data to become available
-            synchronized(queue) {
-                while(queue.isEmpty()) {
-                    try {
-                        queue.wait();
-                    } catch (InterruptedException e) {
+            try {
+                // Wait for data to become available
+                synchronized(queue) {
+                    while(queue.isEmpty()) {
+                        try {
+                            queue.wait();
+                        } catch (InterruptedException e) {
+                        }
                     }
+                    dataEvent = queue.remove(0);
                 }
-                dataEvent = queue.remove(0);
-            }
-            SelectionKey key = dataEvent.key;
-            SocketChannel client = (SocketChannel) key.channel();
-            Socket s = client.socket();
-            ClientData clientData = (ClientData) key.attachment();
-            ListenerService server = dataEvent.server;
-            dataEvent.key = null;
-            dataEvent.server = null;
-            
-            switch (clientData.hdr.getOperationId()){
-                case ListenerConstants.DCS_MASTER_GETSRVRAVAILABLE:
-                    clientData = 
requestGetObjectRef.processRequest(clientData, s);
-                    break;
-                case ListenerConstants.DCS_MASTER_CANCELQUERY:
-                    clientData = requestCancelQuery.processRequest(clientData, 
s);
-                    break;
-                default:
-                    clientData = requestUnknown.processRequest(clientData, s);
-                    break;
+                SelectionKey key = dataEvent.key;
+                SocketChannel client = (SocketChannel) key.channel();
+                Socket s = client.socket();
+                ClientData clientData = (ClientData) key.attachment();
+                ListenerService server = dataEvent.server;
+                dataEvent.key = null;
+                dataEvent.server = null;
+
+                switch (clientData.hdr.getOperationId()){
+                    case ListenerConstants.DCS_MASTER_GETSRVRAVAILABLE:
+                        clientData = 
requestGetObjectRef.processRequest(clientData, s);
+                        break;
+                    case ListenerConstants.DCS_MASTER_CANCELQUERY:
+                        clientData = 
requestCancelQuery.processRequest(clientData, s);
+                        break;
+                    default:
+                        clientData = requestUnknown.processRequest(clientData, 
s);
+                        break;
+                }
+                // Return to sender
+                int requestReply = clientData.requestReply;
+                key.attach(clientData);
+                server.send(new PendingRequest(key, requestReply));
+            } catch (Exception e){
+                LOG.error("Unexpected Exception", e);
             }
-            // Return to sender
-            int requestReply = clientData.requestReply;
-            key.attach(clientData);
-            server.send(new PendingRequest(key, requestReply));
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/3b9cb971/dcs/src/main/java/org/trafodion/dcs/master/listener/RequestCancelQuery.java
----------------------------------------------------------------------
diff --git 
a/dcs/src/main/java/org/trafodion/dcs/master/listener/RequestCancelQuery.java 
b/dcs/src/main/java/org/trafodion/dcs/master/listener/RequestCancelQuery.java
index f0ba9c5..da6040a 100644
--- 
a/dcs/src/main/java/org/trafodion/dcs/master/listener/RequestCancelQuery.java
+++ 
b/dcs/src/main/java/org/trafodion/dcs/master/listener/RequestCancelQuery.java
@@ -189,15 +189,19 @@ public class RequestCancelQuery {
             clientData.hdr = hdr;
         } catch (UnsupportedEncodingException ue){
             if(LOG.isErrorEnabled())
-                LOG.error("RequestCancelQuery.UnsupportedEncodingException: " 
+ s.getRemoteSocketAddress() + ": " + ue.getMessage() );
+                LOG.error("RequestCancelQuery.UnsupportedEncodingException: " 
+ s.getRemoteSocketAddress() + ": " + ue.getMessage(), ue);
             cancelConnection = true;
         } catch (KeeperException ke){
             if(LOG.isErrorEnabled())
-                LOG.error("RequestCancelQuery.KeeperException: " + 
s.getRemoteSocketAddress() + ": " + ke.getMessage() );
+                LOG.error("RequestCancelQuery.KeeperException: " + 
s.getRemoteSocketAddress() + ": " + ke.getMessage(), ke);
             cancelConnection = true;
         } catch (InterruptedException ie){
             if(LOG.isErrorEnabled())
-                LOG.error("RequestCancelQuery.InterruptedException: " + 
s.getRemoteSocketAddress() + ": " + ie.getMessage() );
+                LOG.error("RequestCancelQuery.InterruptedException: " + 
s.getRemoteSocketAddress() + ": " + ie.getMessage(), ie);
+            cancelConnection = true;
+        } catch (Exception e){
+            if(LOG.isErrorEnabled())
+                LOG.error("RequestCancelQuery.Exception: " + 
s.getRemoteSocketAddress() + ": " + e.getMessage(), e);
             cancelConnection = true;
         }
         header = null;

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/3b9cb971/dcs/src/main/java/org/trafodion/dcs/master/listener/RequestGetObjectRef.java
----------------------------------------------------------------------
diff --git 
a/dcs/src/main/java/org/trafodion/dcs/master/listener/RequestGetObjectRef.java 
b/dcs/src/main/java/org/trafodion/dcs/master/listener/RequestGetObjectRef.java
index a24106d..62f9d99 100644
--- 
a/dcs/src/main/java/org/trafodion/dcs/master/listener/RequestGetObjectRef.java
+++ 
b/dcs/src/main/java/org/trafodion/dcs/master/listener/RequestGetObjectRef.java
@@ -57,11 +57,15 @@ public class RequestGetObjectRef {
             replyException = buildConnectReply(clientData);
         } catch (UnsupportedEncodingException ue){
             if(LOG.isErrorEnabled())
-                LOG.error("Exception in RequestGetObjectRef: " + 
s.getRemoteSocketAddress() + ": " + ue.getMessage() );
+                LOG.error("UnsupportedEncodingException in 
RequestGetObjectRef: " + s.getRemoteSocketAddress() + ": " + ue.getMessage(), 
ue);
             cancelConnection = true;
         } catch (IOException io){
             if(LOG.isErrorEnabled())
-                LOG.error("Exception in RequestGetObjectRef: " + 
s.getRemoteSocketAddress() + ": " + io.getMessage());
+                LOG.error("IOException in RequestGetObjectRef: " + 
s.getRemoteSocketAddress() + ": " + io.getMessage(), io);
+            cancelConnection = true;
+        } catch (Exception e){
+            if(LOG.isErrorEnabled())
+                LOG.error("Exception in RequestGetObjectRef: " + 
s.getRemoteSocketAddress() + ": " + e.getMessage(), e);
             cancelConnection = true;
         }
         // Return to sender

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/3b9cb971/dcs/src/main/java/org/trafodion/dcs/master/listener/RequestUnknown.java
----------------------------------------------------------------------
diff --git 
a/dcs/src/main/java/org/trafodion/dcs/master/listener/RequestUnknown.java 
b/dcs/src/main/java/org/trafodion/dcs/master/listener/RequestUnknown.java
index e0569d4..1e5e566 100644
--- a/dcs/src/main/java/org/trafodion/dcs/master/listener/RequestUnknown.java
+++ b/dcs/src/main/java/org/trafodion/dcs/master/listener/RequestUnknown.java
@@ -76,7 +76,11 @@ public class RequestUnknown {
             clientData.hdr = hdr;
         } catch (UnsupportedEncodingException ue){
             if(LOG.isErrorEnabled())
-                LOG.error("Exception in RequestUnknown: " + 
s.getRemoteSocketAddress() + ": " + ue.getMessage() );
+                LOG.error("UnsupportedEncodingException in RequestUnknown: " + 
s.getRemoteSocketAddress() + ": " + ue.getMessage(), ue);
+            cancelConnection = true;
+        } catch (Exception e){
+            if(LOG.isErrorEnabled())
+                LOG.error("Exception in RequestUnknown: " + 
s.getRemoteSocketAddress() + ": " + e.getMessage(), e);
             cancelConnection = true;
         }
         header = null;

Reply via email to