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 2018/08/08 00:03:50 UTC
[1/3] trafodion git commit: [TRAFODION-3180] At times establishing a
JDBC/ODBC connection takes observably long time
Repository: trafodion
Updated Branches:
refs/heads/master 45727da59 -> f38ade8de
[TRAFODION-3180] At times establishing a JDBC/ODBC connection takes observably long time
Analysis revealed that the mxosrvr process in connecting state was attempting to open the
ssmp process on the node for a non-unique query as part of establishing connection.
The ssmp process has many ports in CLOSE_WAIT state. It looks like the client happens
to hit on a port that is in CLOSE_WAIT state. The port transitions to ESTABLISHED state
after some time. Hence the connection was taking a longer time.
The mxssmp process keeps the port in CLOSE_WAIT because the socket wasn't closed on the
server side when client exits gracefully as well as abruptly. The seabed layer in
Trafodion doesn't handle more than one open to a process in a correct way. I have changed
the IPC infrastructure in SQL to ensure that the ssmp process is opened only once
in mxosrvr process.
The API msg_get_phandle opens the process with the given name to obtain the handle. This API
is now replaced with XFILENAME_TO_PROCESSHANDLE_
Project: http://git-wip-us.apache.org/repos/asf/trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafodion/commit/02b9a0ea
Tree: http://git-wip-us.apache.org/repos/asf/trafodion/tree/02b9a0ea
Diff: http://git-wip-us.apache.org/repos/asf/trafodion/diff/02b9a0ea
Branch: refs/heads/master
Commit: 02b9a0eac55840325a869102c5bbf28aaa516a3a
Parents: 0d30493
Author: selvaganesang <se...@esgyn.com>
Authored: Tue Aug 7 18:03:04 2018 +0000
Committer: selvaganesang <se...@esgyn.com>
Committed: Tue Aug 7 18:03:04 2018 +0000
----------------------------------------------------------------------
core/sql/common/ComRtUtils.cpp | 11 ++------
core/sql/common/ComRtUtils.h | 2 +-
core/sql/common/IpcGuardian.cpp | 29 ++++++--------------
.../main/java/org/trafodion/sql/HDFSClient.java | 5 ++--
.../main/java/org/trafodion/sql/HdfsScan.java | 11 ++++++--
5 files changed, 24 insertions(+), 34 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/trafodion/blob/02b9a0ea/core/sql/common/ComRtUtils.cpp
----------------------------------------------------------------------
diff --git a/core/sql/common/ComRtUtils.cpp b/core/sql/common/ComRtUtils.cpp
index 764b8ee..4c11b00 100644
--- a/core/sql/common/ComRtUtils.cpp
+++ b/core/sql/common/ComRtUtils.cpp
@@ -1075,11 +1075,10 @@ Int16 getBDRClusterName(char *bdrClusterName)
return error;
}
-SB_Phandle_Type *get_phandle_with_retry(char *pname, short *fserr)
+int get_phandle_with_retry(char *pname, SB_Phandle_Type *phandle)
{
Int32 retrys = 0;
int lv_fserr = FEOK;
- SB_Phandle_Type *phandle = NULL;
const Int32 NumRetries = 10;
timespec retryintervals[NumRetries] = {
{ 0, 10*1000*1000 } // 10 ms
@@ -1096,7 +1095,7 @@ SB_Phandle_Type *get_phandle_with_retry(char *pname, short *fserr)
for (;;)
{
- phandle = msg_get_phandle (pname, &lv_fserr);
+ lv_fserr = XFILENAME_TO_PROCESSHANDLE_(pname, strlen(pname), phandle);
if (retrys >= NumRetries)
break;
if ((lv_fserr == FEPATHDOWN) ||
@@ -1105,11 +1104,7 @@ SB_Phandle_Type *get_phandle_with_retry(char *pname, short *fserr)
else
break;
}
-
- if (fserr)
- *fserr = (short) lv_fserr;
-
- return phandle;
+ return lv_fserr;
}
// A function to return the string "UNKNOWN (<val>)" which can be
http://git-wip-us.apache.org/repos/asf/trafodion/blob/02b9a0ea/core/sql/common/ComRtUtils.h
----------------------------------------------------------------------
diff --git a/core/sql/common/ComRtUtils.h b/core/sql/common/ComRtUtils.h
index d26e52e..a1bf2cf 100644
--- a/core/sql/common/ComRtUtils.h
+++ b/core/sql/common/ComRtUtils.h
@@ -286,7 +286,7 @@ void dumpTrafStack(LIST(TrafAddrStack *) *la, const char *header, bool toFile =
Int16 getBDRClusterName(char *bdrClusterName);
-SB_Phandle_Type *get_phandle_with_retry(char *pname, short *fserr = NULL);
+int get_phandle_with_retry(char *pname, SB_Phandle_Type *phandle);
pid_t ComRtGetConfiguredPidMax();
http://git-wip-us.apache.org/repos/asf/trafodion/blob/02b9a0ea/core/sql/common/IpcGuardian.cpp
----------------------------------------------------------------------
diff --git a/core/sql/common/IpcGuardian.cpp b/core/sql/common/IpcGuardian.cpp
index c8ebcf8..f223d7b 100644
--- a/core/sql/common/IpcGuardian.cpp
+++ b/core/sql/common/IpcGuardian.cpp
@@ -212,14 +212,10 @@ NABoolean GuaProcessHandle::compare(const GuaProcessHandle &other) const
NABoolean GuaProcessHandle::fromAscii(const char *ascii)
{
- SB_Phandle_Type *tempPhandle;
- tempPhandle = get_phandle_with_retry((char *)ascii);
-
- if (!tempPhandle)
+ int retcode = get_phandle_with_retry((char *)ascii, &phandle_);
+ if (retcode != FEOK)
return FALSE;
-
- memcpy ((void *)&phandle_, (void *)tempPhandle, sizeof(SB_Phandle_Type));
return TRUE;
}
@@ -4110,7 +4106,7 @@ void IpcGuardianServer::spawnProcess(ComDiagsArea **diags,
void IpcGuardianServer::useProcess(ComDiagsArea **diags,
CollHeap *diagsHeap)
{
- NSK_PORT_HANDLE *procHandle;
+ SB_Phandle_Type procHandle;
NSK_PORT_HANDLE procHandleCopy;
short usedlength;
char processName[50];
@@ -4135,13 +4131,9 @@ void IpcGuardianServer::useProcess(ComDiagsArea **diags,
short i = 0;
while (i < 3)
{
- short gprc = 0;
- procHandle = get_phandle_with_retry(tmpProcessName, &gprc);
- if (procHandle != NULL)
- rc = 0;
- else
- rc = gprc;
- if ((rc != 0) || (procHandle == NULL))
+ int gprc = 0;
+ gprc = get_phandle_with_retry(tmpProcessName, &procHandle);
+ if (rc != FEOK)
{
serverState_ = ERROR_STATE;
guardianError_ = rc;
@@ -4157,7 +4149,7 @@ void IpcGuardianServer::useProcess(ComDiagsArea **diags,
else
{
//Phandle wrapper in porting layer
- NAProcessHandle phandle(procHandle);
+ NAProcessHandle phandle(&procHandle);
rc = phandle.decompose();
if (rc != 0)
@@ -4174,9 +4166,7 @@ void IpcGuardianServer::useProcess(ComDiagsArea **diags,
}
}
- memcpy(&procHandleCopy, procHandle, sizeof(NSK_PORT_HANDLE));
- IpcProcessId serverProcId(
- (const GuaProcessHandle &)procHandleCopy);
+ IpcProcessId serverProcId((const GuaProcessHandle &)procHandle);
controlConnection_ = new(getServerClass()->getEnv()->getHeap())
GuaConnectionToServer(getServerClass()->getEnv(),
@@ -4190,9 +4180,6 @@ void IpcGuardianServer::useProcess(ComDiagsArea **diags,
castToGuaConnectionToServer()->getGuardianError();
delete controlConnection_;
controlConnection_ = NULL;
- // clear phandle cache -- ALM CR8248
- msg_set_phandle((char *)processName_, NULL);
- msg_mon_close_process(procHandle);
DELAY(10);
}
else
http://git-wip-us.apache.org/repos/asf/trafodion/blob/02b9a0ea/core/sql/src/main/java/org/trafodion/sql/HDFSClient.java
----------------------------------------------------------------------
diff --git a/core/sql/src/main/java/org/trafodion/sql/HDFSClient.java b/core/sql/src/main/java/org/trafodion/sql/HDFSClient.java
index c04c256..1995851 100644
--- a/core/sql/src/main/java/org/trafodion/sql/HDFSClient.java
+++ b/core/sql/src/main/java/org/trafodion/sql/HDFSClient.java
@@ -310,7 +310,8 @@ public class HDFSClient
// If the range has a length more than the buffer length, the range is chunked
// in HdfsScan
public HDFSClient(int bufNo, int ioByteArraySizeInKB, int rangeNo, String filename, ByteBuffer buffer, long position,
- int length, short compressionType, boolean sequenceFile, byte recDelimiter, CompressionInputStream inStream) throws IOException
+ int length, short compressionType, boolean sequenceFile, byte recDelimiter, CompressionInputStream inStream)
+ throws IOException, EOFException
{
bufNo_ = bufNo;
rangeNo_ = rangeNo;
@@ -363,7 +364,7 @@ public class HDFSClient
while reading the rows. The columns in the value is delimited by column delimiter 001(octal).
*/
- public void initSequenceFileRead() throws IOException
+ public void initSequenceFileRead() throws IOException, EOFException
{
SequenceFile.Reader.Option seqPos = SequenceFile.Reader.start(pos_);
SequenceFile.Reader.Option seqLen = SequenceFile.Reader.length(lenRemain_);
http://git-wip-us.apache.org/repos/asf/trafodion/blob/02b9a0ea/core/sql/src/main/java/org/trafodion/sql/HdfsScan.java
----------------------------------------------------------------------
diff --git a/core/sql/src/main/java/org/trafodion/sql/HdfsScan.java b/core/sql/src/main/java/org/trafodion/sql/HdfsScan.java
index 3ef1be7..4d7b90d 100644
--- a/core/sql/src/main/java/org/trafodion/sql/HdfsScan.java
+++ b/core/sql/src/main/java/org/trafodion/sql/HdfsScan.java
@@ -29,6 +29,7 @@ import org.apache.hadoop.fs.Path;
import org.apache.hadoop.conf.Configuration;
import java.nio.ByteBuffer;
import java.io.IOException;
+import java.io.EOFException;
import java.util.concurrent.Callable;
import java.util.concurrent.Future;
import java.util.concurrent.Executors;
@@ -168,11 +169,17 @@ public class HdfsScan
if (! scanCompleted_) {
if (logger_.isDebugEnabled())
logger_.debug(" CurrentRange " + hdfsScanRanges_[currRange_].tdbRangeNum_ + " LenRemain " + currRangeLenRemain_ + " BufNo " + bufNo);
- hdfsClient_[bufNo] = new HDFSClient(bufNo, ioByteArraySizeInKB_, hdfsScanRanges_[currRange_].tdbRangeNum_,
+ try {
+ hdfsClient_[bufNo] = new HDFSClient(bufNo, ioByteArraySizeInKB_, hdfsScanRanges_[currRange_].tdbRangeNum_,
hdfsScanRanges_[currRange_].filename_,
buf_[bufNo], currRangePos_, readLength,
hdfsScanRanges_[currRange_].compressionType_, sequenceFile_, recDelimiter_, currInStream_);
-
+ } catch (EOFException e)
+ {
+ // Skip this range
+ currRange_++;
+ scheduleHdfsScanRange(bufNo, 0);
+ }
}
}
[2/3] trafodion git commit: [TRAFODION-3180] At times establishing a
JDBC/ODBC connection takes observably long time
Posted by se...@apache.org.
[TRAFODION-3180] At times establishing a JDBC/ODBC connection takes observably long time
Fixes as per the review comments
Project: http://git-wip-us.apache.org/repos/asf/trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafodion/commit/10986d35
Tree: http://git-wip-us.apache.org/repos/asf/trafodion/tree/10986d35
Diff: http://git-wip-us.apache.org/repos/asf/trafodion/diff/10986d35
Branch: refs/heads/master
Commit: 10986d35082b5f267a8030f5f4d37fb96c73e5ec
Parents: 02b9a0e
Author: selvaganesang <se...@esgyn.com>
Authored: Tue Aug 7 21:13:09 2018 +0000
Committer: selvaganesang <se...@esgyn.com>
Committed: Tue Aug 7 21:13:09 2018 +0000
----------------------------------------------------------------------
core/sql/common/IpcGuardian.cpp | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/trafodion/blob/10986d35/core/sql/common/IpcGuardian.cpp
----------------------------------------------------------------------
diff --git a/core/sql/common/IpcGuardian.cpp b/core/sql/common/IpcGuardian.cpp
index f223d7b..710a58f 100644
--- a/core/sql/common/IpcGuardian.cpp
+++ b/core/sql/common/IpcGuardian.cpp
@@ -4107,11 +4107,10 @@ void IpcGuardianServer::useProcess(ComDiagsArea **diags,
CollHeap *diagsHeap)
{
SB_Phandle_Type procHandle;
- NSK_PORT_HANDLE procHandleCopy;
short usedlength;
char processName[50];
char *tmpProcessName;
- short rc;
+ int rc;
if (processName_ == NULL)
{
@@ -4131,8 +4130,7 @@ void IpcGuardianServer::useProcess(ComDiagsArea **diags,
short i = 0;
while (i < 3)
{
- int gprc = 0;
- gprc = get_phandle_with_retry(tmpProcessName, &procHandle);
+ rc = get_phandle_with_retry(tmpProcessName, &procHandle);
if (rc != FEOK)
{
serverState_ = ERROR_STATE;
[3/3] trafodion git commit: Merge PR 1685[TRAFODION-3180] At times
establishing a JDBC/ODBC connection takes observably long time
Posted by se...@apache.org.
Merge PR 1685[TRAFODION-3180] At times establishing a JDBC/ODBC connection takes observably long time
Project: http://git-wip-us.apache.org/repos/asf/trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafodion/commit/f38ade8d
Tree: http://git-wip-us.apache.org/repos/asf/trafodion/tree/f38ade8d
Diff: http://git-wip-us.apache.org/repos/asf/trafodion/diff/f38ade8d
Branch: refs/heads/master
Commit: f38ade8de4565137dc60ef2f05b767e9129b8196
Parents: 45727da 10986d3
Author: selvaganesang <se...@apache.org>
Authored: Wed Aug 8 00:01:29 2018 +0000
Committer: selvaganesang <se...@apache.org>
Committed: Wed Aug 8 00:01:29 2018 +0000
----------------------------------------------------------------------
core/sql/common/ComRtUtils.cpp | 11 ++-----
core/sql/common/ComRtUtils.h | 2 +-
core/sql/common/IpcGuardian.cpp | 31 +++++---------------
.../main/java/org/trafodion/sql/HDFSClient.java | 5 ++--
.../main/java/org/trafodion/sql/HdfsScan.java | 11 +++++--
5 files changed, 24 insertions(+), 36 deletions(-)
----------------------------------------------------------------------