You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafodion.apache.org by se...@apache.org on 2017/10/23 22:09:17 UTC

[1/3] incubator-trafodion git commit: [TRAFODION-2780] The mxosrvr dumps core when connection idle timer expires at times

Repository: incubator-trafodion
Updated Branches:
  refs/heads/master dabad9ae9 -> ea24774d7


[TRAFODION-2780] The mxosrvr dumps core when connection idle timer expires at times

This core is accompanied by mxssmp process core.

Got rid of both connection idle timer and server idle timer, instead use the timeout
mechanism provided by the socket API select.  More code removed.

Tested the connection idle timeout mechanism via a sample JDBC T4 program just to ensure
that the mxosrvr is put into available pool after the connection idle timer expires.

Trafci seems to be resetting the connection idle timer periodically from the client.

It looks like even the connection idle timer is Trafodion specific concept because of
a dedicated process for every database connection to Trafodion SQL engine. From JDBC specification,
the connection inactive timeout needs to be implemented in the connection pooling infrastructure.
The default connection idle timer in Trafodion is 10 mins.


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

Branch: refs/heads/master
Commit: acfb5b296bac5e9f7a1d7236107fc262fe26812c
Parents: c7199d5
Author: selvaganesang <se...@esgyn.com>
Authored: Fri Oct 20 19:08:04 2017 +0000
Committer: selvaganesang <se...@esgyn.com>
Committed: Fri Oct 20 19:08:04 2017 +0000

----------------------------------------------------------------------
 core/conn/odbc/src/odbc/Common/Global.h         |   2 -
 .../Interface/linux/Listener_srvr_ps.cpp        |  79 ++++--
 core/conn/odbc/src/odbc/nsksrvr/SrvrConnect.cpp | 268 +------------------
 core/conn/odbc/src/odbc/nsksrvr/SrvrConnect.h   |   3 +-
 core/conn/odbc/src/odbc/nsksrvr/SrvrSMD.cpp     |   6 -
 .../conn/odbc/src/odbc/nsksrvrcore/srvrcommon.h |   2 -
 6 files changed, 79 insertions(+), 281 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/acfb5b29/core/conn/odbc/src/odbc/Common/Global.h
----------------------------------------------------------------------
diff --git a/core/conn/odbc/src/odbc/Common/Global.h b/core/conn/odbc/src/odbc/Common/Global.h
index 72e0cef..09f39bc 100644
--- a/core/conn/odbc/src/odbc/Common/Global.h
+++ b/core/conn/odbc/src/odbc/Common/Global.h
@@ -969,8 +969,6 @@ typedef struct _SRVR_GLOBAL_Def
 	CEE_handle_def		ASSvc_MonitorProxy;
 	CEE_handle_def		ASSvc_ifch;
 	SRVR_CONTEXT_def	srvrContext;
-	CEE_handle_def		connIdleTimerHandle;
-	CEE_handle_def		srvrIdleTimerHandle;
 	IDL_long		javaConnIdleTimeout;		//timeout in seconds, -1 from datasource, 0 no timeout
 
 	long			odbcConnIdleTimeout;		//For ODBC Client timeout value

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/acfb5b29/core/conn/odbc/src/odbc/nsksrvr/Interface/linux/Listener_srvr_ps.cpp
----------------------------------------------------------------------
diff --git a/core/conn/odbc/src/odbc/nsksrvr/Interface/linux/Listener_srvr_ps.cpp b/core/conn/odbc/src/odbc/nsksrvr/Interface/linux/Listener_srvr_ps.cpp
index 1ab66a3..9655349 100644
--- a/core/conn/odbc/src/odbc/nsksrvr/Interface/linux/Listener_srvr_ps.cpp
+++ b/core/conn/odbc/src/odbc/nsksrvr/Interface/linux/Listener_srvr_ps.cpp
@@ -318,7 +318,8 @@ void * CNSKListenerSrvr::tcpip_listener(void *arg)
    ssize_t countRead;
    CTCPIPSystemSrvr* pnode=NULL;
    fd_set temp_read_fds, temp_error_fds;
-
+   struct timeval timeout;
+   struct timeval *pTimeout;
    msg_enable_open_cleanup();
    file_enable_open_cleanup();
 
@@ -341,26 +342,74 @@ void * CNSKListenerSrvr::tcpip_listener(void *arg)
       // Wait for ready-to-read on any of the tcpip ports
       memcpy(&temp_read_fds, &listener->read_fds_, sizeof(temp_read_fds));
       memcpy(&temp_error_fds, &listener->error_fds_, sizeof(temp_error_fds));
