Index: trunk/Mars/datacenter/scripts/sourcefile
===================================================================
--- trunk/Mars/datacenter/scripts/sourcefile	(revision 10007)
+++ trunk/Mars/datacenter/scripts/sourcefile	(revision 10041)
@@ -48,9 +48,9 @@
    export SOURCEFILEPATH=`dirname $0`
 fi
-
-# possible solution for $0 problem: 
-# ${BASH_SOURCE[0]} 
-# but has to be checked and tested more carefully
-# should solve at least problem with login-shell and with source
+if [ "$SCRIPTNAME" = "" ]
+then 
+   SCRIPTNAME=`basename $0`
+fi
+
 source $SOURCEFILEPATH/setup.$AUTOMATIONSETUP
 
@@ -68,5 +68,5 @@
          if ! [ "$processlog" = "" ]
          then
-            echo `date +%F\ %T`" "`whoami`"@"$HOSTNAME" "`basename $0`"["$$"] ERROR could not make dir "$@ >> $processlog
+            echo `date +%F\ %T`" "`whoami`"@"$HOSTNAME" "$SCRIPTNAME"["$$"] ERROR could not make dir "$@ >> $processlog
          else
             echo "could not make dir "$@
@@ -95,5 +95,5 @@
 {
    makedir $processlogpath
-   echo `date +%F\ %T`" "`whoami`"@"$HOSTNAME" "`basename $0`"["$$"] "$@ >> $processlog
+   echo `date +%F\ %T`" "`whoami`"@"$HOSTNAME" "$SCRIPTNAME"["$$"] "$@ >> $processlog
 }
 
@@ -105,5 +105,5 @@
       printprocesslog "DEBUG " `rm -v $lockfile`
    fi
-   printprocesslog "DEBUG finished $0"
+   printprocesslog "DEBUG finished "$SOURCEFILEPATH"/"$SCRIPTNAME
    exit
 }
@@ -153,5 +153,5 @@
 function checklock()
 {
-   if ! echo `date +%F\ %T`" "`whoami`"@"$HOSTNAME" "`basename $0`"["$$"] "`uname -a` > $lockfile 2>/dev/null
+   if ! echo `date +%F\ %T`" "`whoami`"@"$HOSTNAME" "$SCRIPTNAME"["$$"] "`uname -a` > $lockfile 2>/dev/null
    then 
       printprocesslog "WARN lockfile $lockfile exists"
@@ -424,12 +424,25 @@
    do
       query=$query" AND "$step"Status."`echo ${prims[$j]} | sed -e 's/,//g'`"='${primaries[$s*${#prims[@]}+$j]}' "
-   done   
+   done 
+   # add additional query to allow for locking in db
+   if [ "$1" = "start" ]
+   then 
+      query=$query" AND ISNULL("$step"Status.fStartTime) "
+   fi
+   # add row count to know how many rows have been changed
+   query=$query"; SELECT ROW_COUNT();"
    # print query
    printprocesslog "DEBUG setstatus for step $step QUERY: "$query
    # execute query
-   if ! mysql -s -u $us --password=$pw --host=$ho $db -e " $query "
+   if ! numchanged=`mysql -s -u $us --password=$pw --host=$ho $db -e " $query "`
    then
       printprocesslog "ERROR could not set status in db (program: $program, function setstatus)"
       finish
+   fi
+   if [ $numchanged -gt 0 ]
+   then
+      printprocesslog "INFO successful setting of status in db (program: $program, function setstatus)"
+   else
+      printprocesslog "INFO status in db was already set by other process (program: $program, function setstatus)"
    fi
 }
