From 9fa9b61136bf2bed3ef18e91c12257c936da7105 Mon Sep 17 00:00:00 2001 From: Anuradha Hegde Date: Tue, 3 May 2016 16:32:01 +0000 Subject: [PATCH 1/2] Support in sqludflog reader to read REST server logs --- core/rest/bin/rest-daemon.sh | 3 --- core/rest/conf/log4j.properties | 2 +- core/sqf/sql/scripts/genms | 3 +++ core/sql/sqludr/SqlUdrPredefLogReader.cpp | 20 +++++++++++++++++--- 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/core/rest/bin/rest-daemon.sh b/core/rest/bin/rest-daemon.sh index 210150f3b2..fcc0d16884 100755 --- a/core/rest/bin/rest-daemon.sh +++ b/core/rest/bin/rest-daemon.sh @@ -153,9 +153,6 @@ case $startStop in rest_rotate_log $logout rest_rotate_log $loggc echo starting $command, logging to $logout - # Add to the command log file vital stats on our environment. - echo "`date` Starting $command on `hostname`" >> $loglog - echo "`ulimit -a`" >> $loglog 2>&1 nohup nice -n $REST_NICENESS "$REST_HOME"/bin/rest \ --config "${REST_CONF_DIR}" \ $command "$@" $startStop > "$logout" 2>&1 < /dev/null & diff --git a/core/rest/conf/log4j.properties b/core/rest/conf/log4j.properties index dc00816228..4c1edf1139 100644 --- a/core/rest/conf/log4j.properties +++ b/core/rest/conf/log4j.properties @@ -76,7 +76,7 @@ log4j.appender.NullAppender=org.apache.log4j.varia.NullAppender log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.target=System.out log4j.appender.console.layout=org.apache.log4j.PatternLayout -log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n +log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601}, %p, %c, Node Number: , CPU: , PID: , Process Name: , , ,%m%n # Custom Logging levels # Disable ZooKeeper/hbase events diff --git a/core/sqf/sql/scripts/genms b/core/sqf/sql/scripts/genms index 845058a9fb..d102a2ab2e 100755 --- a/core/sqf/sql/scripts/genms +++ b/core/sqf/sql/scripts/genms @@ -202,6 +202,9 @@ echo "CACERTS_DIR=$cacertsdir" dcsinstalldir=$DCS_INSTALL_DIR echo "DCS_INSTALL_DIR=$dcsinstalldir" +restinstalldir=$REST_INSTALL_DIR +echo "REST_INSTALL_DIR=$restinstalldir" + echo "" echo "" echo "# Added by gensq.pl" diff --git a/core/sql/sqludr/SqlUdrPredefLogReader.cpp b/core/sql/sqludr/SqlUdrPredefLogReader.cpp index b9e54f7833..47d0e51f97 100644 --- a/core/sql/sqludr/SqlUdrPredefLogReader.cpp +++ b/core/sql/sqludr/SqlUdrPredefLogReader.cpp @@ -474,7 +474,7 @@ void ReadCppEventsUDFInterface::processData(UDRInvocationInfo &info, char *ok = NULL; // status of fgets int haveRowToEmit = 0; int appendPos = 0; - int numLogLocations = 2 ; + int numLogLocations = 3 ; for(int logLocationIndex = 0; logLocationIndex < numLogLocations; logLocationIndex++) { @@ -493,6 +493,13 @@ void ReadCppEventsUDFInterface::processData(UDRInvocationInfo &info, else if (strlen(logrootdir) > 1000) throw UDRException(38001, "DCS_INSTALL_DIR is longer than 1000 characters"); break ; + case 2: + logrootdir = getenv("REST_INSTALL_DIR"); + if (!logrootdir) + throw UDRException(38001, "REST_INSTALL_DIR not set"); + else if (strlen(logrootdir) > 1000) + throw UDRException(38001, "REST_INSTALL_DIR is longer than 1000 characters"); + break ; default: throw UDRException(38001, "Internal error in determining logroot directory"); } @@ -521,11 +528,17 @@ void ReadCppEventsUDFInterface::processData(UDRInvocationInfo &info, logDir_ = opendir(logDirName.data()); if (logDir_ == NULL) + { + //rest server logs are only on master node + //If udr runs on diff node, ignore if rest log folder does not exist + if(logLocationIndex == 2) + continue; + throw UDRException( 38002, "Error %d on opening directory %s", (int) errno, logDirName.data()); - + } cFile = fopen(confFileName.data(), "r"); if (cFile) { @@ -620,7 +633,8 @@ void ReadCppEventsUDFInterface::processData(UDRInvocationInfo &info, strstr(fileName, "pstartd") == fileName || strstr(fileName, "wdg") == fileName || strstr(fileName, "udr_") == fileName || - strstr(fileName, "dcs-") == fileName + strstr(fileName, "dcs-") == fileName || + strstr(fileName, "rest-") == fileName )) { if (infile_ != NULL) From 2e6e3545ac07da908a0ce456454660507ba24712 Mon Sep 17 00:00:00 2001 From: Anuradha Hegde Date: Mon, 9 May 2016 20:20:00 +0000 Subject: [PATCH 2/2] version command now displays information from the server --- .../odbc/src/odbc/nsksrvr/SrvrConnect.cpp | 39 +++++++++++++--- .../src/org/trafodion/ci/InterfaceQuery.java | 46 ++++++++----------- .../src/org/trafodion/ci/ParseArguments.java | 4 +- .../trafci/src/org/trafodion/ci/Session.java | 39 +++++++--------- .../src/org/trafodion/ci/SessionDefaults.java | 1 + .../src/org/trafodion/ci/UserInterface.java | 2 +- core/conn/trafci/utils/trafci | 8 ++++ 7 files changed, 80 insertions(+), 59 deletions(-) diff --git a/core/conn/odbc/src/odbc/nsksrvr/SrvrConnect.cpp b/core/conn/odbc/src/odbc/nsksrvr/SrvrConnect.cpp index 86d5df3758..2ad8422a99 100644 --- a/core/conn/odbc/src/odbc/nsksrvr/SrvrConnect.cpp +++ b/core/conn/odbc/src/odbc/nsksrvr/SrvrConnect.cpp @@ -208,13 +208,17 @@ typedef struct _REPOS_STATS #include "ndcsversion.h" -//LCOV_EXCL_START // Needed for bypassing checks in compiler once component privileges have been tested // Internal calls - Defined in libcli.so void SQL_EXEC_SetParserFlagsForExSqlComp_Internal( /*IN*/ unsigned int flagbits); void SQL_EXEC_ResetParserFlagsForExSqlComp_Internal( /*IN*/ unsigned int flagbits); -//LCOV_EXCL_STOP + +Int32 SQL_EXEC_GetAuthState( + /*OUT*/ bool &authenticationEnabled, + /*OUT*/ bool &authorizationEnabled, + /*OUT*/ bool &authorizationReady, + /*OUT*/ bool &auditingEnabled); #define SKIP_COMPRIV_CHECK 0x100000 @@ -8615,24 +8619,45 @@ bool isInfoSystem(char*& sqlString, const IDL_char *stmtLabel, short& error) static char buffer[4000]; char* in = sqlString; SRVR_STMT_HDL *pSrvrStmt = NULL; - + char *databaseVersion; + + databaseVersion = getenv("TRAFODION_VER"); // get Timezone and GMT offset time_t tim = time(NULL); struct tm *now = localtime(&tim); + string databaseEdition = getenv("TRAFODION_VER_PROD"); + + bool authenticationEnabled = false; + bool authorizationEnabled = false; + bool authorizationReady = false; + bool auditingEnabled = false; + + Int32 rc = SQL_EXEC_GetAuthState(authenticationEnabled, + authorizationEnabled, + authorizationReady, + auditingEnabled); + char pattern[] = "SELECT [first 1]" "current_timestamp as \"CURRENT_TIME\"," "'%s' as \"NDCS_VERSION\"," "'%s' as \"TM_ZONE\"," - "'%d' as \"TM_GMTOFF_SEC\"" -// "FROM hp_system_catalog.mxcs_schema.datasources FOR READ UNCOMMITTED ACCESS;"; - "FROM (values(1)) X(A);"; + "'%d' as \"TM_GMTOFF_SEC\"," + "'%s' as \"DATABASE_VERSION\"," + "'%s' as \"DATABASE_EDITION\"," + "'%s' as \"AUTHENTICATION_ENABLED\"," + "'%s' as \"AUTHORIZATION_ENABLED\"" + "FROM (values(1)) X(A);"; sprintf (buffer, pattern, ndcs_vers_str(), now->tm_zone, - now->tm_gmtoff); + now->tm_gmtoff, + databaseVersion, + databaseEdition.c_str(), + authenticationEnabled ? "true" : "false", + authorizationEnabled ? "true" : "false"); // other comments: // the repository view does not exist - maybe a M6 item diff --git a/core/conn/trafci/src/org/trafodion/ci/InterfaceQuery.java b/core/conn/trafci/src/org/trafodion/ci/InterfaceQuery.java index 95a3a33abd..5bd73cbb84 100644 --- a/core/conn/trafci/src/org/trafodion/ci/InterfaceQuery.java +++ b/core/conn/trafci/src/org/trafodion/ci/InterfaceQuery.java @@ -2333,30 +2333,21 @@ private void handleVersion() throws IOException, SQLException { private void displayVersionInfo(boolean srvrErrMsg) throws IOException { String platformVersion = sessObj.getSutVersion(); - String mxoSrvrVersion = sessObj.getNdcsVersion(); - - if (platformVersion != null && !platformVersion.startsWith("*ERROR*") - && !platformVersion.startsWith("An internal server error")) { - handleOutput("Trafodion Platform :", platformVersion); - } else - handleOutput("Trafodion Platform :", - this.infoNotAvailable); - - if (mxoSrvrVersion != null && !mxoSrvrVersion.equals("")) - handleOutput("Trafodion Connectivity Services :", - mxoSrvrVersion.trim(), false); - else - handleOutput("Trafodion Connectivity Services :", - this.infoNotAvailable, false); - - handleOutput("Trafodion JDBC Type 4 Driver :", JDBCVproc.getVproc(), - false); - handleOutput(SessionDefaults.PROD_NAME + " :", Vproc.getVproc(), false); - + String mxoSrvrVersion = sessObj.getNdcsVersion(); + String databaseVersion = sessObj.getDatabaseVersion(); + String databaseEdition = sessObj.getDatabaseEdition(); + + if (databaseVersion != null && databaseEdition != null) { + handleOutput("Database Version : Release ", databaseVersion); + handleOutput("Database Edition :", databaseEdition,false); + } else { + handleOutput("Database Version :", this.infoNotAvailable, false); + handleOutput("Database Edition :", this.infoNotAvailable, false); + } + handleOutput("JDBC Type 4 Driver Build ID :", JDBCVproc.getVproc(), false); + handleOutput("Command Interface Build ID :", Vproc.getVproc(), false); + writer.writeEndTags(sessObj); - - if ((srvrErrMsg) && (sessObj.getT4verNum() >= 2.2)) - sessionError('E', SessionError.SERVER_PRODUCT_ERR); } private void handleConnect() throws IOException, UserInterruption { @@ -2495,14 +2486,14 @@ private void handleConnect() throws IOException, UserInterruption { sessObj.setStmtObj(siObj.getStatement(newConn)); sessObj.qsOpen = false; sessObj.setDBConnExists(true); + boolean trafver = sessObj.getPlatformObjectVersions(); // Uncomment this line if you need to reset role to DEFAULT; // TempSessionRole is set using SET CONNECTIOPT command // sessObj.setTempSessionRole(""); - //writer.writeln(); - writer.writeln("Connected to Trafodion " -); + + writer.writeln("Connected to " + sessObj.getDatabaseEdition()); sessObj.setQryEndTime(); if (printConnTime) { @@ -2619,8 +2610,9 @@ private void handleReconnect() throws IOException, UserInterruption { sessObj.setStmtObj(rcSIObj.getStatement(sessObj.getConnObj())); sessObj.qsOpen = false; sessObj.setDBConnExists(true); + boolean trafver = sessObj.getPlatformObjectVersions(); writer.writeln(); - writer.writeln("Connected to Trafodion "); + writer.writeln("Connected to " + sessObj.getDatabaseEdition()); rcPaObj.retryCnt = 0; sessObj.setQryEndTime(); diff --git a/core/conn/trafci/src/org/trafodion/ci/ParseArguments.java b/core/conn/trafci/src/org/trafodion/ci/ParseArguments.java index 732e81c358..57944a0912 100644 --- a/core/conn/trafci/src/org/trafodion/ci/ParseArguments.java +++ b/core/conn/trafci/src/org/trafodion/ci/ParseArguments.java @@ -119,9 +119,9 @@ public String[] validateArgs(String[] args,boolean isLaunchConnect) //Pre-parse args for special cases if (argsList.contains("-version")) { - cwObj.print("Trafodion JDBC Type 4 Driver : "); + cwObj.print("JDBC Type 4 Driver Build ID : "); cwObj.println(JDBCVproc.getVproc()); - cwObj.print(SessionDefaults.PROD_NAME + " : "); + cwObj.print("Command Interface Build ID : "); org.trafodion.ci.Vproc.main(args) ; cwObj.println(""); System.exit(0); //any other args included w/version are ignored diff --git a/core/conn/trafci/src/org/trafodion/ci/Session.java b/core/conn/trafci/src/org/trafodion/ci/Session.java index 5d570ebad5..5219679496 100644 --- a/core/conn/trafci/src/org/trafodion/ci/Session.java +++ b/core/conn/trafci/src/org/trafodion/ci/Session.java @@ -95,6 +95,8 @@ public class Session extends RepObjInterface private String processName=null; private boolean patternsLoaded=false; private String ndcsVersion = null; + private String databaseVersion = null; + private String databaseEdition = null; public String serverType=null; ValidateQuery vQryObj = null; @@ -1841,34 +1843,19 @@ protected boolean getPlatformObjectVersions() if (rs!=null && rs.next()) { { ndcsVersion = rs.getString(2); - /* - * TODO . get platform version substring from ndcsVersion output: - ndcs Version 1.0.0 Release 1.1.0 (Build release [15394], date 24Feb12) - */ if (ndcsVersion != null){ - ndcsVersion = ndcsVersion.substring(ndcsVersion.indexOf("Version")); - sutVersion = ndcsVersion.substring(ndcsVersion.indexOf("Release"),ndcsVersion.indexOf("(")); - String platformVersion = sutVersion.substring(8); - if (platformVersion.startsWith("1.0")) - versionInfo=SessionDefaults.VERSION_M5; - else if (platformVersion.startsWith("1.1")) - versionInfo=SessionDefaults.VERSION_M6; - else if (platformVersion.startsWith("1.2")) - versionInfo=SessionDefaults.VERSION_M7; - else if (platformVersion.startsWith("1.3")) - versionInfo=SessionDefaults.VERSION_M8; - else if (platformVersion.startsWith("1.4")) - versionInfo=SessionDefaults.VERSION_M9; - else if (platformVersion.startsWith("1.5")) - versionInfo=SessionDefaults.VERSION_M10; - else if (platformVersion.startsWith("1.6")) - versionInfo=SessionDefaults.VERSION_M11; + ndcsVersion = ndcsVersion.substring(ndcsVersion.indexOf("Version")); + sutVersion = ndcsVersion.substring(ndcsVersion.indexOf("Release"),ndcsVersion.indexOf("(")); + String platformVersion = sutVersion.substring(8); } + databaseVersion = rs.getString(5); + databaseEdition = rs.getString(6); } if (this.debugOn) { System.out.println("ndcs version:: " + ndcsVersion); - System.out.println("platform version:: " + sutVersion); + System.out.println("database version:: " + databaseVersion); + System.out.println("database edition:: " + databaseEdition); } rs.close(); stmt.close(); @@ -1909,5 +1896,13 @@ public String getServerType() { public void setServerType(String serverType) { this.serverType = serverType; } + + public String getDatabaseVersion() { + return databaseVersion; + } + + public String getDatabaseEdition() { + return databaseEdition; + } } diff --git a/core/conn/trafci/src/org/trafodion/ci/SessionDefaults.java b/core/conn/trafci/src/org/trafodion/ci/SessionDefaults.java index f60e9e1f0a..3639ce1a2d 100644 --- a/core/conn/trafci/src/org/trafodion/ci/SessionDefaults.java +++ b/core/conn/trafci/src/org/trafodion/ci/SessionDefaults.java @@ -22,6 +22,7 @@ package org.trafodion.ci; public interface SessionDefaults { + final String DATABASE_EDITION = System.getenv("TRAFODION_VER_PROD"); final String PROD_NAME = System.getenv("TRAFODION_VER_PROD")+" Command Interface "; final String APP_NAME = "TrafCI"; final String DRIVER_NAME = "org.trafodion.jdbc.t4.T4Driver"; diff --git a/core/conn/trafci/src/org/trafodion/ci/UserInterface.java b/core/conn/trafci/src/org/trafodion/ci/UserInterface.java index a9a15c2993..ce8ac7d73c 100644 --- a/core/conn/trafci/src/org/trafodion/ci/UserInterface.java +++ b/core/conn/trafci/src/org/trafodion/ci/UserInterface.java @@ -300,7 +300,7 @@ else if (option.equalsIgnoreCase("-h")|| option.equalsIgnoreCase("-host")) if (paObj.noConnectOption) System.out.println("Not connected."); else - System.out.println("Connected to Trafodion "); + System.out.println("Connected to " + sessObj.getDatabaseEdition()); } diff --git a/core/conn/trafci/utils/trafci b/core/conn/trafci/utils/trafci index 3a21379344..8ba5152912 100755 --- a/core/conn/trafci/utils/trafci +++ b/core/conn/trafci/utils/trafci @@ -20,6 +20,14 @@ # # @@@ END COPYRIGHT @@@ +if [[ $# -gt 0 ]]; then + echo + echo "This wrapper script(trafci) does not accept any arguments." + echo "Please use trafci.sh for command line arguments" + echo + exit 1 +fi + HNAME=localhost:23400 UNAME=zz PWORD=zz