+      
+      long connIdleTimeout = SRVR::getConnIdleTimeout();
+      long srvrIdleTimeout = SRVR::getSrvrIdleTimeout();
+      bool connIdleTimer = false;
+      bool srvrIdleTimer = false;
+      if (srvrGlobal->srvrState == SRVR_CONNECTED)
+      {
+         if (connIdleTimeout != INFINITE_CONN_IDLE_TIMEOUT)
+         {
+            timeout.tv_sec = connIdleTimeout;
+            timeout.tv_usec = 0; 
+            connIdleTimer = true;
+            pTimeout = &timeout;
+         }
+         else 
+         {
+             timeout.tv_sec = 0;
+             timeout.tv_usec = 0;
+             pTimeout = NULL;
+         }
+      }
+      else
+      {
+         if (srvrIdleTimeout != INFINITE_SRVR_IDLE_TIMEOUT)
+         {
+            timeout.tv_sec = srvrIdleTimeout;
+            timeout.tv_usec = 0; 
+            srvrIdleTimer = true;
+            pTimeout = &timeout;
+         }
+         else 
+         {
+             timeout.tv_sec = 0;
+             timeout.tv_usec = 0;
+             pTimeout = NULL;
+         }
+      }
 
-      numReadyFds = select(listener->max_read_fd_+1, &temp_read_fds, NULL,&temp_error_fds,NULL);
-
+      numReadyFds = select(listener->max_read_fd_+1, &temp_read_fds, NULL,&temp_error_fds, pTimeout);
       srvrGlobal->mutex->lock();
-
       if (numReadyFds == -1)
       {
-//LCOV_EXCL_START
-         /*
-		  *  Unexpected error from select - fdset cannot be relied on in this case
-          */
-		  srvrGlobal->mutex->unlock();
-		  continue;
-//LCOV_EXCL_STOP
+         if (errno == EINTR)
+         {
+            srvrGlobal->mutex->unlock();
+	    continue;
+         }
+         else 
+         {
+            SET_ERROR((long)0, NSK, TCPIP, UNKNOWN_API, E_SERVER,"tcpip_listener", O_SELECT, F_SELECT,errno,numReadyFds);
+            abort();
+         }
+      }
 
