[
https://issues.apache.org/jira/browse/TRAFODION-2717?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16134667#comment-16134667
]
ASF GitHub Bot commented on TRAFODION-2717:
-------------------------------------------
Github user mashengchen commented on a diff in the pull request:
https://github.com/apache/incubator-trafodion/pull/1209#discussion_r134139755
--- Diff:
dcs/src/main/java/org/trafodion/dcs/master/listener/ListenerWorker.java ---
@@ -86,39 +86,43 @@ public void run() {
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);
--- End diff --
in this case if not catch Exception, there will throw the exception and
lead to dcsmaster thread died, then the client side will never get connection,
and once there catch Exception the cancelConnection will set to true, and then
requestReply will be REQUST_CLOSE, and client side will get response for
connect failure, this will not influence other client side
> DCSMaster can't solve error data send from odbc and hang
> --------------------------------------------------------
>
> Key: TRAFODION-2717
> URL: https://issues.apache.org/jira/browse/TRAFODION-2717
> Project: Apache Trafodion
> Issue Type: Bug
> Reporter: mashengchen
> Assignee: mashengchen
>
> odbc give a wrong length for dcsmaster when do new byte[length], then throw
> exception, but not catch it, this lead to client can't get response, and
> dcsmaster hang.
> 2017-08-09 18:13:57,497, ERROR,
> org.trafodion.dcs.master.listener.ListenerWorker, Node Number: , CPU: , PID:
> , Process Name: , , ,Unexpected Exception
> java.nio.BufferUnderflowException
> at java.nio.HeapByteBuffer.get(HeapByteBuffer.java:151)
> at org.trafodion.dcs.master.listener.Util.extractString(Util.java:59)
> at
> org.trafodion.dcs.master.listener.ConnectionContext.extractFromByteBuffer(ConnectionContext.java:170)
> at
> org.trafodion.dcs.master.listener.RequestGetObjectRef.buildConnectReply(RequestGetObjectRef.java:96)
> at
> org.trafodion.dcs.master.listener.RequestGetObjectRef.processRequest(RequestGetObjectRef.java:61)
> at
> org.trafodion.dcs.master.listener.ListenerWorker.run(ListenerWorker.java:113)
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)