From 3d4fc884b39523e9f71be67cf815a2978c2689f9 Mon Sep 17 00:00:00 2001
From: brinn <brinn>
Date: Thu, 1 Aug 2013 12:24:19 +0000
Subject: [PATCH] [BIS-300] Make db connection logging available in command
 line script datastore_server.sh.

SVN: 29600
---
 datastore_server/dist/datastore_server.sh | 95 +++++++++++++++++++++--
 1 file changed, 90 insertions(+), 5 deletions(-)

diff --git a/datastore_server/dist/datastore_server.sh b/datastore_server/dist/datastore_server.sh
index 0936c84afc2..650a61eb98e 100755
--- a/datastore_server/dist/datastore_server.sh
+++ b/datastore_server/dist/datastore_server.sh
@@ -93,7 +93,7 @@ printStatus()
     PID=`cat $PIDFILE`
     isPIDRunning $PID
     if [ $? -eq 0 ]; then
-      echo "Data Store Server is running (pid $PID)"
+    	echo "Data Store Server is running (pid $PID)"
       return 0
     else
       echo "Data Store Server is dead (stale pid $PID)"
@@ -142,8 +142,10 @@ fi
 
 command=$1
 
-# Create lib symlinks before building the classpath
-./autosymlink.sh
+if [ "$command" == "start" ]; then
+  # Create lib symlinks before building the classpath
+  ./autosymlink.sh
+fi
 
 # Build classpath from $LIB_FOLDER and $EXT_LIB_FOLDER content. First JAR is datastore_server.jar because it has to appear before cifex.jar
 CP=`echo $LIB_FOLDER/datastore_server.jar $LIB_FOLDER/*.jar $EXT_LIB_FOLDER/*.jar | sed 's/ /:/g'`
@@ -253,7 +255,17 @@ case "$command" in
     $SCRIPT start
     ;;
   help)
-    ${CMD} --help
+    echo "Usage: $0 {start|stop|restart|status|help|version}"
+    echo "Advanced:"
+    echo "  $0 show-shredder  -  show the list of files / directories that wait to be shreddered"
+    echo "  $0 show-updater-queue  -  show the queue of datasets that await updating their archiving status in openBIS AS"
+    echo "  $0 show-command-queue  -  show the queue of commands from openBIS AS waiting to be executed"
+    echo "  $0 log-db-connections  -  log the currently active database connections to log/startup_log.txt"
+    echo "  $0 log-thread-dump  -  log the current thread dump to log/startup_log.txt"
+    echo "  $0 debug-db-connections  -  switch on database connection debug logging"
+    echo "  $0 no-debug-db-connections  -  switch off database connection debug logging"
+    echo "  $0 record-stacktrace-db-connections  -  switch on database connection stacktrace recording"
+    echo "  $0 no-record-stacktrace-db-connections  -  switch off database connection stacktrace recording"
     ;;
   version)
     ${CMD} --version
@@ -267,8 +279,81 @@ case "$command" in
   show-command-queue)
     ${CMD} --show-command-queue
     ;;
+  log-thread-dump)
+    if [ -f $PIDFILE ]; then
+      PID=`cat $PIDFILE 2> /dev/null`
+      isPIDRunning $PID
+      if [ $? -eq 0 ]; then
+        kill -3 $PID
+   			echo "Thread dump logged to log/startup_log.txt"
+      else
+      	echo "Error: Data Store Server not running."
+      	exit 100
+      fi
+    else
+    	echo "Error: Data Store Server not running."
+     	exit 100
+    fi
+    ;;
+  log-db-connections)
+    getStatus
+    EXIT_STATUS=$?
+    if [ $EXIT_STATUS -ne 0 ]; then
+      echo "Error: Data Store Server not running."
+      exit 100
+    fi
+  	mkdir -p .control
+  	if [ "$1" != "" ]; then
+    	touch .control/db-connections-print-active.$1
+   	else
+    	touch .control/db-connections-print-active
+   	fi
+   	echo "Active database connections logged to log/startup_log.txt"
+    ;;
+  debug-db-connections)
+    getStatus
+    EXIT_STATUS=$?
+    if [ $EXIT_STATUS -ne 0 ]; then
+      echo "Error: Data Store Server not running."
+      exit 100
+    fi
+  	mkdir -p .control
+  	touch .control/db-connections-debug-on
+  	echo "Switched on debug logging for database connections."
+    ;;
+  no-debug-db-connections)
+    getStatus
+    EXIT_STATUS=$?
+    if [ $EXIT_STATUS -ne 0 ]; then
+      echo "Error: Data Store Server not running."
+      exit 100
+    fi
+  	mkdir -p .control
+  	touch .control/db-connections-debug-off
+  	echo "Switched off debug logging for database connections."
+    ;;
+  record-stacktrace-db-connections)
+    getStatus
+    EXIT_STATUS=$?
+    if [ $EXIT_STATUS -ne 0 ]; then
+      echo "Error: Data Store Server not running."
+      exit 100
+    fi
+  	mkdir -p .control
+  	touch .control/db-connections-stacktrace-on
+    ;;
+  no-record-stacktrace-db-connections)
+    getStatus
+    EXIT_STATUS=$?
+    if [ $EXIT_STATUS -ne 0 ]; then
+      echo "Error: Data Store Server not running."
+      exit 100
+    fi
+  	mkdir -p .control
+  	touch .control/db-connections-stacktrace-off
+    ;;
   *)
-    echo $"Usage: $0 {start|stop|restart|status|help|version|show-shredder|show-updater-queue|show-command-queue}"
+    echo "Usage: $0 {start|stop|restart|status|help|version}"
     exit 200
     ;;
 esac
-- 
GitLab