+      if (numReadyFds == 0)  //Timeout expired
+      {
+         if (connIdleTimer)
+            SRVR::BreakDialogue(NULL);
+         else if (srvrIdleTimer)
+            SRVR::srvrIdleTimerExpired(NULL);
+         else
+         {
+            SET_ERROR((long)0, NSK, TCPIP, UNKNOWN_API, E_SERVER,"tcpip_listener", O_SELECT, F_SELECT,errno,numReadyFds);
+            abort();
+         }
       }
       else
       {
-         if (numReadyFds > 0)
-         {
             // Handle all ready-to-read file descriptors
             handledFds = 0;
 
@@ -422,9 +471,7 @@ void * CNSKListenerSrvr::tcpip_listener(void *arg)
                SET_ERROR((long)0, NSK, TCPIP, UNKNOWN_API, E_SERVER,"tcpip_listener", O_SELECT, F_FD_ISSET,SRVR_ERR_UNKNOWN_REQUEST,0);
                listener->TCP_TRACE_OUTPUT_R0();
             }
-
-	} // numReadyFds > 0
-      } // else of if numReadFds == -1
+      } 
 
       srvrGlobal->mutex->unlock();
 

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/acfb5b29/core/conn/odbc/src/odbc/nsksrvr/SrvrConnect.cpp
----------------------------------------------------------------------
diff --git a/core/conn/odbc/src/odbc/nsksrvr/SrvrConnect.cpp b/core/conn/odbc/src/odbc/nsksrvr/SrvrConnect.cpp
index 7b071d4..7df82f3 100644
--- a/core/conn/odbc/src/odbc/nsksrvr/SrvrConnect.cpp
+++ b/core/conn/odbc/src/odbc/nsksrvr/SrvrConnect.cpp
@@ -219,20 +219,6 @@ Int32 SQL_EXEC_GetAuthState(
 
 #define MAX_EVAR_VALUE_LENGTH 3900 + 1
 
-#define START_CONN_IDLE_TIMER \
-	if (srvrGlobal != NULL && \
-		srvrGlobal->srvrState == SRVR_CONNECTED && \
-		((srvrGlobal->javaConnIdleTimeout > JDBC_INFINITE_CONN_IDLE_TIMEOUT) || \
-		 (srvrGlobal->srvrContext.connIdleTimeout != INFINITE_CONN_IDLE_TIMEOUT))) \
-			startConnIdleTimer();
-
-#define DESTROY_CONN_IDLE_TIMER \
-	if (srvrGlobal != NULL && \
-		srvrGlobal->srvrState == SRVR_CONNECTED && \
-		((srvrGlobal->javaConnIdleTimeout > JDBC_INFINITE_CONN_IDLE_TIMEOUT) || \
-		 (srvrGlobal->srvrContext.connIdleTimeout != INFINITE_CONN_IDLE_TIMEOUT))) \
-			destroyConnIdleTimer();
-
 #define CHECK_QUERYTYPE(y) \
 		(( y == SQL_SELECT_NON_UNIQUE || y == SQL_INSERT_NON_UNIQUE || \
 		y == SQL_UPDATE_NON_UNIQUE || y == SQL_DELETE_NON_UNIQUE || y == 10000) ? TRUE : FALSE)
@@ -1190,10 +1176,6 @@ ImplInit (
    srvrGlobal->receiveThrId = getpid();
    timer_register();
 
-	CEE_HANDLE_SET_NIL(&srvrGlobal->connIdleTimerHandle);
-	CEE_HANDLE_SET_NIL(&srvrGlobal->srvrIdleTimerHandle);
-	CEE_HANDLE_SET_NIL(&StatisticsTimerHandle);
-
 	srvrGlobal->srvrVersion.componentId = 0; // Unknown
 	if (srvrGlobal->srvrVersion.componentId == 0)
 	{
@@ -3603,8 +3585,6 @@ odbc_SQLSvc_InitializeDialogue_ame_(
 	if ((srvrGlobal->drvrVersion.componentId == JDBC_DRVR_COMPONENT) && ((long) (inContext->idleTimeoutSec) > JDBC_DATASOURCE_CONN_IDLE_TIMEOUT))
 		srvrGlobal->javaConnIdleTimeout = inContext->idleTimeoutSec;
 
-	START_CONN_IDLE_TIMER
-
 	// collect information for resource statistics
 	char nodename[100];
 	short error;
@@ -4250,67 +4230,6 @@ void __cdecl SRVR::BreakDialogue(CEE_tag_def monitor_tag)
 	SRVRTRACE_EXIT(FILE_AME+7);
 }
 
-// Timer Expiration routine, when connIdleTimeout expires
-
-void __cdecl SRVR::connIdleTimerExpired(CEE_tag_def timer_tag)
-{
-	SRVRTRACE_ENTER(FILE_AME+8);
-
-    if(srvrGlobal->mutex->locked())
-	   // a tcp/ip request was received just in time, ignore this timeout
-	   return;
-
-    srvrGlobal->mutex->lock();
-
-	char tmpStringEnv[1024];
-	sprintf(tmpStringEnv,
-		   "Idle Connection Timer Expired. Client %s Disconnecting: Data Source: %s, Application: %s, Server Reference: %s",
-		    srvrGlobal->ClientComputerName,
-		    srvrGlobal->DSName,
-		    srvrGlobal->ApplicationName,
-		    srvrGlobal->srvrObjRef);
-
-	if (srvrGlobal->traceLogger != NULL)
-	{
-//LCOV_EXCL_START
-		SendEventMsg(MSG_SERVER_TRACE_INFO
-						, EVENTLOG_INFORMATION_TYPE
-						, srvrGlobal->nskProcessInfo.processId
-						, ODBCMX_SERVER
-						, srvrGlobal->srvrObjRef
-						, 4
-						, srvrGlobal->sessionId
-						, "connIdleTimerExpired"
-						, "0"
-						, tmpStringEnv);
-//LCOV_EXCL_STOP
-	}
-
-	releaseCachedObject(FALSE, NDCS_CONN_IDLE);
-
-        SRVR::SrvrSessionCleanup();
-        srvrGlobal->dialogueId = -1;
-
-	if (srvrGlobal->stopTypeFlag == STOP_WHEN_DISCONNECTED)
-		updateSrvrState(SRVR_STOP_WHEN_DISCONNECTED);
-	else
-		updateSrvrState(SRVR_DISCONNECTED);
-	if (srvrGlobal->stopTypeFlag == STOP_WHEN_DISCONNECTED)
-	{
-        srvrGlobal->mutex->unlock();
-		exitServerProcess();
-	}
-	else
-	{
-		GTransport.m_TCPIPSystemSrvr_list->cleanup();
-		GTransport.m_FSystemSrvr_list->cleanup();
-	}
-
-    srvrGlobal->mutex->unlock();
-	SRVRTRACE_EXIT(FILE_AME+8);
-	return;
-}
-
 // Timer Expiration routine, when srvrIdleTimeout expires
 void __cdecl SRVR::srvrIdleTimerExpired(CEE_tag_def timer_tag)
 {
@@ -4418,65 +4337,16 @@ odbcas_ASSvc_WouldLikeToLive_ccf_(
 		exitServerProcess();
 //LCOV_EXCL_STOP
 	}
-	if (createTimer)
-	{
-		if (srvrGlobal->srvrContext.srvrIdleTimeout != INFINITE_SRVR_IDLE_TIMEOUT)
-		{
-			if (CEE_HANDLE_IS_NIL(&srvrGlobal->srvrIdleTimerHandle) == IDL_FALSE)
-			{
-				CEE_TIMER_DESTROY(&srvrGlobal->srvrIdleTimerHandle);
-				CEE_HANDLE_SET_NIL(&srvrGlobal->srvrIdleTimerHandle);
-			}
-
-			sts = CEE_TIMER_CREATE2((long)srvrGlobal->srvrContext.srvrIdleTimeout * 60, 0, srvrIdleTimerExpired, NULL,
-				&srvrGlobal->srvrIdleTimerHandle,srvrGlobal->receiveThrId);
-			if (sts != CEE_SUCCESS)
-			{
-//LCOV_EXCL_START
-				CEE_HANDLE_SET_NIL(&srvrGlobal->srvrIdleTimerHandle);
-
-				sprintf(tmpString, "%ld", sts);
-				SendEventMsg(MSG_KRYPTON_ERROR, EVENTLOG_ERROR_TYPE,
-				srvrGlobal->nskProcessInfo.processId, ODBCMX_SERVER, srvrGlobal->srvrObjRef,
-					2, tmpString, FORMAT_LAST_ERROR());
-				SendEventMsg(MSG_SRVR_IDLE_TIMEOUT_ERROR, EVENTLOG_ERROR_TYPE,
-					srvrGlobal->nskProcessInfo.processId, ODBCMX_SERVER, srvrGlobal->srvrObjRef,
-					0);
-//LCOV_EXCL_STOP
-			}
-		}
-	}
 	delete asCallContext;
 	SRVRTRACE_EXIT(FILE_AME+10);
 }
 
-void SRVR::destroyConnIdleTimer()
-{
-	SRVRTRACE_ENTER(FILE_AME+11);
-	if (srvrGlobal != NULL && srvrGlobal->srvrState == SRVR_CONNECTED)
-	{
-		if (CEE_HANDLE_IS_NIL(&srvrGlobal->connIdleTimerHandle) == IDL_FALSE)
-		{
-			CEE_TIMER_DESTROY(&srvrGlobal->connIdleTimerHandle);
-			CEE_HANDLE_SET_NIL(&srvrGlobal->connIdleTimerHandle);
-		}
-	}
-	SRVRTRACE_EXIT(FILE_AME+11);
-}
-
-void SRVR::startConnIdleTimer()
+long SRVR::getConnIdleTimeout()
 {
-	SRVRTRACE_ENTER(FILE_AME+12);
-	CEE_status sts;
 	long connIdleTimeout = INFINITE_CONN_IDLE_TIMEOUT;
 
 	if (srvrGlobal != NULL && srvrGlobal->srvrState == SRVR_CONNECTED)
 	{
-		if (CEE_HANDLE_IS_NIL(&srvrGlobal->connIdleTimerHandle) == IDL_FALSE)
-		{
-			CEE_TIMER_DESTROY(&srvrGlobal->connIdleTimerHandle);
-			CEE_HANDLE_SET_NIL(&srvrGlobal->connIdleTimerHandle);
-		}
 		if ((srvrGlobal->drvrVersion.componentId == JDBC_DRVR_COMPONENT) && (srvrGlobal->javaConnIdleTimeout > JDBC_DATASOURCE_CONN_IDLE_TIMEOUT))
 		{
 			if (srvrGlobal->javaConnIdleTimeout != JDBC_INFINITE_CONN_IDLE_TIMEOUT)
@@ -4485,31 +4355,17 @@ void SRVR::startConnIdleTimer()
 		else if (srvrGlobal->srvrContext.connIdleTimeout != INFINITE_CONN_IDLE_TIMEOUT)
 		{
 			connIdleTimeout = (long)srvrGlobal->srvrContext.connIdleTimeout * 60;
-		}
-
-		if (connIdleTimeout != INFINITE_CONN_IDLE_TIMEOUT)
-		{
-			sts = CEE_TIMER_CREATE2((long)connIdleTimeout, 0,
-				connIdleTimerExpired, NULL, &srvrGlobal->connIdleTimerHandle,srvrGlobal->receiveThrId);
-			if (sts != CEE_SUCCESS)
-			{
-//LCOV_EXCL_START
-				char tmpString[32];
-
-				CEE_HANDLE_SET_NIL(&srvrGlobal->connIdleTimerHandle);
-
-				sprintf(tmpString, "%ld", sts);
-				SendEventMsg(MSG_KRYPTON_ERROR, EVENTLOG_ERROR_TYPE,
-				srvrGlobal->nskProcessInfo.processId, ODBCMX_SERVER, srvrGlobal->srvrObjRef,
-					2, tmpString, FORMAT_LAST_ERROR());
-				SendEventMsg(MSG_SRVR_IDLE_TIMEOUT_ERROR, EVENTLOG_ERROR_TYPE,
-					srvrGlobal->nskProcessInfo.processId, ODBCMX_SERVER, srvrGlobal->srvrObjRef,
-					0);
-//LCOV_EXCL_STOP
-			}
-		}
+       		}
 	}
-	SRVRTRACE_EXIT(FILE_AME+12);
+        return connIdleTimeout;
+}
+
+long SRVR::getSrvrIdleTimeout()
+{
+   long srvrIdleTimeout = INFINITE_SRVR_IDLE_TIMEOUT;
+   if (srvrGlobal->srvrContext.srvrIdleTimeout != INFINITE_SRVR_IDLE_TIMEOUT)
+      srvrIdleTimeout = (long)srvrGlobal->srvrContext.srvrIdleTimeout * 60;
+   return srvrIdleTimeout;
 }
 
 BOOL SRVR::updateSrvrState(SRVR_STATE srvrState)
@@ -4563,14 +4419,6 @@ BOOL SRVR::updateSrvrState(SRVR_STATE srvrState)
 		if( !result )
 			exitServerProcess();
 
-		// May be this TimerHandle is OLD Timer, Destroy it
-		if (CEE_HANDLE_IS_NIL(&srvrGlobal->connIdleTimerHandle) == IDL_FALSE)
-		{
-//LCOV_EXCL_START
-			CEE_TIMER_DESTROY(&srvrGlobal->connIdleTimerHandle);
-			CEE_HANDLE_SET_NIL(&srvrGlobal->connIdleTimerHandle);
-//LCOV_EXCL_STOP
-		}
 		// The server need to die, when disconnected, hence don't start any timer
 		if (srvrGlobal->stopTypeFlag == STOP_WHEN_DISCONNECTED)
 			break;
@@ -4586,35 +4434,6 @@ BOOL SRVR::updateSrvrState(SRVR_STATE srvrState)
 		srvrGlobal->bSkipASTimer = false;
 
 		CEE_TIMER_CREATE2(DEFAULT_AS_POLLING,0,ASTimerExpired,(CEE_tag_def)NULL, &srvrGlobal->ASTimerHandle,srvrGlobal->receiveThrId);
-
-		// Create SrvrIdleTimeout timer
-		if (srvrGlobal->srvrContext.srvrIdleTimeout != INFINITE_SRVR_IDLE_TIMEOUT)
-		{
-			if (CEE_HANDLE_IS_NIL(&srvrGlobal->srvrIdleTimerHandle) == IDL_FALSE)
-			{
-				CEE_TIMER_DESTROY(&srvrGlobal->srvrIdleTimerHandle);
-				CEE_HANDLE_SET_NIL(&srvrGlobal->srvrIdleTimerHandle);
-			}
-
-			sts = CEE_TIMER_CREATE2((long)srvrGlobal->srvrContext.srvrIdleTimeout * 60, 0, srvrIdleTimerExpired, NULL,
-				&srvrGlobal->srvrIdleTimerHandle,srvrGlobal->receiveThrId);
-			if (sts != CEE_SUCCESS)
-			{
-//LCOV_EXCL_START
-				CEE_HANDLE_SET_NIL(&srvrGlobal->srvrIdleTimerHandle);
-
-				sprintf(tmpString, "%ld", sts);
-				SendEventMsg(MSG_KRYPTON_ERROR, EVENTLOG_ERROR_TYPE,
-				srvrGlobal->nskProcessInfo.processId, ODBCMX_SERVER, srvrGlobal->srvrObjRef,
-					2, tmpString, FORMAT_LAST_ERROR());
-				SendEventMsg(MSG_SRVR_IDLE_TIMEOUT_ERROR, EVENTLOG_ERROR_TYPE,
-					srvrGlobal->nskProcessInfo.processId, ODBCMX_SERVER, srvrGlobal->srvrObjRef,
-					0);
-//LCOV_EXCL_STOP
-
-			}
-		}
-
 		break;
 	case SRVR_CONNECTED:
 		srvrGlobal->srvrState = srvrState;
@@ -4623,14 +4442,8 @@ BOOL SRVR::updateSrvrState(SRVR_STATE srvrState)
 		{
 			srvrGlobal->bSkipASTimer = true;
 		}
-		// Destory the srvrIdleTimeout timer
-		if (CEE_HANDLE_IS_NIL(&srvrGlobal->srvrIdleTimerHandle) == IDL_FALSE)
-		{
-			CEE_TIMER_DESTROY(&srvrGlobal->srvrIdleTimerHandle);
-			CEE_HANDLE_SET_NIL(&srvrGlobal->srvrIdleTimerHandle);
-		}
-	if( !updateZKState(CONNECTING, CONNECTED) )
-		exitServerProcess();
+		if( !updateZKState(CONNECTING, CONNECTED) )
+		      exitServerProcess();
 		break;
 	case SRVR_STOP_WHEN_DISCONNECTED:
 		if (srvrGlobal->cleanupByTime > 0)
@@ -4904,8 +4717,6 @@ odbc_SQLSrvr_Close_ame_(
 		srvrGlobal->traceLogger->TraceCloseEnter(dialogueId, stmtLabel, freeResourceOpt);
 	}
 
-	DESTROY_CONN_IDLE_TIMER
-
 	if (srvrGlobal != NULL && srvrGlobal->srvrType == CORE_SRVR)
 	{
 		if (srvrGlobal->srvrState == SRVR_CONNECTED)
@@ -4981,7 +4792,6 @@ odbc_SQLSrvr_Close_ame_(
 	}
 //LCOV_EXCL_STOP
 
-	START_CONN_IDLE_TIMER
 	SRVRTRACE_EXIT(FILE_AME+18);
 
 	return;
@@ -5421,38 +5231,8 @@ odbc_SQLSvc_UpdateServerContext_ame_(
 	else if (srvrGlobal->srvrState == SRVR_AVAILABLE)
 	{
 		UPDATE_SERVER_CONTEXT(srvrContext);
-
-		if (CEE_HANDLE_IS_NIL(&srvrGlobal->srvrIdleTimerHandle) == IDL_FALSE)
-		{
-			CEE_TIMER_DESTROY(&srvrGlobal->srvrIdleTimerHandle);
-			CEE_HANDLE_SET_NIL(&srvrGlobal->srvrIdleTimerHandle);
-		}
-
-		if (srvrGlobal->srvrContext.srvrIdleTimeout != INFINITE_SRVR_IDLE_TIMEOUT)
-		{
-			sts = CEE_TIMER_CREATE2((long)srvrGlobal->srvrContext.srvrIdleTimeout * 60, 0, srvrIdleTimerExpired, NULL,
-				&srvrGlobal->srvrIdleTimerHandle,srvrGlobal->receiveThrId);
-
-			if (sts != CEE_SUCCESS)
-			{
-//LCOV_EXCL_START
-				char tmpString[30];
-				CEE_HANDLE_SET_NIL(&srvrGlobal->srvrIdleTimerHandle);
-				sprintf(tmpString, "%ld", sts);
-				SendEventMsg(MSG_KRYPTON_ERROR, EVENTLOG_ERROR_TYPE,
-				srvrGlobal->nskProcessInfo.processId, ODBCMX_SERVER, srvrGlobal->srvrObjRef,
-					2, tmpString, FORMAT_LAST_ERROR());
-				SendEventMsg(MSG_SRVR_IDLE_TIMEOUT_ERROR, EVENTLOG_ERROR_TYPE,
-					srvrGlobal->nskProcessInfo.processId, ODBCMX_SERVER, srvrGlobal->srvrObjRef,
-					0);
-//LCOV_EXCL_STOP
-			}
-		}
-		if (CEE_HANDLE_IS_NIL(&srvrGlobal->connIdleTimerHandle) == IDL_FALSE)
-		{
-			destroyConnIdleTimer();
-		}
 	}
+
 	else
 		exception.exception_nr = odbc_SQLSvc_UpdateServerContext_SQLError_exn_;
 
@@ -7255,9 +7035,6 @@ odbc_SQLSrvr_Prepare_ame_(
 			sqlString, sqlStringCharset, setStmtOptionsLength, setStmtOptions, txnID, holdableCursor);
 	}
 
-
-	DESTROY_CONN_IDLE_TIMER
-
 	if (srvrGlobal != NULL && srvrGlobal->srvrType == CORE_SRVR)
 	{
 		if (srvrGlobal->srvrState == SRVR_CONNECTED)
@@ -7441,7 +7218,6 @@ odbc_SQLSrvr_Prepare_ame_(
 		outputDescLength, outputDesc);
 	}
 
-	START_CONN_IDLE_TIMER
 	SRVRTRACE_EXIT(FILE_AME+19);
 
 #ifdef PERF_TEST
@@ -7491,8 +7267,6 @@ odbc_SQLSrvr_Fetch_ame_(
 												  , (long)srvrGlobal->fetchAhead);
 	}
 
-	DESTROY_CONN_IDLE_TIMER
-
 	bool firstFetch = false;
 	SRVR_STMT_HDL *pSrvrStmt = (SRVR_STMT_HDL *)stmtHandle;
 	if(pSrvrStmt == NULL)
@@ -7769,7 +7543,6 @@ FETCH_EXIT:
 							    outValues);
 	}
 
-	START_CONN_IDLE_TIMER
 	SRVRTRACE_EXIT(FILE_AME+37);
 	return;
 
@@ -7850,7 +7623,6 @@ odbc_SQLSrvr_ExecDirect_ame_(
 							      sqlString, sqlAsyncEnable, queryTimeout);
 	}
 
