You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafodion.apache.org by li...@apache.org on 2018/04/17 02:17:47 UTC
[1/3] trafodion git commit: [TRAFODION-3003]Trafodion keepalive
support
Repository: trafodion
Updated Branches:
refs/heads/master c826bceb5 -> 6e39af244
[TRAFODION-3003]Trafodion keepalive support
Keepalive could be configured by modifying file src/main/java/org/trafodion/dcs/Constants.java
Modify variable DCS_SERVER_PROGRAM_TCP_KEEPALIVE_STATUS/IDLETIME/INTERVAL/RETRYCOUNT;
DCS_SERVER_PROGRAM_TCP_KEEPALIVE_STATUS has three value:enable,default,unenable;
Default value is enable,300,3,20(Only effective when value configured is set incorrectly)
The value will be read in when mxosrvr start. Mxosrvr will set the socket after getting a connection.
Project: http://git-wip-us.apache.org/repos/asf/trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafodion/commit/1b19b963
Tree: http://git-wip-us.apache.org/repos/asf/trafodion/tree/1b19b963
Diff: http://git-wip-us.apache.org/repos/asf/trafodion/diff/1b19b963
Branch: refs/heads/master
Commit: 1b19b963c8284f974a76e8eed8d7cd433a536024
Parents: e3575e5
Author: Haolin.song <40...@qq.com>
Authored: Tue Mar 20 15:31:31 2018 +0000
Committer: Haolin.song <40...@qq.com>
Committed: Tue Mar 27 19:22:47 2018 +0000
----------------------------------------------------------------------
core/conn/odbc/src/odbc/Common/Global.h | 15 +++-
core/conn/odbc/src/odbc/Common/Listener.h | 9 ++-
.../odbc/nsksrvr/Interface/Listener_srvr.cpp | 47 ++++++++++-
.../src/odbc/nsksrvr/Interface/Listener_srvr.h | 4 +-
.../Interface/linux/Listener_srvr_ps.cpp | 7 +-
core/conn/odbc/src/odbc/nsksrvr/SrvrMain.cpp | 83 +++++++++++++++++++-
core/conn/odbc/src/odbc/nsksrvrcore/Makefile | 2 +-
.../main/java/org/trafodion/dcs/Constants.java | 25 +++++-
.../org/trafodion/dcs/server/ServerManager.java | 24 ++++++
dcs/src/main/resources/dcs-default.xml | 29 +++++++
10 files changed, 234 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/trafodion/blob/1b19b963/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 09f39bc..8dc22cf 100644
--- a/core/conn/odbc/src/odbc/Common/Global.h
+++ b/core/conn/odbc/src/odbc/Common/Global.h
@@ -139,10 +139,16 @@ class ODBCMXTraceMsg;
#define DEFAULT_REFRESH_RATE_SECS 60
#define DEFAULT_SRVR_IDLE_TIMEOUT 0
#define DEFAULT_CONN_IDLE_TIMEOUT 0
+#define DEFAULT_KEEPALIVE 1 //OPEN KEEPALIVE
+#define DEFAULT_KEEPALIVE_TIMESEC 3600
+#define DEFAULT_KEEPALIVE_COUNT 3
+#define DEFAULT_KEEPALIVE_INTVL 20
#define INFINITE_SRVR_IDLE_TIMEOUT -1
#define INFINITE_CONN_IDLE_TIMEOUT -1
#define STATE_TRANSITION_TIMEOUT_SECS 300
+#define CLIENT_KEEPALIVE_ATTR_TIMEOUT 3001
+
#define JDBC_ATTR_CONN_IDLE_TIMEOUT 3000
#define JDBC_DATASOURCE_CONN_IDLE_TIMEOUT -1L
#define JDBC_INFINITE_CONN_IDLE_TIMEOUT 0
@@ -935,7 +941,10 @@ typedef struct _SRVR_GLOBAL_Def
bzero(m_ProcName,sizeof(m_ProcName));
m_bNewConnection = false;
m_bNewService = false;
-
+ bzero(clientKeepaliveStatus, sizeof(clientKeepaliveStatus));
+ clientKeepaliveIdletime = 0;
+ clientKeepaliveIntervaltime = 0;
+ clientKeepaliveRetrycount = 0;
m_rule_wms_off = false; // perf
m_rule_endstats_off = false;// perf
@@ -1053,6 +1062,10 @@ typedef struct _SRVR_GLOBAL_Def
tip_handle_t tip_gateway;
+ char clientKeepaliveStatus[64];
+ int clientKeepaliveIdletime;
+ int clientKeepaliveIntervaltime;
+ int clientKeepaliveRetrycount;
char *pxid_url;
IDL_long_long local_xid;
UINT xid_length;
http://git-wip-us.apache.org/repos/asf/trafodion/blob/1b19b963/core/conn/odbc/src/odbc/Common/Listener.h
----------------------------------------------------------------------
diff --git a/core/conn/odbc/src/odbc/Common/Listener.h b/core/conn/odbc/src/odbc/Common/Listener.h
index 028f437..670161b 100644
--- a/core/conn/odbc/src/odbc/Common/Listener.h
+++ b/core/conn/odbc/src/odbc/Common/Listener.h
@@ -26,7 +26,7 @@
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
-
+#include <netinet/tcp.h>
enum CURR_TCPIP_OPER{
CURR_UNDEFINED,
CURR_OPEN,
@@ -34,6 +34,13 @@ enum CURR_TCPIP_OPER{
CURR_OTHER
};
+typedef struct KEEPALIVE_OPT{
+ int isKeepalive;
+ int keepaliveIdle;
+ int keepaliveInterval;
+ int keepCount;
+};
+
#define INITIALIZE_TRACE(TransportTrace) \
m_TransportTrace = TransportTrace; \
if (m_TransportTrace) { \
http://git-wip-us.apache.org/repos/asf/trafodion/blob/1b19b963/core/conn/odbc/src/odbc/nsksrvr/Interface/Listener_srvr.cpp
----------------------------------------------------------------------
diff --git a/core/conn/odbc/src/odbc/nsksrvr/Interface/Listener_srvr.cpp b/core/conn/odbc/src/odbc/nsksrvr/Interface/Listener_srvr.cpp
index a7d358d..bdd40ce 100644
--- a/core/conn/odbc/src/odbc/nsksrvr/Interface/Listener_srvr.cpp
+++ b/core/conn/odbc/src/odbc/nsksrvr/Interface/Listener_srvr.cpp
@@ -27,7 +27,7 @@
#include "Global.h"
-//extern SRVR_GLOBAL_Def *srvrGlobal; // needed in the platform specific implementation file
+extern SRVR_GLOBAL_Def *srvrGlobal; // needed in the platform specific implementation file
//extern void flushCollectors(); // needed in the platform specific implementation file
CNSKListenerSrvr::CNSKListenerSrvr()
@@ -81,4 +81,49 @@ void CNSKListenerSrvr::TCP_PROCESSNAME_PORT(FILE* fp)
fprintf(fp,"<==========TCP/PORT (%s/%d)==========>\n",m_TcpProcessName, m_port);
}
+void CNSKListenerSrvr::TCP_SetKeepalive(int socketnum,
+ char *keepaliveStatus,
+ int idleTime,
+ int intervalTime,
+ int retryCount)
+{
+ //all need to be configured
+ if(NULL == keepaliveStatus){
+ return;
+ }
+ if(0 == strcmp(keepaliveStatus,"default")){
+ keepaliveOpt.isKeepalive = DEFAULT_KEEPALIVE;
+ keepaliveOpt.keepaliveIdle = DEFAULT_KEEPALIVE_TIMESEC;
+ keepaliveOpt.keepaliveInterval = DEFAULT_KEEPALIVE_INTVL;
+ keepaliveOpt.keepCount = DEFAULT_KEEPALIVE_COUNT;
+ }else
+ if(0 == strcmp(keepaliveStatus,"unenable")){
+ keepaliveOpt.isKeepalive = 0;
+ keepaliveOpt.keepaliveIdle = DEFAULT_KEEPALIVE_TIMESEC;
+ keepaliveOpt.keepaliveInterval = DEFAULT_KEEPALIVE_INTVL;
+ keepaliveOpt.keepCount = DEFAULT_KEEPALIVE_COUNT;
+ }else
+ if(0 == strcmp(keepaliveStatus, "enable")){
+ keepaliveOpt.isKeepalive = 1;
+ keepaliveOpt.keepaliveIdle = idleTime;
+ keepaliveOpt.keepaliveInterval = intervalTime;
+ keepaliveOpt.keepCount = retryCount;
+
+ }else{
+ keepaliveOpt.isKeepalive = 0;
+ keepaliveOpt.keepaliveIdle = DEFAULT_KEEPALIVE_TIMESEC;
+ keepaliveOpt.keepaliveInterval = DEFAULT_KEEPALIVE_INTVL;
+ keepaliveOpt.keepCount = DEFAULT_KEEPALIVE_COUNT;
+ }
+ int error;
+ error += setsockopt(socketnum, SOL_SOCKET, SO_KEEPALIVE, (void *)&keepaliveOpt.isKeepalive , sizeof(keepaliveOpt.isKeepalive));
+ error += setsockopt(socketnum, SOL_TCP, TCP_KEEPIDLE, (void*)&keepaliveOpt.keepaliveIdle , sizeof(keepaliveOpt.keepaliveIdle ));
+ error += setsockopt(socketnum, SOL_TCP, TCP_KEEPINTVL, (void *)&keepaliveOpt.keepaliveInterval , sizeof(keepaliveOpt.keepaliveInterval ));
+ error += setsockopt(socketnum, SOL_TCP, TCP_KEEPCNT, (void *)&keepaliveOpt.keepCount , sizeof(keepaliveOpt.keepCount ));
+
+ if (error != 0){
+ SET_WARNING((long)0, NSK, TCPIP, UNKNOWN_API, errorType_,
+ "set socket keepalive opt error", O_INIT_PROCESS, F_SOCKET, 0, 0);
+ }
+}
http://git-wip-us.apache.org/repos/asf/trafodion/blob/1b19b963/core/conn/odbc/src/odbc/nsksrvr/Interface/Listener_srvr.h
----------------------------------------------------------------------
diff --git a/core/conn/odbc/src/odbc/nsksrvr/Interface/Listener_srvr.h b/core/conn/odbc/src/odbc/nsksrvr/Interface/Listener_srvr.h
index aab35d6..9a5d010 100644
--- a/core/conn/odbc/src/odbc/nsksrvr/Interface/Listener_srvr.h
+++ b/core/conn/odbc/src/odbc/nsksrvr/Interface/Listener_srvr.h
@@ -47,8 +47,8 @@ public:
long getPort() { return m_port; };
void closeTCPIPSession(int fnum);
-
-
+ KEEPALIVE_OPT keepaliveOpt;
+ void TCP_SetKeepalive(int socketnum, char *keepaliveStatus, int idleTime, int intervalTime, int retryCount);
protected:
long m_port;
CURR_TCPIP_OPER m_tcpip_operation;
http://git-wip-us.apache.org/repos/asf/trafodion/blob/1b19b963/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 9655349..b4cbcff 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
@@ -263,7 +263,11 @@ void* CNSKListenerSrvr::OpenTCPIPSession()
//LCOV_EXCL_STOP
}
-
+ TCP_SetKeepalive(nSocketFnum,
+ srvrGlobal->clientKeepaliveStatus,
+ srvrGlobal->clientKeepaliveIdletime,
+ srvrGlobal->clientKeepaliveIntervaltime,
+ srvrGlobal->clientKeepaliveRetrycount);
pnode = GTransport.m_TCPIPSystemSrvr_list->ins_node(nSocketFnum);
if (pnode == NULL)
@@ -444,6 +448,7 @@ void * CNSKListenerSrvr::tcpip_listener(void *arg)
{
GTransport.m_TCPIPSystemSrvr_list->del_node(pnode->m_nSocketFnum);
+ SET_ERROR((long)0, NSK, TCPIP, UNKNOWN_API, E_SERVER,"tcpip_listener", O_SELECT, F_SELECT,errno, pnode->m_nSocketFnum);
SRVR::BreakDialogue(NULL);
}
else
http://git-wip-us.apache.org/repos/asf/trafodion/blob/1b19b963/core/conn/odbc/src/odbc/nsksrvr/SrvrMain.cpp
----------------------------------------------------------------------
diff --git a/core/conn/odbc/src/odbc/nsksrvr/SrvrMain.cpp b/core/conn/odbc/src/odbc/nsksrvr/SrvrMain.cpp
index 20ebd2a..52e4ce1 100644
--- a/core/conn/odbc/src/odbc/nsksrvr/SrvrMain.cpp
+++ b/core/conn/odbc/src/odbc/nsksrvr/SrvrMain.cpp
@@ -95,7 +95,10 @@ long initSessMemSize;
int portMapToSecs = -1;
int portBindToSecs = -1;
bool bPlanEnabled = false;
-
+char keepaliveStatus[256];
+int keepaliveIdletime;
+int keepaliveIntervaltime;
+int keepaliveRetrycount;
void watcher(zhandle_t *zzh, int type, int state, const char *path, void *watcherCtx);
bool verifyPortAvailable(const char * idForPort, int portNumber);
BOOL getInitParamSrvr(int argc, char *argv[], SRVR_INIT_PARAM_Def &initParam, char* strName, char* strValue);
@@ -791,7 +794,14 @@ catch(SB_Fatal_Excep sbfe)
//LCOV_EXCL_STOP
}
}
-
+ if( strlen(keepaliveStatus) > 0){
+ strncpy( srvrGlobal->clientKeepaliveStatus, keepaliveStatus, strlen(keepaliveStatus));
+ srvrGlobal->clientKeepaliveIntervaltime = keepaliveIntervaltime;
+ srvrGlobal->clientKeepaliveIdletime = keepaliveIdletime;
+ srvrGlobal->clientKeepaliveRetrycount = keepaliveRetrycount;
+ }else{
+ strncpy( srvrGlobal->clientKeepaliveStatus, "unenable", strlen("unenable"));
+ }
// TCPADD and RZ are required parameters.
// The address is passed in with TCPADD parameter .
// The hostname is passed in with RZ parameter.
@@ -1427,7 +1437,74 @@ BOOL getInitParamSrvr(int argc, char *argv[], SRVR_INIT_PARAM_Def &initParam, ch
argEmpty = TRUE;
break;
}
- }
+ }else
+ if (strcmp(arg, "-TCPKEEPALIVESTATUS") == 0){
+ if (++count < argc && argv[count][0] != '-')
+ {
+ if (strlen(argv[count]) < sizeof(keepaliveStatus) - 1)
+ {
+ memset(keepaliveStatus, 0, sizeof(keepaliveStatus) - 1);
+ strncpy(keepaliveStatus, argv[count], sizeof(keepaliveStatus) - 1);
+ }
+ else
+ {
+ argWrong = TRUE;
+ }
+ }
+ else
+ {
+ argEmpty = TRUE;
+ break;
+ }
+ }else
+ if (strcmp(arg, "-TCPKEEPALIVEIDLETIME") == 0){
+ if (++count < argc )
+ {
+ if(strspn(argv[count], "0123456789")==strlen(argv[count])){
+ keepaliveIdletime = atoi(argv[count]);
+ }else
+ {
+ argWrong = TRUE;
+ }
+ }
+ else
+ {
+ argEmpty = TRUE;
+ break;
+ }
+ }else
+ if (strcmp(arg, "-TCPKEEPALIVEINTERVAL") == 0){
+ if (++count < argc )
+ {
+ if(strspn(argv[count], "0123456789")==strlen(argv[count])){
+ keepaliveIntervaltime = atoi(argv[count]);
+ }else
+ {
+ argWrong = TRUE;
+ }
+ }
+ else
+ {
+ argEmpty = TRUE;
+ break;
+ }
+ }else
+ if (strcmp(arg, "-TCPKEEPALIVERETRYCOUNT") == 0){
+ if (++count < argc )
+ {
+ if(strspn(argv[count], "0123456789")==strlen(argv[count])){
+ keepaliveRetrycount = atoi(argv[count]);
+ }else
+ {
+ argWrong = TRUE;
+ }
+ }
+ else
+ {
+ argEmpty = TRUE;
+ break;
+ }
+ }
count++;
}
http://git-wip-us.apache.org/repos/asf/trafodion/blob/1b19b963/core/conn/odbc/src/odbc/nsksrvrcore/Makefile
----------------------------------------------------------------------
diff --git a/core/conn/odbc/src/odbc/nsksrvrcore/Makefile b/core/conn/odbc/src/odbc/nsksrvrcore/Makefile
index ea7af7f..1de3061 100644
--- a/core/conn/odbc/src/odbc/nsksrvrcore/Makefile
+++ b/core/conn/odbc/src/odbc/nsksrvrcore/Makefile
@@ -64,7 +64,7 @@ OBJS = $(OUTDIR)/CommonDiags.o \
$(OUTDIR)/srvrothers.o \
$(OUTDIR)/libmxocore_version.o
-INCLUDES = -I. -I../Common -I../EventMsgs -I../SrvrMsg -I../dependencies/include -I../dependencies/linux -I../Krypton/generated_incs -I$(TRAF_HOME)/export/include/sql -I$(TRAF_HOME)/inc/tmf_tipapi -I$(TRAF_HOME)/inc -I$(TRAF_HOME)/export/include -I$(TRAF_HOME)/sql/nq_w/common -I../OssCfgCl/src -I../CmdCfgDll -I$(PROTOBUFS_INC) -I$(TRAF_HOME)/../sql/cli -I$(TRAF_HOME)/commonLogger -I$(TRAF_HOME)/../dbsecurity/cert/inc -I$(TRAF_HOME)/../dbsecurity/auth/inc -I$(LOG4CXX_INC_DIR) -I$(TRAF_HOME)/../mpi/src/include/intern
+INCLUDES = -I. -I ../nsksrvr/Interface/ -I../Common -I../EventMsgs -I../SrvrMsg -I../dependencies/include -I../dependencies/linux -I../Krypton/generated_incs -I$(TRAF_HOME)/export/include/sql -I$(TRAF_HOME)/inc/tmf_tipapi -I$(TRAF_HOME)/inc -I$(TRAF_HOME)/export/include -I$(TRAF_HOME)/sql/nq_w/common -I../OssCfgCl/src -I../CmdCfgDll -I$(PROTOBUFS_INC) -I$(TRAF_HOME)/../sql/cli -I$(TRAF_HOME)/commonLogger -I$(TRAF_HOME)/../dbsecurity/cert/inc -I$(TRAF_HOME)/../dbsecurity/auth/inc -I$(LOG4CXX_INC_DIR) -I$(TRAF_HOME)/../mpi/src/include/intern
DEFINES = -DNA_LINUX -DSIZEOF_LONG_INT=4 -DUSE_NEW_PHANDLE -DSQ_GUARDIAN_CALL -D_M_DG -DINC_QPID_EVENT -w
http://git-wip-us.apache.org/repos/asf/trafodion/blob/1b19b963/dcs/src/main/java/org/trafodion/dcs/Constants.java
----------------------------------------------------------------------
diff --git a/dcs/src/main/java/org/trafodion/dcs/Constants.java b/dcs/src/main/java/org/trafodion/dcs/Constants.java
index 3f88437..de51773 100644
--- a/dcs/src/main/java/org/trafodion/dcs/Constants.java
+++ b/dcs/src/main/java/org/trafodion/dcs/Constants.java
@@ -92,7 +92,7 @@ public final class Constants {
public static final String DCS_SERVER_USER_PROGRAM_COMMAND = "dcs.server.user.program.command";
/** Default value for DCS server user program command */
- public static final String DEFAULT_DCS_SERVER_USER_PROGRAM_COMMAND = "cd ${dcs.user.program.home};. ./sqenv.sh;mxosrvr -ZKHOST -RZ -ZKPNODE -CNGTO -ZKSTO -EADSCO -TCPADD -MAXHEAPPCT -STATISTICSINTERVAL -STATISTICSLIMIT -STATISTICSTYPE -STATISTICSENABLE -SQLPLAN -PORTMAPTOSECS -PORTBINDTOSECS";
+ public static final String DEFAULT_DCS_SERVER_USER_PROGRAM_COMMAND = "cd ${dcs.user.program.home};. ./sqenv.sh;mxosrvr -ZKHOST -RZ -ZKPNODE -CNGTO -ZKSTO -EADSCO -TCPADD -MAXHEAPPCT -STATISTICSINTERVAL -STATISTICSLIMIT -STATISTICSTYPE -STATISTICSENABLE -SQLPLAN -PORTMAPTOSECS -PORTBINDTOSECS -TCPKEEPALIVESTATUS -TCPKEEPALIVEIDLETIME -TCPKEEPALIVEINTERVAL -TCPKEEPALIVERETRYCOUNT";
/** Configuration key for DCS server user program connecting timeout */
public static final String DCS_SERVER_USER_PROGRAM_CONNECTING_TIMEOUT = "dcs.server.user.program.connecting.timeout";
@@ -112,6 +112,29 @@ public final class Constants {
/** Default value for DCS server user program exit after disconnect */
public static final int DEFAULT_DCS_SERVER_USER_PROGRAM_EXIT_AFTER_DISCONNECT = 0;
+ /** Configuration key for DCS server program mxosrvr keepalive STATUS*/
+ public static final String DEFAULT_DCS_SERVER_PROGRAM_TCP_KEEPALIVE_STATUS= "dcs.server.user.program.tcp.keepalive.status";
+
+ /** Default value for DCS server program mxosrvr keepalive STATUS*/
+ public static final String DCS_SERVER_PROGRAM_KEEPALIVE_STATUS = "enable";
+
+ /** Configuration key for DCS server program mxosrvr keepalive IDLETIME*/
+ public static final String DEFAULT_DCS_SERVER_PROGRAM_TCP_KEEPALIVE_IDLETIME = "dcs.server.user.program.tcp.keepalive.idletime";
+
+ /** Default value for DCS server program mxosrvr keepalive IDLETIME*/
+ public static final int DCS_SERVER_PROGRAM_KEEPALIVE_IDLETIME = 300;
+
+ /** Configuration key for DCS server program mxosrvr keepalive INTERTIME */
+ public static final String DEFAULT_DCS_SERVER_PROGRAM_TCP_KEEPALIVE_INTERVALTIME = "dcs.server.user.program.tcp.keepalive.intervaltime";
+
+ /** Default value for DCS server program mxosrvr keepalive INTERTIME */
+ public static final int DCS_SERVER_PROGRAM_KEEPALIVE_INTERVALTIME = 5;
+
+ /** Configuration key for DCS server program mxosrvr keepalive RETRYCNT*/
+ public static final String DEFAULT_DCS_SERVER_PROGRAM_TCP_KEEPALIVE_RETRYCOUNT = "dcs.server.user.program.tcp.keepalive.retrycount";
+
+ /** Default value for DCS server program mxosrvr keepalive RETRYCNT*/
+ public static final int DCS_SERVER_PROGRAM_KEEPALIVE_RETRYCOUNT = 3;
/**
* Configuration key for DCS server user program exit when heap size becomes
* too large
http://git-wip-us.apache.org/repos/asf/trafodion/blob/1b19b963/dcs/src/main/java/org/trafodion/dcs/server/ServerManager.java
----------------------------------------------------------------------
diff --git a/dcs/src/main/java/org/trafodion/dcs/server/ServerManager.java b/dcs/src/main/java/org/trafodion/dcs/server/ServerManager.java
index 89186d5..23e5721 100644
--- a/dcs/src/main/java/org/trafodion/dcs/server/ServerManager.java
+++ b/dcs/src/main/java/org/trafodion/dcs/server/ServerManager.java
@@ -83,6 +83,10 @@ public final class ServerManager implements Callable {
private int maxRestartAttempts;
private int retryIntervalMillis;
private String nid = null;
+ private static String mxosrvrKeepaliveStatus;
+ private static int mxosrvrKeepaliveIdletime;
+ private static int mxosrvrKeepaliveIntervaltime;
+ private static int mxosrvrKeepaliveRetrycount;
class RegisteredWatcher implements Watcher {
CountDownLatch startSignal;
@@ -205,6 +209,14 @@ public final class ServerManager implements Callable {
"-PORTMAPTOSECS " + userProgPortMapToSecs + " ")
.replace("-PORTBINDTOSECS",
"-PORTBINDTOSECS " + userProgPortBindToSecs)
+ .replace("-TCPKEEPALIVESTATUS",
+ "-TCPKEEPALIVESTATUS " + mxosrvrKeepaliveStatus + " ")
+ .replace("-TCPKEEPALIVEIDLETIME",
+ "-TCPKEEPALIVEIDLETIME " + mxosrvrKeepaliveIdletime + " ")
+ .replace("-TCPKEEPALIVEINTERVAL",
+ "-TCPKEEPALIVEINTERVAL " + mxosrvrKeepaliveIntervaltime + " ")
+ .replace("-TCPKEEPALIVERETRYCOUNT",
+ "-TCPKEEPALIVERETRYCOUNT " + mxosrvrKeepaliveRetrycount + " ")
.replace("<", "<").replace("&", "&")
.replace(">", ">");
scriptContext.setCommand(command);
@@ -348,6 +360,18 @@ public final class ServerManager implements Callable {
this.retryIntervalMillis = conf
.getInt(Constants.DCS_SERVER_USER_PROGRAM_RESTART_HANDLER_RETRY_INTERVAL_MILLIS,
Constants.DEFAULT_DCS_SERVER_USER_PROGRAM_RESTART_HANDLER_RETRY_INTERVAL_MILLIS);
+ this.mxosrvrKeepaliveStatus = conf.get(
+ Constants.DEFAULT_DCS_SERVER_PROGRAM_TCP_KEEPALIVE_STATUS,
+ Constants.DCS_SERVER_PROGRAM_KEEPALIVE_STATUS);
+ this.mxosrvrKeepaliveIdletime = conf.getInt(
+ Constants.DEFAULT_DCS_SERVER_PROGRAM_TCP_KEEPALIVE_IDLETIME,
+ Constants.DCS_SERVER_PROGRAM_KEEPALIVE_IDLETIME);
+ this.mxosrvrKeepaliveIntervaltime = conf.getInt(
+ Constants.DEFAULT_DCS_SERVER_PROGRAM_TCP_KEEPALIVE_INTERVALTIME,
+ Constants.DCS_SERVER_PROGRAM_KEEPALIVE_INTERVALTIME);
+ this.mxosrvrKeepaliveRetrycount = conf.getInt(
+ Constants.DEFAULT_DCS_SERVER_PROGRAM_TCP_KEEPALIVE_RETRYCOUNT,
+ Constants.DCS_SERVER_PROGRAM_KEEPALIVE_RETRYCOUNT);
serverHandlers = new ServerHandler[this.childServers];
}
http://git-wip-us.apache.org/repos/asf/trafodion/blob/1b19b963/dcs/src/main/resources/dcs-default.xml
----------------------------------------------------------------------
diff --git a/dcs/src/main/resources/dcs-default.xml b/dcs/src/main/resources/dcs-default.xml
index 12a4bf7..9967b5b 100644
--- a/dcs/src/main/resources/dcs-default.xml
+++ b/dcs/src/main/resources/dcs-default.xml
@@ -386,4 +386,33 @@
Timeout minutes between first and max times (6 default) DCS Server startup MXOSRVR.
</description>
</property>
+ <property>
+ <name>dcs.server.user.program.tcp.keepalive.status</name>
+ <value>enable</value>
+ <description>
+ Used in mxosrvr keepalive , parameter is ENABLE IDLETIME INTERTIME RETRYCNT.
+ </description>
+ </property>
+ <property>
+ <name>dcs.server.user.program.tcp.keepalive.idletime</name>
+ <value>300</value>
+ <description>
+ Used in mxosrvr keepalive , parameter is ENABLE IDLETIME INTERTIME RETRYCNT.
+ </description>
+ </property>
+ <property>
+ <name>dcs.server.user.program.tcp.keepalive.intervaltime</name>
+ <value>5</value>
+ <description>
+ Used in mxosrvr keepalive , parameter is ENABLE IDLETIME INTERTIME RETRYCNT.
+ </description>
+ </property>
+ <property>
+ <name>dcs.server.user.program.tcp.keepalive.retrycount</name>
+ <value>3</value>
+ <description>
+ Used in mxosrvr keepalive , parameter is ENABLE IDLETIME INTERTIME RETRYCNT.
+ </description>
+ </property>
+
</configuration>
[2/3] trafodion git commit: Change some variable. Make the
description more detailed.
Posted by li...@apache.org.
Change some variable.
Make the description more detailed.
Project: http://git-wip-us.apache.org/repos/asf/trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafodion/commit/8cd59bf0
Tree: http://git-wip-us.apache.org/repos/asf/trafodion/tree/8cd59bf0
Diff: http://git-wip-us.apache.org/repos/asf/trafodion/diff/8cd59bf0
Branch: refs/heads/master
Commit: 8cd59bf0146fde470e1484b5a03adefd6647865d
Parents: 1b19b96
Author: Haolin.song <40...@qq.com>
Authored: Wed Mar 28 11:15:50 2018 +0000
Committer: Haolin.song <40...@qq.com>
Committed: Wed Mar 28 11:15:50 2018 +0000
----------------------------------------------------------------------
core/conn/odbc/src/odbc/Common/Global.h | 12 ++++-----
.../odbc/nsksrvr/Interface/Listener_srvr.cpp | 22 +++-------------
.../src/odbc/nsksrvr/Interface/Listener_srvr.h | 4 +--
core/conn/odbc/src/odbc/nsksrvr/SrvrMain.cpp | 27 +++++++++++---------
.../main/java/org/trafodion/dcs/Constants.java | 2 +-
.../org/trafodion/dcs/server/ServerManager.java | 24 ++++++++---------
dcs/src/main/resources/dcs-default.xml | 14 +++++-----
7 files changed, 47 insertions(+), 58 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/trafodion/blob/8cd59bf0/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 8dc22cf..0789b1c 100644
--- a/core/conn/odbc/src/odbc/Common/Global.h
+++ b/core/conn/odbc/src/odbc/Common/Global.h
@@ -139,7 +139,7 @@ class ODBCMXTraceMsg;
#define DEFAULT_REFRESH_RATE_SECS 60
#define DEFAULT_SRVR_IDLE_TIMEOUT 0
#define DEFAULT_CONN_IDLE_TIMEOUT 0
-#define DEFAULT_KEEPALIVE 1 //OPEN KEEPALIVE
+#define DEFAULT_KEEPALIVE 0 //OPEN KEEPALIVE
#define DEFAULT_KEEPALIVE_TIMESEC 3600
#define DEFAULT_KEEPALIVE_COUNT 3
#define DEFAULT_KEEPALIVE_INTVL 20
@@ -941,7 +941,7 @@ typedef struct _SRVR_GLOBAL_Def
bzero(m_ProcName,sizeof(m_ProcName));
m_bNewConnection = false;
m_bNewService = false;
- bzero(clientKeepaliveStatus, sizeof(clientKeepaliveStatus));
+ clientKeepaliveStatus = false;
clientKeepaliveIdletime = 0;
clientKeepaliveIntervaltime = 0;
clientKeepaliveRetrycount = 0;
@@ -1062,10 +1062,10 @@ typedef struct _SRVR_GLOBAL_Def
tip_handle_t tip_gateway;
- char clientKeepaliveStatus[64];
- int clientKeepaliveIdletime;
- int clientKeepaliveIntervaltime;
- int clientKeepaliveRetrycount;
+ BOOL clientKeepaliveStatus;
+ int clientKeepaliveIdletime;
+ int clientKeepaliveIntervaltime;
+ int clientKeepaliveRetrycount;
char *pxid_url;
IDL_long_long local_xid;
UINT xid_length;
http://git-wip-us.apache.org/repos/asf/trafodion/blob/8cd59bf0/core/conn/odbc/src/odbc/nsksrvr/Interface/Listener_srvr.cpp
----------------------------------------------------------------------
diff --git a/core/conn/odbc/src/odbc/nsksrvr/Interface/Listener_srvr.cpp b/core/conn/odbc/src/odbc/nsksrvr/Interface/Listener_srvr.cpp
index bdd40ce..a31b51b 100644
--- a/core/conn/odbc/src/odbc/nsksrvr/Interface/Listener_srvr.cpp
+++ b/core/conn/odbc/src/odbc/nsksrvr/Interface/Listener_srvr.cpp
@@ -82,38 +82,22 @@ void CNSKListenerSrvr::TCP_PROCESSNAME_PORT(FILE* fp)
}
void CNSKListenerSrvr::TCP_SetKeepalive(int socketnum,
- char *keepaliveStatus,
+ bool keepaliveStatus,
int idleTime,
int intervalTime,
int retryCount)
{
//all need to be configured
- if(NULL == keepaliveStatus){
- return;
- }
- if(0 == strcmp(keepaliveStatus,"default")){
+ if(!keepaliveStatus){
keepaliveOpt.isKeepalive = DEFAULT_KEEPALIVE;
keepaliveOpt.keepaliveIdle = DEFAULT_KEEPALIVE_TIMESEC;
keepaliveOpt.keepaliveInterval = DEFAULT_KEEPALIVE_INTVL;
keepaliveOpt.keepCount = DEFAULT_KEEPALIVE_COUNT;
- }else
- if(0 == strcmp(keepaliveStatus,"unenable")){
- keepaliveOpt.isKeepalive = 0;
- keepaliveOpt.keepaliveIdle = DEFAULT_KEEPALIVE_TIMESEC;
- keepaliveOpt.keepaliveInterval = DEFAULT_KEEPALIVE_INTVL;
- keepaliveOpt.keepCount = DEFAULT_KEEPALIVE_COUNT;
- }else
- if(0 == strcmp(keepaliveStatus, "enable")){
+ }else{
keepaliveOpt.isKeepalive = 1;
keepaliveOpt.keepaliveIdle = idleTime;
keepaliveOpt.keepaliveInterval = intervalTime;
keepaliveOpt.keepCount = retryCount;
-
- }else{
- keepaliveOpt.isKeepalive = 0;
- keepaliveOpt.keepaliveIdle = DEFAULT_KEEPALIVE_TIMESEC;
- keepaliveOpt.keepaliveInterval = DEFAULT_KEEPALIVE_INTVL;
- keepaliveOpt.keepCount = DEFAULT_KEEPALIVE_COUNT;
}
int error;
http://git-wip-us.apache.org/repos/asf/trafodion/blob/8cd59bf0/core/conn/odbc/src/odbc/nsksrvr/Interface/Listener_srvr.h
----------------------------------------------------------------------
diff --git a/core/conn/odbc/src/odbc/nsksrvr/Interface/Listener_srvr.h b/core/conn/odbc/src/odbc/nsksrvr/Interface/Listener_srvr.h
index 9a5d010..dcf4f4b 100644
--- a/core/conn/odbc/src/odbc/nsksrvr/Interface/Listener_srvr.h
+++ b/core/conn/odbc/src/odbc/nsksrvr/Interface/Listener_srvr.h
@@ -47,8 +47,8 @@ public:
long getPort() { return m_port; };
void closeTCPIPSession(int fnum);
- KEEPALIVE_OPT keepaliveOpt;
- void TCP_SetKeepalive(int socketnum, char *keepaliveStatus, int idleTime, int intervalTime, int retryCount);
+ KEEPALIVE_OPT keepaliveOpt;
+ void TCP_SetKeepalive(int socketnum, bool keepaliveStatus, int idleTime, int intervalTime, int retryCount);
protected:
long m_port;
CURR_TCPIP_OPER m_tcpip_operation;
http://git-wip-us.apache.org/repos/asf/trafodion/blob/8cd59bf0/core/conn/odbc/src/odbc/nsksrvr/SrvrMain.cpp
----------------------------------------------------------------------
diff --git a/core/conn/odbc/src/odbc/nsksrvr/SrvrMain.cpp b/core/conn/odbc/src/odbc/nsksrvr/SrvrMain.cpp
index 52e4ce1..132a0a4 100644
--- a/core/conn/odbc/src/odbc/nsksrvr/SrvrMain.cpp
+++ b/core/conn/odbc/src/odbc/nsksrvr/SrvrMain.cpp
@@ -95,7 +95,7 @@ long initSessMemSize;
int portMapToSecs = -1;
int portBindToSecs = -1;
bool bPlanEnabled = false;
-char keepaliveStatus[256];
+bool keepaliveStatus = false;
int keepaliveIdletime;
int keepaliveIntervaltime;
int keepaliveRetrycount;
@@ -794,14 +794,12 @@ catch(SB_Fatal_Excep sbfe)
//LCOV_EXCL_STOP
}
}
- if( strlen(keepaliveStatus) > 0){
- strncpy( srvrGlobal->clientKeepaliveStatus, keepaliveStatus, strlen(keepaliveStatus));
- srvrGlobal->clientKeepaliveIntervaltime = keepaliveIntervaltime;
- srvrGlobal->clientKeepaliveIdletime = keepaliveIdletime;
- srvrGlobal->clientKeepaliveRetrycount = keepaliveRetrycount;
- }else{
- strncpy( srvrGlobal->clientKeepaliveStatus, "unenable", strlen("unenable"));
- }
+
+ srvrGlobal->clientKeepaliveStatus = keepaliveStatus;
+ srvrGlobal->clientKeepaliveIntervaltime = keepaliveIntervaltime;
+ srvrGlobal->clientKeepaliveIdletime = keepaliveIdletime;
+ srvrGlobal->clientKeepaliveRetrycount = keepaliveRetrycount;
+
// TCPADD and RZ are required parameters.
// The address is passed in with TCPADD parameter .
// The hostname is passed in with RZ parameter.
@@ -1441,10 +1439,15 @@ BOOL getInitParamSrvr(int argc, char *argv[], SRVR_INIT_PARAM_Def &initParam, ch
if (strcmp(arg, "-TCPKEEPALIVESTATUS") == 0){
if (++count < argc && argv[count][0] != '-')
{
- if (strlen(argv[count]) < sizeof(keepaliveStatus) - 1)
+ char keepaliveEnable[20];
+ if (strlen(argv[count]) < sizeof(keepaliveEnable) - 1)
{
- memset(keepaliveStatus, 0, sizeof(keepaliveStatus) - 1);
- strncpy(keepaliveStatus, argv[count], sizeof(keepaliveStatus) - 1);
+ memset(keepaliveEnable, 0, sizeof(keepaliveEnable) - 1);
+ strncpy(keepaliveEnable, argv[count], sizeof(keepaliveEnable) - 1);
+ if(stricmp(keepaliveEnable, "true") == 0)
+ keepaliveStatus = true;
+ else
+ keepaliveStatus = false;
}
else
{
http://git-wip-us.apache.org/repos/asf/trafodion/blob/8cd59bf0/dcs/src/main/java/org/trafodion/dcs/Constants.java
----------------------------------------------------------------------
diff --git a/dcs/src/main/java/org/trafodion/dcs/Constants.java b/dcs/src/main/java/org/trafodion/dcs/Constants.java
index de51773..b3e5f38 100644
--- a/dcs/src/main/java/org/trafodion/dcs/Constants.java
+++ b/dcs/src/main/java/org/trafodion/dcs/Constants.java
@@ -116,7 +116,7 @@ public final class Constants {
public static final String DEFAULT_DCS_SERVER_PROGRAM_TCP_KEEPALIVE_STATUS= "dcs.server.user.program.tcp.keepalive.status";
/** Default value for DCS server program mxosrvr keepalive STATUS*/
- public static final String DCS_SERVER_PROGRAM_KEEPALIVE_STATUS = "enable";
+ public static final String DCS_SERVER_PROGRAM_KEEPALIVE_STATUS = "true";
/** Configuration key for DCS server program mxosrvr keepalive IDLETIME*/
public static final String DEFAULT_DCS_SERVER_PROGRAM_TCP_KEEPALIVE_IDLETIME = "dcs.server.user.program.tcp.keepalive.idletime";
http://git-wip-us.apache.org/repos/asf/trafodion/blob/8cd59bf0/dcs/src/main/java/org/trafodion/dcs/server/ServerManager.java
----------------------------------------------------------------------
diff --git a/dcs/src/main/java/org/trafodion/dcs/server/ServerManager.java b/dcs/src/main/java/org/trafodion/dcs/server/ServerManager.java
index 23e5721..e9dc98c 100644
--- a/dcs/src/main/java/org/trafodion/dcs/server/ServerManager.java
+++ b/dcs/src/main/java/org/trafodion/dcs/server/ServerManager.java
@@ -83,10 +83,10 @@ public final class ServerManager implements Callable {
private int maxRestartAttempts;
private int retryIntervalMillis;
private String nid = null;
- private static String mxosrvrKeepaliveStatus;
- private static int mxosrvrKeepaliveIdletime;
- private static int mxosrvrKeepaliveIntervaltime;
- private static int mxosrvrKeepaliveRetrycount;
+ private static String userProgKeepaliveStatus;
+ private static int userProgKeepaliveIdletime;
+ private static int userProgKeepaliveIntervaltime;
+ private static int userProgKeepaliveRetrycount;
class RegisteredWatcher implements Watcher {
CountDownLatch startSignal;
@@ -210,13 +210,13 @@ public final class ServerManager implements Callable {
.replace("-PORTBINDTOSECS",
"-PORTBINDTOSECS " + userProgPortBindToSecs)
.replace("-TCPKEEPALIVESTATUS",
- "-TCPKEEPALIVESTATUS " + mxosrvrKeepaliveStatus + " ")
+ "-TCPKEEPALIVESTATUS " + userProgKeepaliveStatus + " ")
.replace("-TCPKEEPALIVEIDLETIME",
- "-TCPKEEPALIVEIDLETIME " + mxosrvrKeepaliveIdletime + " ")
+ "-TCPKEEPALIVEIDLETIME " + userProgKeepaliveIdletime + " ")
.replace("-TCPKEEPALIVEINTERVAL",
- "-TCPKEEPALIVEINTERVAL " + mxosrvrKeepaliveIntervaltime + " ")
+ "-TCPKEEPALIVEINTERVAL " + userProgKeepaliveIntervaltime + " ")
.replace("-TCPKEEPALIVERETRYCOUNT",
- "-TCPKEEPALIVERETRYCOUNT " + mxosrvrKeepaliveRetrycount + " ")
+ "-TCPKEEPALIVERETRYCOUNT " + userProgKeepaliveRetrycount + " ")
.replace("<", "<").replace("&", "&")
.replace(">", ">");
scriptContext.setCommand(command);
@@ -360,16 +360,16 @@ public final class ServerManager implements Callable {
this.retryIntervalMillis = conf
.getInt(Constants.DCS_SERVER_USER_PROGRAM_RESTART_HANDLER_RETRY_INTERVAL_MILLIS,
Constants.DEFAULT_DCS_SERVER_USER_PROGRAM_RESTART_HANDLER_RETRY_INTERVAL_MILLIS);
- this.mxosrvrKeepaliveStatus = conf.get(
+ this.userProgKeepaliveStatus = conf.get(
Constants.DEFAULT_DCS_SERVER_PROGRAM_TCP_KEEPALIVE_STATUS,
Constants.DCS_SERVER_PROGRAM_KEEPALIVE_STATUS);
- this.mxosrvrKeepaliveIdletime = conf.getInt(
+ this.userProgKeepaliveIdletime = conf.getInt(
Constants.DEFAULT_DCS_SERVER_PROGRAM_TCP_KEEPALIVE_IDLETIME,
Constants.DCS_SERVER_PROGRAM_KEEPALIVE_IDLETIME);
- this.mxosrvrKeepaliveIntervaltime = conf.getInt(
+ this.userProgKeepaliveIntervaltime = conf.getInt(
Constants.DEFAULT_DCS_SERVER_PROGRAM_TCP_KEEPALIVE_INTERVALTIME,
Constants.DCS_SERVER_PROGRAM_KEEPALIVE_INTERVALTIME);
- this.mxosrvrKeepaliveRetrycount = conf.getInt(
+ this.userProgKeepaliveRetrycount = conf.getInt(
Constants.DEFAULT_DCS_SERVER_PROGRAM_TCP_KEEPALIVE_RETRYCOUNT,
Constants.DCS_SERVER_PROGRAM_KEEPALIVE_RETRYCOUNT);
serverHandlers = new ServerHandler[this.childServers];
http://git-wip-us.apache.org/repos/asf/trafodion/blob/8cd59bf0/dcs/src/main/resources/dcs-default.xml
----------------------------------------------------------------------
diff --git a/dcs/src/main/resources/dcs-default.xml b/dcs/src/main/resources/dcs-default.xml
index 9967b5b..b568d99 100644
--- a/dcs/src/main/resources/dcs-default.xml
+++ b/dcs/src/main/resources/dcs-default.xml
@@ -388,30 +388,32 @@
</property>
<property>
<name>dcs.server.user.program.tcp.keepalive.status</name>
- <value>enable</value>
+ <value>true</value>
<description>
- Used in mxosrvr keepalive , parameter is ENABLE IDLETIME INTERTIME RETRYCNT.
+ If tcp keepalive is enabled. The default is true. Set false to disable.
</description>
</property>
<property>
<name>dcs.server.user.program.tcp.keepalive.idletime</name>
<value>300</value>
<description>
- Used in mxosrvr keepalive , parameter is ENABLE IDLETIME INTERTIME RETRYCNT.
+ Time in seconds for the interval between the last data packet sent and the first keepalive probe.
+ The default is 300.
</description>
</property>
<property>
<name>dcs.server.user.program.tcp.keepalive.intervaltime</name>
- <value>5</value>
+ <value>3</value>
<description>
- Used in mxosrvr keepalive , parameter is ENABLE IDLETIME INTERTIME RETRYCNT.
+ Time in seconds for interval between two keepalive probes .
+ The default is 3.
</description>
</property>
<property>
<name>dcs.server.user.program.tcp.keepalive.retrycount</name>
<value>3</value>
<description>
- Used in mxosrvr keepalive , parameter is ENABLE IDLETIME INTERTIME RETRYCNT.
+ The maximum number of keepalive probes TCP should send before dropping the connection.
</description>
</property>
[3/3] trafodion git commit: merge [TRAFODION-3003]
Posted by li...@apache.org.
merge [TRAFODION-3003]
Project: http://git-wip-us.apache.org/repos/asf/trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafodion/commit/6e39af24
Tree: http://git-wip-us.apache.org/repos/asf/trafodion/tree/6e39af24
Diff: http://git-wip-us.apache.org/repos/asf/trafodion/diff/6e39af24
Branch: refs/heads/master
Commit: 6e39af24401da60402696ab078d3f48218173d67
Parents: c826bce 8cd59bf
Author: Liu Ming <ov...@sina.com>
Authored: Mon Apr 16 21:03:51 2018 +0000
Committer: Liu Ming <ov...@sina.com>
Committed: Mon Apr 16 21:03:51 2018 +0000
----------------------------------------------------------------------
core/conn/odbc/src/odbc/Common/Global.h | 15 +++-
core/conn/odbc/src/odbc/Common/Listener.h | 9 ++-
.../odbc/nsksrvr/Interface/Listener_srvr.cpp | 31 +++++++-
.../src/odbc/nsksrvr/Interface/Listener_srvr.h | 4 +-
.../Interface/linux/Listener_srvr_ps.cpp | 7 +-
core/conn/odbc/src/odbc/nsksrvr/SrvrMain.cpp | 84 +++++++++++++++++++-
core/conn/odbc/src/odbc/nsksrvrcore/Makefile | 2 +-
.../main/java/org/trafodion/dcs/Constants.java | 25 +++++-
.../org/trafodion/dcs/server/ServerManager.java | 24 ++++++
dcs/src/main/resources/dcs-default.xml | 31 ++++++++
10 files changed, 222 insertions(+), 10 deletions(-)
----------------------------------------------------------------------