-	DESTROY_CONN_IDLE_TIMER
 	if (srvrGlobal != NULL && srvrGlobal->srvrType == CORE_SRVR)
 	{
 		if (srvrGlobal->srvrState == SRVR_CONNECTED)
@@ -8133,8 +7905,6 @@ cfgerrexit:
 							     rowsAffected, sqlWarning);
 	}
 
-	START_CONN_IDLE_TIMER
-
 	SRVRTRACE_EXIT(FILE_AME+23);
 
 #ifdef PERF_TEST
@@ -8210,9 +7980,6 @@ odbc_SQLSrvr_Execute2_ame_(
 	   GETMXCSWARNINGORERROR(-1, "HY000", "Invalid Statement Handle.", &sqlWarningOrErrorLength, sqlWarningOrError);
 	}
 
-   DESTROY_CONN_IDLE_TIMER
-
-
 	if (pSrvrStmt != NULL) {
 	   paramCount = pSrvrStmt->paramCount;
 	   if ( pSrvrStmt->sqlQueryType == SQL_RWRS_SPECIAL_INSERT)
@@ -8408,7 +8175,6 @@ odbc_SQLSrvr_Execute2_ame_(
 		rowsAffected, outValuesLength, outValues);
 	}
 
-    START_CONN_IDLE_TIMER
 	SRVRTRACE_EXIT(FILE_AME+19);
 
 #ifdef PERF_TEST
@@ -8442,8 +8208,6 @@ odbc_SQLSrvr_SetConnectionOption_ame_(
 								 optionValueNum, optionValueStr);
 	}
 
-	DESTROY_CONN_IDLE_TIMER
-
 	if (srvrGlobal != NULL && srvrGlobal->srvrType == CORE_SRVR)
 	{
 		if (srvrGlobal->srvrState == SRVR_CONNECTED)
@@ -8469,7 +8233,6 @@ odbc_SQLSrvr_SetConnectionOption_ame_(
 		srvrGlobal->traceLogger->TraceConnectOptionExit(exception_, sqlWarning);
 	}
 
-	START_CONN_IDLE_TIMER
 	SRVRTRACE_EXIT(FILE_AME+21);
 
 } // odbc_SQLSrvr_SetConnectionOption_ame_()
@@ -8492,8 +8255,6 @@ odbc_SQLSrvr_EndTransaction_ame_(
 		srvrGlobal->traceLogger->TraceEndTransactEnter(dialogueId, transactionOpt);
 	}
 
-	DESTROY_CONN_IDLE_TIMER
-
 	if (srvrGlobal != NULL && srvrGlobal->srvrType == CORE_SRVR)
 	{
 		if (srvrGlobal->srvrState == SRVR_CONNECTED)
@@ -8518,7 +8279,6 @@ odbc_SQLSrvr_EndTransaction_ame_(
 		srvrGlobal->traceLogger->TraceEndTransactExit(exception_, sqlWarning);
 	}
 
-	START_CONN_IDLE_TIMER
 	SRVRTRACE_EXIT(FILE_AME+20);
 	return;
 

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/acfb5b29/core/conn/odbc/src/odbc/nsksrvr/SrvrConnect.h
----------------------------------------------------------------------
diff --git a/core/conn/odbc/src/odbc/nsksrvr/SrvrConnect.h b/core/conn/odbc/src/odbc/nsksrvr/SrvrConnect.h
index 66556e8..852293e 100644
--- a/core/conn/odbc/src/odbc/nsksrvr/SrvrConnect.h
+++ b/core/conn/odbc/src/odbc/nsksrvr/SrvrConnect.h
@@ -108,7 +108,6 @@ BOOL checkIfASSvcLives( void );
 void __cdecl SrvrSessionCleanup(void);
 bool __cdecl CompilerCacheReset(char *errorMsg);
 void __cdecl BreakDialogue(CEE_tag_def monitor_tag);
-void __cdecl connIdleTimerExpired(CEE_tag_def timer_tag);
 
 extern void __cdecl srvrIdleTimerExpired(CEE_tag_def timer_tag);
 extern void exitServerProcess();
@@ -121,6 +120,8 @@ extern void UPDATE_SERVER_CONTEXT(const SRVR_CONTEXT_def *srvrContext);
 extern void UPDATE_SERVER_WAITED(IDL_long TraceType, IDL_long StatisticsType, IDL_long ContextType,const SRVR_CONTEXT_def *srvrContext);
 extern BOOL updateSrvrState(_SRVR_STATE srvrState);
 extern void RegisterSrvr(char* IpAddress, char* HostName);
+extern long getConnIdleTimeout();
+extern long getSrvrIdleTimeout();
 
 extern "C" void
 odbc_SQLSvc_Prepare2_ame_(

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/acfb5b29/core/conn/odbc/src/odbc/nsksrvr/SrvrSMD.cpp
----------------------------------------------------------------------
diff --git a/core/conn/odbc/src/odbc/nsksrvr/SrvrSMD.cpp b/core/conn/odbc/src/odbc/nsksrvr/SrvrSMD.cpp
index 09d6f9c..4c4abc3 100644
--- a/core/conn/odbc/src/odbc/nsksrvr/SrvrSMD.cpp
+++ b/core/conn/odbc/src/odbc/nsksrvr/SrvrSMD.cpp
@@ -190,9 +190,6 @@ odbc_SQLSrvr_GetSQLCatalogs_ame_(
 	}
 //LCOV_EXCL_STOP
 		
-	if (srvrGlobal != NULL && srvrGlobal->srvrState == SRVR_CONNECTED && srvrGlobal->srvrContext.connIdleTimeout != INFINITE_CONN_IDLE_TIMEOUT)
-		destroyConnIdleTimer();
-
 	if (srvrGlobal != NULL && srvrGlobal->srvrType == CORE_SRVR)
 	{
 		if (srvrGlobal->srvrState == SRVR_CONNECTED)
@@ -230,8 +227,5 @@ odbc_SQLSrvr_GetSQLCatalogs_ame_(
 								 outputDesc, sqlWarning);
 	}
 	
-	if (srvrGlobal != NULL && srvrGlobal->srvrState == SRVR_CONNECTED && srvrGlobal->srvrContext.connIdleTimeout != INFINITE_CONN_IDLE_TIMEOUT)
-		startConnIdleTimer();
-
 } // odbc_SQLSrvr_GetSQLCatalogs_ame_
 

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/acfb5b29/core/conn/odbc/src/odbc/nsksrvrcore/srvrcommon.h
----------------------------------------------------------------------
diff --git a/core/conn/odbc/src/odbc/nsksrvrcore/srvrcommon.h b/core/conn/odbc/src/odbc/nsksrvrcore/srvrcommon.h
index 6ed6692..ff17d90 100644
--- a/core/conn/odbc/src/odbc/nsksrvrcore/srvrcommon.h
+++ b/core/conn/odbc/src/odbc/nsksrvrcore/srvrcommon.h
@@ -161,8 +161,6 @@ extern short execDirectSQLQuery(SRVR_STMT_HDL *pSrvrStmt, char *pSqlStr,
 // in one of their module.
 // This is done to minimize the compilcations in project settings and also it is felt that
 // each DLL may have different implementation for these functions
-extern void destroyConnIdleTimer();
-extern void startConnIdleTimer();
 
 extern short executeSQLQuery( CEE_tag_def objtag_
 				  , const CEE_handle_def *call_id_


[3/3] incubator-trafodion git commit: Merge PR1273 [TRAFODION-2780] The mxosrvr dumps core when connection idle timer expires

Posted by se...@apache.org.
Merge PR1273 [TRAFODION-2780] The mxosrvr dumps core when connection idle timer expires


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

Branch: refs/heads/master
Commit: ea24774d76f1ab9bafaffe15c950033af28a527e
Parents: dabad9a 2d1f9cd
Author: selvaganesang <se...@apache.org>
Authored: Mon Oct 23 22:07:59 2017 +0000
Committer: selvaganesang <se...@apache.org>
Committed: Mon Oct 23 22:07:59 2017 +0000

----------------------------------------------------------------------
 core/conn/odbc/src/odbc/Common/Global.h         |   2 -
 .../Interface/linux/Listener_srvr_ps.cpp        |  79 ++++--
 core/conn/odbc/src/odbc/nsksrvr/SrvrConnect.cpp | 268 ++-----------------
 core/conn/odbc/src/odbc/nsksrvr/SrvrConnect.h   |   3 +-
 core/conn/odbc/src/odbc/nsksrvr/SrvrSMD.cpp     |   6 -
 .../conn/odbc/src/odbc/nsksrvrcore/srvrcommon.h |   2 -
 6 files changed, 80 insertions(+), 280 deletions(-)
----------------------------------------------------------------------



[2/3] incubator-trafodion git commit: [TRAFODION-2780] The mxosrvr dumps core when connection idle timer expires

Posted by se...@apache.org.
[TRAFODION-2780] The mxosrvr dumps core when connection idle timer expires

Changes as per review


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

Branch: refs/heads/master
Commit: 2d1f9cde69285868f87fb33e318840b46d6d8725
Parents: acfb5b2
Author: selvaganesang <se...@esgyn.com>
Authored: Mon Oct 23 18:27:27 2017 +0000
Committer: selvaganesang <se...@esgyn.com>
Committed: Mon Oct 23 18:27:27 2017 +0000

----------------------------------------------------------------------
 core/conn/odbc/src/odbc/nsksrvr/SrvrConnect.cpp | 2 ++
 1 file changed, 2 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/2d1f9cde/core/conn/odbc/src/odbc/nsksrvr/SrvrConnect.cpp
----------------------------------------------------------------------
diff --git a/core/conn/odbc/src/odbc/nsksrvr/SrvrConnect.cpp b/core/conn/odbc/src/odbc/nsksrvr/SrvrConnect.cpp
index 7df82f3..95459a1 100644
--- a/core/conn/odbc/src/odbc/nsksrvr/SrvrConnect.cpp
+++ b/core/conn/odbc/src/odbc/nsksrvr/SrvrConnect.cpp
@@ -1176,6 +1176,8 @@ ImplInit (
    srvrGlobal->receiveThrId = getpid();
    timer_register();
 
+   CEE_HANDLE_SET_NIL(&StatisticsTimerHandle);
+
 	srvrGlobal->srvrVersion.componentId = 0; // Unknown
 	if (srvrGlobal->srvrVersion.componentId == 0)
 	{