From: cvs2svn Date: Tue, 9 May 2006 09:30:08 +0000 (+0000) Subject: This commit was manufactured by cvs2svn to create tag 'GLITE_RELEASE_3_0_0'. X-Git-Tag: GLITE_RELEASE_3_0_0 X-Git-Url: http://scientific.zcu.cz/git/?a=commitdiff_plain;h=e7cf0eeeda9708c8a566011eef09126b588490e3;p=jra1mw.git This commit was manufactured by cvs2svn to create tag 'GLITE_RELEASE_3_0_0'. Sprout from master 2005-10-15 14:14:12 UTC Aleš Křenek 'libtool version info' Cherrypick from master 2006-03-13 15:19:21 UTC Joachim Flammer 'Merge of HEAD with branch 2.1.0.': org.glite.deployment.lb/config/templates/glite-lb.cfg.xml org.glite.deployment.lb/doc/release_notes/release_notes.doc org.glite.deployment.lb/doc/release_notes/release_notes.html org.glite.deployment.lb/doc/release_notes/release_notes.pdf org.glite.deployment.lb/project/lxscript-rpm.xsl org.glite.deployment.lb/project/properties.xml org.glite.deployment.lb/project/quattor-template.xsl org.gridsite.core/src/gridsite-copy.c Cherrypick from master 2004-07-12 16:18:37 UTC Alberto Di Meglio 'Modified to use myproxy from the repository if available': org.glite.security.proxyrenewal/project/configure.properties.xml Cherrypick from glite-lb-server_branch_1_3_0_2_pre_cares 2006-02-20 11:05:06 UTC Aleš Křenek 'push version': org.glite.lb.server/Makefile org.glite.lb.server/config/startup org.glite.lb.server/project/build.number org.glite.lb.server/project/configure.properties.xml org.glite.lb.server/project/version.properties org.glite.lb.server/src/bkserverd.c org.glite.lb.server/src/db_store.c org.glite.lb.server/src/il_lbproxy.c org.glite.lb.server/src/jobstat.h org.glite.lb.server/src/jobstat_supp.c org.glite.lb.server/src/process_event.c org.glite.lb.server/src/query.c org.glite.lb.server/src/request.c org.glite.lb.server/src/store.c.T org.glite.lb.server/src/stored_master.c Cherrypick from glite-lb-client_branch_2_1_0_2_pre_cares 2006-02-20 11:02:54 UTC Aleš Křenek 'push version': org.glite.lb.client/Makefile org.glite.lb.client/examples/job_reg.c org.glite.lb.client/examples/lbmon.c org.glite.lb.client/examples/resubmission.l org.glite.lb.client/examples/shallow_and_full_resub.l org.glite.lb.client/examples/shallow_resub_complex.l org.glite.lb.client/examples/shallow_resub_simple.l org.glite.lb.client/examples/shallow_resub_simple2.l org.glite.lb.client/project/build.number org.glite.lb.client/project/version.properties org.glite.lb.client/src/connection.c org.glite.lb.client/src/logevent.c.T org.glite.lb.client/src/prod_proto.c org.glite.lb.client/src/producer.c Cherrypick from glite-security-proxyrenewal_branch_1_0_0_RC1 2006-03-01 09:23:02 UTC Daniel Kouřil 'bumped version': org.glite.security.proxyrenewal/Makefile org.glite.security.proxyrenewal/build.xml org.glite.security.proxyrenewal/config/startup org.glite.security.proxyrenewal/interface/renewal.h org.glite.security.proxyrenewal/project/build.number org.glite.security.proxyrenewal/project/version.properties org.glite.security.proxyrenewal/src/api.c org.glite.security.proxyrenewal/src/commands.c org.glite.security.proxyrenewal/src/common.c org.glite.security.proxyrenewal/src/renew.c org.glite.security.proxyrenewal/src/renewal_locl.h org.glite.security.proxyrenewal/src/renewd.c org.glite.security.proxyrenewal/src/renewd_locl.h org.glite.security.proxyrenewal/src/voms.c Cherrypick from glite_branch_1_5_0 2006-01-25 15:30:37 UTC Andrew McNab '-fPIC for ia64': org.gridsite.core/CHANGES org.gridsite.core/VERSION org.gridsite.core/project/configure.properties.xml org.gridsite.core/project/version.properties org.gridsite.core/src/Makefile org.gridsite.core/src/gridsite.spec org.gridsite.core/src/grst_asn1.c org.gridsite.core/src/grst_x509.c org.gridsite.core/src/htcp org.gridsite.core/src/mod_gridsite.c org.gridsite.core/src/showx509exts.c Cherrypick from glite-lb-common_branch_3_0_0_2_pre_cares 2006-02-20 11:01:33 UTC Aleš Křenek 'push version': org.glite.lb.common/Makefile org.glite.lb.common/interface/context-int.h org.glite.lb.common/project/build.number org.glite.lb.common/project/version.properties org.glite.lb.common/src/context.c org.glite.lb.common/src/il_msg.c org.glite.lb.common/src/lb_plain_io.c org.glite.lb.common/src/log_msg.c org.glite.lb.common/src/ulm_parse.c Cherrypick from glite-jp-primary_branch_1_1_0_RC15 2005-10-21 12:54:03 UTC Aleš Křenek '- merged in 1.5 version of config/startup': org.glite.jp.primary/Makefile org.glite.jp.primary/config/glite-jp-primary-dbsetup.sh org.glite.jp.primary/config/startup org.glite.jp.primary/doc/README.install org.glite.jp.primary/examples/sample_job org.glite.jp.primary/project/build.number org.glite.jp.primary/project/version.properties Cherrypick from glite-deployment-lb_branch_2_2_0 2006-05-09 09:30:07 UTC Master Builder 'Incremented build number [GLBUILDER]': org.glite.deployment.lb/CHANGELOG org.glite.deployment.lb/config/scripts/glite-lb-config.py org.glite.deployment.lb/project/build.number org.glite.deployment.lb/project/glite-lb.sdf.xml.template org.glite.deployment.lb/project/version.properties Cherrypick from glite-jp_branch_1_1_0_RC15 2005-12-01 20:05:07 UTC Aleš Křenek '- push version': org.glite.jp/build.xml org.glite.jp/project/build.number org.glite.jp/project/dependencies.properties org.glite.jp/project/glite.jp.csf.xml org.glite.jp/project/version.properties Cherrypick from glite-lb-proxy_branch_1_2_0_2_pre_cares 2006-02-20 11:07:05 UTC Aleš Křenek 'push version': org.glite.lb.proxy/Makefile org.glite.lb.proxy/config/startup org.glite.lb.proxy/project/build.number org.glite.lb.proxy/project/version.properties org.glite.lb.proxy/src/lbproxy.c Cherrypick from glite-lb_branch_1_2_0_3_pre_cares 2006-02-27 09:47:35 UTC Aleš Křenek 'push also lb version': org.glite.lb/build.xml org.glite.lb/project/dependencies.properties org.glite.lb/project/glite.lb.csf.xml org.glite.lb/project/version.properties Cherrypick from glite-lb_branch_1_2_0_3_pre_cares 2006-02-20 04:06:29 UTC Master Builder 'Incremented build number [GLBUILDER]': org.glite.lb/project/build.number Cherrypick from glite-lb-logger_branch_1_2_0_2_pre_cares 2006-02-27 09:41:04 UTC Aleš Křenek 'Avoid mixing threaded and non-trheaded globus libraries': org.glite.lb.logger/Makefile org.glite.lb.logger/project/version.properties org.glite.lb.logger/src/send_event.c Cherrypick from glite-lb-logger_branch_1_2_0_2_pre_cares 2006-02-20 03:54:41 UTC Master Builder 'Incremented build number [GLBUILDER]': org.glite.lb.logger/project/build.number Cherrypick from glite-lb-server-bones_branch_2_1_0_2_pre_cares 2006-02-20 11:03:59 UTC Aleš Křenek 'push version': org.glite.lb.server-bones/examples/cnt_example.c org.glite.lb.server-bones/project/build.number org.glite.lb.server-bones/project/version.properties org.glite.lb.server-bones/src/srvbones.c Cherrypick from glite-wms-utils-exception_branch_1_0_3_RC15 2006-01-19 23:16:39 UTC Elisabetta Ronchieri 'Increased version': org.glite.wms-utils.exception/configure.ac org.glite.wms-utils.exception/project/build.number org.glite.wms-utils.exception/project/configure.properties.xml org.glite.wms-utils.exception/project/version.properties Cherrypick from glite-wms-utils-jobid_branch_1_0_2_RC15 2006-01-19 23:17:46 UTC Elisabetta Ronchieri 'Increased version': org.glite.wms-utils.jobid/configure.ac org.glite.wms-utils.jobid/project/build.number org.glite.wms-utils.jobid/project/configure.properties.xml org.glite.wms-utils.jobid/project/version.properties Cherrypick from glite-lb-client-interface_branch_2_1_0_2_pre_cares 2006-02-20 10:59:27 UTC Aleš Křenek 'push version': org.glite.lb.client-interface/interface/context.h org.glite.lb.client-interface/project/build.number org.glite.lb.client-interface/project/version.properties Cherrypick from glite-security-gsoap-plugin_branch_1_2_1_pre_cares 2006-01-20 13:02:41 UTC Aleš Křenek 'pushed version': org.glite.security.gsoap-plugin/Makefile org.glite.security.gsoap-plugin/project/build.number org.glite.security.gsoap-plugin/project/version.properties Cherrypick from glite-jp-client_branch_1_0_0_pre_cares 2005-12-01 20:02:26 UTC Aleš Křenek 'fix for #13855': org.glite.jp.client/Makefile org.glite.jp.client/project/version.properties Cherrypick from glite-lb-ws-interface_branch_3_0_0_RC15 2005-10-18 15:35:44 UTC Aleš Křenek 'pull back incorrectly increased version number': org.glite.lb.ws-interface/project/build.number org.glite.lb.ws-interface/project/version.properties Cherrypick from glite-jp-common_branch_1_1_0_RC15 2005-10-16 18:26:39 UTC Master Builder 'Incremented build number [GLBUILDER]': org.glite.jp.common/project/build.number Cherrypick from glite-jp-index_branch_1_1_0_RC15 2005-10-20 09:40:06 UTC Aleš Křenek 'added from HEAD': org.glite.jp.index/doc/README Cherrypick from glite-jp-server-common_branch_1_0_0_RC15 2005-10-16 18:28:26 UTC Master Builder 'Incremented build number [GLBUILDER]': org.glite.jp.server-common/project/build.number Cherrypick from glite-jp-ws-interface_branch_1_1_0_RC15 2005-10-16 18:24:30 UTC Master Builder 'Incremented build number [GLBUILDER]': org.glite.jp.ws-interface/project/build.number Cherrypick from glite-lb-utils_branch_1_0_0_RC15 2005-10-16 18:40:43 UTC Master Builder 'Incremented build number [GLBUILDER]': org.glite.lb.utils/project/build.number Cherrypick from glite-security-gsoap-plugin_branch_1_2_0 2005-10-18 07:16:35 UTC Aleš Křenek 'use gsoap 2.7.6b too': org.glite.security.gsoap-plugin/build.xml Delete: org.glite.deployment.lb/config/scripts/remove_all_rpms.sh org.glite.jp.client/doc/README.jpimporter --- diff --git a/org.glite.deployment.lb/CHANGELOG b/org.glite.deployment.lb/CHANGELOG index 9f1b376..37edac9 100644 --- a/org.glite.deployment.lb/CHANGELOG +++ b/org.glite.deployment.lb/CHANGELOG @@ -1,26 +1,43 @@ -DATE: 08-07-2005 15:20 -[dimeglio] Merged from branch 1.2.2 - -DATE: 25-05-2005 20:00 -[dimeglio] Merged from branch 1.2.2 - -DATE: 21-03-2005 17:21 -[dimeglio] Implemented status method - -DATE: 21-03-2005 00:32 -[dimeglio] Added PERL5LIB env var - -DATE: 17-03-2005 17:33 -[gdiez] Stopping and starting the database before the index creation (just after the database is created and the user granted) - -DATE: 09-03-2005 23:05 -[dimeglio] Moved creation of indices inside database creation (if database - exists indices are not recreated) - -DATE: 02-03-2005 11:05 -[dimeglio] Started CHANGELOG -[dimeglio] Fixed formatting, improved display of message using glib.printXxxMessage functions -[dimeglio] Fixed some problems when starting/stopping services -[dimeglio] GLITE_USER parameter not exposed anymore in config file, use same user parameters - as WMS to allow installation on same node -[dimeglio] Increased module version number to 1.2.0 \ No newline at end of file +DATE: 27-04-2006 14:15 +[flammer] Changed deps to j2re. + +DATE: 27-04-2006 14:15 +[flammer] Added deps on j2sdk. + +DATE: 13-03-2006 16:15 +[flammer] Merge of HEAD with branch 2.1.0 +[flammer] Increased version to 2.2.0 + +DATE: 04-12-2005 21:15 +[dimeglio] Added configuration parameter for setting mysql max_allowed_packet + +DATE: 23-11-2005 23:50 +[dimeglio] Use ConfigParams class +[dimeglio] Removed servietool instabce config params, put instance creation in script + +DATE: 08-07-2005 15:20 +[dimeglio] Merged from branch 1.2.2 + +DATE: 25-05-2005 20:00 +[dimeglio] Merged from branch 1.2.2 + +DATE: 21-03-2005 17:21 +[dimeglio] Implemented status method + +DATE: 21-03-2005 00:32 +[dimeglio] Added PERL5LIB env var + +DATE: 17-03-2005 17:33 +[gdiez] Stopping and starting the database before the index creation (just after the database is created and the user granted) + +DATE: 09-03-2005 23:05 +[dimeglio] Moved creation of indices inside database creation (if database + exists indices are not recreated) + +DATE: 02-03-2005 11:05 +[dimeglio] Started CHANGELOG +[dimeglio] Fixed formatting, improved display of message using glib.printXxxMessage functions +[dimeglio] Fixed some problems when starting/stopping services +[dimeglio] GLITE_USER parameter not exposed anymore in config file, use same user parameters + as WMS to allow installation on same node +[dimeglio] Increased module version number to 1.2.0 diff --git a/org.glite.deployment.lb/config/scripts/glite-lb-config.py b/org.glite.deployment.lb/config/scripts/glite-lb-config.py index f63be09..7b3d37b 100644 --- a/org.glite.deployment.lb/config/scripts/glite-lb-config.py +++ b/org.glite.deployment.lb/config/scripts/glite-lb-config.py @@ -6,7 +6,7 @@ # For license conditions see the license file or http://eu-egee.org/license.html # ################################################################################ -# glite-lb-config v. 1.3.0 +# glite-lb-config v. 2.2.3 # # Post-installation script for configuring the gLite Logging and Bookkeping Server # Robert Harakaly < robert.harakaly@cern.ch > @@ -16,9 +16,13 @@ # Version info: $Id$ # # Usage: python glite-lb-config [-c|-v|-h|--help] -# -c print configuration -# -v print version +# -c, --checkconf print configuration +# -v, --version print version # -h,--help print usage info +# --configure configure the service +# --start start the service +# --stop stop the service +# --status show service status # # Return codes: 0 - Ok # 1 - Configuration failed @@ -30,6 +34,8 @@ import sys, posix, getopt,time sys.path.append(".") from gLiteInstallerLib import gLib +from gLiteInstallerLib import ConfigParams +from gliteRgmaServicetool import gliteRgmaServicetoolInstance from gliteRgmaServicetool import gliteRgmaServicetool import mysql as MySQL @@ -42,10 +48,9 @@ class glite_lb: def __init__(self): self.mysql = MySQL.Mysql() self.verbose = 0 - self.version = "1.3.0" + self.version = "2.2.3" self.name = "glite-lb" self.friendly_name = "gLite Logging and Bookkeeping" - params['module.version'] = self.version #------------------------------------------------------------------------------- # Banner @@ -98,6 +103,7 @@ python %s-config [OPTION...]""" % (self.name, os.environ['GLITE_LOCATION'], \ print ' -c, --checkconf print the service configuration' print ' -v, --version print the version of the configuration script' print ' -h, --help print this usage information' + print ' --configure configure the service' print ' --start start the service' print ' --stop stop the service' print ' --status check service status' @@ -109,8 +115,15 @@ python %s-config [OPTION...]""" % (self.name, os.environ['GLITE_LOCATION'], \ def start(self): - self.mysql.start() + print "Starting MySQL daemon ", + errorcode = os.system("/usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid=/var/lib/mysql/%s.pid --max_allowed_packet=%s &" \ + % (glib.fq_hostname,params['mysql.max_allowed_packet'])) time.sleep(5) + if errorcode: + glib.printFailedMessage() + return errorcode + else: + glib.printOkMessage() if not os.path.exists('/tmp/mysql.sock'): os.symlink('/var/lib/mysql/mysql.sock', '/tmp/mysql.sock') @@ -138,34 +151,19 @@ python %s-config [OPTION...]""" % (self.name, os.environ['GLITE_LOCATION'], \ #------------------------------------------------------------------- # Start Servicetool #------------------------------------------------------------------- - - pid = glib.getPID('rgma-servicetool') - if (pid != 0): - print 'The gLite R-GMA Servicetool service is already running. Restarting...' - rgmaServicetool.stop() - else: - print "Starting the gLite R-GMA Servicetool service" - - rgmaServicetool.start() - - # Check that the daemon is running - - pid = glib.getPID('rgma-servicetool') - - if (pid != 0): - print "The gLite R-GMA Servicetool service has been started ", - glib.printOkMessage() - else: - glib.printErrorMessage("Could not start the gLite R-GMA Servicetool service") - glib.printErrorMessage("Please verify and re-run the script "), - glib.printFailedMessage() - return 1 + if params['rgma.servicetool.activate'] == "true": + + errorcode = rgmaServicetool.start() + if (errorcode != 0): + return 1 return 0 def stop(self): + error_level = 0 + pid = glib.getPID('bkserverd') if (pid != 0): os.system('%s/etc/init.d/glite-lb-bkserverd stop' % os.environ['GLITE_LOCATION']) @@ -174,29 +172,27 @@ python %s-config [OPTION...]""" % (self.name, os.environ['GLITE_LOCATION'], \ if (pid != 0): print 'Could not stop the LB Server service ', glib.printFailedMessage() + error_level = 1 else: print 'The LB Server service has been stopped ', glib.printOkMessage() + #------------------------------------------------------------------- + # MySQL + #------------------------------------------------------------------- + self.mysql.stop() #------------------------------------------------------------------- - # Stop the servicetool + # Servicetool #------------------------------------------------------------------- - pid = glib.getPID('rgma-servicetool') - if (pid != 0): - rgmaServicetool.stop() - - pid = glib.getPID('rgma-servicetool') - if (pid != 0): - print 'Could not stop the R-GMA Servicetool service ', - glib.printFailedMessage() - else: - print 'The R-GMA Servicetool service has been stopped ', - glib.printOkMessage() - - return 0 + if params['rgma.servicetool.activate'] == "true": + + if rgmaServicetool.stop(): + error_level = 1 + + return error_level def status(self): @@ -206,6 +202,15 @@ python %s-config [OPTION...]""" % (self.name, os.environ['GLITE_LOCATION'], \ if retval != 0: error_level = 1 + #------------------------------------------------------------------- + # Servicetool + #------------------------------------------------------------------- + + if params['rgma.servicetool.activate'] == "true": + + if rgmaServicetool.status() != 0: + error_level = 1 + return error_level def configure(self): @@ -215,12 +220,11 @@ python %s-config [OPTION...]""" % (self.name, os.environ['GLITE_LOCATION'], \ #-------------------------------------------------------- if os.system("python %s/glite-security-utils-config.py --subservice" % glib.getScriptPath()): - print "\nInstalling gLite Security Utilities ", + print "\nConfiguring gLite Security Utilities ", glib.printFailedMessage() - return 1 - - print "\nInstalling gLite Security Utilities ", - glib.printOkMessage() + else: + print "\nConfiguring gLite Security Utilities ", + glib.printOkMessage() # Create the GLITE_USER if it doesn't exists print "\nCreating/Verifying the GLITE_USER account %s" % os.environ['GLITE_USER'] @@ -231,8 +235,8 @@ python %s-config [OPTION...]""" % (self.name, os.environ['GLITE_LOCATION'], \ glib.printOkMessage() # Create all directories needed - print "\nVerify CA certificates directory ", glib.check_dir(os.environ['GLITE_CERT_DIR']) + print "\nVerify CA certificates directory ", glib.printOkMessage() # Copy certificates @@ -244,17 +248,38 @@ python %s-config [OPTION...]""" % (self.name, os.environ['GLITE_LOCATION'], \ os.chmod("%s/hostkey.pem" % lb_cert_path, 0400) glib.printOkMessage() - # Create the MySQL database - print "\nCreate/Verify the %s database" % params['lb.database.name'] + #-------------------------------------------------------- + # Configure MySQL + #-------------------------------------------------------- + + # Set mysql parameters + #self.mysql.setConfiguration('mysql','loose-max_allowed_packet',params['mysql.max_allowed_packet']) + self.mysql.setConfiguration('mysqld','max_allowed_packet',params['mysql.max_allowed_packet']) + + # start MySQL self.mysql.stop() time.sleep(5) - self.mysql.start() - + self.mysql.start() + if not os.path.exists('/tmp/mysql.sock'): os.symlink('/var/lib/mysql/mysql.sock', '/tmp/mysql.sock') + # ------------------------------------------------------------ + # Check password of MySQL + # ------------------------------------------------------------ + + self.mysql_root_password = params['mysql.root.password'] + if not params.has_key('set.mysql.root.password'): + params['set.mysql.root.password'] = 'false' + setempty = params['set.mysql.root.password'] + if self.mysql.checkMySQLConfiguration(self.mysql_root_password,setempty): + return 1 + + # Create the MySQL database + print "\nCreate/Verify the %s database" % params['lb.database.name'] + # Check if database exists - if self.mysql.existsDB(params['lb.database.name']) != 0: + if self.mysql.existsDB(params['lb.database.name'],self.mysql_root_password) != 0: # Create database print ('\n==> Creating MySQL %s database\n' % params['lb.database.name']) @@ -262,15 +287,14 @@ python %s-config [OPTION...]""" % (self.name, os.environ['GLITE_LOCATION'], \ os.remove('/tmp/mysql_ct') file = open('/tmp/mysql_ct', 'w') - text = ['CREATE DATABASE %s;\n' % params['lb.database.name'], - 'GRANT ALL PRIVILEGES ON %s.* TO %s@localhost IDENTIFIED BY "";\n' \ - % (params['lb.database.name'],params['lb.database.username']), - 'USE %s;\n' % params['lb.database.name'], - '\. %s/etc/glite-lb-dbsetup.sql\n' % os.environ['GLITE_LOCATION']] + + self.mysql.add_user(params['lb.database.name'],params['lb.database.username'],"",self.mysql_root_password) + text = ['USE %s;\n' % params['lb.database.name'], + '\. %s/etc/glite-lb-dbsetup.sql\n' % os.environ['GLITE_LOCATION']] file.writelines(text) file.close() - os.system('/usr/bin/mysql < /tmp/mysql_ct') + os.system('/usr/bin/mysql -p%s < /tmp/mysql_ct' % self.mysql_root_password) os.system('/bin/rm /tmp/mysql_ct') #Starting and stopping the database before the index creation @@ -312,17 +336,32 @@ python %s-config [OPTION...]""" % (self.name, os.environ['GLITE_LOCATION'], \ #------------------------------------------------------------------- # RGMA servicetool: configure servicetool #------------------------------------------------------------------- - - print "Configuring the R-GMA Servicetool..." - - if rgmaServicetool.configure(glib): - # error in configuring services - print "Configuring the R-GMA Servicetool... ", - glib.printFailedMessage() - return 1 - - print "Configuring the R-GMA Servicetool... ", - glib.printOkMessage() + + if params['rgma.servicetool.activate'] == "true": + + # Instantiate the rgma-servicetool class + rgmaServicetool = gliteRgmaServicetool() + rgmaServicetool.verbose = self.verbose + + # Create Local Logger instance + serviceId = "%s_%s" % (glib.fq_hostname, params['lbserver.serviceType']) + servicetoolInstance = gliteRgmaServicetoolInstance(glib, serviceId) + + # set params + servicetoolInstance.setServiceName(params['lbserver.serviceName']) + servicetoolInstance.setServiceType(params['lbserver.serviceType']) + servicetoolInstance.setServiceVersion(self.version) + servicetoolInstance.setStatusScript(params['lbserver.statusScript']) + servicetoolInstance.setEndpoint(params['lbserver.endpoint']) + + # add instance to the gLite configuration + if servicetoolInstance.add() == 1: + return 1 + + # Configure servicetool + if rgmaServicetool.configure(glib): + # error in configuring servicetool + return 1 return 0 @@ -330,6 +369,19 @@ python %s-config [OPTION...]""" % (self.name, os.environ['GLITE_LOCATION'], \ # Set all environment variables #------------------------------------------------------------------------------- +def loadDefaults(params): + + params['GLITE_LOCATION'] = "/opt/glite" + params['mysql.root.password'] = "" + params['lb.database.name'] = "lbserver20" + params['lb.database.username'] = "lbserver" + params['mysql.max_allowed_packet'] = "17M" + + params['lbserver.serviceName'] = 'LB Server service at %s' % glib.fq_hostname + params['lbserver.serviceType'] = 'org.glite.lb.server' + params['lbserver.statusScript'] = '%s/etc/init.d/glite-lb-bkserverd status' % params['GLITE_LOCATION'] + params['lbserver.endpoint'] = 'not available' + def set_env(): # gLite @@ -380,20 +432,24 @@ if __name__ == '__main__': print '"\nThis script must be run as root\n' sys.exit(1) + # Get an instance of the ConfigParams class + params = ConfigParams() + # Get an instance of the library class glib = gLib() # Load parameters - params = {} + loadDefaults(params) try: - opts, args = getopt.getopt(sys.argv[1:], '', ['siteconfig=']) + opts, args = glib.getopt(sys.argv[1:], '', ['siteconfig=']) for o, a in opts: if o == "--siteconfig": params['site.config.url'] = a break except getopt.GetoptError: pass - if glib.loadConfiguration("%s/../glite-lb.cfg.xml" % glib.getScriptPath(),params): + if glib.loadConfiguration(["%s/../glite-lb.cfg.xml" % glib.getScriptPath(), \ + "%s/../glite-rgma-servicetool.cfg.xml" % glib.getScriptPath()],params): print "An error occurred while configuring the service" sys.exit(1) @@ -415,66 +471,111 @@ if __name__ == '__main__': # Command line opts if any try: - opts, args = getopt.getopt(sys.argv[1:], 'chv', ['checkconf', 'help', 'version','stop','start','status','siteconfig=']) + opts, args = glib.getopt(sys.argv[1:], 'chv', ['checkconf', 'help', 'version','configure','stop','start','status','siteconfig=']) except getopt.GetoptError: service.usage(msg = "Unknown options(s)") sys.exit(1) + if len(opts) == 0: + service.usage() + sys.exit(0) + # Check cli options for o, a in opts: + if o in ("-h", "--help"): service.usage() sys.exit(0) + if o in ("-v", "--version"): service.showVersion() sys.exit(0) + if o in ("-c", "--checkconf"): service.copyright() service.showVersion() glib.print_params(params) + print + rgmaServicetool.showServices() sys.exit(0) - if o in ("stop", "--stop"): + + if o == "--configure": + + # Check certificates + if params.has_key('glite.installer.checkcerts'): + if params['glite.installer.checkcerts'] == "true": + if glib.check_certs(params) != 0: + print "An error occurred while configuring the %s service" \ + % service.friendly_name + sys.exit(1) + + # Print configuration parameters + if verbose: + glib.print_params(params) + + service.copyright() + service.showVersion() + service.banner() + + # Stop all services + glib.printInfoMessage("\n\nStopping all running LB services...") service.stop() - sys.exit(0) - if o in ("start", "--start"): - service.start() - sys.exit(0) - if o == "--status": - sys.exit(service.status()) + + # Configure the service + return_result = service.configure() + + if return_result == 0: + + # Stop all services + glib.printInfoMessage("\n\nStopping all running LB services...") + service.stop() + + print "\n\nThe %s configuration was successfully completed\n" % service.friendly_name + print "You can now start the service using the --start option of this script\n\n" + glib.registerService() + + sys.exit(0) + + elif return_result == 2: + + # Stop all services + glib.printInfoMessage("\n\nStopping all running LB services...") + service.stop() + print "\n\nThe %s configuration was completed,\n" % service.friendly_name + print "but warnings were issued. Please revise them and re-run the script\n" + print "or configure LB manually\n" - # Check certificates - if params.has_key('glite.installer.checkcerts'): - if params['glite.installer.checkcerts'] == "true": - if glib.check_certs(params) != 0: - print "An error occurred while configuring the %s service" \ + sys.exit(2) + + else: + print "\n\nAn unrecoverable error occurred while configuring the %s" \ % service.friendly_name - sys.exit(1) - - # Print configuration parameters - if verbose: - glib.print_params(params) - service.copyright() - service.showVersion() - service.banner() - - # Configure the service - if service.configure() == 0: - print "\n%s configuration successfully completed " % service.friendly_name, - glib.printOkMessage() - glib.registerService() - else: - print "\nAn error occurred while configuring the %s " % service.friendly_name, - glib.printFailedMessage() - sys.exit(1) + sys.exit(1) + + if o in ("start", "--start"): + # Start the service + if service.start() == 0: + print "\n\nThe %s was successfully started " % service.friendly_name, + glib.printOkMessage() + sys.exit(0) + else: + print "\n\nAn error occurred while starting the %s " % service.friendly_name, + glib.printFailedMessage() + sys.exit(1) + + if o in ("stop", "--stop"): + # Stop the service + if service.stop() == 0: + print "\n\nThe %s was successfully stopped " % service.friendly_name, + glib.printOkMessage() + sys.exit(0) + else: + print "\n\nAn unrecoverable error occurred while stopping the %s " % service.friendly_name, + glib.printFailedMessage() + sys.exit(1) - # Start the service - if service.start() == 0: - print "\nThe %s was successfully started " % service.friendly_name, - glib.printOkMessage() - else: - print "\nAn error occurred while starting the %s " % service.friendly_name, - glib.printFailedMessage() - sys.exit(1) - + if o == "--status": + sys.exit(service.status()) + diff --git a/org.glite.deployment.lb/config/scripts/remove_all_rpms.sh b/org.glite.deployment.lb/config/scripts/remove_all_rpms.sh deleted file mode 100755 index 2835ee1..0000000 --- a/org.glite.deployment.lb/config/scripts/remove_all_rpms.sh +++ /dev/null @@ -1,49 +0,0 @@ - -#!/bin/sh - -rpm -e edg-fetch-crl-1.0.0-EGEE \ -ca_ArmeSFo-0.23-1 \ -ca_ASGCCA-0.23-1 \ -ca_BEGrid-0.23-1 \ -ca_CERN-0.23-1 \ -ca_CESNET-0.23-1 \ -ca_CNRS-0.23-1 \ -ca_CNRS-DataGrid-0.23-1 \ -ca_CNRS-Projets-0.23-1 \ -ca_CyGrid-0.23-1 \ -ca_DOEGrids-0.23-1 \ -ca_DOESG-Root-0.23-1 \ -ca_ESnet-0.23-1 \ -ca_FNAL-0.23-1 \ -ca_FNAL_KCA-0.23-1 \ -ca_GermanGrid-0.23-1 \ -ca_Grid-Ireland-0.23-1 \ -ca_GridCanada-0.23-1 \ -ca_HellasGrid-0.23-1 \ -ca_INFN-0.23-1 \ -ca_IUCC-0.23-1 \ -ca_LIP-0.23-1 \ -ca_NIKHEF-0.23-1 \ -ca_NorduGrid-0.23-1 \ -ca_PK-Grid-0.23-1 \ -ca_PolishGrid-0.23-1 \ -ca_Russia-0.23-1 \ -ca_SlovakGrid-0.23-1 \ -ca_Spain-0.23-1 \ -ca_UKeScience-0.23-1 \ -glite-wms-utils-exception-0.1.0-0 \ -glite-wms-utils-jobid-0.1.0-0 \ -glite-lb-client-interface-0.2.0-0 \ -glite-lb-server-bones-0.0.0-0 \ -glite-lb-common-0.2.0-0 \ -glite-lb-logger-0.2.0-0 \ -glite-lb-server-0.3.0-0 \ -glite-security-proxyrenewal-0.1.0-1 \ -ares-1.1.1-EGEE \ -gpt-VDT1.2.0rh9-1 \ -vdt_globus_essentials-VDT1.2.0rh9-1 \ -perl-Expect.pm-1.01-9 \ -myproxy-1.14-EGEE \ -MySQL-client-4.0.20-0 \ -MySQL-server-4.0.20-0 - diff --git a/org.glite.deployment.lb/config/templates/glite-lb.cfg.xml b/org.glite.deployment.lb/config/templates/glite-lb.cfg.xml index ed39d97..4e11e33 100644 --- a/org.glite.deployment.lb/config/templates/glite-lb.cfg.xml +++ b/org.glite.deployment.lb/config/templates/glite-lb.cfg.xml @@ -1,4 +1,4 @@ - + @@ -17,6 +17,10 @@ parameter. Leave it empty of comment it out to use the same as 'glite.user.name'" value="changeme"/> + + @@ -30,12 +34,31 @@ description="Enable check of host certificates" value="true"/> - - + + + + + + + + + + @@ -45,90 +68,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/org.glite.deployment.lb/doc/release_notes/release_notes.doc b/org.glite.deployment.lb/doc/release_notes/release_notes.doc index ae9fd18..2ad2d4d 100644 Binary files a/org.glite.deployment.lb/doc/release_notes/release_notes.doc and b/org.glite.deployment.lb/doc/release_notes/release_notes.doc differ diff --git a/org.glite.deployment.lb/doc/release_notes/release_notes.html b/org.glite.deployment.lb/doc/release_notes/release_notes.html index ecba765..01ee3f4 100644 --- a/org.glite.deployment.lb/doc/release_notes/release_notes.html +++ b/org.glite.deployment.lb/doc/release_notes/release_notes.html @@ -20,6 +20,9 @@ {font-family:Times; panose-1:2 2 6 3 5 4 5 2 3 4;} @font-face + {font-family:ZWAdobeF; + panose-1:0 0 0 0 0 0 0 0 0 0;} +@font-face {font-family:"Univers \(W1\)";} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal @@ -134,6 +137,78 @@ p.MsoIndex1, li.MsoIndex1, div.MsoIndex1 text-align:justify; font-size:12.0pt; font-family:"Times New Roman";} +p.MsoIndex2, li.MsoIndex2, div.MsoIndex2 + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:22.0pt; + text-align:justify; + text-indent:-11.0pt; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoIndex3, li.MsoIndex3, div.MsoIndex3 + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:33.0pt; + text-align:justify; + text-indent:-11.0pt; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoIndex4, li.MsoIndex4, div.MsoIndex4 + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:44.0pt; + text-align:justify; + text-indent:-11.0pt; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoIndex5, li.MsoIndex5, div.MsoIndex5 + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:55.0pt; + text-align:justify; + text-indent:-11.0pt; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoIndex6, li.MsoIndex6, div.MsoIndex6 + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:66.0pt; + text-align:justify; + text-indent:-11.0pt; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoIndex7, li.MsoIndex7, div.MsoIndex7 + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:77.0pt; + text-align:justify; + text-indent:-11.0pt; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoIndex8, li.MsoIndex8, div.MsoIndex8 + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:88.0pt; + text-align:justify; + text-indent:-11.0pt; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoIndex9, li.MsoIndex9, div.MsoIndex9 + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:99.0pt; + text-align:justify; + text-indent:-11.0pt; + font-size:11.0pt; + font-family:"Times New Roman";} p.MsoToc1, li.MsoToc1, div.MsoToc1 {margin-top:6.0pt; margin-right:0mm; @@ -259,6 +334,15 @@ p.MsoFooter, li.MsoFooter, div.MsoFooter text-align:justify; font-size:11.0pt; font-family:"Times New Roman";} +p.MsoIndexHeading, li.MsoIndexHeading, div.MsoIndexHeading + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:0mm; + text-align:justify; + font-size:11.0pt; + font-family:Arial; + font-weight:bold;} p.MsoCaption, li.MsoCaption, div.MsoCaption {margin-top:6.0pt; margin-right:0mm; @@ -268,1627 +352,1266 @@ p.MsoCaption, li.MsoCaption, div.MsoCaption font-size:11.0pt; font-family:"Times New Roman"; font-weight:bold;} -span.MsoFootnoteReference - {vertical-align:super;} -p.MsoBodyText, li.MsoBodyText, div.MsoBodyText - {margin-top:3.0pt; +p.MsoTof, li.MsoTof, div.MsoTof + {margin-top:2.0pt; margin-right:0mm; - margin-bottom:3.0pt; + margin-bottom:2.0pt; margin-left:0mm; text-align:justify; font-size:11.0pt; font-family:"Times New Roman";} -p.MsoBodyText3, li.MsoBodyText3, div.MsoBodyText3 - {margin-top:2.5pt; +p.MsoEnvelopeAddress, li.MsoEnvelopeAddress, div.MsoEnvelopeAddress + {margin-top:2.0pt; margin-right:0mm; - margin-bottom:2.5pt; + margin-bottom:2.0pt; + margin-left:144.0pt; + text-align:justify; + font-size:12.0pt; + font-family:Arial;} +p.MsoEnvelopeReturn, li.MsoEnvelopeReturn, div.MsoEnvelopeReturn + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; margin-left:0mm; text-align:justify; - page-break-after:avoid; font-size:10.0pt; font-family:Arial;} -p.MsoBlockText, li.MsoBlockText, div.MsoBlockText +span.MsoFootnoteReference + {vertical-align:super;} +p.MsoEndnoteText, li.MsoEndnoteText, div.MsoEndnoteText {margin-top:2.0pt; margin-right:0mm; margin-bottom:2.0pt; margin-left:0mm; text-align:justify; - text-indent:17.0pt; + font-size:10.0pt; + font-family:"Times New Roman";} +p.MsoToa, li.MsoToa, div.MsoToa + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:11.0pt; + text-align:justify; + text-indent:-11.0pt; font-size:11.0pt; font-family:"Times New Roman";} -a:link, span.MsoHyperlink - {color:blue; - text-decoration:underline;} -a:visited, span.MsoHyperlinkFollowed - {color:purple; - text-decoration:underline;} -p.MsoDocumentMap, li.MsoDocumentMap, div.MsoDocumentMap +p.MsoMacroText, li.MsoMacroText, div.MsoMacroText {margin-top:2.0pt; margin-right:0mm; margin-bottom:2.0pt; margin-left:0mm; text-align:justify; - background:navy; - font-size:11.0pt; - font-family:Tahoma;} -p - {margin-top:5.0pt; + font-size:10.0pt; + font-family:"Courier New";} +p.MsoToaHeading, li.MsoToaHeading, div.MsoToaHeading + {margin-top:6.0pt; margin-right:0mm; - margin-bottom:5.0pt; + margin-bottom:2.0pt; margin-left:0mm; text-align:justify; font-size:12.0pt; - font-family:"Times New Roman";} -tt - {font-family:"Courier New";} -p.3eretraitnormal, li.3eretraitnormal, div.3eretraitnormal + font-family:Arial; + font-weight:bold;} +p.MsoList, li.MsoList, div.MsoList {margin-top:2.0pt; margin-right:0mm; - margin-bottom:3.0pt; - margin-left:102.9pt; + margin-bottom:2.0pt; + margin-left:18.0pt; text-align:justify; - text-indent:-17.85pt; - font-size:12.0pt; + text-indent:-18.0pt; + font-size:11.0pt; font-family:"Times New Roman";} -p.2eretraitjustifi, li.2eretraitjustifi, div.2eretraitjustifi +p.MsoListBullet, li.MsoListBullet, div.MsoListBullet {margin-top:2.0pt; margin-right:0mm; - margin-bottom:3.0pt; - margin-left:40.0mm; + margin-bottom:2.0pt; + margin-left:18.0pt; text-align:justify; - text-indent:-7.1pt; - line-height:12.0pt; + text-indent:-18.0pt; font-size:11.0pt; font-family:"Times New Roman";} -p.2eretraitnormal, li.2eretraitnormal, div.2eretraitnormal +p.MsoListNumber, li.MsoListNumber, div.MsoListNumber {margin-top:2.0pt; margin-right:0mm; - margin-bottom:3.0pt; + margin-bottom:2.0pt; margin-left:18.0pt; text-align:justify; text-indent:-18.0pt; - font-size:12.0pt; + font-size:11.0pt; font-family:"Times New Roman";} -p.1erretraitnormal, li.1erretraitnormal, div.1erretraitnormal +p.MsoList2, li.MsoList2, div.MsoList2 {margin-top:2.0pt; margin-right:0mm; - margin-bottom:12.0pt; - margin-left:0mm; + margin-bottom:2.0pt; + margin-left:36.0pt; text-align:justify; - font-size:12.0pt; + text-indent:-18.0pt; + font-size:11.0pt; font-family:"Times New Roman";} -p.titrebloc, li.titrebloc, div.titrebloc +p.MsoList3, li.MsoList3, div.MsoList3 {margin-top:2.0pt; margin-right:0mm; margin-bottom:2.0pt; - margin-left:0mm; + margin-left:54.0pt; text-align:justify; + text-indent:-18.0pt; font-size:11.0pt; - font-family:Arial; - font-weight:bold;} -p.TitreTable, li.TitreTable, div.TitreTable - {margin-top:6.0pt; + font-family:"Times New Roman";} +p.MsoList4, li.MsoList4, div.MsoList4 + {margin-top:2.0pt; margin-right:0mm; margin-bottom:2.0pt; - margin-left:0mm; - text-align:center; - font-size:12.0pt; - font-family:Arial; - font-weight:bold;} -p.form, li.form, div.form - {margin-top:6.0pt; - margin-right:7.05pt; - margin-bottom:0mm; - margin-left:0mm; - margin-bottom:.0001pt; + margin-left:72.0pt; text-align:justify; - background:black; - border:none; - padding:0mm; - font-size:14.0pt; - font-family:"Univers \(W1\)"; - color:white; - text-transform:uppercase; - font-weight:bold;} -p.HB, li.HB, div.HB + text-indent:-18.0pt; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoList5, li.MsoList5, div.MsoList5 {margin-top:2.0pt; margin-right:0mm; - margin-bottom:12.0pt; - margin-left:0mm; + margin-bottom:2.0pt; + margin-left:90.0pt; text-align:justify; - page-break-after:avoid; - font-size:12.0pt; - font-family:"Times New Roman"; - color:black; - font-weight:bold;} -p.reference, li.reference, div.reference + text-indent:-18.0pt; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoListBullet2, li.MsoListBullet2, div.MsoListBullet2 {margin-top:2.0pt; margin-right:0mm; margin-bottom:2.0pt; - margin-left:0mm; + margin-left:36.0pt; text-align:justify; - page-break-after:avoid; - font-size:9.0pt; - font-family:Arial;} -p.1erretraitjustifi, li.1erretraitjustifi, div.1erretraitjustifi - {margin-top:6.0pt; + text-indent:-18.0pt; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoListBullet3, li.MsoListBullet3, div.MsoListBullet3 + {margin-top:2.0pt; margin-right:0mm; margin-bottom:2.0pt; - margin-left:14.2pt; + margin-left:54.0pt; text-align:justify; - text-indent:-14.2pt; + text-indent:-18.0pt; font-size:11.0pt; font-family:"Times New Roman";} -p.ZonetatEnTte, li.ZonetatEnTte, div.ZonetatEnTte +p.MsoListBullet4, li.MsoListBullet4, div.MsoListBullet4 {margin-top:2.0pt; - margin-right:2.85pt; + margin-right:0mm; margin-bottom:2.0pt; - margin-left:2.85pt; - text-align:center; - page-break-after:avoid; - font-size:36.0pt; - font-family:Arial; - text-transform:uppercase; - font-weight:bold;} -p.DocTitle, li.DocTitle, div.DocTitle + margin-left:72.0pt; + text-align:justify; + text-indent:-18.0pt; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoListBullet5, li.MsoListBullet5, div.MsoListBullet5 {margin-top:2.0pt; margin-right:0mm; margin-bottom:2.0pt; - margin-left:0mm; - text-align:center; - font-size:22.0pt; - font-family:Arial; - font-variant:small-caps; - color:gray; - letter-spacing:4.0pt; - font-weight:bold;} -p.DocDate, li.DocDate, div.DocDate - {margin-top:6.0pt; + margin-left:90.0pt; + text-align:justify; + text-indent:-18.0pt; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoListNumber2, li.MsoListNumber2, div.MsoListNumber2 + {margin-top:2.0pt; margin-right:0mm; - margin-bottom:6.0pt; - margin-left:0mm; + margin-bottom:2.0pt; + margin-left:36.0pt; text-align:justify; + text-indent:-18.0pt; font-size:11.0pt; - font-family:Arial; - layout-grid-mode:line; - font-weight:bold;} -p.DocSubTitle, li.DocSubTitle, div.DocSubTitle + font-family:"Times New Roman";} +p.MsoListNumber3, li.MsoListNumber3, div.MsoListNumber3 {margin-top:2.0pt; margin-right:0mm; margin-bottom:2.0pt; - margin-left:0mm; - text-align:center; - line-height:12.0pt; - font-size:12.0pt; - font-family:Arial; - font-variant:small-caps; - color:gray; - letter-spacing:4.0pt; - font-weight:bold;} - /* Page Definitions */ - @page Section1 - {size:595.3pt 841.9pt; - margin:70.85pt 70.85pt 70.85pt 70.85pt;} -div.Section1 - {page:Section1;} - /* List Definitions */ - ol - {margin-bottom:0mm;} -ul - {margin-bottom:0mm;} ---> - - - - - - -
- -

gLite Logging & Bookkeeping Server

- -

1. Release Description

- -

This release contains the gLite Logging & Bookkeeping -Server module v. 1.2.3. The following sections provide additional information about -the release content, the module dependencies, the know bugs and issues and a -list of bugs closed since the previous release. For information about -installing and using the gLite Logging & Bookkeeping Server, please refer -to the gLite Installation and User Guides.

- -

2. Changes in this Release

- -

This release introduces the following changes:

- -

 

- -
    -
  • All R-GMA service publishing - instances in the configuration template now have default values
  • -
  • Bug fixes (see below for the complete lists)
  • -
- -

3. Release contents

- -

The gLite Logging & Bookkeeping Server v. 1.2.3 is -composed of the following gLite components:

- -

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Component name

-
-

Version

-
-

File

-
-

org.glite.deployment.lb

-
-

1.2.3

-
-

http://glite.web.cern.ch/glite/packages/R1.1/R20050430/installers/glite-lb_installer.sh -

-

http://glite.web.cern.ch/glite/packages/R1.1/R20050430/bin/rhel30/noarch/RPMS/glite-lb-config-1.2.3-1.noarch.rpm

-

apt-get install - glite-lb-config

-
-

org.glite.deployment.config

-
-

1.1.1

-
-

http://glite.web.cern.ch/glite/packages/R1.1/R20050430/bin/rhel30/noarch/RPMS/glite-config-1.1.1-3.noarch.rpm

-
-

org.glite.lb.client-interface

-
-

1.0.3

-
-

http://glite.web.cern.ch/glite/packages/R1.1/R20050430/bin/rhel30/i386/RPMS/glite-lb-client-interface-1.0.3-1.i386.rpm

-
-

org.glite.lb.common

-
-

1.1.4

-
-

http://glite.web.cern.ch/glite/packages/R1.1/R20050430/bin/rhel30/i386/RPMS/glite-lb-common-1.1.4-1.i386.rpm

-
-

org.glite.lb.logger

-
-

1.0.1

-
-

http://glite.web.cern.ch/glite/packages/R1.1/R20050430/bin/rhel30/i386/RPMS/glite-lb-logger-1.0.1-1.i386.rpm

-
-

org.glite.lb.server

-
-

1.0.1

-
-

http://glite.web.cern.ch/glite/packages/R1.1/R20050430/bin/rhel30/i386/RPMS/glite-lb-server-1.0.1-1.i386.rpm

-
-

org.glite.lb.server-bones

-
-

1.0.0

-
-

http://glite.web.cern.ch/glite/packages/R1.1/R20050430/bin/rhel30/i386/RPMS/glite-lb-server-bones-1.0.0-1.i386.rpm

-
-

org.glite.lb.ws-interface

-
-

1.0.1

-
-

http://glite.web.cern.ch/glite/packages/R1.1/R20050430/bin/rhel30/i386/RPMS/glite-lb-ws-interface-1.0.1-1.i386.rpm

-
-

org.glite.security.proxyrenewal

-
-

1.0.13

-
-

http://glite.web.cern.ch/glite/packages/R1.1/R20050430/bin/rhel30/i386/RPMS/glite-security-proxyrenewal-1.0.13-1.i386.rpm

-
-

org.glite.wms-utils.exception

-
-

1.0.1

-
-

http://glite.web.cern.ch/glite/packages/R1.1/R20050430/bin/rhel30/i386/RPMS/glite-wms-utils-exception-1.0.1-1.i386.rpm

-
-

org.glite.wms-utils.jobid

-
-

1.0.0

-
-

http://glite.web.cern.ch/glite/packages/R1.1/R20050430/bin/rhel30/i386/RPMS/glite-wms-utils-jobid-1.0.0-1.i386.rpm

-
-

org.glite.security.voms

-
-

1.2.32

-
-

http://glite.web.cern.ch/glite/packages/R1.1/R20050430/bin/rhel30/i386/RPMS/glite-security-voms-1.2.32-1.i386.rpm

-
-

org.gridsite.core

-
-

1.1.5

-
-

http://glite.web.cern.ch/glite/packages/R1.1/R20050430/bin/rhel30/i386/RPMS/gridsite-1.1.5-1.i386.rpm

-
- -

 

- -

4. Dependencies

- -

The gLite Logging & Bookkeeping Server v. 1.2.2 module -has the following dependencies:

- -

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Component name

-
-

Version

-
-

RPM file name

-
-

gLite Security Utilities

-
-

1.0.1

-
-

http://glite.web.cern.ch/glite/packages/R1.1/R20050430/installers/glite-security-utils_installer.sh

-
-

gLite R-GMA Service Publisher

-
-

4.2.0

-
-

http://glite.web.cern.ch/glite/packages/R1.1/R20050430/installers/glite-rgma-servicetool_installer.sh

-
-

GPT

-
-

VDT 1.2.2

-
-

http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/gpt-VDT1.2.2rh9-1.i386.rpm

-
-

VDT Globus Essentials

-
-

VDT 1.2.2

-
-

http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/vdt_globus_essentials-VDT1.2.2rh9-1.i386.rpm

-
-

MySQL-server

-
-

4.0.20

-
-

http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/MySQL-server-4.0.20-0.i386.rpm

-
-

MySQL-client

-
-

4.0.20

-
-

http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/MySQL-client-4.0.20-0.i386.rpm

-
-

ares

-
-

1.1.1

-
-

http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/ares-1.1.1-EGEE.i386.rpm

-
-

myproxy

-
-

1.14

-
-

http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/myproxy-1.14-EGEE.i386.rpm

-
-

perl-Expect.pm

-
-

1.01

-
-

http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/per-Expect.pm-1.01-9.i386.rpm

-
-

Java SDK/JRE

-
-

1.4.2

-
-

http://java.sun.com/j2se/1.4.2/download.html

-
- -

 

+ margin-left:54.0pt; + text-align:justify; + text-indent:-18.0pt; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoListNumber4, li.MsoListNumber4, div.MsoListNumber4 + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:72.0pt; + text-align:justify; + text-indent:-18.0pt; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoListNumber5, li.MsoListNumber5, div.MsoListNumber5 + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:90.0pt; + text-align:justify; + text-indent:-18.0pt; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoTitle, li.MsoTitle, div.MsoTitle + {margin-top:12.0pt; + margin-right:0mm; + margin-bottom:3.0pt; + margin-left:0mm; + text-align:center; + font-size:16.0pt; + font-family:Arial; + font-weight:bold;} +p.MsoClosing, li.MsoClosing, div.MsoClosing + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:216.0pt; + text-align:justify; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoSignature, li.MsoSignature, div.MsoSignature + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:216.0pt; + text-align:justify; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoBodyText, li.MsoBodyText, div.MsoBodyText + {margin-top:3.0pt; + margin-right:0mm; + margin-bottom:3.0pt; + margin-left:0mm; + text-align:justify; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoBodyTextIndent, li.MsoBodyTextIndent, div.MsoBodyTextIndent + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:6.0pt; + margin-left:18.0pt; + text-align:justify; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoListContinue, li.MsoListContinue, div.MsoListContinue + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:6.0pt; + margin-left:18.0pt; + text-align:justify; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoListContinue2, li.MsoListContinue2, div.MsoListContinue2 + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:6.0pt; + margin-left:36.0pt; + text-align:justify; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoListContinue3, li.MsoListContinue3, div.MsoListContinue3 + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:6.0pt; + margin-left:54.0pt; + text-align:justify; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoListContinue4, li.MsoListContinue4, div.MsoListContinue4 + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:6.0pt; + margin-left:72.0pt; + text-align:justify; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoListContinue5, li.MsoListContinue5, div.MsoListContinue5 + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:6.0pt; + margin-left:90.0pt; + text-align:justify; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoMessageHeader, li.MsoMessageHeader, div.MsoMessageHeader + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:54.0pt; + text-align:justify; + text-indent:-54.0pt; + background:#CCCCCC; + border:none; + padding:0mm; + font-size:12.0pt; + font-family:Arial;} +p.MsoSubtitle, li.MsoSubtitle, div.MsoSubtitle + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:3.0pt; + margin-left:0mm; + text-align:center; + font-size:12.0pt; + font-family:Arial;} +p.MsoSalutation, li.MsoSalutation, div.MsoSalutation + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:0mm; + text-align:justify; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoDate, li.MsoDate, div.MsoDate + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:0mm; + text-align:justify; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoBodyTextFirstIndent, li.MsoBodyTextFirstIndent, div.MsoBodyTextFirstIndent + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:6.0pt; + margin-left:0mm; + text-align:justify; + text-indent:10.5pt; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoBodyTextFirstIndent2, li.MsoBodyTextFirstIndent2, div.MsoBodyTextFirstIndent2 + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:6.0pt; + margin-left:18.0pt; + text-align:justify; + text-indent:10.5pt; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoNoteHeading, li.MsoNoteHeading, div.MsoNoteHeading + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:0mm; + text-align:justify; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoBodyText2, li.MsoBodyText2, div.MsoBodyText2 + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:6.0pt; + margin-left:0mm; + text-align:justify; + line-height:200%; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoBodyText3, li.MsoBodyText3, div.MsoBodyText3 + {margin-top:2.5pt; + margin-right:0mm; + margin-bottom:2.5pt; + margin-left:0mm; + text-align:justify; + page-break-after:avoid; + font-size:10.0pt; + font-family:Arial;} +p.MsoBodyTextIndent2, li.MsoBodyTextIndent2, div.MsoBodyTextIndent2 + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:6.0pt; + margin-left:18.0pt; + text-align:justify; + line-height:200%; + font-size:11.0pt; + font-family:"Times New Roman";} +p.MsoBodyTextIndent3, li.MsoBodyTextIndent3, div.MsoBodyTextIndent3 + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:6.0pt; + margin-left:18.0pt; + text-align:justify; + font-size:8.0pt; + font-family:"Times New Roman";} +p.MsoBlockText, li.MsoBlockText, div.MsoBlockText + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:0mm; + text-align:justify; + text-indent:17.0pt; + font-size:11.0pt; + font-family:"Times New Roman";} +a:link, span.MsoHyperlink + {color:blue; + text-decoration:underline;} +a:visited, span.MsoHyperlinkFollowed + {color:purple; + text-decoration:underline;} +p.MsoDocumentMap, li.MsoDocumentMap, div.MsoDocumentMap + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:0mm; + text-align:justify; + background:navy; + font-size:11.0pt; + font-family:Tahoma;} +p.MsoPlainText, li.MsoPlainText, div.MsoPlainText + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:0mm; + text-align:justify; + font-size:10.0pt; + font-family:"Courier New";} +p.MsoAutoSig, li.MsoAutoSig, div.MsoAutoSig + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:0mm; + text-align:justify; + font-size:11.0pt; + font-family:"Times New Roman";} +p + {margin-top:5.0pt; + margin-right:0mm; + margin-bottom:5.0pt; + margin-left:0mm; + text-align:justify; + font-size:12.0pt; + font-family:"Times New Roman";} +address + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:0mm; + text-align:justify; + font-size:11.0pt; + font-family:"Times New Roman"; + font-style:italic;} +pre + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:0mm; + text-align:justify; + font-size:10.0pt; + font-family:"Courier New";} +tt + {font-family:"Courier New";} +p.MsoCommentSubject, li.MsoCommentSubject, div.MsoCommentSubject + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:0mm; + text-align:justify; + font-size:10.0pt; + font-family:"Times New Roman"; + font-weight:bold;} +p.MsoAcetate, li.MsoAcetate, div.MsoAcetate + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:0mm; + text-align:justify; + font-size:8.0pt; + font-family:Tahoma;} +p.3eretraitnormal, li.3eretraitnormal, div.3eretraitnormal + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:3.0pt; + margin-left:102.9pt; + text-align:justify; + text-indent:-17.85pt; + font-size:12.0pt; + font-family:"Times New Roman";} +p.2eretraitjustifi, li.2eretraitjustifi, div.2eretraitjustifi + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:3.0pt; + margin-left:40.0mm; + text-align:justify; + text-indent:-7.1pt; + line-height:12.0pt; + font-size:11.0pt; + font-family:"Times New Roman";} +p.2eretraitnormal, li.2eretraitnormal, div.2eretraitnormal + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:3.0pt; + margin-left:18.0pt; + text-align:justify; + text-indent:-18.0pt; + font-size:12.0pt; + font-family:"Times New Roman";} +p.1erretraitnormal, li.1erretraitnormal, div.1erretraitnormal + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:12.0pt; + margin-left:0mm; + text-align:justify; + font-size:12.0pt; + font-family:"Times New Roman";} +p.titrebloc, li.titrebloc, div.titrebloc + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:0mm; + text-align:justify; + font-size:11.0pt; + font-family:Arial; + font-weight:bold;} +p.TitreTable, li.TitreTable, div.TitreTable + {margin-top:6.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:0mm; + text-align:center; + font-size:12.0pt; + font-family:Arial; + font-weight:bold;} +p.form, li.form, div.form + {margin-top:6.0pt; + margin-right:7.05pt; + margin-bottom:0mm; + margin-left:0mm; + margin-bottom:.0001pt; + text-align:justify; + background:black; + border:none; + padding:0mm; + font-size:14.0pt; + font-family:"Univers \(W1\)"; + color:white; + text-transform:uppercase; + font-weight:bold;} +p.HB, li.HB, div.HB + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:12.0pt; + margin-left:0mm; + text-align:justify; + page-break-after:avoid; + font-size:12.0pt; + font-family:"Times New Roman"; + color:black; + font-weight:bold;} +p.reference, li.reference, div.reference + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:0mm; + text-align:justify; + page-break-after:avoid; + font-size:9.0pt; + font-family:Arial;} +p.1erretraitjustifi, li.1erretraitjustifi, div.1erretraitjustifi + {margin-top:6.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:14.2pt; + text-align:justify; + text-indent:-14.2pt; + font-size:11.0pt; + font-family:"Times New Roman";} +p.ZonetatEnTte, li.ZonetatEnTte, div.ZonetatEnTte + {margin-top:2.0pt; + margin-right:2.85pt; + margin-bottom:2.0pt; + margin-left:2.85pt; + text-align:center; + page-break-after:avoid; + font-size:36.0pt; + font-family:Arial; + text-transform:uppercase; + font-weight:bold;} +p.DocTitle, li.DocTitle, div.DocTitle + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:0mm; + text-align:center; + font-size:22.0pt; + font-family:Arial; + font-variant:small-caps; + color:gray; + letter-spacing:4.0pt; + font-weight:bold;} +p.DocDate, li.DocDate, div.DocDate + {margin-top:6.0pt; + margin-right:0mm; + margin-bottom:6.0pt; + margin-left:0mm; + text-align:justify; + font-size:11.0pt; + font-family:Arial; + layout-grid-mode:line; + font-weight:bold;} +p.DocSubTitle, li.DocSubTitle, div.DocSubTitle + {margin-top:2.0pt; + margin-right:0mm; + margin-bottom:2.0pt; + margin-left:0mm; + text-align:center; + line-height:12.0pt; + font-size:12.0pt; + font-family:Arial; + font-variant:small-caps; + color:gray; + letter-spacing:4.0pt; + font-weight:bold;} + /* Page Definitions */ + @page Section1 + {size:595.3pt 841.9pt; + margin:70.85pt 70.85pt 70.85pt 70.85pt;} +div.Section1 + {page:Section1;} + /* List Definitions */ + ol + {margin-bottom:0mm;} +ul + {margin-bottom:0mm;} +--> + -

5. Known bugs and issues

+ -

This release has the -following bugs and issues. Bug numbers refer to the gLite Bug Tracking system -database hosted on the CERN Savannah system at https://savannah.cern.ch/bugs/?group=jra1mdw -.

+ -

 

+
-
    -
  • If the mysql root password is set - and it is not specified in the mysql.conf file, the configuration script - fails. This bug will be fixed in the next release
  • -
  • No removal procedure is provided - with this release apart from the removal of the RPMS. Any account, group - or other resource created during the module configuration must be manually - cleaned.
  • -
+

gLite Logging & Bookkeeping Server

-

 

+

1. Release Description

-

Known open bugs:

+

This release contains the gLite Logging & Bookkeeping +Server module v. 2.1.1. The following sections provide additional information about +the release content, the module dependencies, the know bugs and issues and a +list of bugs closed since the previous release. For information about +installing and using the gLite Logging & Bookkeeping Server, please refer +to the gLite Installation and User Guides.

-

 

+

2. Changes in this release

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Bug number

-
-

Description

-
-

 

-
-

 #7053

-
-

LB configuration fails if the - mysql root pwd is set 

-
-

 

-
-

 #7237

-
-

Intermittent errors with job - submission 

-
-

 

-
-

 #7300

-
-

update of the lb instructions - at the end of the installer script  

-
-

 

-
-

 #7305

-
-

lb.database.username paramenter - in config file 

-
-

 

-
-

 #7307

-
-

lb config script does _not_ - fail if mysql root password is set 

-
-

 

-
-

 #7324

-
-

lb-bkserver is running with no - pid 

-
-

 

-
-

 #7389

-
-

LB server and WMS local logger - related issues 

-
-

 

-
+

2.1. Changes in functionality

-

 

+

There are no functional changes in this +release.

-

Bugs fixed in this or previous releases, but not yet officially -tested:

+

2.2. Changes in Configuration

-

 

+

The following new parameters have been +added to the glite-lb.cfg.xml file:

- - - - - - - - - - - - - - - - - - - - - +

 

+ +
-

Bug number

-
-

Description

-
-

 

-
-

 #6412

-
-

--start and --stop options not - documented in glite-ce-config.py, glite-lb-config.py 

-
-

 

-
-

 #6722

-
-

glite-job-status -all doesn't - work 

-
-

 

-
-

 #7151

-
-

There are conflicts when - installing WMS and LB on the same node 

-
-

 

-
- - - - - - - - - - - -
-

 #7180

+

Parameter name

-

Logging & Bookkeping UI  

+
+

Default value

-

 

+
+

Description

-

 #7321

+
+

rgma.servicetool.activate

-

creation of indices fails - randomly 

+

true

-

 

+

Turn on/off servicetool for the node.

+

[Example: true ] [Type: 'boolean']

-

 #7884

+
+

set.mysql.root.password

-

local header files distributed - in RPMs.  

+

false

-

 

+

If this parameter is true, then the root + password of the mysql database is set to the value specified in + mysql.root.password if it not yet set. This parameter has       no effect if + the database root password is already set. It can be used to ease automated installation + and configuration of the service, if mysql is not managed in some other way.

+

[Example: false][Type: boolean]

-

 #7910

+
+

mysql.max_allowed_packet

-

Duplicate apostroph in MySQL - calls 

+

17

-

 

+

This parameter allows to set the + max_allowed_packet parameter in the mysql configuration file /etc/my.cnf. The + default recommended value for the LB server is 17MB.

+

[Example: 17][Type: Integer][Unit: MB]

-

 

+

 

-

6. Bugs closed since last release

+

The R-GMA Service Publisher (aka R-GMA +servicetool) parameters are now automatically handled by the configuration +script and do not need to be explicitly set anymore in the configuration file. +The parameters can be set in the configuration file to override the default +values.

-

This release fixes the -following bugs and issues. Bug numbers refer to the gLite Bug Tracking system -database hosted on the CERN Savannah system at https://savannah.cern.ch/bugs/?group=jra1mdw

+

 

-

 

+

3. Release contents

- +

3.1. Glite sub-deployment modules

+ +

The gLite Logging and Bookkeeping module requires the +following sub-modules:

+ +

 

+ +

-          +gLite Security Utilities

+ +

-          +gLite R-GMA Servicetool

+ +

 

+ +

The sub-modules are automatically installed with the LB +module. For more information about these sub-modules please refer to the +specific release notes and installation instructions.

+ +

3.2. Glite RPMS

+ +

The gLite Logging & Bookkeeping Server v. 2.1.1 is +composed of the following gLite components:

+ +

 

+ +
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Bug number

+

Component name

-

Description

+

Description

-

 #5850

+
+

Version

-

glite-lb-config.py has - glite.location and globus.location not set in params[] 

+
+

File

-

 #5901

+

glite-config

-

mysqlaccess command fails with - Broken pipe if mysql socket file is in /tmp  

+

gLite configuration scripts

-

 #5908

-
-

Environment variables set via - the configuration script are not passed to daemon startup scripts 

+

1.6.22

-

 #6057

-
-

glite-lb configuration scripts - has missing dependency (CGI.pm) 

+

http://glite.web.cern.ch/glite/packages/R1.5/R20051130/bin/rhel30/noarch/RPMS/glite-config-1.6.22-1.noarch.rpm

-

 #6075

-
-

glite-lb-config.py crashes with - KeyError: GLITE_CERT_DIR 

+
+

glite-jp-common

-

 #6190

-
-

LB local logger doesn't start - on the CE node 

+

 

-

 #6366

-
-

LB install script:: Fails but - no error reported 

+

1.1.0

-

 #6415

-
-

glite-lb-bkserver does not - start and blocks execution of glite-lb-config.py 

+

http://glite.web.cern.ch/glite/packages/R1.5/R20051130/bin/rhel30/i386/RPMS/glite-jp-common-1.1.0-1.i386.rpm

-

 #7296

+
+

glite-jp-primary

-

glite-lb-config.py crashes with - a TypeError exception 

+
+

 

-

 #7753

+

1.1.1

-

glite-lb-config.py fails with - an indentation error 

+
+

http://glite.web.cern.ch/glite/packages/R1.5/R20051130/bin/rhel30/i386/RPMS/glite-jp-primary-1.1.1-1.i386.rpm

-

 #7976

+
+

glite-jp-server-common

-

edg-job-status not working with - voms proxies 

+
+

 

-

 #8094

+

1.0.0

-

interlogd on the WMS doesn't - restart 

+
+

http://glite.web.cern.ch/glite/packages/R1.5/R20051130/bin/rhel30/i386/RPMS/glite-jp-server-common-1.0.0-1.i386.rpm

- -

 

- -
-
- -

7. Previous Releases

- -

7.1. Release 1.2.2

- -

7.1.1. Release Description

- -

This release contains the gLite Logging & Bookkeeping -Server module v. 1.2.2. The following sections provide additional information -about the release content, the module dependencies, the know bugs and issues -and a list of bugs closed since the previous release. For information about -installing and using the gLite Logging & Bookkeeping Server, please refer -to the gLite Installation and User Guides.

- -

7.1.2. Changes in this Release

- -

This release introduces the following changes:

- -

 

- -
    -
  • Implemented status method
  • -
  • Added definition of PERL5LIB env var
  • -
  • Stopping and starting the database before the index - creation (just after the database is created and the user granted) to fix - access denied error
  • -
  • Moved creation of indices inside database creation (if - database exists indices must not be recreated)
  • -
  • GLITE_USER parameter is not exposed anymore in the - configuration file; instead the module uses the same user parameters as - WMS to allow installation on same node
  • -
  • LB admin tools are now installed in sbin, not in bin
  • -
  • Bug fixes (see below for the complete lists)
  • -
- -

7.1.3. Release contents

- -

The gLite Logging & Bookkeeping Server v. 1.2.2 is -composed of the following gLite components:

- -

 

- - - + - - - + - - - + - - - + - - - + - - - + - - - + - - - + - - - + - - - + - - - + - - - + - - - + - - - + - -
+

glite-jp-ws-interface

+
-

Component name

+

 

-

Version

+
+

1.1.0

-

File

+
+

http://glite.web.cern.ch/glite/packages/R1.5/R20051130/bin/rhel30/i386/RPMS/glite-jp-ws-interface-1.1.0-0.i386.rpm

-

org.glite.deployment.lb

+

glite-lb-client-interface

+
+

L&B client library header files

-

1.2.2

+

2.1.0

-

http://glite.web.cern.ch/glite/packages/R1.0/R20050331/installers/glite-lb_installer.sh -

-

http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/noarch/RPMS/glite-lb-config-1.2.2-1.noarch.rpm

+

http://glite.web.cern.ch/glite/packages/R1.5/R20051130/bin/rhel30/i386/RPMS/glite-lb-client-interface-2.1.0-1.i386.rpm

-

org.glite.deployment.config

+

glite-lb-config

+
+

gLite LB Configuration files

-

1.0.0

+

2.1.1

-

http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/noarch/RPMS/glite-config-1.0.0-1.noarch.rpm

+

http://glite.web.cern.ch/glite/packages/R1.5/R20051130/bin/rhel30/i386/RPMS/glite-lb-config-2.1.1-1.i386.rpm

-

org.glite.lb.client-interface

+

glite-lb-common

+
+

L&B common subroutines library

-

1.0.2

+

3.0.1

-

http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/glite-lb-client-interface-1.0.2-1.i386.rpm

+

http://glite.web.cern.ch/glite/packages/R1.5/R20051130/bin/rhel30/i386/RPMS/glite-lb-common-3.0.1-1.i386.rpm

-

org.glite.lb.common

+

glite-lb-logger

+
+

L&B local logger

-

1.1.4

+

1.2.1

-

http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/glite-lb-common-1.1.4-1.i386.rpm

+

http://glite.web.cern.ch/glite/packages/R1.5/R20051130/bin/rhel30/i386/RPMS/glite-lb-logger-1.2.1-1.i386.rpm

-

org.glite.lb.logger

+

glite-lb-server

+
+

L&B bookkeeping server

-

1.0.1

+

1.3.3

-

http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/glite-lb-logger-1.0.1-1.i386.rpm

+ href="http://glite.web.cern.ch/glite/packages/R1.5/R20051130/bin/rhel30/i386/RPMS/glite-lb-server-1.3.3-1.i386.rpm">http://glite.web.cern.ch/glite/packages/R1.5/R20051130/bin/rhel30/i386/RPMS/glite-lb-server-1.3.3-1.i386.rpm

-

org.glite.lb.server

+

glite-lb-server-bones

+
+

L&B server bones

-

1.0.1

+

2.1.1

-

http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/glite-lb-server-1.0.1-1.i386.rpm

+ href="http://glite.web.cern.ch/glite/packages/R1.5/R20051130/bin/rhel30/i386/RPMS/glite-lb-server-bones-2.1.1-1.i386.rpm">http://glite.web.cern.ch/glite/packages/R1.5/R20051130/bin/rhel30/i386/RPMS/glite-lb-server-bones-2.1.1-1.i386.rpm

-

org.glite.lb.server-bones

+

glite-lb-ws-interface

+
+

 

-

1.0.0

+

2.1.0

-

http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/glite-lb-server-bones-1.0.0-1.i386.rpm

+

http://glite.web.cern.ch/glite/packages/R1.5/R20051130/bin/rhel30/i386/RPMS/glite-lb-ws-interface-2.1.0-1.i386.rpm

-

org.glite.lb.ws-interface

+

glite-rgma-servicetool-config

+
+

gLite R-GMA servicetool installation

-

1.0.1

+

5.2.2

-

http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/glite-lb-ws-interface-1.0.1-1.i386.rpm

+

http://glite.web.cern.ch/glite/packages/R1.5/R20051130/bin/rhel30/noarch/RPMS/glite-rgma-servicetool-config-5.2.2-1.noarch.rpm

-

org.glite.security.proxyrenewal

+

glite-security-gsoap-plugin

+
+

gSOAP plugin and gss libraries

-

1.0.11

+

1.2.1

-

http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/glite-security-proxyrenewal-1.0.11-1.i386.rpm

+

http://glite.web.cern.ch/glite/packages/R1.5/R20051130/bin/rhel30/i386/RPMS/glite-security-gsoap-plugin-1.2.1-0.i386.rpm

-

org.glite.wms-utils.exception

+

glite-security-utils-config

+
+

gLite Security Utilities configuration files

-

1.0.1

+

1.2.1

-

http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/glite-wms-utils-exception-1.0.1-1.i386.rpm

+

http://glite.web.cern.ch/glite/packages/R1.5/R20051130/bin/rhel30/noarch/RPMS/glite-security-utils-config-1.2.1-1.noarch.rpm

-

org.glite.wms-utils.jobid

+

glite-security-voms-api-c

+
+

 

-

1.0.0

+

1.6.10

-

http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/glite-wms-utils-jobid-1.0.0-1.i386.rpm

+

http://glite.web.cern.ch/glite/packages/R1.5/R20051130/bin/rhel30/i386/RPMS/glite-security-voms-api-c-1.6.10-0.i386.rpm

-

org.glite.security.voms

+

glite-wms-utils-exception

+
+

 

-

1.2.32

+

1.0.3

-

http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/glite-security-voms-1.2.32-1.i386.rpm

+

http://glite.web.cern.ch/glite/packages/R1.5/R20051130/bin/rhel30/i386/RPMS/glite-wms-utils-exception-1.0.3-1.i386.rpm

-

org.gridsite.core

+

glite-wms-utils-jobid

+
+

 

-

1.1.5

+

1.0.2

-

http://glite.web.cern.ch/glite/packages/R1.0/R20050331/bin/rhel30/i386/RPMS/gridsite-1.1.5-1.i386.rpm

+

http://glite.web.cern.ch/glite/packages/R1.5/R20051130/bin/rhel30/i386/RPMS/glite-wms-utils-jobid-1.0.2-1.i386.rpm

-

 

- -

7.1.4. Dependencies

+

4. Dependencies

-

The gLite Logging & Bookkeeping Server v. 1.2.2 module +

The gLite Logging & Bookkeeping Server v. 2.1.1 module has the following dependencies:

 

@@ -1896,232 +1619,276 @@ has the following dependencies:

- - + - - + - - - + - - - - + - - - + - - + - - - - - - - - - - - + - - - - + - - - + -

Component name

+

Description

+

Version

RPM file name

-

gLite Security Utilities

+

c-ares

+
+

A library that performs asynchronous DNS operations

-

1.0.0

+

1.3.0

-

http://glite.web.cern.ch/glite/packages/R1.0/R20050331/installers/glite-security-utils_installer.sh

+

http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/c-ares-1.3.0-1.slc3.i386.rpm

-

gLite R-GMA Service Publisher

+

gpt

+
+

The Grid Packaging Toolkit (GPT)

-

4.1.5

+

VDT1.2.2rh9

-

http://glite.web.cern.ch/glite/packages/R1.0/R20050331/installers/glite-rgma-servicetool_installer.sh

+

http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/gpt-VDT1.2.2rh9-1.i386.rpm

GPT

+ 8.0pt'>gridsite

-

VDT 1.2.2

+

GridSite

+
+

1.1.15

-

http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/gpt-VDT1.2.2rh9-1.i386.rpm

+

http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/gridsite-1.1.15-1.i386.rpm

VDT Globus Essentials

+ 8.0pt'>j2re

-

VDT 1.2.2

+

Java JRE

+
+

1.4.2

-

http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/vdt_globus_essentials-VDT1.2.2rh9-1.i386.rpm

+

http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/j2re-1_4_2_08-linux-i586.rpm

MySQL-server

+ 8.0pt'>myproxy

+
+

Credential repository for the Grid.

-

4.0.20

+

1.14

-

http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/MySQL-server-4.0.20-0.i386.rpm

+

http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/myproxy-1.14-EGEE.i386.rpm

MySQL-client

-

4.0.20

-
-

http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/MySQL-client-4.0.20-0.i386.rpm

-

ares

+ 8.0pt'>MySQL - Client

-

1.1.1

+

4.1.11

-

http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/ares-1.1.1-EGEE.i386.rpm

+

http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/MySQL-client-4.1.11-0.i386.rpm

myproxy

+ 8.0pt'>MySQL-server

+
+

MySQL

-

1.14

+

4.1.11

-

http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/myproxy-1.14-EGEE.i386.rpm

+

http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/MySQL-server-4.1.11-0.i386.rpm

perl-Expect.pm

+

Expect.pm module for perl (./id/A/AU/AUSCHUTZ)

+
-

1.01

+

1.01

-

http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/per-Expect.pm-1.01-9.i386.rpm

+

http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/perl-Expect.pm-1.01-9.i386.rpm

Java SDK/JRE

+ 8.0pt'>vdt_globus_essentials

-

1.4.2

+

Virtual Data Toolkit

+
+

VDT1.2.2rh9

-

http://java.sun.com/j2se/1.4.2/download.html

+

http://glite.web.cern.ch/glite/packages/externals/bin/rhel30/RPMS/vdt_globus_essentials-VDT1.2.2rh9-1.i386.rpm

 

-

7.1.5. Known bugs and issues

+

5. Known bugs and issues

-

This release has the -following bugs and issues. Bug numbers refer to the gLite Bug Tracking system -database hosted on the CERN Savannah system at https://savannah.cern.ch/bugs/?group=jra1mdw -.

+

This +release has the following bugs and issues. Bug numbers refer to the gLite Bug +Tracking system database hosted on the CERN Savannah system at Hhttps://savannah.cern.ch/bugs/?group=jra1mdwH .

 

    +
  • There is an infinite loop during + the initialization of the LB_Events data structure
  • No removal procedure is provided with this release apart from the removal of the RPMS. Any account, group or other resource created during the module configuration must be manually @@ -2137,16 +1904,37 @@ href="https://savannah.cern.ch/bugs/?group=jra1mdw">https://savannah.cern.ch/bug - - - + + + + + @@ -2154,18 +1942,18 @@ href="https://savannah.cern.ch/bugs/?group=jra1mdw">https://savannah.cern.ch/bug - - - - @@ -2194,17 +1984,18 @@ href="https://savannah.cern.ch/bugs/?group=jra1mdw">https://savannah.cern.ch/bug - - - - - - @@ -2254,39 +2046,103 @@ href="https://savannah.cern.ch/bugs/?group=jra1mdw">https://savannah.cern.ch/bug - - - + + + + + + + + + + + + + + + - @@ -2294,18 +2150,20 @@ href="https://savannah.cern.ch/bugs/?group=jra1mdw">https://savannah.cern.ch/bug - - @@ -2313,18 +2171,20 @@ href="https://savannah.cern.ch/bugs/?group=jra1mdw">https://savannah.cern.ch/bug - - @@ -2332,18 +2192,18 @@ href="https://savannah.cern.ch/bugs/?group=jra1mdw">https://savannah.cern.ch/bug - -
    -

    Bug number

    +

    Bug number

    -

    Description

    +

    Description

    +

     

    +
    +

     #7324

    +
    +

    lb-bkserver is running with no + pid

    +

     

     #6412

    + href="https://savannah.cern.ch/bugs/?func=detailitem&item_id=9701"> #9701

    --start and --stop options not - documented in glite-ce-config.py, glite-lb-config.py 

    + href="https://savannah.cern.ch/bugs/?func=detailitem&item_id=9701">erroneous rpath in several + shared objects

     

    @@ -2175,18 +1963,20 @@ href="https://savannah.cern.ch/bugs/?group=jra1mdw">https://savannah.cern.ch/bug

     #7053

    + href="https://savannah.cern.ch/bugs/?func=detailitem&item_id=9777"> #9777

    +

    LB configuration fails if the - mysql root pwd is set 

    + href="https://savannah.cern.ch/bugs/?func=detailitem&item_id=9777">unable to get logging-info -2 + info for 1000 jobs

    +

     

     #7180

    + href="https://savannah.cern.ch/bugs/?func=detailitem&item_id=10781"> #10781

    Logging & Bookkeping UI  

    + href="https://savannah.cern.ch/bugs/?func=detailitem&item_id=10781">Missing the timestamps of + 'Scheduled' and 'Running' status

     

    @@ -2214,18 +2005,17 @@ href="https://savannah.cern.ch/bugs/?group=jra1mdw">https://savannah.cern.ch/bug

     #7237

    + href="https://savannah.cern.ch/bugs/?func=detailitem&item_id=11535"> #11535

    Intermittent errors with job - submission 

    + href="https://savannah.cern.ch/bugs/?func=detailitem&item_id=11535">Job submission extremely slow

     

    @@ -2235,18 +2025,20 @@ href="https://savannah.cern.ch/bugs/?group=jra1mdw">https://savannah.cern.ch/bug

     #7300

    + href="https://savannah.cern.ch/bugs/?func=detailitem&item_id=13418"> #13418

    +

    update of the lb instructions - at the end of the installer script  

    + href="https://savannah.cern.ch/bugs/?func=detailitem&item_id=13418">problem in computing status (of + resubmitted jobs)

    +

     

     #7305

    + href="https://savannah.cern.ch/bugs/?func=detailitem&item_id=13492"> #13492

    +

    lb.database.username - paramenter in config file 

    + href="https://savannah.cern.ch/bugs/?func=detailitem&item_id=13492">Job State Information Log File

    -

     

    +
    +

     

     #7307

    + href="https://savannah.cern.ch/bugs/?func=detailitem&item_id=13832"> #13832

    + +

    Default mysql configuration + imposes unnecessary limits on LB server

    +
    +

     

    +
    +

     #13879

    +
    +

    Some data do not propagate from + lbproxy to bkserver...

    +
    +

     

    +
    +

     #13929

    +
    +

    The glite-lb-bkserverd has + wrong default for var directory

    +
    +

     

    +
    +

     #13951

    +

    lb config script does _not_ - fail if mysql root password is set 

    + href="https://savannah.cern.ch/bugs/?func=detailitem&item_id=13951">lb proxy sends garbage response + on error

    +

     

     #7321

    + href="https://savannah.cern.ch/bugs/?func=detailitem&item_id=13988"> #13988

    +

    creation of indices fails - randomly 

    + href="https://savannah.cern.ch/bugs/?func=detailitem&item_id=13988">Failed to start + glite-lb-locallogger on glite 1.4.1

    +

     

     #7324

    + href="https://savannah.cern.ch/bugs/?func=detailitem&item_id=14247"> #14247

    +

    lb-bkserver is running with no - pid 

    + href="https://savannah.cern.ch/bugs/?func=detailitem&item_id=14247">No events are found querying LB + for events satisfying jobid and source instance

    +

     

     #7389

    + href="https://savannah.cern.ch/bugs/?func=detailitem&item_id=14339"> #14339

    LB server and WMS local logger - related issues 

    + href="https://savannah.cern.ch/bugs/?func=detailitem&item_id=14339">Wrong computing state when + proxy expires

     

    @@ -2353,378 +2213,498 @@ href="https://savannah.cern.ch/bugs/?group=jra1mdw">https://savannah.cern.ch/bug

     

    -

    Bugs fixed in this or previous releases, but not yet -officially tested:

    +

    Bugs fixed in this or previous releases, but not yet officially +tested:

     

    - - - - - - - - - - - - - - - - - - - -
    -

    Bug number

    +

    Bug number

    -

    Description

    +

    Description

    -

     

    +

     

    -

     #5850

    +

     #7307

    -

    glite-lb-config.py has - glite.location and globus.location not set in params[] 

    +

    lb config script does _not_ fail + if mysql root password is set

    -

     

    +

     

    -

     #5908

    +

     #7305

    -

    Environment variables set via - the configuration script are not passed to daemon startup scripts 

    +

    lb.database.username paramenter in + config file

    -

     

    +

     

    -

     #6075

    +

     #7300

    -

    glite-lb-config.py crashes with - KeyError: GLITE_CERT_DIR 

    +

    update of the lb instructions at + the end of the installer script

    -

     

    +

     

    -

     #6366

    +

     #7053

    -

    LB install script:: Fails but - no error reported 

    +

    LB configuration fails if the + mysql root pwd is set

    -

     

    +

     

    -

     #6415

    +

     #13928

    -

    glite-lb-bkserver does not - start and blocks execution of glite-lb-config.py 

    +

    org.glite.lb.server depends on + full VOMS package instead of individual APIs packages

    -

     

    +

     

    -

     #6689

    +

     #13048

    -

    glite-proxy-renewd starts the - daemon glite-proxy-renewd as GLITE_USER which is glite-lb i.e. wrong 

    +

    interlogger does not handle errors + from bookkeeping server

    -

     

    +

     

    -

     #6722

    +

     #12648

    -

    glite-job-status -all doesn't - work 

    +

    The memory usage of one LB process + keeps growing

    -

     

    +

     

    -

     #7296

    +

     #11387

    -

    glite-lb-config.py crashes with - a TypeError exception 

    +

    LBProxy SIGSEGV

    -

     

    +

     

    - -

     

    - -

    7.1.6. Bugs closed since last release

    - -

    This release fixes the -following bugs and issues. Bug numbers refer to the gLite Bug Tracking system -database hosted on the CERN Savannah system at https://savannah.cern.ch/bugs/?group=jra1mdw

    - -

     

    - - - - + - + - + - + - + - + - + + +
    -

    Bug number

    +

     #11050

    -

    Description

    +
    +

    Too heavy locallogger retry + strategy

    +
    +

     

    -

     #5833

    +

     #9183

    -

    all jobs in SUBMITTED after a - job storm 

    +
    +

    Broken connections in LB contect + connection pool

    +
    +

     

    -

     #5897

    +

     #9135

    -

    I20041203 LB installation - script has a missing dependency  

    +
    +

    The interlogd has problem sending + event to the LB server

    +
    +

     

    -

     #5910

    +

     #8630

    -

    glite-lb configuration scripts - don't set GLITE_USER environment 

    +
    +

    EDG_WL_* variables in LB library

    +
    +

     

    -

     #5925

    +

     #7910

    -

    Running glite-lb script removes - mysql.sock file  

    +
    +

    Duplicate apostroph in MySQL calls

    +
    +

     

    -

     #6416

    +

     #11509

    -

    the BKserver on the LB machine - needs a symlink and the script doesn't check for it 

    +
    +

    glite-lb-config.py overwrites + HOSTNAME_org.glite.wms.workloadmanager.service with the wrong WMS version

    +
    +

     

    -

     #7032

    +

     #10686

    -

    The LB installer fails with an - RPM not found message 

    +
    +

    MySQL library fails on hostnames + containing dashes

    +
    +

     

    +
    + +

     

    + +

    6. Bugs closed since last release

    + +

    This +release fixes the following bugs and issues. Bug numbers refer to the gLite Bug +Tracking system database hosted on the CERN Savannah system at Hhttps://savannah.cern.ch/bugs/?group=jra1mdwH  

    + +

     

    + + + + + + + + + +
    +

    Bug number

    +
    +

    Description

    +
    +

     

     #7152

    + href="https://savannah.cern.ch/bugs/?func=detailitem&item_id=6722"> #6722

    The LB installer tries to - install gridsite with a wrong rpm name 

    + href="https://savannah.cern.ch/bugs/?func=detailitem&item_id=6722">glite-job-status -all doesn't + work

    +
    +

     

     #7351

    + href="https://savannah.cern.ch/bugs/?func=detailitem&item_id=7237"> #7237

    Star/restart of LB services  

    + href="https://savannah.cern.ch/bugs/?func=detailitem&item_id=7237">Intermittent errors with job + submission

    +
    +

     

     #7401

    + href="https://savannah.cern.ch/bugs/?func=detailitem&item_id=9148"> #9148

    The first time the LB config - script is run it fails creating the db indices 

    + href="https://savannah.cern.ch/bugs/?func=detailitem&item_id=9148">Job stays 'Submitted' forever

    +
    +

     

     #7423

    + href="https://savannah.cern.ch/bugs/?func=detailitem&item_id=10730"> #10730

    '/etc/rc.d/init.d/gLite status' - not working correctly in LB 

    + href="https://savannah.cern.ch/bugs/?func=detailitem&item_id=10730">Error on glite-job-submit

    +
    +

     

     

    -

     

    - diff --git a/org.glite.deployment.lb/doc/release_notes/release_notes.pdf b/org.glite.deployment.lb/doc/release_notes/release_notes.pdf index cfd9fe5..c512e91 100644 Binary files a/org.glite.deployment.lb/doc/release_notes/release_notes.pdf and b/org.glite.deployment.lb/doc/release_notes/release_notes.pdf differ diff --git a/org.glite.deployment.lb/project/build.number b/org.glite.deployment.lb/project/build.number index 58569c4..35c1658 100644 --- a/org.glite.deployment.lb/project/build.number +++ b/org.glite.deployment.lb/project/build.number @@ -1,2 +1,2 @@ -#Wed Apr 13 09:36:57 CEST 2005 -module.build=232 +#Tue May 09 11:30:03 CEST 2006 +module.build=0357 diff --git a/org.glite.deployment.lb/project/glite-lb.sdf.xml.template b/org.glite.deployment.lb/project/glite-lb.sdf.xml.template index 93bb43a..27329ba 100644 --- a/org.glite.deployment.lb/project/glite-lb.sdf.xml.template +++ b/org.glite.deployment.lb/project/glite-lb.sdf.xml.template @@ -15,11 +15,11 @@ build="@org.glite.deployment.config.info.build@" arch="noarch"/> - + - - - + + + + + + + + + - + + arch="@ext.gpt.platform@"/> + arch="@ext.myproxy.platform@"/> + diff --git a/org.glite.deployment.lb/project/lxscript-rpm.xsl b/org.glite.deployment.lb/project/lxscript-rpm.xsl index e20f297..c661ad7 100644 --- a/org.glite.deployment.lb/project/lxscript-rpm.xsl +++ b/org.glite.deployment.lb/project/lxscript-rpm.xsl @@ -137,11 +137,13 @@ function install() echo Done! echo echo Before using the gLite LB, please create or update the configuration - echo file /opt/glite/etc/config/glite-lb.cfg.xml + echo files /opt/glite/etc/config/glite-lb.cfg.xml + echo and /opt/glite/etc/config/glite-global.cfg.xml echo and run the configuration script echo /opt/glite/etc/config/scripts/glite-lb-config.py. echo A template is provided in echo /opt/glite/etc/config/templates/glite-lb.cfg.xml + echo Alternatively site configuration files can be used else echo echo An error occurred while installing the LB RPMS. @@ -153,7 +155,7 @@ function install() echo For more information refer to the gLite Installation and User Guides echo or to the gLite web site \(http:\/\/www.glite.org\) echo Please report problems and comments to the gLite Team at - echo project-eu-egee-glite-bugs@cern.ch + echo glite-bugs@cern.ch cd .. } @@ -272,7 +274,7 @@ exit 0 _installer.sh -wget -N --non-verbose +wget -N -nv if [ ! -f "" ] then echo @@ -295,7 +297,7 @@ SCRIPTLISTUn="$SCRIPTLISTUn ./ -u " -- -wget -N --non-verbose +wget -N -nv if [ ! -f "" ] then echo @@ -316,7 +318,7 @@ RPMLIST="$RPMLIST " -- -wget -N --non-verbose /RPMS/ +wget -N -nv /RPMS/ if [ ! -f "" ] then echo diff --git a/org.glite.deployment.lb/project/properties.xml b/org.glite.deployment.lb/project/properties.xml index c7ef835..ef87369 100644 --- a/org.glite.deployment.lb/project/properties.xml +++ b/org.glite.deployment.lb/project/properties.xml @@ -12,6 +12,15 @@ Revision history: $Log$ + Revision 1.2.4.2 2006/03/13 15:04:06 flammer + Changed name of rpm to glite-LB. + + Revision 1.2.4.1 2005/11/27 16:16:17 dimeglio + Restrict config file to root + + Revision 1.2 2005/07/08 13:18:40 dimeglio + Merged from branch 1.2.2 + Revision 1.1 2004/10/06 09:19:24 dimeglio First version of this file @@ -50,14 +59,15 @@ Define extra properties here ... ====================================================== --> + +%attr(600,root,root) %{prefix}/etc/config/templates/glite-lb.cfg.xml\n +%attr(644,root,root) %{prefix}/share/doc/glite-LB/release_notes/release_notes.doc\n +%attr(644,root,root) %{prefix}/share/doc/glite-LB/release_notes/release_notes.pdf\n +%attr(644,root,root) %{prefix}/share/doc/glite-LB/release_notes/release_notes.html\n"/> + diff --git a/org.glite.deployment.lb/project/quattor-template.xsl b/org.glite.deployment.lb/project/quattor-template.xsl index e0bd623..74f841d 100644 --- a/org.glite.deployment.lb/project/quattor-template.xsl +++ b/org.glite.deployment.lb/project/quattor-template.xsl @@ -22,6 +22,12 @@ template pro_software_glite_lb; # glite-lb Quattor template v. # +## CAs + +include pro_software_glite_CA; + + + # Global dependencies @@ -39,6 +45,11 @@ template pro_software_glite_lb; + +include pro_software_; + + + diff --git a/org.glite.deployment.lb/project/version.properties b/org.glite.deployment.lb/project/version.properties index 66a3e69..574af65 100644 --- a/org.glite.deployment.lb/project/version.properties +++ b/org.glite.deployment.lb/project/version.properties @@ -1,4 +1,4 @@ -module.version = 1.3.0 -module.age = 1 - \ No newline at end of file +module.version = 2.2.3 +module.age = 0 + diff --git a/org.glite.jp.client/Makefile b/org.glite.jp.client/Makefile index 8c4870d..1e5ece2 100644 --- a/org.glite.jp.client/Makefile +++ b/org.glite.jp.client/Makefile @@ -141,7 +141,8 @@ distbin: install: -mkdir -p ${PREFIX}/${STAGETO} - -mkdir -p ${PREFIX}/bin + -mkdir -p ${PREFIX}/bin + -mkdir -p ${PREFIX}/lib -mkdir -p ${PREFIX}/examples ${INSTALL} -m 755 ${daemon} ${PREFIX}/bin ${INSTALL} -m 644 ${LIB} ${PREFIX}/lib diff --git a/org.glite.jp.client/doc/README.jpimporter b/org.glite.jp.client/doc/README.jpimporter deleted file mode 100644 index a5629db..0000000 --- a/org.glite.jp.client/doc/README.jpimporter +++ /dev/null @@ -1,114 +0,0 @@ -jpimporter is a daemon which take care of all job registration from particular -LB server, forwarding them to the JP primary service and also file uploads, which -means sending LB dumps, sendbox files etc. to ftp server dedicated by JP PS. - -The daemon runs two proceses, one for registrations and another for file uploads. -Both processes reads the local directory which has a given structure and are -handled by glite-lb-maildir library calls. - - - -Namely for the registrations, LB server creates the message describing job, its -owner and JP primary server address and stores it into given maildir location -(i.e. /tmp/lb_server_jpreg/). The jpimporter daemon which is running on the same -host is periodicaly scanning this directory and whenever new messages appears, -attempts to register this described job to JP PS. - -For the file upload is the jpimporter behavior almost the same except the -message has different structure and a file to deliver must be placed in the -filesystem. - -For LB dumps, there is another utility, which parses common LB dump files -(created when purging the LB server), creates one file per every job and stores -message describing the location, destination etc. to local directory. This -message directory should be obviously monitored by the jpimporter again. - -lb_dump_exporter utility usage: lt-lb_dump_exporter [option] - -h, --help Shows this screen. - -d, --dump Dump file location. - File generated by the glite-lb-purge - -s, --store New dump files storage. - Directory, where to store all dump files - -j, --jpps Target JPPS. - jpps where should the file be uploaded - -m, --lbmaildir LB maildir path. - Directory, where should be stored the message - describing the file upload (read by jpimporter) - -jpimporter daemon usage: glite-jp-importer [option] - -h, --help displays this screen - -k, --key private key file - -c, --cert certificate file - -C, --CAdir trusted certificates directory - -g, --debug don't run as daemon, additional diagnostics - -p, --jpps JP primary service server - this JPPS server is used by default, when user/lb/... - does not specifies one - -r, --reg-mdir path to the 'LB maildir' subtree for registrations - This directory is scanned for the job registration - messages. - -d, --dump-mdir path to the 'LB maildir' subtree for LB dumps - This directory is scanned for the file upload msgs. - -i, --pidfile file to store master pid - -t, --poll maildir polling interval (in seconds) - Specifies the time interval for which the process - JobRegistration/FileUpload sleeps after the unsuccessful - scan (find no new messages) -Examples: - -So, for the job registration and dump upload from the LB server, you should run the -LB server like this: -./glite_lb_bkserverd -c -k -S /var/tmp/purge -D /var/tmp/dump -J /tmp/lb_server_jpreg - -(Whenever the job is registered to the LB server, the message for jpimporter -is stored in the /tmp/lb_server_jpreg directory.) - -Then you should run the jpimporter daemon on the same host: -./glite-jp-importer -k -k -p jpps.server.address:8900 -r /tmp/lb_server_jpreg -d /tmp/lb_server_jpdump - -(Every job registration anounced in /tmp/lb_server_jpreg directory will be sent -to the JP PS at the address jpps.server.address:8900.) - -According the dump files - on the same host should be periodicaly ran the -glite-lb-purge utility. (Usually started by cron) Let say, that it stores the -LB dump file /var/tmp/purge/dump_file. - -Then you should run (most likely in the same cron job) -./lb_dump_exporter -d /var/tmp/purge/dump_file -s /var/tmp/dumps_per_job -j jpps.server.address:8900 -m /tmp/lb_server_jpdump - -(Then there is created a set of LB dump file - one per job - and according to them -lb_dump_exporter will also notify the glite-jp-importer) - - - - -For the sandbox files, you should use the JP client API to create messages for -jpimporter. The function glite_jpimporter_upload_files() do the job. It takes -one ore more files and create one tarball. Then everything works like with -LB dumps. - -There is an example utility in org.glite.jp.client/examples/jpps_upload_files.c -(staged as glite-jp-primary-upload_files). - -The glite_jpimporter_upload_files funftion prototype: - -int glite_jpimporter_upload_files( - /* JP client context. - * stores the error code/description - * user can set default JP PS address there and - * LB directory for jpimporter announcements - */ - glite_jpcl_context_t ctx, - - /* JobId - */ - const char *jobid, - /* File list. Stored in the array of string. - * Last item has to be NULL - */ - const char **files, - /* Location of the user proxy file - */ - const char *proxy); - - diff --git a/org.glite.jp.client/project/version.properties b/org.glite.jp.client/project/version.properties index cd1e9e7..e575ad0 100644 --- a/org.glite.jp.client/project/version.properties +++ b/org.glite.jp.client/project/version.properties @@ -1,2 +1,2 @@ -module.version=1.0.0 +module.version=1.0.1 module.age=1 diff --git a/org.glite.jp.common/project/build.number b/org.glite.jp.common/project/build.number index 9d9b1ea..f099a34 100644 --- a/org.glite.jp.common/project/build.number +++ b/org.glite.jp.common/project/build.number @@ -1,2 +1,2 @@ -#Sat Oct 15 06:48:33 CEST 2005 -module.build=39 +#Sun Oct 16 20:26:34 CEST 2005 +module.build=40 diff --git a/org.glite.jp.primary/Makefile b/org.glite.jp.primary/Makefile index dd6cdde..67b01cd 100644 --- a/org.glite.jp.primary/Makefile +++ b/org.glite.jp.primary/Makefile @@ -76,9 +76,9 @@ TRIOLIB:=-lglite_jp_trio ifneq (${mysql_prefix},/usr) ifeq ($(shell echo ${mysql_version} | cut -d. -f1,2),4.1) - MYSQLIB := -L${mysql_prefix}/lib/mysql -lmysqlclient + MYSQLIB := -L${mysql_prefix}/lib/mysql -lmysqlclient -lz else - MYSQLIB := -L${mysql_prefix}/lib -lmysqlclient + MYSQLIB := -L${mysql_prefix}/lib -lmysqlclient -lz endif else MYSQLIB := -lmysqlclient @@ -166,6 +166,9 @@ install: ${INSTALL} -m 755 $$plugin ${PREFIX}/lib; \ done ${INSTALL} -m 755 ${top_srcdir}/config/startup ${PREFIX}/etc/init.d/glite-jp-primary + ${INSTALL} -m 755 ${top_srcdir}/config/glite-jp-primary-dbsetup.sql ${PREFIX}/etc + ${INSTALL} -m 755 ${top_srcdir}/config/glite-jp-primary-dbsetup.sh ${PREFIX}/etc + ${INSTALL} -m 644 ${top_srcdir}/examples/sample_job ${PREFIX}/examples/glite-jp-primary-sample_job.lb clean: diff --git a/org.glite.jp.primary/config/glite-jp-primary-dbsetup.sh b/org.glite.jp.primary/config/glite-jp-primary-dbsetup.sh new file mode 100644 index 0000000..aed8e1a --- /dev/null +++ b/org.glite.jp.primary/config/glite-jp-primary-dbsetup.sh @@ -0,0 +1,14 @@ +#! /bin/sh + +# +# Shell example of preparing the database for JP Index Server +# + +# database +mysqladmin -u root -p create jpps + +# user +mysql -u root -p -e 'GRANT ALL on jpps.* to jpps@localhost' + +# tables +mysql -u jpps jpps < `dirname $0`/glite-jp-primary-dbsetup.sql diff --git a/org.glite.jp.primary/config/startup b/org.glite.jp.primary/config/startup index 6050d99..b3154ef 100644 --- a/org.glite.jp.primary/config/startup +++ b/org.glite.jp.primary/config/startup @@ -16,7 +16,7 @@ GLITE_LOCATION_VAR=${GLITE_LOCATION_VAR:-${GLITE_LOCATION}/var} unset creds -GLITE_JP_PRIMARY_PORT=8901 +test -n "$GLITE_JP_PRIMARY_PORT" || GLITE_JP_PRIMARY_PORT=8901 start() { @@ -30,10 +30,15 @@ start() echo FAILED return 1 fi + if test -z "$GLITE_JP_PRIMARY_PEERS" ;then + echo 'Error: incomplete configuration (GLITE_JP_PRIMARY_PEERS is not set)' + echo FAILED + return 1 + fi if test -z "$GLITE_JP_PRIMARY_FTP_PORT" -o \ -z "$GLITE_JP_PRIMARY_INTERNAL" -o -z "$GLITE_JP_PRIMARY_EXTERNAL" ;then echo 'Error: incomplete configuration (GLITE_JP_PRIMARY_FTP_PORT,' \ - 'GLITE_JP_PRIMARY_INTERNAL, or GLITE_JP_PRIMARY_EXTERNAL is not set' + 'GLITE_JP_PRIMARY_INTERNAL, or GLITE_JP_PRIMARY_EXTERNAL is not set)' echo FAILED return 1 fi @@ -63,16 +68,20 @@ start() echo -n Starting glite-jp-primarystoraged ... su - $GLITE_USER -c " $GLITE_LOCATION/bin/glite-jp-primarystoraged \ - $creds -i '$pidfile' + -P $GLITE_LOCATION/lib/glite-jp-tags.so -P $GLITE_LOCATION/lib/glite_lb_plugin.so \ + $creds -a '$GLITE_JP_PRIMARY_PEERS' \ + -i '$pidfile' -p $GLITE_JP_PRIMARY_PORT $GLITE_JP_PRIMARY_SPECIAL \ -BI,'$GLITE_JP_PRIMARY_INTERNAL' -BE,'$GLITE_JP_PRIMARY_EXTERNAL' \ ${GLITE_JP_PRIMARY_DBCS_OPTION} " && echo " done" || echo " FAILED" echo -n Starting JP gridftp server ... su - $GLITE_USER -c "X509_USER_CERT=\"$X509_USER_CERT\" \ X509_USER_KEY=\"$X509_USER_KEY\" \ + GLITE_USER=\"$GLITE_USER\" \ + FTPBE_INT_PREFIX=\"$GLITE_JP_PRIMARY_INTERNAL\" \ LD_PRELOAD=$GLITE_LOCATION/lib/glite-jp-ftpdauth.so \ - $GLOBUS_LOCATION/sbin/in.ftpd -a -S -p $GLITE_JP_PRIMARY_FTP_PORT & \ - pid=\$!; sleep 2; kill -0 \$pid" && echo " done" || echo " FAILED" + $GLOBUS_LOCATION/sbin/in.ftpd -a -s -p $GLITE_JP_PRIMARY_FTP_PORT & \ + pid=\$!; echo \$pid > $pidfile.ftpd; sleep 2; true kill -0 \$pid" && echo " done" || echo " FAILED" } stop() @@ -96,31 +105,48 @@ stop() echo "$pidfile" does not exist - glite-jp-primarystoraged not running? >&2 return 1 fi -} + if [ -f "$pidfile.ftpd" ]; then + pid=`cat "$pidfile.ftpd"` + kill $pid + echo -n Stopping JP ftp server \($pid\) ... + try=0 + while ps p $pid >/dev/null 2>&1; do + sleep 1; + try=`expr $try + 1` + if [ $try = 20 ]; then + echo " giving up after $try retries" + return 1 + fi + done + echo " done" + rm -f "$pidfile.ftpd" + else + echo "$pidfile.ftpd" does not exist - JP ftp server not running? >&2 + return 1 + fi - # XXX - echo >&2 'stopping JP gridftp server not implemented yet' - return 1 + return 0 } status() { - # XXX pidfile + retval=0 + # XXX pidfile? if netstat -an --inet | grep "^tcp .* 0.0.0.0:${GLITE_JP_PRIMARY_PORT} .*LISTEN" >/dev/null 2>&1 ;then echo glite-jp-primarystoraged running else echo glite-jp-primarystoraged not running - return 1 + retval=1 fi if netstat -an --inet | grep "^tcp .* 0.0.0.0:${GLITE_JP_PRIMARY_FTP_PORT} .*LISTEN" >/dev/null 2>&1 ;then echo JP gridftp server running else echo JP gridftp server not running - return 1 + retval=1 fi - return 0 + return $retval } case x$1 in diff --git a/org.glite.jp.primary/doc/README.install b/org.glite.jp.primary/doc/README.install new file mode 100644 index 0000000..17d0d27 --- /dev/null +++ b/org.glite.jp.primary/doc/README.install @@ -0,0 +1,59 @@ +0. install glite-jp-primary package + +1. create MySQL database of the service, preferably using + ${GLITE_LOCATION}/etc/glite-jp-primary-dbsetup.sh + (the script prompts two times for MySQL root password) + +2. create a directory where JPPS files will be stored and configure + gridftp server so that this directory is accessible via gridftp + +3. create the configuration file $GLITE_LOCATION/etc/jp.conf, it should + contain /bin/sh syntax assignment to the following variables (or they + have to be set in the environment of the startup script by other means: + + GLITE_USER the unix user running the service + + GLOBUS_LOCATION where is Globus installed + + GLITE_JP_PRIMARY_FTP_PORT + port for the ftp JPPS interface (bulk file transfers) + + GLITE_JP_PRIMARY_INTERNAL + directory where the JPPS files are stored (local path) + + GLITE_JP_PRIMARY_EXTERNAL + URL prefix which is mapped by gridftp to the directory, + eg. gsiftp://this.host.name:$GLITE_JP_PRIMARY_FTP_PORT/some/directory + + + GLITE_JP_PRIMARY_PEERS + file with list (one per line) of X509 certificate subjects of "trusted peers", i.e. L&B servers which may upload data to this JPPS + + +4. start the service with + $GLITE_LOCATION/etc/init.d/glite-jp-primary start + + +5. This step taints the database with testing data. Don't do it if it is an issue. +It is not necessary for the service operation, it's just checking its basic functionality. + +$ JOB=https://scientific.civ.zcu.cz:9200/1Yjk3Wlaspl07y45iX8Tng +$ TEST=$GLITE_LOCATION/examples/glite-jp-primary-test +$ export X5O9_USER_PROXY=/some/proxy.pem # must be among $GLITE_JP_PRIMARY_PEERS + +$ $TEST registerjob $JOB '/the/job/owner/x509/cert' + +$ $TEST startupload "urn:org.glite.jp.primary:lb" 1 text/plain + responds with destination gsiftp url + +$ globus-url-copy file:///$GLITE_LOCATION/examples/glite-jp-primary-sample_job.lb $DESTINATION_URL + +$ $TEST commitupload $DESTINATION_URL + +$ $TEST getjobattr $JOB http://egee.cesnet.cz/en/Schema/LB/Attributes:finalStatus + +The command should output: + + Waiting FILE Mon Oct 10 23:48:47 2005 + +-- diff --git a/org.glite.jp.primary/examples/sample_job b/org.glite.jp.primary/examples/sample_job new file mode 100644 index 0000000..f9b515f --- /dev/null +++ b/org.glite.jp.primary/examples/sample_job @@ -0,0 +1,8 @@ +DG.ARRIVED=20051010204845.000000 DATE=20051010204845.409455 HOST="scientific.civ.zcu.cz" PROG=edg-wms LVL=SYSTEM DG.PRIORITY=0 DG.SOURCE="UserInterface" DG.SRC_INSTANCE="" DG.EVNT="RegJob" DG.JOBID="https://scientific.civ.zcu.cz:9200/1Yjk3Wlaspl07y45iX8Tng" DG.SEQCODE="UI=000001:NS=0000000000:WM=000000:BH=0000000000:JSS=000000:LM=000000:LRMS=000000:APP=000000" DG.USER="/O=CESNET/O=Masaryk University/CN=Ales Krenek" DG.REGJOB.JDL="blabla" DG.REGJOB.NS="NNNSSSS" DG.REGJOB.PARENT="" DG.REGJOB.JOBTYPE="SIMPLE" DG.REGJOB.NSUBJOBS="0" DG.REGJOB.SEED="uLU0BArrdV98O41PLThJ5Q" +DG.ARRIVED=20051010204847.000000 DATE=20051010204847.451986 HOST="scientific.civ.zcu.cz" PROG=edg-wms LVL=SYSTEM DG.PRIORITY=0 DG.SOURCE="WorkloadManager" DG.SRC_INSTANCE="" DG.EVNT="DeQueued" DG.JOBID="https://scientific.civ.zcu.cz:9200/1Yjk3Wlaspl07y45iX8Tng" DG.SEQCODE="UI=000002:NS=0000000004:WM=000001:BH=0000000000:JSS=000000:LM=000000:LRMS=000000:APP=000000" DG.USER="/O=CESNET/O=Masaryk University/CN=Ales Krenek" DG.DEQUEUED.QUEUE="queue name" DG.DEQUEUED.LOCAL_JOBID="new jobId assigned by the receiving component" +DG.ARRIVED=20051010204847.000000 DATE=20051010204847.485702 HOST="scientific.civ.zcu.cz" PROG=edg-wms LVL=SYSTEM DG.PRIORITY=0 DG.SOURCE="WorkloadManager" DG.SRC_INSTANCE="" DG.EVNT="HelperCall" DG.JOBID="https://scientific.civ.zcu.cz:9200/1Yjk3Wlaspl07y45iX8Tng" DG.SEQCODE="UI=000002:NS=0000000004:WM=000003:BH=0000000000:JSS=000000:LM=000000:LRMS=000000:APP=000000" DG.USER="/O=CESNET/O=Masaryk University/CN=Ales Krenek" DG.HELPERCALL.HELPER_NAME="name of the called component" DG.HELPERCALL.HELPER_PARAMS="parameters of the call" DG.HELPERCALL.SRC_ROLE="CALLING" +DG.ARRIVED=20051010204847.000000 DATE=20051010204847.520663 HOST="scientific.civ.zcu.cz" PROG=edg-wms LVL=SYSTEM DG.PRIORITY=0 DG.SOURCE="WorkloadManager" DG.SRC_INSTANCE="" DG.EVNT="Match" DG.JOBID="https://scientific.civ.zcu.cz:9200/1Yjk3Wlaspl07y45iX8Tng" DG.SEQCODE="UI=000002:NS=0000000004:WM=000005:BH=0000000000:JSS=000000:LM=000000:LRMS=000000:APP=000000" DG.USER="/O=CESNET/O=Masaryk University/CN=Ales Krenek" DG.MATCH.DEST_ID="destination CE/queue" +DG.ARRIVED=20051010204847.000000 DATE=20051010204847.552015 HOST="scientific.civ.zcu.cz" PROG=edg-wms LVL=SYSTEM DG.PRIORITY=0 DG.SOURCE="WorkloadManager" DG.SRC_INSTANCE="" DG.EVNT="HelperReturn" DG.JOBID="https://scientific.civ.zcu.cz:9200/1Yjk3Wlaspl07y45iX8Tng" DG.SEQCODE="UI=000002:NS=0000000004:WM=000007:BH=0000000000:JSS=000000:LM=000000:LRMS=000000:APP=000000" DG.USER="/O=CESNET/O=Masaryk University/CN=Ales Krenek" DG.HELPERRETURN.HELPER_NAME="name of the called component" DG.HELPERRETURN.RETVAL="returned data" DG.HELPERRETURN.SRC_ROLE="CALLING" +DG.ARRIVED=20051010204847.000000 DATE=20051010204847.584267 HOST="scientific.civ.zcu.cz" PROG=edg-wms LVL=SYSTEM DG.PRIORITY=0 DG.SOURCE="WorkloadManager" DG.SRC_INSTANCE="" DG.EVNT="EnQueued" DG.JOBID="https://scientific.civ.zcu.cz:9200/1Yjk3Wlaspl07y45iX8Tng" DG.SEQCODE="UI=000002:NS=0000000004:WM=000009:BH=0000000000:JSS=000000:LM=000000:LRMS=000000:APP=000000" DG.USER="/O=CESNET/O=Masaryk University/CN=Ales Krenek" DG.ENQUEUED.QUEUE="destination queue" DG.ENQUEUED.JOB="job description in receiver language" DG.ENQUEUED.RESULT="OK" DG.ENQUEUED.REASON="detailed description of transfer" +DG.ARRIVED=20051010204847.000000 DATE=20051010204847.381506 HOST="scientific.civ.zcu.cz" PROG=edg-wms LVL=SYSTEM DG.PRIORITY=0 DG.SOURCE="NetworkServer" DG.SRC_INSTANCE="" DG.EVNT="Accepted" DG.JOBID="https://scientific.civ.zcu.cz:9200/1Yjk3Wlaspl07y45iX8Tng" DG.SEQCODE="UI=000002:NS=0000000001:WM=000000:BH=0000000000:JSS=000000:LM=000000:LRMS=000000:APP=000000" DG.USER="/O=CESNET/O=Masaryk University/CN=Ales Krenek" DG.ACCEPTED.FROM="UserInterface" DG.ACCEPTED.FROM_HOST="sending component hostname" DG.ACCEPTED.FROM_INSTANCE="sending component instance" DG.ACCEPTED.LOCAL_JOBID="new jobId (Condor Globus ...)" +DG.ARRIVED=20051010204847.000000 DATE=20051010204847.409422 HOST="scientific.civ.zcu.cz" PROG=edg-wms LVL=SYSTEM DG.PRIORITY=0 DG.SOURCE="NetworkServer" DG.SRC_INSTANCE="" DG.EVNT="EnQueued" DG.JOBID="https://scientific.civ.zcu.cz:9200/1Yjk3Wlaspl07y45iX8Tng" DG.SEQCODE="UI=000002:NS=0000000003:WM=000000:BH=0000000000:JSS=000000:LM=000000:LRMS=000000:APP=000000" DG.USER="/O=CESNET/O=Masaryk University/CN=Ales Krenek" DG.ENQUEUED.QUEUE="destination queue" DG.ENQUEUED.JOB="job description in receiver language" DG.ENQUEUED.RESULT="OK" DG.ENQUEUED.REASON="detailed description of transfer" diff --git a/org.glite.jp.primary/project/build.number b/org.glite.jp.primary/project/build.number index 17d7d4d..421b076 100644 --- a/org.glite.jp.primary/project/build.number +++ b/org.glite.jp.primary/project/build.number @@ -1,2 +1,2 @@ -#Sat Oct 15 06:52:14 CEST 2005 -module.build=39 +#Fri Oct 21 08:18:48 CEST 2005 +module.build=43 diff --git a/org.glite.jp.primary/project/version.properties b/org.glite.jp.primary/project/version.properties index 1ef4b00..3964bdd 100644 --- a/org.glite.jp.primary/project/version.properties +++ b/org.glite.jp.primary/project/version.properties @@ -1,2 +1,2 @@ -module.version=1.1.0 +module.version=1.1.1 module.age=1 diff --git a/org.glite.jp.server-common/project/build.number b/org.glite.jp.server-common/project/build.number index baeaebc..bc76a71 100644 --- a/org.glite.jp.server-common/project/build.number +++ b/org.glite.jp.server-common/project/build.number @@ -1,2 +1,2 @@ -#Sat Oct 15 06:50:18 CEST 2005 -module.build=3 +#Sun Oct 16 20:28:18 CEST 2005 +module.build=4 diff --git a/org.glite.jp.ws-interface/project/build.number b/org.glite.jp.ws-interface/project/build.number index af547f8..1a2bc84 100644 --- a/org.glite.jp.ws-interface/project/build.number +++ b/org.glite.jp.ws-interface/project/build.number @@ -1,2 +1,2 @@ -#Sat Oct 15 06:46:41 CEST 2005 -module.build=36 +#Sun Oct 16 20:24:25 CEST 2005 +module.build=37 diff --git a/org.glite.jp/build.xml b/org.glite.jp/build.xml index 512a8fd..2e5e7a0 100644 --- a/org.glite.jp/build.xml +++ b/org.glite.jp/build.xml @@ -12,6 +12,9 @@ Revision history: $Log$ + Revision 1.10 2005/10/14 17:23:07 akrenek + added jp.client + Revision 1.9 2005/10/11 20:37:50 akrenek added dependencies on lb.server-bones and security.gsoap-plugin @@ -306,7 +309,7 @@ - + @@ -322,7 +325,7 @@ - + diff --git a/org.glite.jp/project/build.number b/org.glite.jp/project/build.number index add42f8..aa96619 100644 --- a/org.glite.jp/project/build.number +++ b/org.glite.jp/project/build.number @@ -1,2 +1,2 @@ -#Fri Oct 14 15:24:20 CEST 2005 -module.build=38 +#Thu Dec 01 08:35:52 CET 2005 +module.build=81 diff --git a/org.glite.jp/project/dependencies.properties b/org.glite.jp/project/dependencies.properties index 18a5ca6..244b5ad 100644 --- a/org.glite.jp/project/dependencies.properties +++ b/org.glite.jp/project/dependencies.properties @@ -2,12 +2,16 @@ # System dependencies ################################################################### -org.glite.version = HEAD -org.glite.jp.version = HEAD +org.glite.version = glite_R_1_5_0 +org.glite.jp.version = glite-jp_R_1_1_3 # Component dependencies tag = do not remove this line = -org.glite.jp.ws-interface.version = HEAD -org.glite.jp.common.version = HEAD -org.glite.jp.server-common.version = HEAD -org.glite.jp.index.version = HEAD -org.glite.jp.primary.version = HEAD + +org.glite.jp.ws-interface.version = glite-jp-ws-interface_R_1_1_0 +org.glite.jp.common.version = glite-jp-common_R_1_1_0 +org.glite.jp.client.version = glite-jp-client_R_1_0_1 +org.glite.jp.server-common.version = glite-jp-server-common_R_1_0_0 +org.glite.jp.primary.version = glite-jp-primary_R_1_1_1 +org.glite.jp.index.version = glite-jp-index_R_1_1_0 + +ext.gsoap.version = 2.7.0 diff --git a/org.glite.jp/project/glite.jp.csf.xml b/org.glite.jp/project/glite.jp.csf.xml index 51c2be6..3f93fcb 100644 --- a/org.glite.jp/project/glite.jp.csf.xml +++ b/org.glite.jp/project/glite.jp.csf.xml @@ -12,6 +12,12 @@ Revision history: $Log$ + Revision 1.4.2.1 2005/10/17 09:49:02 akrenek + added jp.client module targets + + Revision 1.4 2005/10/03 17:00:50 valtri + Automatically checkout the new module yet. + Revision 1.3 2004/12/10 09:46:41 akrenek included ws-interface @@ -138,6 +144,10 @@ + + + + @@ -197,7 +207,7 @@ + description="Install external packages" depends="oscheck, libtar, mysql"/> + + + + + + + + @@ -259,6 +279,8 @@ diff --git a/org.glite.jp/project/version.properties b/org.glite.jp/project/version.properties index 1ef4b00..24a9118 100644 --- a/org.glite.jp/project/version.properties +++ b/org.glite.jp/project/version.properties @@ -1,2 +1,2 @@ -module.version=1.1.0 +module.version=1.1.3 module.age=1 diff --git a/org.glite.lb.client-interface/interface/context.h b/org.glite.lb.client-interface/interface/context.h index b1e366a..3fed100 100644 --- a/org.glite.lb.client-interface/interface/context.h +++ b/org.glite.lb.client-interface/interface/context.h @@ -180,7 +180,7 @@ typedef enum _edg_wll_ErrorCode { EDG_WLL_ERROR_DNS, /**< DNS resolver error. See errDesc returned by edg_wll_Error(). */ EDG_WLL_ERROR_NOJOBID, /**< Attmepted call requires calling edg_wll_SetLoggingJob() first. */ EDG_WLL_ERROR_NOINDEX, /**< Query does not contain any conidion on indexed attribute. */ - EDG_WLL_IL_PROTO, /**< Interlogger to lbserver communication protocol error. */ + EDG_WLL_IL_PROTO, /**< Lbserver (proxy) store communication protocol error. */ EDG_WLL_IL_SYS, /**< Interlogger internal error. */ EDG_WLL_IL_EVENTS_WAITING, /**< Interlogger still has events pending delivery. */ EDG_WLL_ERROR_COMPARE_EVENTS, /**< Two compared events differ. */ diff --git a/org.glite.lb.client-interface/project/build.number b/org.glite.lb.client-interface/project/build.number index 4ab76be..6387a53 100644 --- a/org.glite.lb.client-interface/project/build.number +++ b/org.glite.lb.client-interface/project/build.number @@ -1,2 +1,2 @@ -#Sat Oct 15 06:32:19 CEST 2005 -module.build=154 +#Mon Feb 20 04:39:15 CET 2006 +module.build=0214 diff --git a/org.glite.lb.client-interface/project/version.properties b/org.glite.lb.client-interface/project/version.properties index 1b13372..f582d29 100644 --- a/org.glite.lb.client-interface/project/version.properties +++ b/org.glite.lb.client-interface/project/version.properties @@ -1,4 +1,4 @@ #Fri Sep 02 14:16:31 CEST 2005 -module.version=3.0.0 +module.version=2.1.1 module.build=2 module.age=1 diff --git a/org.glite.lb.client/Makefile b/org.glite.lb.client/Makefile index 89e2250..e25e248 100644 --- a/org.glite.lb.client/Makefile +++ b/org.glite.lb.client/Makefile @@ -78,14 +78,6 @@ CFLAGS:=${DEBUG} \ CXXFLAGS:=${CFLAGS} -GLOBUS_LIBS:=-L${globus_prefix}/lib \ - -lglobus_common_${nothrflavour} \ - -lglobus_gssapi_gsi_${nothrflavour} \ - -GLOBUS_THRLIBS:=-L${globus_prefix}/lib \ - -lglobus_common_${thrflavour} \ - -lglobus_gssapi_gsi_${thrflavour} - ifneq (${expat_prefix},/usr) EXPAT_LIBS:=-L${expat_prefix}/lib endif @@ -140,7 +132,7 @@ PLUSLIB:=libglite_lb_clientpp_${nothrflavour}.la THRPLUSLIB:=libglite_lb_clientpp_${thrflavour}.la TOOLS:=dump load purge lb_dump_exporter -EXAMPLES:=log_usertag_proxy job_log job_reg feed_shark notify query_ext query_seq_code stats abort_job change_acl +EXAMPLES:=log_usertag_proxy job_log job_reg feed_shark notify query_ext query_seq_code stats abort_job change_acl lbmon EXAMPLES_CL=user_jobs job_status FAKE_EXAMPLES:=job_log_fake @@ -180,16 +172,16 @@ ${THRPLUSLIB}: ${PLUSTHROBJS} ${LINK} ${version_info} -o $@ ${PLUSTHRLOBJS} -rpath ${glite_location}/lib ${THRLIB} logevent: logevent.o args.o - ${LINK} -o $@ logevent.o args.o ${LIB} ${EXT_LIB} ${GLOBUS_LIBS} + ${LINK} -o $@ logevent.o args.o ${LIB} ${EXT_LIB} ${TOOLS} ${EXAMPLES}: %: %.o - ${LINK} -o $@ $< ${LIB} ${EXT_LIB} ${GLOBUS_LIBS} + ${LINK} -o $@ $< ${LIB} ${EXT_LIB} ${EXAMPLES_CL}: %: %.o - ${LINK} -o $@ $< ${LIB} ${COMMON_LIB} ${EXT_LIB} ${GLOBUS_LIBS} + ${LINK} -o $@ $< ${LIB} ${COMMON_LIB} ${EXT_LIB} ${FAKE_EXAMPLES}: %: %.o ${FAKELIB} - ${LINK} -o $@ $< ${FAKELIB} ${TEST_LIBS} ${EXT_LIB} ${GLOBUS_LIBS} + ${LINK} -o $@ $< ${FAKELIB} ${TEST_LIBS} ${EXT_LIB} ${TOOLS}: ${LIB} @@ -250,7 +242,7 @@ check.producer: producer_test ./producer_test producer_test: producer_test.o prod_proto_test.o - ${LINKXX} -o $@ ${LIB} ${TEST_LIBS} $+ ${EXT_LIB} ${GLOBUS_LIBS} + ${LINKXX} -o $@ ${LIB} ${TEST_LIBS} $+ ${EXT_LIB} producer_test.o: %.o: %.cpp ${CXX} -c ${CXXFLAGS} ${TEST_INC} ${GLOBUSINC} $< diff --git a/org.glite.lb.client/examples/job_reg.c b/org.glite.lb.client/examples/job_reg.c index ad57239..effd501 100644 --- a/org.glite.lb.client/examples/job_reg.c +++ b/org.glite.lb.client/examples/job_reg.c @@ -3,6 +3,7 @@ #include #include #include +#include #include "glite/wmsutils/jobid/cjobid.h" #include "glite/lb/producer.h" @@ -18,7 +19,7 @@ static void usage(char *me) int main(int argc, char *argv[]) { - char *src = NULL,*job = NULL,*server = NULL,*seq; + char *src = NULL,*job = NULL,*server = NULL,*seq,*jdl = NULL; int lbproxy = 0; int done = 0,num_subjobs = 0,reg_subjobs = 0,i; edg_wll_Context ctx; @@ -29,13 +30,14 @@ int main(int argc, char *argv[]) opterr = 0; do { - switch (getopt(argc,argv,"xs:j:m:n:S")) { + switch (getopt(argc,argv,"xs:j:m:n:Sl:")) { case 'x': lbproxy = 1; break; case 's': src = (char *) strdup(optarg); break; case 'j': job = (char *) strdup(optarg); break; case 'm': server = strdup(optarg); break; case 'n': num_subjobs = atoi(optarg); break; case 'S': if (num_subjobs>0) { reg_subjobs = 1; break; } + case 'l': jdl = (char *) strdup(optarg); break; case '?': usage(argv[0]); exit(EINVAL); case -1: done = 1; break; } @@ -63,11 +65,29 @@ int main(int argc, char *argv[]) exit(1); } + if (jdl) { + int f = open(jdl,O_RDONLY,0); + off_t l,p,c; + + if (f<0) { perror(jdl); exit(1); } + l = lseek(f,0,SEEK_END); + lseek(f,0,SEEK_SET); + + jdl = malloc(l+1); + + for (p=0; p < l && (c = read(f,jdl+p,l-p)) > 0; p += c); + if (c<0) { + perror("read()"); + exit (1); + } + jdl[p] = 0; + } + edg_wll_SetParam(ctx,EDG_WLL_PARAM_SOURCE,edg_wll_StringToSource(src)); if (lbproxy) { if (edg_wll_RegisterJobProxy(ctx,jobid, num_subjobs?EDG_WLL_REGJOB_DAG:EDG_WLL_REGJOB_SIMPLE, - "blabla", "NNNSSSS", + jdl ? jdl : "blabla", "NNNSSSS", num_subjobs,NULL,&subjobs)) { char *et,*ed; @@ -78,7 +98,7 @@ int main(int argc, char *argv[]) } else { if (edg_wll_RegisterJobSync(ctx,jobid, num_subjobs?EDG_WLL_REGJOB_DAG:EDG_WLL_REGJOB_SIMPLE, - "blabla", "NNNSSSS", + jdl ? jdl : "blabla", "NNNSSSS", num_subjobs,NULL,&subjobs)) { char *et,*ed; diff --git a/org.glite.lb.client/examples/lbmon.c b/org.glite.lb.client/examples/lbmon.c new file mode 100644 index 0000000..2d466b9 --- /dev/null +++ b/org.glite.lb.client/examples/lbmon.c @@ -0,0 +1,137 @@ +#ident "$Header$" + +#include +#include +#include +#include +#include +#include + +#include "glite/lb/consumer.h" + +static void usage(char *); +static int query_all(edg_wll_Context, int, struct timeval, edg_wll_JobStat **, edg_wlc_JobId **); +static void dgerr(edg_wll_Context,char *); + +static char *myname = NULL; +static int debug = 0, verbose = 0, lbproxy =0; +static const char rcsid[] = "@(#)$Id$"; + +static struct option const long_options[] = { + { "help", no_argument, 0, 'h' }, + { "version", no_argument, 0, 'V' }, + { "verbose", no_argument, 0, 'v' }, + { "debug", no_argument, 0, 'd' }, + { "lbproxy", required_argument, 0, 'x' }, + { NULL, 0, NULL, 0} +}; + +int main(int argc,char *argv[]) { + edg_wll_Context ctx; + edg_wll_JobStat *statesOut = NULL; + edg_wlc_JobId *jobsOut = NULL; + struct timeval time_now; + + int i, result, opt, nJobs; + i = result = opt = 0; + gettimeofday(&time_now,0); + + myname = argv[0]; + fprintf(stdout,"\n"); + /* get arguments */ + while ((opt = getopt_long(argc,argv, + "h" /* help */ + "V" /* version */ + "v" /* verbose */ + "d" /* debug */ + "x", /* lbproxy */ + long_options, (int *) 0)) != EOF) { + + switch (opt) { + case 'V': fprintf(stdout,"%s:\t%s\n",argv[0],rcsid); exit(0); + case 'v': verbose = 1; break; + case 'd': debug = 1; break; + case 'x': lbproxy = 1; break; + case 'h': + default: + usage(argv[0]); exit(0); + } + } + if ( edg_wll_InitContext(&ctx) ) { + fprintf(stderr,"%s: cannot initialize edg_wll_Context\n ",myname); + exit(1); + } + + if ( (result = query_all(ctx, EDG_WLL_JOB_CLEARED, time_now, &statesOut, &jobsOut)) ) { + dgerr(ctx, "edg_wll_QueryJobs"); + } else { + fprintf(stdout,"Number of jobs... "); + } + + nJobs = 0; + if ( jobsOut ) { + for (i=0; jobsOut[i]; i++) edg_wlc_JobIdFree(jobsOut[i]); { + nJobs++; + free(jobsOut); + } + } + if ( statesOut ) { + for (i=0; statesOut[i].state; i++) edg_wll_FreeStatus(&statesOut[i]); + free(statesOut); + } + edg_wll_FreeContext(ctx); + + + return result; +} + +static void +usage(char *name) { + fprintf(stderr,"Usage: %s [-x]\n", name); +} + +static int +query_all(edg_wll_Context ctx, int query_status, struct timeval query_time, edg_wll_JobStat **statesOut, edg_wlc_JobId **jobsOut) { + edg_wll_QueryRec jc[3]; + int ret; + + memset(jc, 0, sizeof jc); + + /* jobs in the state 'query_status' within last hour */ + jc[0].attr = EDG_WLL_QUERY_ATTR_STATUS; + jc[0].op = EDG_WLL_QUERY_OP_EQUAL; + jc[0].value.i = query_status; + jc[1].attr = EDG_WLL_QUERY_ATTR_TIME; + jc[1].attr_id.state = query_status; + jc[1].op = EDG_WLL_QUERY_OP_WITHIN; + jc[1].value.t.tv_sec = query_time.tv_sec - 3600; + jc[1].value.t.tv_usec = query_time.tv_usec; + jc[1].value2.t.tv_sec = query_time.tv_sec; + jc[1].value2.t.tv_usec = query_time.tv_usec; + jc[2].attr = EDG_WLL_QUERY_ATTR_UNDEF; + + if ( (ret = edg_wll_QueryJobs(ctx, jc, 0, jobsOut, statesOut)) ) { + if ( ret == E2BIG ) { + int r; + if ( edg_wll_GetParam(ctx, EDG_WLL_PARAM_QUERY_RESULTS, &r) ) return ret; + if ( r != EDG_WLL_QUERYRES_LIMITED ) return ret; + + fprintf(stderr," edg_wll_QueryJobs() Warning: only limited result returned!\n"); + return 0; + } else return ret; + } + + return ret; +} + +static void +dgerr(edg_wll_Context ctx,char *where) { + char *etxt,*edsc; + + edg_wll_Error(ctx,&etxt,&edsc); + fprintf(stderr,"%s: %s: %s",myname,where,etxt); + if (edsc) fprintf(stderr," (%s)",edsc); + putc('\n',stderr); + if(etxt) free(etxt); + if(edsc) free(edsc); +} diff --git a/org.glite.lb.client/examples/resubmission.l b/org.glite.lb.client/examples/resubmission.l index 3b8765c..ed6fdcb 100644 --- a/org.glite.lb.client/examples/resubmission.l +++ b/org.glite.lb.client/examples/resubmission.l @@ -3,6 +3,7 @@ -s LogMonitor,-e EnQueued, --queue="wm_input.fl", --job="job description in receiver language", --result=OK, --reason="detailed description of transfer" -s WorkloadManager,-e DeQueued, --queue="wm_input.fl", --local_jobid="WM_ID" +-s WorkloadManager, -e Resubmission, --result=${RESUB:-WILLRESUB}, --reason="let's try again", --tag=none -s WorkloadManager,-e HelperCall, --helper_name="name of the called component",--helper_params="parameters of the call", --src_role=CALLING -s WorkloadManager,-e Match,--dest_id="${DESTINATION:-destination CE/queue}" -s WorkloadManager,-e HelperReturn, --helper_name="name of the called component",--retval="returned data", --src_role=CALLING diff --git a/org.glite.lb.client/examples/shallow_and_full_resub.l b/org.glite.lb.client/examples/shallow_and_full_resub.l index 50f3718..c171348 100644 --- a/org.glite.lb.client/examples/shallow_and_full_resub.l +++ b/org.glite.lb.client/examples/shallow_and_full_resub.l @@ -9,14 +9,16 @@ ! DESTINATION=CE2/queue2 ! CE_NODE=worker2 -:resubmission_shallow: +! RESUB=SHALLOW +:resubmission: -s LogMonitor, -e Done, --status_code=FAILED, --reason="reason for the change", --exit_code=141 -s LogMonitor, -e Resubmission, --result=WILLRESUB, --reason="let's try again", --tag=none ! DESTINATION=CE3/queue3 ! CE_NODE=worker3 -:resubmission_shallow: +! RESUB=SHALLOW +:resubmission: -s LogMonitor, -e ReallyRunning, --wn_seq="$EDG_WL_SEQUENCE" @@ -27,7 +29,8 @@ ! DESTINATION=CE2/queue2 ! CE_NODE=worker2 -:resubmission_deep: +! RESUB=DEEP +:resubmission: # payload_running=false # destination=CE2/queue2 diff --git a/org.glite.lb.client/examples/shallow_resub_complex.l b/org.glite.lb.client/examples/shallow_resub_complex.l index 9932d29..ba1201b 100644 --- a/org.glite.lb.client/examples/shallow_resub_complex.l +++ b/org.glite.lb.client/examples/shallow_resub_complex.l @@ -2,6 +2,7 @@ ! DESTINATION=CE1/queue1 ! CE_NODE=worker1 +! RESUB=SHALLOW :running: -s LogMonitor, -e Done, --status_code=FAILED, --reason="reason for the change", --exit_code=141 @@ -9,7 +10,8 @@ ! DESTINATION=CE2/queue2 ! CE_NODE=worker2 -:resubmission_shallow: +! RESUB=SHALLOW +:resubmission: ! BRANCH_SEQUENCE="$EDG_WL_SEQUENCE" -s LogMonitor, -e Done, --status_code=FAILED, --reason="reason for the change", --exit_code=141 @@ -17,7 +19,8 @@ ! DESTINATION=CE3/queue3 ! CE_NODE=worker3 -:resubmission_shallow: +! RESUB=SHALLOW +:resubmission: -s LogMonitor, -e ReallyRunning, --wn_seq="$BRANCH_SEQUENCE" @@ -34,7 +37,8 @@ ! DESTINATION=CE4/queue4 ! CE_NODE=worker4 -:resubmission_deep: +! RESUB=DEEP +:resubmission: # payload_running=false # destination=CE4/queue4 diff --git a/org.glite.lb.client/examples/shallow_resub_simple.l b/org.glite.lb.client/examples/shallow_resub_simple.l index a0e04d3..134368f 100644 --- a/org.glite.lb.client/examples/shallow_resub_simple.l +++ b/org.glite.lb.client/examples/shallow_resub_simple.l @@ -9,14 +9,16 @@ ! DESTINATION=CE2/queue2 ! CE_NODE=worker2 -:resubmission_shallow: +! RESUB=SHALLOW +:resubmission: -s LogMonitor, -e Done, --status_code=FAILED, --reason="reason for the change", --exit_code=141 -s LogMonitor, -e Resubmission, --result=WILLRESUB, --reason="let's try again", --tag=none ! DESTINATION=CE3/queue3 ! CE_NODE=worker3 -:resubmission_shallow: +! RESUB=SHALLOW +:resubmission: -s LogMonitor, -e ReallyRunning, --wn_seq="$EDG_WL_SEQUENCE" diff --git a/org.glite.lb.client/examples/shallow_resub_simple2.l b/org.glite.lb.client/examples/shallow_resub_simple2.l index a1e17b4..1cb74c2 100644 --- a/org.glite.lb.client/examples/shallow_resub_simple2.l +++ b/org.glite.lb.client/examples/shallow_resub_simple2.l @@ -9,7 +9,8 @@ ! DESTINATION=CE2/queue2 ! CE_NODE=worker2 -:resubmission_shallow: +! RESUB=SHALLOW +:resubmission: ! BRANCH_SEQUENCE="$EDG_WL_SEQUENCE" -s LogMonitor, -e Done, --status_code=FAILED, --reason="reason for the change", --exit_code=141 @@ -17,7 +18,8 @@ ! DESTINATION=CE3/queue3 ! CE_NODE=worker3 -:resubmission_shallow: +! RESUB=SHALLOW +:resubmission: -s LogMonitor, -e ReallyRunning, --wn_seq="$BRANCH_SEQUENCE" diff --git a/org.glite.lb.client/project/build.number b/org.glite.lb.client/project/build.number index 557b922..ba1d3c6 100644 --- a/org.glite.lb.client/project/build.number +++ b/org.glite.lb.client/project/build.number @@ -1,2 +1,2 @@ -#Sat Oct 15 06:41:11 CEST 2005 -module.build=153 +#Mon Feb 20 05:00:53 CET 2006 +module.build=0213 diff --git a/org.glite.lb.client/project/version.properties b/org.glite.lb.client/project/version.properties index ab27283..db8f14f 100644 --- a/org.glite.lb.client/project/version.properties +++ b/org.glite.lb.client/project/version.properties @@ -1,4 +1,4 @@ #Fri Sep 02 14:17:41 CEST 2005 -module.version=3.0.0 +module.version=2.1.3 module.build=2 module.age=1 diff --git a/org.glite.lb.client/src/connection.c b/org.glite.lb.client/src/connection.c index 33fdf78..232be5b 100644 --- a/org.glite.lb.client/src/connection.c +++ b/org.glite.lb.client/src/connection.c @@ -204,6 +204,10 @@ int edg_wll_open_proxy(edg_wll_Context ctx) int flags; + if (ctx->connProxy->conn.sock > -1) { + // XXX: test path socket here? + return edg_wll_ResetError(ctx); + } ctx->connProxy->conn.sock = socket(PF_UNIX, SOCK_STREAM, 0); if (ctx->connProxy->conn.sock < 0) { edg_wll_SetError(ctx, errno, "socket() error"); @@ -253,7 +257,7 @@ int http_check_status( char *response) { - int code,len; + int code = HTTP_INTERNAL,len = 0; edg_wll_ResetError(ctx); sscanf(response,"HTTP/%*f %n%d",&len,&code); diff --git a/org.glite.lb.client/src/logevent.c.T b/org.glite.lb.client/src/logevent.c.T index c58f72b..b939e05 100644 --- a/org.glite.lb.client/src/logevent.c.T +++ b/org.glite.lb.client/src/logevent.c.T @@ -35,7 +35,7 @@ int main(int argc, char *argv[]) char *ff = NULL, *jobid_s = NULL; char *src_instance = NULL; int err = 0/*,i,done = 0,fmtlen*/; - int pri = 0; + int pri = 0, noinc = 0; int use_lbproxy = 0; char *lbproxy_user = NULL; char *lbproxy_store_sock = NULL; @@ -91,6 +91,7 @@ int main(int argc, char *argv[]) { EDG_WLL_ARGS_BOOL, "d", "debug mode", "enable debug mode", &deb }, #ifdef ENABLE_REASON_LENGTH { EDG_WLL_ARGS_INT, "l", "reason-length", "extend 'reason' string to length (debug only)", &elength, 0, 1000000000 }, + { EDG_WLL_ARGS_BOOL, "I", "dont-increment", "don't increment initial seqence code", &noinc }, #endif @@@{ my %typetab = ( @@ -187,6 +188,8 @@ int main(int argc, char *argv[]) } } + if (noinc) edg_wll_SetSequenceCode(ctx,code,EDG_WLL_SEQ_NORMAL); + #ifdef ENABLE_REASON_LENGTH if (elength > 200000000) { fprintf(stderr,"%s: usupported reason message length: %d\n", argv[0], elength); diff --git a/org.glite.lb.client/src/prod_proto.c b/org.glite.lb.client/src/prod_proto.c index 0eb6948..19822e6 100644 --- a/org.glite.lb.client/src/prod_proto.c +++ b/org.glite.lb.client/src/prod_proto.c @@ -81,7 +81,7 @@ plain_reader(void *user_data, char *buffer, int max_len) len = edg_wll_plain_read_full(data->conn, buffer, max_len, &data->ctx->p_tmp_timeout); if(len < 0) - edg_wll_SetError(data->ctx, LB_PROTO, "get_reply_plain(): error reading message data"); + edg_wll_SetError(data->ctx, EDG_WLL_IL_PROTO, "plain_reader(): error reading message data"); return(len); } @@ -96,23 +96,22 @@ plain_reader(void *user_data, char *buffer, int max_len) */ static int -get_reply_plain(edg_wll_Context context, edg_wll_PlainConnection *conn, char **buf, int *code_min) +get_reply_plain(edg_wll_Context context, edg_wll_PlainConnection *conn, char **buf, int *code_maj, int *code_min) { char *msg=NULL; - int len, code; + int len; struct reader_data data; data.ctx = context; data.conn = conn; - code = 0; len = read_il_data(&data, &msg, plain_reader); if(len < 0) { - edg_wll_SetError(context, LB_PROTO, "get_reply_plain(): error reading message"); + edg_wll_SetError(context, EDG_WLL_IL_PROTO, "get_reply_plain(): error reading message"); goto get_reply_plain_end; } - if(decode_il_reply(&code, code_min, buf, msg) < 0) { - edg_wll_SetError(context, LB_PROTO, "get_reply_plain(): error decoding message"); + if(decode_il_reply(code_maj, code_min, buf, msg) < 0) { + edg_wll_SetError(context, EDG_WLL_IL_PROTO, "get_reply_plain(): error decoding message"); goto get_reply_plain_end; } @@ -134,7 +133,7 @@ gss_reader(void *user_data, char *buffer, int max_len) &len, &gss_code); if(ret < 0) { edg_wll_log_proto_handle_gss_failures(data->ctx, ret, &gss_code, "edg_wll_gss_read_full"); - edg_wll_UpdateError(data->ctx, LB_PROTO, "get_reply_gss(): error reading message"); + edg_wll_UpdateError(data->ctx, EDG_WLL_IL_PROTO, "gss_reader(): error reading message"); } return(ret); @@ -143,7 +142,7 @@ gss_reader(void *user_data, char *buffer, int max_len) static int -get_reply_gss(edg_wll_Context context, edg_wll_GssConnection *conn, char **buf, int *code_min) +get_reply_gss(edg_wll_Context context, edg_wll_GssConnection *conn, char **buf, int *code_maj, int *code_min) { char *msg = NULL; int code; @@ -153,12 +152,12 @@ get_reply_gss(edg_wll_Context context, edg_wll_GssConnection *conn, char **buf, data.conn = conn; code = read_il_data(&data, &msg, gss_reader); if(code < 0) { - edg_wll_SetError(context, LB_PROTO, "get_reply_gss(): error reading reply"); + edg_wll_SetError(context, EDG_WLL_IL_PROTO, "get_reply_gss(): error reading reply"); goto get_reply_gss_end; } - if(decode_il_reply(&code, code_min, buf, msg) < 0) { - edg_wll_SetError(context, LB_PROTO, "get_reply_gss(): error decoding reply"); + if(decode_il_reply(code_maj, code_min, buf, msg) < 0) { + edg_wll_SetError(context, EDG_WLL_IL_PROTO, "get_reply_gss(): error decoding reply"); goto get_reply_gss_end; } @@ -282,9 +281,11 @@ int edg_wll_log_proto_client_proxy(edg_wll_Context context, edg_wll_PlainConnect static char et[256]; int err; int code; + int lbproto_code; int count; errno = err = code = count = 0; + lbproto_code = 0; edg_wll_ResetError(context); len = encode_il_msg(&buffer, logline); @@ -298,7 +299,7 @@ int edg_wll_log_proto_client_proxy(edg_wll_Context context, edg_wll_PlainConnect fprintf(stderr,"log_proto_client_proxy: sending message...\n"); #endif if (( count = edg_wll_plain_write_full(conn, buffer, len, &context->p_tmp_timeout)) < 0) { - edg_wll_SetError(context,LB_PROTO,"edg_wll_log_proto_client_proxy(): error sending message to socket"); + edg_wll_SetError(context, EDG_WLL_IL_PROTO,"edg_wll_log_proto_client_proxy(): error sending message to socket"); goto edg_wll_log_proto_client_proxy_end; } @@ -306,14 +307,28 @@ int edg_wll_log_proto_client_proxy(edg_wll_Context context, edg_wll_PlainConnect #ifdef EDG_WLL_LOG_STUB fprintf(stderr,"log_proto_client_proxy: reading answer from server...\n"); #endif - if ((err = get_reply_plain(context, conn, &answer, &code)) < 0 ) { - edg_wll_SetError(context,LB_PROTO,"edg_wll_log_proto_client_proxy(): error reading answer from L&B Proxy server"); + if ((err = get_reply_plain(context, conn, &answer, &lbproto_code, &code)) != 0 ) { + edg_wll_SetError(context, EDG_WLL_IL_PROTO,"edg_wll_log_proto_client_proxy(): error reading answer from L&B Proxy server"); } else { #ifdef EDG_WLL_LOG_STUB - fprintf(stderr,"log_proto_client_proxy: read answer \"%d: %s\"\n",code,answer); + fprintf(stderr,"log_proto_client_proxy: read answer \"%d:%d: %s\"\n",lbproto_code,code,answer); #endif - snprintf(et, sizeof(et), "answer read from L&B Proxy server: %s", answer); - edg_wll_SetError(context,code,et); + switch (lbproto_code) { + case LB_OK: break; + case LB_NOMEM: + edg_wll_SetError(context, ENOMEM, "edg_wll_log_proto_client_proxy(): proxy out of memory"); + break; + case LB_PROTO: + edg_wll_SetError(context, EDG_WLL_IL_PROTO, "edg_wll_log_proto_client_proxy(): received protocol error response"); + break; + case LB_DBERR: + snprintf(et, sizeof(et), "error details from L&B Proxy server: %s", answer); + edg_wll_SetError(context, code, et); + break; + default: + edg_wll_SetError(context, EDG_WLL_IL_PROTO, "edg_wll_log_proto_client_proxy(): received unknown protocol response"); + break; + } } edg_wll_log_proto_client_proxy_end: @@ -341,7 +356,7 @@ int edg_wll_log_proto_client_direct(edg_wll_Context context, edg_wll_GssConnecti char *buffer,*answer = NULL; static char et[256]; int err; - int code; + int code, lbproto_code; int count; edg_wll_GssStatus gss_code; @@ -361,7 +376,7 @@ int edg_wll_log_proto_client_direct(edg_wll_Context context, edg_wll_GssConnecti count = 0; if (( err = edg_wll_gss_write_full(con, buffer, len, &context->p_tmp_timeout, &count, &gss_code)) < 0) { edg_wll_log_proto_handle_gss_failures(context,err,&gss_code,"edg_wll_gss_write_full()"); - edg_wll_UpdateError(context,LB_PROTO,"edg_wll_log_proto_client_direct(): error sending message"); + edg_wll_UpdateError(context, EDG_WLL_IL_PROTO,"edg_wll_log_proto_client_direct(): error sending message"); goto edg_wll_log_proto_client_direct_end; } @@ -369,14 +384,28 @@ int edg_wll_log_proto_client_direct(edg_wll_Context context, edg_wll_GssConnecti #ifdef EDG_WLL_LOG_STUB fprintf(stderr,"log_proto_client_direct: reading answer from server...\n"); #endif - if ((err = get_reply_gss(context, con, &answer, &code)) < 0 ) { - edg_wll_SetError(context,LB_PROTO,"edg_wll_log_proto_client_direct(): error reading answer from L&B direct server"); + if ((err = get_reply_gss(context, con, &answer, &lbproto_code, &code)) != 0 ) { + edg_wll_SetError(context, EDG_WLL_IL_PROTO,"edg_wll_log_proto_client_direct(): error reading answer from L&B direct server"); } else { #ifdef EDG_WLL_LOG_STUB - fprintf(stderr,"log_proto_client_direct: read answer \"%d: %s\"\n",code,answer); + fprintf(stderr,"log_proto_client_direct: read answer \"%d:%d: %s\"\n",lbproto_code,code,answer); #endif - snprintf(et, sizeof(et), "answer read from bkserver: %s", answer); - edg_wll_SetError(context,code,et); + switch (lbproto_code) { + case LB_OK: break; + case LB_NOMEM: + edg_wll_SetError(context, ENOMEM, "log_proto_client_direct(): server out of memory"); + break; + case LB_PROTO: + edg_wll_SetError(context, EDG_WLL_IL_PROTO, "log_proto_client_direct(): received protocol error response"); + break; + case LB_DBERR: + snprintf(et, sizeof(et), "error details from L&B server: %s", answer); + edg_wll_SetError(context, code, et); + break; + default: + edg_wll_SetError(context, EDG_WLL_IL_PROTO, "log_proto_client_direct(): received unknown protocol response"); + break; + } } edg_wll_log_proto_client_direct_end: diff --git a/org.glite.lb.client/src/producer.c b/org.glite.lb.client/src/producer.c index 49b4549..7b4510d 100644 --- a/org.glite.lb.client/src/producer.c +++ b/org.glite.lb.client/src/producer.c @@ -845,14 +845,15 @@ int edg_wll_RegisterJobProxy( const char * seed, edg_wlc_JobId ** subjobs) { +#define MY_SEED "edg_wll_RegisterJobProxy()" /* first register with bkserver */ - int ret = edg_wll_RegisterJob(context,job,type,jdl,ns,num_subjobs,seed,subjobs); + int ret = edg_wll_RegisterJob(context,job,type,jdl,ns,num_subjobs,seed ? seed : MY_SEED,subjobs); if (ret) { edg_wll_UpdateError(context,0,"edg_wll_RegisterJobProxy(): unable to register with bkserver"); return edg_wll_Error(context,NULL,NULL); } /* and then with L&B Proxy */ - return edg_wll_RegisterJobMaster(context,LOGFLAG_PROXY,job,type,jdl,ns,NULL,num_subjobs,seed,subjobs); + return edg_wll_RegisterJobMaster(context,LOGFLAG_PROXY,job,type,jdl,ns,NULL,num_subjobs,seed ? seed : MY_SEED,subjobs); } int edg_wll_RegisterSubjob( @@ -903,12 +904,15 @@ int edg_wll_RegisterSubjobs( while (*pjdl != NULL) { if (edg_wll_RegisterSubjob(ctx, *psubjob, EDG_WLL_REGJOB_SIMPLE, *pjdl, - ns, parent, 0, NULL, NULL) != 0) break; + ns, parent, 0, NULL, NULL) != 0) { + goto edg_wll_registersubjobs_end; + } pjdl++; psubjob++; } edg_wll_SetLoggingJob(ctx, oldctxjob, oldctxseq, EDG_WLL_SEQ_NORMAL); +edg_wll_registersubjobs_end: return edg_wll_Error(ctx, NULL, NULL); } @@ -932,10 +936,13 @@ int edg_wll_RegisterSubjobsProxy( while (*pjdl != NULL) { if (edg_wll_RegisterSubjobProxy(ctx, *psubjob, EDG_WLL_REGJOB_SIMPLE, *pjdl, - ns, parent, 0, NULL, NULL) != 0) break; + ns, parent, 0, NULL, NULL) != 0) { + goto edg_wll_registersubjobsproxy_end; + } pjdl++; psubjob++; } +edg_wll_registersubjobsproxy_end: edg_wll_SetLoggingJobProxy(ctx, oldctxjob, oldctxseq, NULL, EDG_WLL_SEQ_NORMAL); return edg_wll_Error(ctx, NULL, NULL); diff --git a/org.glite.lb.common/Makefile b/org.glite.lb.common/Makefile index 9bfa125..17cb422 100644 --- a/org.glite.lb.common/Makefile +++ b/org.glite.lb.common/Makefile @@ -47,12 +47,16 @@ CFLAGS:=${DEBUG} -I${top_srcdir}/src -I${top_srcdir}/interface \ # major version more frequently. This variable specifies how many steps ahead # we are. -VERSION_AHEAD=0 +VERSION_AHEAD=1 GLOBUS_LIBS:=-L${globus_prefix}/lib \ -lglobus_common_${nothrflavour} \ -lglobus_gssapi_gsi_${nothrflavour} \ +GLOBUS_THRLIBS:=-L${globus_prefix}/lib \ + -lglobus_common_${thrflavour} \ + -lglobus_gssapi_gsi_${thrflavour} \ + GLITE_LIBS:=-L${glite_location}/lib ifneq (${expat_prefix},/usr) @@ -65,6 +69,7 @@ LDFLAGS:=-L${stagedir}/lib \ ${COVERAGE_FLAGS} EXT_LIBS:= ${EXPAT_LIBS} ${ARES_LIBS} ${GLOBUS_LIBS} +EXT_THRLIBS:= ${EXPAT_LIBS} ${ARES_LIBS} ${GLOBUS_THRLIBS} # breaks linking when not installed in /opt, /home/dimeglio etc. # ${GLITE_LIBS} \ @@ -89,8 +94,8 @@ LOBJS:=${OBJS:.o=.lo} TRIO_OBJS:=escape.o trio.o strio.o TRIO_LIB:=libglite_lb_trio.a -MAILDIR_OBJS:=lb_maildir.o -MAILDIR_LIB:=libglite_lb_maildir.a +MAILDIR_OBJS:=lb_maildir.lo +MAILDIR_LIB:=libglite_lb_maildir.la THROBJS:=${OBJS:.o=.thr.o} THRLOBJS:=${OBJS:.o=.thr.lo} @@ -134,8 +139,7 @@ ${TRIO_LIB}: ${TRIO_OBJS} ranlib $@ ${MAILDIR_LIB}: ${MAILDIR_OBJS} - ar crv $@ ${MAILDIR_OBJS} - ranlib $@ + ${LINK} ${version_info} -o $@ ${MAILDIR_OBJS} ${THRSTATICLIB}: ${THROBJS} ar crv $@ ${THROBJS} @@ -152,7 +156,7 @@ ${THRLTLIB}: ${THROBJS} ${LINK} ${version_info} -o $@ ${THRLOBJS} \ -lglite_security_gss_${thrflavour} \ -lglite_wmsutils_cjobid \ - ${EXT_LIBS} \ + ${EXT_THRLIBS} \ -lm stage: compile @@ -197,12 +201,12 @@ distbin: install: mkdir -p ${PREFIX}/lib mkdir -p ${PREFIX}/share/doc/${package}-${version} - ${INSTALL} -m 644 ${LTLIB} ${THRLTLIB} ${PREFIX}/lib + ${INSTALL} -m 644 ${LTLIB} ${THRLTLIB} ${MAILDIR_LIB} ${PREFIX}/lib ${INSTALL} -m 644 ${top_srcdir}/LICENSE ${PREFIX}/share/doc/${package}-${version} if [ x${DOSTAGE} = xyes ]; then \ mkdir -p ${PREFIX}/include/${globalprefix}/${lbprefix} ; \ (cd ${top_srcdir}/interface && install -m 644 ${HDRS} ${PREFIX}/include/${globalprefix}/${lbprefix}) ; \ - install -m 644 ${STATICLIB} ${THRSTATICLIB} ${TRIO_LIB} ${MAILDIR_LIB} ${PREFIX}/lib; \ + install -m 644 ${STATICLIB} ${THRSTATICLIB} ${TRIO_LIB} ${PREFIX}/lib; \ fi clean: diff --git a/org.glite.lb.common/interface/context-int.h b/org.glite.lb.common/interface/context-int.h index 9d68ded..84cbedf 100644 --- a/org.glite.lb.common/interface/context-int.h +++ b/org.glite.lb.common/interface/context-int.h @@ -16,6 +16,7 @@ typedef struct _edg_wll_SeqCode { unsigned int c[EDG_WLL_SOURCE__LAST]; } edg_wll_SeqCode; +#define EDG_WLL_SEQ_NULL "UI=000000:NS=0000000000:WM=000000:BH=0000000000:JSS=000000:LM=000000:LRMS=000000:APP=000000" /* non-gsi one-element analogy of connPool for L&B Proxy server */ diff --git a/org.glite.lb.common/project/build.number b/org.glite.lb.common/project/build.number index 500a562..1d1df61 100644 --- a/org.glite.lb.common/project/build.number +++ b/org.glite.lb.common/project/build.number @@ -1,2 +1,2 @@ -#Sat Oct 15 06:38:31 CEST 2005 -module.build=153 +#Mon Feb 20 04:41:23 CET 2006 +module.build=0213 diff --git a/org.glite.lb.common/project/version.properties b/org.glite.lb.common/project/version.properties index 2d55ba2..8badc66 100644 --- a/org.glite.lb.common/project/version.properties +++ b/org.glite.lb.common/project/version.properties @@ -1,4 +1,4 @@ #Fri Sep 02 14:17:07 CEST 2005 -module.version=3.0.0 +module.version=3.0.4 module.build=2 module.age=1 diff --git a/org.glite.lb.common/src/context.c b/org.glite.lb.common/src/context.c index 7978a9e..561e068 100644 --- a/org.glite.lb.common/src/context.c +++ b/org.glite.lb.common/src/context.c @@ -15,6 +15,10 @@ static void free_voms_groups(edg_wll_VomsGroups *); +/* uncomment to get the trace +#define CTXTRACE "/tmp/lb-context-trace" +*/ + int edg_wll_InitContext(edg_wll_Context *ctx) { int i; @@ -32,11 +36,23 @@ int edg_wll_InitContext(edg_wll_Context *ctx) out->connPool = (edg_wll_ConnPool *) calloc(out->poolSize, sizeof(edg_wll_ConnPool)); out->connPoolNotif = (edg_wll_ConnPool *) calloc(1, sizeof(edg_wll_ConnPool)); - out->connProxy = (edg_wll_ConnPool *) calloc(1, sizeof(edg_wll_ConnProxy)); + out->connProxy = (edg_wll_ConnProxy *) calloc(1, sizeof(edg_wll_ConnProxy)); out->connProxy->conn.sock = -1; out->connToUse = -1; *ctx = out; + +#ifdef CTXTRACE +{ + int trc = open(CTXTRACE,O_WRONLY|O_CREAT,0644); + char buf[200]; + sprintf(buf,"%p init\n",out); + lseek(trc,0,SEEK_END); + write(trc,buf,strlen(buf)); + close(trc); +} +#endif + return 0; } @@ -46,7 +62,16 @@ void edg_wll_FreeContext(edg_wll_Context ctx) OM_uint32 min_stat; if (!ctx) return; - +#ifdef CTXTRACE +{ + int trc = open(CTXTRACE,O_WRONLY|O_CREAT,0644); + char buf[200]; + sprintf(buf,"%p free\n",ctx); + lseek(trc,0,SEEK_END); + write(trc,buf,strlen(buf)); + close(trc); +} +#endif if (ctx->errDesc) free(ctx->errDesc); if (ctx->connPool) { int i; @@ -103,7 +128,7 @@ static const char* const errTexts[] = { "DNS resolver error", "No JobId specified in context", "No indexed condition in query", - "Interlogger protocol error", + "Lbserver (proxy) store protocol error", "Interlogger internal error", "Interlogger has events pending", "Compared events differ", diff --git a/org.glite.lb.common/src/il_msg.c b/org.glite.lb.common/src/il_msg.c index 10f7a82..4154ee9 100644 --- a/org.glite.lb.common/src/il_msg.c +++ b/org.glite.lb.common/src/il_msg.c @@ -109,7 +109,7 @@ read_il_data(void *user_data, char **buffer, int (*reader)(void *, char *, const int)) { - char buf[17]; + char buf[17], *p; int ret, len; /* read 17 byte header */ @@ -117,7 +117,23 @@ read_il_data(void *user_data, if(len < 0) { goto err; } + + /* perform some sanity checks on the received header */ + if(buf[16] != '\n') { + len = -1; + goto err; + } buf[16] = 0; + /* skip leading spaces */ + for(p = buf; *p == ' '; p++); + /* skip digits */ + for(; (*p >= '0') && (*p <= '9'); p++); + /* this must be the end of string */ + if(*p != 0) { + len = -1; + goto err; + } + if((len=atoi(buf)) <= 0) { len = -1; goto err; diff --git a/org.glite.lb.common/src/lb_plain_io.c b/org.glite.lb.common/src/lb_plain_io.c index 92bbf2b..7915dfa 100644 --- a/org.glite.lb.common/src/lb_plain_io.c +++ b/org.glite.lb.common/src/lb_plain_io.c @@ -2,6 +2,8 @@ #include #include #include +#include +#include #include #include #include @@ -173,7 +175,11 @@ int edg_wll_plain_write_full( int ct = -1; fd_set fds; struct timeval timeout, before, after; + struct sigaction sa,osa; + memset(&sa,0,sizeof(sa)); assert(sa.sa_handler == NULL); + sa.sa_handler = SIG_IGN; + sigaction(SIGPIPE,&sa,&osa); if ( to ) { memcpy(&timeout, to, sizeof(timeout)); @@ -204,5 +210,7 @@ end: if (to->tv_sec < 0) to->tv_sec = to->tv_usec = 0; } + sigaction(SIGPIPE,&osa,NULL); + if (errno == EPIPE) errno = ENOTCONN; return (errno)? -1: written; } diff --git a/org.glite.lb.common/src/log_msg.c b/org.glite.lb.common/src/log_msg.c index befa8cd..595ed19 100644 --- a/org.glite.lb.common/src/log_msg.c +++ b/org.glite.lb.common/src/log_msg.c @@ -1,3 +1,8 @@ +#include +#include +#include +#include +#include #include #include #include @@ -138,7 +143,7 @@ int edg_wll_log_event_write( case EAGAIN: case EACCES: case EINTR: - sleep(fcntl_timeout); + if ((i+1) < fcntl_attempts) sleep(fcntl_timeout); break; default: edg_wll_SetError(ctx, errno, "fcntl()"); @@ -146,6 +151,10 @@ int edg_wll_log_event_write( } } else break; } + if (i == fcntl_attempts) { + edg_wll_SetError(ctx, ETIMEDOUT, "timed out trying to lock event file"); + goto cleanup; + } if ( fseek(outfile, 0, SEEK_END) == -1 ) { edg_wll_SetError(ctx, errno, "fseek()"); diff --git a/org.glite.lb.common/src/ulm_parse.c b/org.glite.lb.common/src/ulm_parse.c index 2525a3e..855c26b 100644 --- a/org.glite.lb.common/src/ulm_parse.c +++ b/org.glite.lb.common/src/ulm_parse.c @@ -384,13 +384,14 @@ void edg_wll_ULMSplitDate( const char *s, int edg_wll_ULMTimevalToDate( long sec, long usec, char *dstr ) { char *func = "edg_wll_ULMTimevalToDate"; + struct tm tms; struct tm *tp; int len; if ( sec < 0 || usec < 0 || usec > 999999 ) return 1; - tp = gmtime( (const time_t *) &sec ); + tp = gmtime_r( (const time_t *) &sec, &tms ); if ( tp == NULL ) return 1; diff --git a/org.glite.lb.logger/Makefile b/org.glite.lb.logger/Makefile index 5f9cb69..0690f3d 100644 --- a/org.glite.lb.logger/Makefile +++ b/org.glite.lb.logger/Makefile @@ -92,19 +92,15 @@ INTERLOG_TEST_OBJS:= \ il_test.o glite_lb_logd: ${LOGD_OBJS} - ${LINK} -o $@ ${LOGD_OBJS} ${COMMON_LIB}_${nothrflavour} ${GLITE_GSS_LIB}_${nothrflavour} ${EXT_LIBS} ${GLOBUS_LIBS} + ${LINK} -o $@ ${LOGD_OBJS} ${COMMON_LIB}_${nothrflavour} glite_lb_interlogd: ${INTERLOG_OBJS} ${LINK} -o $@ ${INTERLOG_OBJS} \ - ${COMMON_LIB}_${thrflavour} \ - ${GLITE_GSS_LIB}_${nothrflavour} \ - ${EXT_LIBS} ${GLOBUS_THRLIBS} -lpthread + ${COMMON_LIB}_${thrflavour} glite_lb_notif_interlogd: ${INTERLOG_NOBJS} ${LINK} -o $@ ${INTERLOG_NOBJS} \ - ${COMMON_LIB}_${thrflavour} \ - ${GLITE_GSS_LIB}_${nothrflavour} \ - ${EXT_LIBS} ${GLOBUS_THRLIBS} -lpthread + ${COMMON_LIB}_${thrflavour} default: all @@ -125,7 +121,7 @@ check.ll: -echo commented out -- fix needed check.il: ${INTERLOG_TEST_OBJS} - ${LINKXX} -o $@ ${COMMON_LIB}_${thrflavour} ${GLITE_GSS_LIB}_${nothrflavour} ${EXT_LIBS} ${GLOBUS_THRLIBS} ${TEST_LIBS} -lpthread $+ + ${LINKXX} -o $@ ${COMMON_LIB}_${thrflavour} ${GLITE_GSS_LIB}_${nothrflavour} ${TEST_LIBS} -lpthread $+ dist: distsrc distbin diff --git a/org.glite.lb.logger/project/build.number b/org.glite.lb.logger/project/build.number index 19840f2..a1728f6 100644 --- a/org.glite.lb.logger/project/build.number +++ b/org.glite.lb.logger/project/build.number @@ -1,2 +1,2 @@ -#Sat Oct 15 06:54:17 CEST 2005 -module.build=153 +#Mon Feb 20 04:54:39 CET 2006 +module.build=0213 diff --git a/org.glite.lb.logger/project/version.properties b/org.glite.lb.logger/project/version.properties index 0b1a137..ea573ab 100644 --- a/org.glite.lb.logger/project/version.properties +++ b/org.glite.lb.logger/project/version.properties @@ -1,4 +1,4 @@ #Fri Sep 02 14:18:17 CEST 2005 -module.version=1.2.0 +module.version=1.2.2 module.build=2 module.age=1 diff --git a/org.glite.lb.logger/src/send_event.c b/org.glite.lb.logger/src/send_event.c index 602fd0d..7f1eb9d 100644 --- a/org.glite.lb.logger/src/send_event.c +++ b/org.glite.lb.logger/src/send_event.c @@ -132,7 +132,7 @@ get_reply(struct event_queue *eq, char **buf, int *code_min) { char *msg=NULL; int ret, code; - size_t len, l; + int len, l; struct timeval tv; struct reader_data data; diff --git a/org.glite.lb.proxy/Makefile b/org.glite.lb.proxy/Makefile index 6c06a69..4cb0fe8 100644 --- a/org.glite.lb.proxy/Makefile +++ b/org.glite.lb.proxy/Makefile @@ -70,7 +70,7 @@ endif SRVBONES_LIB:= -L${stagedir}/lib -lglite_lb_server_bones -LB_SERVER_SHARE_LIB:= -L${stagedir}/lib -lglite_lb_bkserver +LB_SERVER_SHARE_LIB:=${stagedir}/lib/libglite_lb_bkserver.a LB_PROXY_COMMON_LIB:= -L${stagedir}/lib -lglite_lb_common_${nothrflavour} COMMON_LIBS:= -L${stagedir}/lib -lglite_lb_common_${nothrflavour} -lglite_security_gss_${nothrflavour} GRIDSITE_LIBS = -lgridsite_globus `xml2-config --libs` @@ -101,7 +101,7 @@ LB_PROXY_LIBS:= \ -glite_lb_proxy: lbproxy.o +glite_lb_proxy: lbproxy.o ${LB_SERVER_SHARE_LIB} @echo DEBUG: mysql_version=${mysql_version} mysql_prefix=${mysql_prefix} @echo DEBUG: shell: x$(shell echo ${mysql_version} | cut -d. -f1,2)x ${LINK} -o $@ lbproxy.o ${LB_PROXY_LIBS} @@ -140,9 +140,11 @@ install: ${INSTALL} -m 755 glite_lb_proxy ${PREFIX}/bin/glite-lb-proxy ${INSTALL} -m 644 ${top_srcdir}/config/glite-lb-dbsetup-proxy.sql ${PREFIX}/etc ${INSTALL} -m 755 ${top_srcdir}/config/startup ${PREFIX}/etc/init.d/glite-lb-proxy - if [ x${DOSTAGE} != xyes ]; then \ - ${INSTALL} -m 755 ${stagedir}/bin/glite-lb-interlogd ${PREFIX}/bin; \ - fi + +# don't do it due to RPM conflict +# if [ x${DOSTAGE} != xyes ]; then \ +# ${INSTALL} -m 755 ${stagedir}/bin/glite-lb-interlogd ${PREFIX}/bin; \ +# fi clean: diff --git a/org.glite.lb.proxy/config/startup b/org.glite.lb.proxy/config/startup index 60a03cf..b100d62 100755 --- a/org.glite.lb.proxy/config/startup +++ b/org.glite.lb.proxy/config/startup @@ -1,7 +1,7 @@ #!/bin/sh GLITE_LOCATION=${GLITE_LOCATION:-/opt/glite} -GLITE_LOCATION_VAR=${GLITE_LOCATION_VAR:-${GLITE_LOCATION}/var} +GLITE_LOCATION_VAR=${GLITE_LOCATION_VAR:-/var/glite} [ -f /etc/glite.conf ] && . /etc/glite.conf [ -f $GLITE_LOCATION/etc/glite-wms.conf ] && . $GLITE_LOCATION/etc/glite-wms.conf diff --git a/org.glite.lb.proxy/project/build.number b/org.glite.lb.proxy/project/build.number index 8e91e0d..9d4c0ce 100644 --- a/org.glite.lb.proxy/project/build.number +++ b/org.glite.lb.proxy/project/build.number @@ -1,2 +1,2 @@ -#Sat Oct 15 06:58:34 CEST 2005 -module.build=10 +#Mon Feb 20 05:04:34 CET 2006 +module.build=0070 diff --git a/org.glite.lb.proxy/project/version.properties b/org.glite.lb.proxy/project/version.properties index dae4d14..ef831d7 100644 --- a/org.glite.lb.proxy/project/version.properties +++ b/org.glite.lb.proxy/project/version.properties @@ -1,4 +1,4 @@ #Fri Sep 02 14:18:53 CEST 2005 -module.version=1.2.0 +module.version=1.2.5 module.build=2 module.age=0 diff --git a/org.glite.lb.proxy/src/lbproxy.c b/org.glite.lb.proxy/src/lbproxy.c index 3110076..cd22a70 100644 --- a/org.glite.lb.proxy/src/lbproxy.c +++ b/org.glite.lb.proxy/src/lbproxy.c @@ -41,16 +41,11 @@ extern char *lbproxy_ilog_file_prefix; #define DEFAULTCS "lbserver/@localhost:lbproxy" -#define CON_QUEUE 20 /* accept() */ +#define CON_QUEUE 20 /* accept() */ #define SLAVE_OVERLOAD 10 /* queue items per slave */ -#define CLNT_TIMEOUT 10 /* keep idle connection that many seconds */ -#define TOTAL_CLNT_TIMEOUT 60 /* one client may ask one slave multiple times */ - /* but only limited time to avoid DoS attacks */ -#define CLNT_REJECT_TIMEOUT 100000 /* time limit for client rejection in !usec! */ -#define DNS_TIMEOUT 5 /* how long wait for DNS lookup */ +#define IDLE_TIMEOUT 10 /* keep idle connection that many seconds */ +#define REQUEST_TIMEOUT 120 /* one client may ask one slave multiple times */ #define SLAVE_CONNS_MAX 500 /* commit suicide after that many connections */ -#define MASTER_TIMEOUT 30 /* maximal time of one-round of master network communication */ -#define SLAVE_TIMEOUT 30 /* maximal time of one-round of slave network communication */ /* file to store pid and generate semaphores key */ @@ -76,6 +71,7 @@ static char sock_store[PATH_MAX], sock_serve[PATH_MAX]; static int slaves = 10, semaphores = -1, + con_queue = CON_QUEUE, semset; static char host[300]; static char * port; @@ -83,6 +79,7 @@ static char * port; static struct option opts[] = { {"port", 1, NULL, 'p'}, + {"con-queue", 1, NULL, 'c'}, {"debug", 0, NULL, 'd'}, {"mysql", 1, NULL, 'm'}, {"slaves", 1, NULL, 's'}, @@ -93,12 +90,13 @@ static struct option opts[] = { {NULL,0,NULL,0} }; -static const char *get_opt_string = "p:dm:s:l:i:X:Y:"; +static const char *get_opt_string = "p:c:dm:s:l:i:X:Y:"; static void usage(char *me) { fprintf(stderr,"usage: %s [option]\n" "\t-p, --sock\t path-name to the local socket\n" + "\t-c, --con-queue\t size of the connection queue (accept)\n" "\t-m, --mysql\t database connect string\n" "\t-d, --debug\t don't run as daemon, additional diagnostics\n" "\t-s, --slaves\t number of slave servers to fork\n" @@ -164,6 +162,7 @@ int main(int argc, char *argv[]) while ((opt = getopt_long(argc, argv, get_opt_string, opts, NULL)) != EOF) switch (opt) { case 'p': strcpy(socket_path_prefix, optarg); break; + case 'c': con_queue = atoi(optarg); break; case 'd': debug = 1; break; case 'm': dbstring = optarg; break; case 's': slaves = atoi(optarg); break; @@ -216,7 +215,7 @@ int main(int argc, char *argv[]) gethostname(host, sizeof host); host[sizeof host - 1] = 0; asprintf(&port, "%d", GLITE_WMSC_JOBID_DEFAULT_PORT); - dprintf(("server address: %s:%d\n", host, port)); + dprintf(("server address: %s:%s\n", host, port)); service_table[SRV_SERVE].conn = socket(PF_UNIX, SOCK_STREAM, 0); if ( service_table[SRV_SERVE].conn < 0 ) { perror("socket()"); return 1; } @@ -240,7 +239,7 @@ int main(int argc, char *argv[]) return 1; } - if ( listen(service_table[SRV_SERVE].conn, CON_QUEUE) ) { perror("listen()"); return 1; } + if ( listen(service_table[SRV_SERVE].conn, con_queue) ) { perror("listen()"); return 1; } service_table[SRV_STORE].conn = socket(PF_UNIX, SOCK_STREAM, 0); if ( service_table[SRV_STORE].conn < 0 ) { perror("socket()"); return 1; } @@ -263,7 +262,7 @@ int main(int argc, char *argv[]) perror(buf); return 1; } - if ( listen(service_table[SRV_STORE].conn, CON_QUEUE) ) { perror("listen()"); return 1; } + if ( listen(service_table[SRV_STORE].conn, con_queue) ) { perror("listen()"); return 1; } dprintf(("Listening at %s, %s ...\n", sock_store, sock_serve)); @@ -306,11 +305,9 @@ int main(int argc, char *argv[]) glite_srvbones_set_param(GLITE_SBPARAM_SLAVES_COUNT, slaves); glite_srvbones_set_param(GLITE_SBPARAM_SLAVE_OVERLOAD, SLAVE_OVERLOAD); glite_srvbones_set_param(GLITE_SBPARAM_SLAVE_CONNS_MAX, SLAVE_CONNS_MAX); - to = (struct timeval){CLNT_TIMEOUT, 0}; - glite_srvbones_set_param(GLITE_SBPARAM_CONNECT_TIMEOUT, &to); - to = (struct timeval){CLNT_TIMEOUT, 0}; + to = (struct timeval){REQUEST_TIMEOUT, 0}; glite_srvbones_set_param(GLITE_SBPARAM_REQUEST_TIMEOUT, &to); - to = (struct timeval){TOTAL_CLNT_TIMEOUT, 0}; + to = (struct timeval){IDLE_TIMEOUT, 0}; glite_srvbones_set_param(GLITE_SBPARAM_IDLE_TIMEOUT, &to); glite_srvbones_run(clnt_data_init, service_table, sizofa(service_table), debug); @@ -353,8 +350,7 @@ int handle_conn(int conn, struct timeval *timeout, void *data) { struct clnt_data_t *cdata = (struct clnt_data_t *)data; edg_wll_Context ctx; - struct timeval total_to = { TOTAL_CLNT_TIMEOUT,0 }, - conn_start, now; + struct timeval conn_start, now; if ( !(ctx = (edg_wll_Context) calloc(1, sizeof(*ctx))) ) { fprintf(stderr, "Couldn't create context"); @@ -375,13 +371,6 @@ int handle_conn(int conn, struct timeval *timeout, void *data) ctx->semset = semset; ctx->semaphores = semaphores; - ctx->p_tmp_timeout.tv_sec = SLAVE_TIMEOUT; - ctx->p_tmp_timeout.tv_usec = 0; - if ( total_to.tv_sec < ctx->p_tmp_timeout.tv_sec ) { - ctx->p_tmp_timeout.tv_sec = total_to.tv_sec; - ctx->p_tmp_timeout.tv_usec = total_to.tv_usec; - } - ctx->srvName = strdup(host); ctx->srvPort = atoi(port); diff --git a/org.glite.lb.server-bones/examples/cnt_example.c b/org.glite.lb.server-bones/examples/cnt_example.c index 5f73a23..80b6af3 100644 --- a/org.glite.lb.server-bones/examples/cnt_example.c +++ b/org.glite.lb.server-bones/examples/cnt_example.c @@ -21,6 +21,7 @@ static struct option opts[] = { { "debug", no_argument, NULL, 'd'}, { "msg", required_argument, NULL, 'm'}, { "port", required_argument, NULL, 'p'}, + { "repeat", required_argument, NULL, 'r'}, }; int debug = 0; @@ -49,11 +50,11 @@ int main(int argc, char **argv) int opt, sock, n; - + int repeat = 1; me = strrchr(argv[0], '/'); if ( me ) me++; else me = argv[0]; - while ( (opt = getopt_long(argc, argv,"p:m:hd", opts, NULL)) != EOF ) + while ( (opt = getopt_long(argc, argv,"p:m:hdr:", opts, NULL)) != EOF ) { switch ( opt ) { @@ -64,6 +65,7 @@ int main(int argc, char **argv) port = atoi(optarg); break; case 'd': debug = 1; break; + case 'r': repeat = atoi(optarg); break; case 'h': usage(me); return 0; case '?': usage(me); return 1; } @@ -84,19 +86,21 @@ int main(int argc, char **argv) exit(1); } n = strlen(msg? msg: DEF_MSG); - if ( writen(sock, msg? msg: DEF_MSG, n) != n ) - { - dprintf(("error writing message\n")); - exit(1); - } - printf("reply: "); fflush(stdout); - n = readln(sock, buff); - if ( n < 0 ) - { - perror("read() reply error"); - return 1; + for (;repeat; repeat--) { + if ( writen(sock, msg? msg: DEF_MSG, n) != n ) + { + dprintf(("error writing message\n")); + exit(1); + } + printf("reply: "); fflush(stdout); + n = readln(sock, buff); + if ( n < 0 ) + { + perror("read() reply error"); + return 1; + } + writen(0, buff, n); } - writen(0, buff, n); close(sock); return 0; diff --git a/org.glite.lb.server-bones/project/build.number b/org.glite.lb.server-bones/project/build.number index 54c73e8..bab23e8 100644 --- a/org.glite.lb.server-bones/project/build.number +++ b/org.glite.lb.server-bones/project/build.number @@ -1,2 +1,2 @@ -#Sat Oct 15 06:44:59 CEST 2005 -module.build=111 +#Mon Feb 20 04:49:09 CET 2006 +module.build=0171 diff --git a/org.glite.lb.server-bones/project/version.properties b/org.glite.lb.server-bones/project/version.properties index 05b78d9..060e19d 100644 --- a/org.glite.lb.server-bones/project/version.properties +++ b/org.glite.lb.server-bones/project/version.properties @@ -1,4 +1,4 @@ #Fri Sep 02 14:17:59 CEST 2005 -module.version=2.1.0 +module.version=2.1.3 module.build=2 module.age=1 diff --git a/org.glite.lb.server-bones/src/srvbones.c b/org.glite.lb.server-bones/src/srvbones.c index 12f748e..b4b8b3f 100644 --- a/org.glite.lb.server-bones/src/srvbones.c +++ b/org.glite.lb.server-bones/src/srvbones.c @@ -22,10 +22,12 @@ #define SLAVES_COUNT 5 /* default number of slaves */ #define SLAVE_OVERLOAD 10 /* queue items per slave */ -#define SLAVE_CONNS_MAX 500 /* commit suicide after that many connections */ +#define SLAVE_REQS_MAX 500 /* commit suicide after that many connections */ #define IDLE_TIMEOUT 30 /* keep idle connection that many seconds */ #define CONNECT_TIMEOUT 5 /* timeout for establishing a connection */ #define REQUEST_TIMEOUT 10 /* timeout for a single request */ +#define NEW_CLIENT_DURATION 10 /* how long a client is considered new, i.e. busy + connection is not closed to serve other clients */ #ifndef dprintf #define dprintf(x) { if (debug) printf x; } @@ -44,7 +46,7 @@ static int services_ct; static int set_slaves_ct = SLAVES_COUNT; static int set_slave_overload = SLAVE_OVERLOAD; -static int set_slave_conns_max = SLAVE_CONNS_MAX; +static int set_slave_reqs_max = SLAVE_REQS_MAX; static struct timeval set_idle_to = {IDLE_TIMEOUT, 0}; static struct timeval set_connect_to = {CONNECT_TIMEOUT, 0}; static struct timeval set_request_to = {REQUEST_TIMEOUT, 0}; @@ -256,7 +258,8 @@ static int dispatchit(int sock_slave, int sock, int sidx) else { services[sidx].on_reject_hnd(conn); - dprintf(("[master] Reject due to overload\n")); + dprintf(("[master] Rejected new connection due to overload\n")); + if ( !debug ) syslog(LOG_ERR, "Rejected new connection due to overload\n"); } close(conn); @@ -276,16 +279,17 @@ static int slave(slave_data_init_hnd data_init_hnd, int sock) sigset_t sset; struct sigaction sa; struct timeval client_done, - client_start; + client_start, + new_client_duration = { NEW_CLIENT_DURATION, 0 }; void *clnt_data = NULL; int conn = -1, srv = -1, - conn_cnt = 0, + req_cnt = 0, sockflags, h_errno, pid, i, - first_request = 0; + first_request = 0; /* 1 -> first request from connected client expected */ @@ -322,19 +326,23 @@ static int slave(slave_data_init_hnd data_init_hnd, int sock) */ exit(1); - while ( !die && (conn_cnt < set_slave_conns_max || conn >= 0) ) + while ( !die && req_cnt < set_slave_reqs_max) { fd_set fds; int max = sock, connflags, newconn = -1, - newsrv = -1, - kick_client = 0; + newsrv = -1; + + enum { KICK_DONT = 0, KICK_IDLE, KICK_LOAD, KICK_HANDLER, KICK_COUNT } + kick_client = KICK_DONT; + static char * kicks[] = { "don't kick", "idle client", "high load", - "no request handler" + "no request handler", + "request count limit reached", }; unsigned long seq; struct timeval now,to; @@ -367,9 +375,8 @@ static int slave(slave_data_init_hnd data_init_hnd, int sock) sigprocmask(SIG_BLOCK, &sset, NULL); gettimeofday(&now,NULL); - if (conn >= 0 && check_timeout(set_idle_to, client_done, now)) kick_client = 1; - if ( conn >= 0 && !kick_client && FD_ISSET(conn, &fds) ) + if ( conn >= 0 && FD_ISSET(conn, &fds) ) { /* * serve the request @@ -377,11 +384,12 @@ static int slave(slave_data_init_hnd data_init_hnd, int sock) int rv; dprintf(("[%d] incoming request\n", getpid())); + if ( !services[srv].on_request_hnd ) { - kick_client = 3; + kick_client = KICK_HANDLER; } else { - + req_cnt++; first_request = 0; to = set_request_to; if ((rv = services[srv].on_request_hnd(conn,to.tv_sec>=0 ? &to : NULL,clnt_data)) == ENOTCONN) { @@ -417,14 +425,20 @@ static int slave(slave_data_init_hnd data_init_hnd, int sock) gettimeofday(&client_done, NULL); } - continue; + if (!check_timeout(new_client_duration,client_start,now)) continue; } + } else { + if (conn >= 0 && check_timeout(set_idle_to, client_done, now)) + kick_client = KICK_IDLE; } - if ( !first_request && FD_ISSET(sock, &fds) && conn_cnt < set_slave_conns_max ) + if ( (conn < 0 || !first_request) && FD_ISSET(sock, &fds) && req_cnt < set_slave_reqs_max ) { - if ( conn >= 0 ) usleep(100000 + 1000 * (random() % 200)); + /* Prefer slaves with no connection, then kick idle clients, + * active ones last. Wait less if we have serviced a request in the meantime. + * Tuned for HZ=100 timer. */ + if ( conn >= 0 ) usleep( kick_client || FD_ISSET(conn, &fds) ? 11000 : 21000); if ( do_recvmsg(sock, &newconn, &seq, &newsrv) ) switch ( errno ) { case EINTR: /* XXX: signals are blocked */ @@ -434,9 +448,11 @@ static int slave(slave_data_init_hnd data_init_hnd, int sock) if (!debug) syslog(LOG_CRIT,"recvmsg(): %m\n"); exit(1); } - kick_client = 2; + kick_client = KICK_LOAD; } + if (req_cnt >= set_slave_reqs_max) kick_client = KICK_COUNT; + if ( kick_client && conn >= 0 ) { if ( services[srv].on_disconnect_hnd ) @@ -469,7 +485,7 @@ static int slave(slave_data_init_hnd data_init_hnd, int sock) exit(1); } - conn_cnt++; + req_cnt++; dprintf(("[%d] serving %s connection %lu\n", getpid(), services[srv].id? services[srv].id: "", seq)); @@ -502,8 +518,12 @@ static int slave(slave_data_init_hnd data_init_hnd, int sock) dprintf(("[%d] Terminating on signal %d\n", getpid(), die)); if ( !debug ) syslog(LOG_INFO, "Terminating on signal %d", die); } - dprintf(("[%d] Terminating after %d connections\n", getpid(), conn_cnt)); - if ( !debug ) syslog(LOG_INFO, "Terminating after %d connections", conn_cnt); + + if (conn >= 0 && services[srv].on_disconnect_hnd ) + services[srv].on_disconnect_hnd(conn, NULL, clnt_data); + + dprintf(("[%d] Terminating after %d requests\n", getpid(), req_cnt)); + if ( !debug ) syslog(LOG_INFO, "Terminating after %d requests", req_cnt); exit(0); @@ -618,7 +638,7 @@ static void glite_srvbones_set_slave_overload(int n) static void glite_srvbones_set_slave_conns_max(int n) { - set_slave_conns_max = (n == -1)? SLAVE_CONNS_MAX: n; + set_slave_reqs_max = (n == -1)? SLAVE_REQS_MAX: n; } static void set_timeout(struct timeval *to, struct timeval *val) diff --git a/org.glite.lb.server/config/startup b/org.glite.lb.server/config/startup index 10b1a6d..5122b2b 100755 --- a/org.glite.lb.server/config/startup +++ b/org.glite.lb.server/config/startup @@ -1,7 +1,7 @@ #!/bin/sh GLITE_LOCATION=${GLITE_LOCATION:-/opt/glite} -GLITE_LOCATION_VAR=${GLITE_LOCATION_VAR:-${GLITE_LOCATION}/var} +GLITE_LOCATION_VAR=${GLITE_LOCATION_VAR:-/var/glite} [ -f /etc/glite.conf ] && . /etc/glite.conf [ -f $GLITE_LOCATION/etc/glite-wms.conf ] && . $GLITE_LOCATION/etc/glite-wms.conf @@ -79,23 +79,29 @@ stop() status() { + retval=0 + if netstat -an --unix | grep "^unix .* LISTEN.* /tmp/glite-lb-notif.sock$" >/dev/null 2>&1 ;then echo glite-lb-notif-interlogd running else echo glite-lb-notif-interlogd not running - return 1 + retval=1 fi if [ -f $pidfile ]; then pid=`cat $pidfile` if ps p $pid >/dev/null 2>&1; then echo glite-lb-bkserverd running as $pid - return 0 + else + echo glite-lb-bkserverd not running + retval=1 fi + else + echo glite-lb-bkserverd not running + retval=1 fi - echo glite-lb-bkserverd not running - return 1 + return $retval } case x$1 in diff --git a/org.glite.lb.server/project/build.number b/org.glite.lb.server/project/build.number index 4380560..e363064 100644 --- a/org.glite.lb.server/project/build.number +++ b/org.glite.lb.server/project/build.number @@ -1,2 +1,2 @@ -#Sat Oct 15 06:56:05 CEST 2005 -module.build=154 +#Mon Feb 20 04:56:27 CET 2006 +module.build=0215 diff --git a/org.glite.lb.server/project/configure.properties.xml b/org.glite.lb.server/project/configure.properties.xml index f533759..21c5527 100644 --- a/org.glite.lb.server/project/configure.properties.xml +++ b/org.glite.lb.server/project/configure.properties.xml @@ -20,6 +20,9 @@ Revision history: $Log$ + Revision 1.8 2005/09/19 15:24:20 akrenek + "The gigantic merge"; from release 1.4 branch to HEAD + Revision 1.7.2.1 2005/08/09 15:02:10 jskrabal - build with broken gsoap 2.7.0 repository package diff --git a/org.glite.lb.server/project/version.properties b/org.glite.lb.server/project/version.properties index 1455d3d..33f7ff2 100644 --- a/org.glite.lb.server/project/version.properties +++ b/org.glite.lb.server/project/version.properties @@ -1,4 +1,4 @@ #Fri Sep 02 14:18:35 CEST 2005 -module.version=1.3.0 +module.version=1.3.6 module.build=2 module.age=1 diff --git a/org.glite.lb.server/src/bkserverd.c b/org.glite.lb.server/src/bkserverd.c index 3fdc08c..1a34af5 100644 --- a/org.glite.lb.server/src/bkserverd.c +++ b/org.glite.lb.server/src/bkserverd.c @@ -40,6 +40,7 @@ #include "glite/lb/context.h" #include "glite/lb/mini_http.h" #include "glite/lb/context-int.h" +#include "glite/lb/lb_maildir.h" #include "lb_http.h" #include "lb_proto.h" @@ -69,14 +70,12 @@ extern edg_wll_ErrorCode edg_wll_Close(edg_wll_Context); #define CON_QUEUE 20 /* accept() */ #define SLAVE_OVERLOAD 10 /* queue items per slave */ -#define CLNT_TIMEOUT 10 /* keep idle connection that many seconds */ -#define TOTAL_CLNT_TIMEOUT 60 /* one client may ask one slave multiple times */ +#define CONNECT_TIMEOUT 30 +#define IDLE_TIMEOUT 10 /* keep idle connection that many seconds */ +#define REQUEST_TIMEOUT 120 /* one client may ask one slave multiple times */ /* but only limited time to avoid DoS attacks */ -#define CLNT_REJECT_TIMEOUT 100000 /* time limit for client rejection in !usec! */ #define DNS_TIMEOUT 5 /* how long wait for DNS lookup */ #define SLAVE_CONNS_MAX 500 /* commit suicide after that many connections */ -#define MASTER_TIMEOUT 30 /* maximal time of one-round of master network communication */ -#define SLAVE_TIMEOUT 30 /* maximal time of one-round of slave network communication */ #ifndef EDG_PURGE_STORAGE #define EDG_PURGE_STORAGE "/tmp/purge" @@ -277,8 +276,7 @@ int main(int argc, char *argv[]) int opt; char pidfile[PATH_MAX] = EDG_BKSERVERD_PIDFILE, *port, - *name, - *tmps; + *name; #ifdef GLITE_LB_SERVER_WITH_WS char *ws_port; #endif /* GLITE_LB_SERVER_WITH_WS */ @@ -412,9 +410,9 @@ int main(int argc, char *argv[]) if (check_mkdir(dumpStorage)) exit(1); if (check_mkdir(purgeStorage)) exit(1); if ( jpreg ) { - if ( edg_wll_MaildirInit(jpregDir, &tmps) ) { - dprintf(("[%d] %s\n", getpid(), tmps)); - if (!debug) syslog(LOG_CRIT, tmps); + if ( edg_wll_MaildirInit(jpregDir) ) { + dprintf(("[%d] edg_wll_MaildirInit failed: %s\n", getpid(), lbm_errdesc)); + if (!debug) syslog(LOG_CRIT, "edg_wll_MaildirInit failed: %s", lbm_errdesc); exit(1); } } @@ -577,14 +575,12 @@ a.sin_addr.s_addr = INADDR_ANY; glite_srvbones_set_param(GLITE_SBPARAM_SLAVES_COUNT, slaves); glite_srvbones_set_param(GLITE_SBPARAM_SLAVE_OVERLOAD, SLAVE_OVERLOAD); glite_srvbones_set_param(GLITE_SBPARAM_SLAVE_CONNS_MAX, SLAVE_CONNS_MAX); - /* XXX - * not final version - yet! - */ - to = (struct timeval){CLNT_TIMEOUT, 0}; + + to = (struct timeval){CONNECT_TIMEOUT, 0}; glite_srvbones_set_param(GLITE_SBPARAM_CONNECT_TIMEOUT, &to); - to = (struct timeval){CLNT_TIMEOUT, 0}; + to = (struct timeval){REQUEST_TIMEOUT, 0}; glite_srvbones_set_param(GLITE_SBPARAM_REQUEST_TIMEOUT, &to); - to = (struct timeval){TOTAL_CLNT_TIMEOUT, 0}; + to = (struct timeval){IDLE_TIMEOUT, 0}; glite_srvbones_set_param(GLITE_SBPARAM_IDLE_TIMEOUT, &to); glite_srvbones_run(bk_clnt_data_init, service_table, sizofa(service_table), debug); @@ -694,7 +690,6 @@ int bk_handle_connection(int conn, struct timeval *timeout, void *data) OM_uint32 min_stat, maj_stat; struct timeval dns_to = {DNS_TIMEOUT, 0}, - total_to = { TOTAL_CLNT_TIMEOUT,0 }, conn_start, now; struct sockaddr_in a; int alen; @@ -743,13 +738,8 @@ int bk_handle_connection(int conn, struct timeval *timeout, void *data) ctx->rgma_export = rgma_export; memcpy(ctx->purge_timeout, purge_timeout, sizeof(ctx->purge_timeout)); - ctx->p_tmp_timeout.tv_sec = SLAVE_TIMEOUT; - ctx->p_tmp_timeout.tv_usec = 0; - if ( total_to.tv_sec < ctx->p_tmp_timeout.tv_sec ) - { - ctx->p_tmp_timeout.tv_sec = total_to.tv_sec; - ctx->p_tmp_timeout.tv_usec = total_to.tv_usec; - } + ctx->p_tmp_timeout.tv_sec = timeout->tv_sec; + ctx->p_tmp_timeout.tv_usec = timeout->tv_usec; ctx->poolSize = 1; ctx->connPool = calloc(1, sizeof(edg_wll_ConnPool)); @@ -763,7 +753,6 @@ int bk_handle_connection(int conn, struct timeval *timeout, void *data) gettimeofday(&conn_start, 0); - /* not a critical operation, do not waste all SLAVE_TIMEOUT */ h_errno = asyn_gethostbyaddr(&name, (char *)&a.sin_addr.s_addr,sizeof(a.sin_addr.s_addr), AF_INET, &dns_to); switch ( h_errno ) { @@ -985,6 +974,7 @@ int bk_accept_store(int conn, struct timeval *timeout, void *cdata) case ETIMEDOUT: case EDG_WLL_ERROR_GSS: case EPIPE: + case EIO: dprintf(("[%d] %s (%s)\n", getpid(), errt, errd)); if (!debug) syslog(LOG_ERR,"%s (%s)", errt, errd); /* fallthrough @@ -1141,51 +1131,10 @@ int bk_accept_ws(int conn, struct timeval *timeout, void *cdata) } if ( err ) { - char *errt, *errd; - int ret; - - - errt = errd = NULL; - switch ( (ret = edg_wll_Error(ctx, &errt, &errd)) ) { - case ETIMEDOUT: - case EDG_WLL_ERROR_GSS: - case EPIPE: - dprintf(("[%d] %s (%s)\n", getpid(), errt, errd)); - if (!debug) syslog(LOG_ERR,"%s (%s)", errt, errd); - /* "recoverable" error - return (>0) - * fallthrough - */ - case ENOTCONN: - /* "recoverable" error - return (>0) - * return ENOTCONN to tell bones to clean up - */ - free(errt); free(errd); - return ret; - break; - - case ENOENT: - case EINVAL: - case EPERM: - case EEXIST: - case EDG_WLL_ERROR_NOINDEX: - case E2BIG: - dprintf(("[%d] %s (%s)\n", getpid(), errt, errd)); - if ( !debug ) syslog(LOG_ERR,"%s (%s)", errt, errd); - /* - * no action for non-fatal errors - */ - break; - - default: - dprintf(("[%d] %s (%s)\n", getpid(), errt, errd)); - if (!debug) syslog(LOG_CRIT,"%s (%s)",errt,errd); - /* - * unknown error - do rather return (<0) (slave will be killed) - */ - return -1; - } - free(errt); free(errd); - return 1; + // soap_print_fault(struct soap *soap, FILE *fd) maybe useful here + dprintf(("[%d] SOAP error (bk_accept_ws) \n", getpid())); + if (!debug) syslog(LOG_CRIT,"SOAP error (bk_accept_ws)"); + return ECANCELED; } return 0; diff --git a/org.glite.lb.server/src/db_store.c b/org.glite.lb.server/src/db_store.c index b0d3635..13a56fd 100644 --- a/org.glite.lb.server/src/db_store.c +++ b/org.glite.lb.server/src/db_store.c @@ -74,8 +74,13 @@ db_store(edg_wll_Context ctx,char *ucs, char *event) /* * send event to the proper BK server */ - if ( ev->any.type != EDG_WLL_EVENT_REGJOB - && edg_wll_EventSendProxy(ctx, ev->any.jobId, event) ) goto err; + /* XXX: RegJob events, which were logged also directly, are duplicated at server, + but it should not harm */ + + if (edg_wll_EventSendProxy(ctx, ev->any.jobId, event) ) { + edg_wll_SetError(ctx, EDG_WLL_IL_PROTO, "edg_wll_EventSendProxy() error."); + goto err; + } /* LB proxy purge * XXX: Set propper set of states! @@ -84,10 +89,12 @@ db_store(edg_wll_Context ctx,char *ucs, char *event) switch ( ev->any.type ) { case EDG_WLL_EVENT_CLEAR: case EDG_WLL_EVENT_ABORT: - case EDG_WLL_EVENT_CANCEL: - case EDG_WLL_EVENT_DONE: edg_wll_PurgeServerProxy(ctx, ev->any.jobId); break; + case EDG_WLL_EVENT_CANCEL: + if (ev->cancel.status_code == EDG_WLL_CANCEL_DONE) + edg_wll_PurgeServerProxy(ctx, ev->any.jobId); + break; default: break; } } else { diff --git a/org.glite.lb.server/src/il_lbproxy.c b/org.glite.lb.server/src/il_lbproxy.c index 4b682e7..487c847 100644 --- a/org.glite.lb.server/src/il_lbproxy.c +++ b/org.glite.lb.server/src/il_lbproxy.c @@ -18,7 +18,6 @@ edg_wll_EventSendProxy( const edg_wlc_JobId jobid, const char *event) { - struct timeval timeout; long filepos; char *jobid_s, *event_file = NULL; @@ -28,9 +27,6 @@ edg_wll_EventSendProxy( edg_wll_ResetError(ctx); - timeout.tv_sec = EDG_WLL_LOG_TIMEOUT_MAX; - timeout.tv_usec = 0; - jobid_s = edg_wlc_JobIdGetUnique(jobid); if ( !jobid_s ) { edg_wll_SetError(ctx, ENOMEM, "edg_wlc_JobIdGetUnique()"); @@ -44,13 +40,16 @@ edg_wll_EventSendProxy( } if ( edg_wll_log_event_write(ctx, event_file, event, - FCNTL_ATTEMPTS, FCNTL_TIMEOUT, &filepos) ) { + (ctx->p_tmp_timeout.tv_sec > FCNTL_ATTEMPTS ? + ctx->p_tmp_timeout.tv_sec : FCNTL_ATTEMPTS), + FCNTL_TIMEOUT, &filepos) ) { + edg_wll_UpdateError(ctx, 0, "edg_wll_log_event_write()"); _err(1); } if ( edg_wll_log_event_send(ctx, lbproxy_ilog_socket_path, filepos, - event, strlen(event), 1, &timeout) ) { + event, strlen(event), 1, &ctx->p_tmp_timeout) ) { edg_wll_UpdateError(ctx, 0, "edg_wll_log_event_send()"); _err(-1); } diff --git a/org.glite.lb.server/src/jobstat.h b/org.glite.lb.server/src/jobstat.h index 181a85d..352af06 100644 --- a/org.glite.lb.server/src/jobstat.h +++ b/org.glite.lb.server/src/jobstat.h @@ -64,9 +64,11 @@ void write2rgma_status(edg_wll_JobStat *); int before_deep_resubmission(const char *, const char *); int same_branch(const char *, const char *); int component_seqcode(const char *a, edg_wll_Source index); +char * set_component_seqcode(char *s,edg_wll_Source index,int val); int processEvent(intJobStat *, edg_wll_Event *, int, int, char **); int add_stringlist(char ***, const char *); int edg_wll_compare_seq(const char *, const char *); void init_intJobStat(intJobStat *p); + diff --git a/org.glite.lb.server/src/jobstat_supp.c b/org.glite.lb.server/src/jobstat_supp.c index 58d4a51..6fb09ef 100644 --- a/org.glite.lb.server/src/jobstat_supp.c +++ b/org.glite.lb.server/src/jobstat_supp.c @@ -658,6 +658,41 @@ int component_seqcode(const char *a, edg_wll_Source index) return(c[index]); } +char * set_component_seqcode(char *s,edg_wll_Source index,int val) +{ + unsigned int c[EDG_WLL_SOURCE__LAST]; + int res; + char *ret; + + res = sscanf(s, "UI=%d:NS=%d:WM=%d:BH=%d:JSS=%d:LM=%d:LRMS=%d:APP=%d", + &c[EDG_WLL_SOURCE_USER_INTERFACE], + &c[EDG_WLL_SOURCE_NETWORK_SERVER], + &c[EDG_WLL_SOURCE_WORKLOAD_MANAGER], + &c[EDG_WLL_SOURCE_BIG_HELPER], + &c[EDG_WLL_SOURCE_JOB_SUBMISSION], + &c[EDG_WLL_SOURCE_LOG_MONITOR], + &c[EDG_WLL_SOURCE_LRMS], + &c[EDG_WLL_SOURCE_APPLICATION]); + if (res != EDG_WLL_SOURCE__LAST-1) { + syslog(LOG_ERR, "unparsable sequence code %s\n", s); + fprintf(stderr, "unparsable sequence code %s\n", s); + return NULL; + } + + c[index] = val; + trio_asprintf(&ret,"UI=%06d:NS=%010d:WM=%06d:BH=%010d:JSS=%06d" + ":LM=%06d:LRMS=%06d:APP=%06d", + c[EDG_WLL_SOURCE_USER_INTERFACE], + c[EDG_WLL_SOURCE_NETWORK_SERVER], + c[EDG_WLL_SOURCE_WORKLOAD_MANAGER], + c[EDG_WLL_SOURCE_BIG_HELPER], + c[EDG_WLL_SOURCE_JOB_SUBMISSION], + c[EDG_WLL_SOURCE_LOG_MONITOR], + c[EDG_WLL_SOURCE_LRMS], + c[EDG_WLL_SOURCE_APPLICATION]); + return ret; +} + int before_deep_resubmission(const char *a, const char *b) { if (component_seqcode(a, EDG_WLL_SOURCE_WORKLOAD_MANAGER) < diff --git a/org.glite.lb.server/src/process_event.c b/org.glite.lb.server/src/process_event.c index ab13ed4..7b0fb1d 100644 --- a/org.glite.lb.server/src/process_event.c +++ b/org.glite.lb.server/src/process_event.c @@ -1,8 +1,11 @@ +#ident "$Header$" + #include #include #include #include #include +#include #include "glite/lb/producer.h" #include "glite/lb/context-int.h" @@ -166,6 +169,17 @@ static void load_branch_state(intJobStat *js) } } +// clear branches (deep resub. or abort) +static void reset_branch(intJobStat *js, edg_wll_Event *e) +{ + js->resubmit_type = EDG_WLL_RESUBMISSION_WILLRESUB; + free_stringlist(&js->pub.possible_destinations); + free_stringlist(&js->pub.possible_ce_nodes); + free_branch_state(&js->branch_states); + js->pub.payload_running = 0; + rep(js->branch_tag_seqcode, NULL); + rep(js->deep_resubmit_seqcode, e->any.seqcode); +} static char* location_string(const char *source, const char *host, const char *instance) { @@ -174,6 +188,12 @@ static char* location_string(const char *source, const char *host, const char *i return ret; } +static int after_enter_wm(const char *es,const char *js) +{ + return component_seqcode(es,EDG_WLL_SOURCE_NETWORK_SERVER) > + component_seqcode(js,EDG_WLL_SOURCE_NETWORK_SERVER); +} + static int badEvent(intJobStat *js UNUSED_VAR, edg_wll_Event *e, int ev_seq UNUSED_VAR) { @@ -186,11 +206,15 @@ static int badEvent(intJobStat *js UNUSED_VAR, edg_wll_Event *e, int ev_seq UNUS return RET_FATAL; } +// (?) || (0 && 1) => true if (res == RET_OK) #define USABLE(res,strict) ((res) == RET_OK || ( (res) == RET_SOON && !strict)) + +// (?) || (1 && 1) => always true #define USABLE_DATA(res,strict) ((res) == RET_OK || ( (res) != RET_FATAL && !strict)) + #define USABLE_BRANCH(fine_res) ((fine_res) != RET_TOOOLD && (fine_res) != RET_BADBRANCH) #define LRMS_STATE(state) ((state) == EDG_WLL_JOB_RUNNING || (state) == EDG_WLL_JOB_DONE) - +#define PARSABLE_SEQCODE(code) (component_seqcode((code),0) >= 0) int processEvent(intJobStat *js, edg_wll_Event *e, int ev_seq, int strict, char **errstring) { @@ -200,7 +224,7 @@ int processEvent(intJobStat *js, edg_wll_Event *e, int ev_seq, int strict, char int res = RET_OK, fine_res = RET_OK; - + int lm_favour_lrms = 0; if (old_state == EDG_WLL_JOB_ABORTED || old_state == EDG_WLL_JOB_CANCELLED || @@ -208,6 +232,15 @@ int processEvent(intJobStat *js, edg_wll_Event *e, int ev_seq, int strict, char res = RET_LATE; } +/* new event coming from NS => forget about any resubmission loops */ + if (e->type != EDG_WLL_EVENT_CANCEL && + js->last_seqcode && + after_enter_wm(e->any.seqcode,js->last_seqcode)) + { + rep(js->branch_tag_seqcode,NULL); + rep(js->deep_resubmit_seqcode,NULL); + rep(js->last_branch_seqcode,NULL); + } if (js->deep_resubmit_seqcode && before_deep_resubmission(e->any.seqcode, js->deep_resubmit_seqcode)) { @@ -216,7 +249,7 @@ int processEvent(intJobStat *js, edg_wll_Event *e, int ev_seq, int strict, char } else if (js->branch_tag_seqcode) { // ReallyRunning ev. arrived if (same_branch(e->any.seqcode, js->branch_tag_seqcode)) { - if ((js->last_seqcode != NULL) && + if ((js->last_branch_seqcode != NULL) && edg_wll_compare_seq(e->any.seqcode, js->last_branch_seqcode) < 0) { res = RET_LATE; } @@ -248,7 +281,9 @@ int processEvent(intJobStat *js, edg_wll_Event *e, int ev_seq, int strict, char e->any.timestamp.tv_sec; res = RET_LATE; } - new_state = EDG_WLL_JOB_SCHEDULED; break; + new_state = EDG_WLL_JOB_SCHEDULED; + lm_favour_lrms = 1; + break; default: goto bad_event; break; } @@ -307,7 +342,9 @@ int processEvent(intJobStat *js, edg_wll_Event *e, int ev_seq, int strict, char new_state = EDG_WLL_JOB_WAITING; break; case EDG_WLL_SOURCE_LOG_MONITOR: if (LRMS_STATE(old_state)) res = RET_LATE; - new_state = EDG_WLL_JOB_READY; break; + new_state = EDG_WLL_JOB_READY; + lm_favour_lrms = 1; + break; case EDG_WLL_SOURCE_LRMS: new_state = EDG_WLL_JOB_SCHEDULED; break; default: @@ -480,17 +517,62 @@ int processEvent(intJobStat *js, edg_wll_Event *e, int ev_seq, int strict, char if (USABLE_BRANCH(fine_res)) { rep(js->pub.ce_node, e->running.node); } - if (e->any.source == EDG_WLL_SOURCE_LOG_MONITOR) { + /* why? if (e->any.source == EDG_WLL_SOURCE_LOG_MONITOR) { */ if (e->running.node) { update_branch_state(e->any.seqcode, NULL, e->running.node, NULL, &js->branch_states); add_stringlist(&js->pub.possible_ce_nodes, e->running.node); } - } + /* } */ } break; case EDG_WLL_EVENT_REALLYRUNNING: + /* consistence check -- should not receive two contradicting ReallyRunning's within single + deep resub cycle */ + if (fine_res == RET_BADBRANCH) { + syslog(LOG_ERR,"ReallyRunning on bad branch %s", + e->any.source == EDG_WLL_SOURCE_LOG_MONITOR ? e->reallyRunning.wn_seq : e->any.seqcode); + break; + } + /* select the branch unless TOOOLD, i.e. before deep resubmission */ + if (!(res == RET_LATE && fine_res == RET_TOOOLD)) { + if (e->any.source == EDG_WLL_SOURCE_LRMS) { + rep(js->branch_tag_seqcode, e->any.seqcode); + if (res == RET_OK) { + rep(js->last_branch_seqcode, e->any.seqcode); + js->pub.state = EDG_WLL_JOB_RUNNING; + } + } + if (e->any.source == EDG_WLL_SOURCE_LOG_MONITOR) { + if (!js->branch_tag_seqcode) { + if (PARSABLE_SEQCODE(e->reallyRunning.wn_seq)) { + rep(js->branch_tag_seqcode, e->reallyRunning.wn_seq); + } else + goto bad_event; + } + if (!js->last_branch_seqcode) { + if (PARSABLE_SEQCODE(e->reallyRunning.wn_seq)) { + if (res == RET_OK) { + rep(js->last_branch_seqcode, e->reallyRunning.wn_seq); + js->pub.state = EDG_WLL_JOB_RUNNING; + } + } else + goto bad_event; + } + } + + /* XXX: best effort -- if we are lucky, ReallyRunning is on the last shallow cycle, + so we take in account events processed so far */ + if (res == RET_LATE && !js->last_branch_seqcode) { + if (same_branch(js->last_seqcode,js->branch_tag_seqcode)) + rep(js->last_branch_seqcode,js->last_seqcode); + } + + js->pub.payload_running = 1; + load_branch_state(js); + } +#if 0 if (USABLE_DATA(res, strict)) { js->pub.state = EDG_WLL_JOB_RUNNING; free(js->pub.location); @@ -504,12 +586,22 @@ int processEvent(intJobStat *js, edg_wll_Event *e, int ev_seq, int strict, char rep(js->last_branch_seqcode, e->any.seqcode); } if (e->any.source == EDG_WLL_SOURCE_LOG_MONITOR) { - rep(js->branch_tag_seqcode, e->reallyRunning.wn_seq); - rep(js->last_branch_seqcode, e->reallyRunning.wn_seq); + if (!js->branch_tag_seqcode) { + if (PARSABLE_SEQCODE(e->reallyRunning.wn_seq)) { + rep(js->branch_tag_seqcode, e->reallyRunning.wn_seq); + } else + goto bad_event; + } + if (!js->last_branch_seqcode) { + if (PARSABLE_SEQCODE(e->reallyRunning.wn_seq)) { + rep(js->last_branch_seqcode, e->reallyRunning.wn_seq); + } else + goto bad_event; + } } - load_branch_state(js); } +#endif break; case EDG_WLL_EVENT_RESUBMISSION: if (USABLE(res, strict)) { @@ -524,18 +616,13 @@ int processEvent(intJobStat *js, edg_wll_Event *e, int ev_seq, int strict, char else if (e->resubmission.result == EDG_WLL_RESUBMISSION_WILLRESUB && e->any.source == EDG_WLL_SOURCE_WORKLOAD_MANAGER) { - js->resubmit_type = EDG_WLL_RESUBMISSION_WILLRESUB; - free_stringlist(&js->pub.possible_destinations); - free_stringlist(&js->pub.possible_ce_nodes); - free_branch_state(&js->branch_states); - js->pub.payload_running = 0; - rep(js->branch_tag_seqcode, NULL); - rep(js->deep_resubmit_seqcode, e->any.seqcode); + reset_branch(js, e); } else if (e->resubmission.result == EDG_WLL_RESUBMISSION_SHALLOW) { js->resubmit_type = EDG_WLL_RESUBMISSION_SHALLOW; - rep(js->deep_resubmit_seqcode, NULL); + // deep resubmit stays forever deadline for events + // rep(js->deep_resubmit_seqcode, NULL); } } break; @@ -613,11 +700,15 @@ int processEvent(intJobStat *js, edg_wll_Event *e, int ev_seq, int strict, char } break; case EDG_WLL_EVENT_ABORT: + // XXX: accept Abort from WM in every case + // setting res make USABLE macro true (awful !!) + if (e->any.source == EDG_WLL_SOURCE_WORKLOAD_MANAGER) res = RET_OK; if (USABLE(res, strict)) { js->pub.state = EDG_WLL_JOB_ABORTED; rep(js->pub.reason, e->abort.reason); rep(js->pub.location, "none"); - js->pub.payload_running = 0; + + reset_branch(js, e); } break; @@ -723,6 +814,28 @@ int processEvent(intJobStat *js, edg_wll_Event *e, int ev_seq, int strict, char js->pub.stateEnterTimes[1 + js->pub.state] = (int)js->pub.lastUpdateTime.tv_sec; } + if (e->any.type == EDG_WLL_EVENT_CANCEL) { + rep(js->last_cancel_seqcode, e->any.seqcode); + } else { + +/* the first set of LM events (Accept, Transfer/* -> LRMS) + should not should shift the state (to Ready, Scheduled) but NOT to + update js->last_seqcode completely, in order not to block following + LRMS events which are likely to arrive later but should still affect + job state (as there may be no more LM events due to the Condor bug). + However, don't ignore the incoming seqcode completely, to catch up + with possibly delayed WM/JSS events */ + + if (lm_favour_lrms) { + free(js->last_seqcode); + js->last_seqcode = set_component_seqcode(e->any.seqcode,EDG_WLL_SOURCE_LOG_MONITOR,0); + } + else rep(js->last_seqcode, e->any.seqcode); + } + + if (fine_res == RET_GOODBRANCH) { + rep(js->last_branch_seqcode, e->any.seqcode); + } } if (USABLE_DATA(res,strict)) { @@ -737,16 +850,6 @@ int processEvent(intJobStat *js, edg_wll_Event *e, int ev_seq, int strict, char } } - if (e->any.type == EDG_WLL_EVENT_CANCEL) { - rep(js->last_cancel_seqcode, e->any.seqcode); - } else { - rep(js->last_seqcode, e->any.seqcode); - } - - if (fine_res == RET_GOODBRANCH) { - rep(js->last_branch_seqcode, e->any.seqcode); - } - return res; bad_event: diff --git a/org.glite.lb.server/src/query.c b/org.glite.lb.server/src/query.c index 5d86547..1501fa5 100644 --- a/org.glite.lb.server/src/query.c +++ b/org.glite.lb.server/src/query.c @@ -78,7 +78,8 @@ int edg_wll_QueryEventsServer( goto cleanup; if (event_conditions && *event_conditions && (*event_conditions)->attr && - !(event_where = ec_to_head_where(ctx,event_conditions))) + !(event_where = ec_to_head_where(ctx,event_conditions)) && + edg_wll_Error(ctx,NULL,NULL) != 0) goto cleanup; if ( job_conditions && *job_conditions && (*job_conditions)->attr && diff --git a/org.glite.lb.server/src/request.c b/org.glite.lb.server/src/request.c index a3288a4..f0364ac 100644 --- a/org.glite.lb.server/src/request.c +++ b/org.glite.lb.server/src/request.c @@ -26,7 +26,7 @@ handle_request(edg_wll_Context ctx,char *buf) ret = decode_il_msg(&event, buf); if(ret < 0) { - edg_wll_SetError(ctx,EDG_WLL_IL_PROTO,"reading event string"); + edg_wll_SetError(ctx,EDG_WLL_IL_PROTO,"decoding event string failed"); return EDG_WLL_IL_PROTO; } diff --git a/org.glite.lb.server/src/store.c.T b/org.glite.lb.server/src/store.c.T index b2bcbc4..1130c93 100644 --- a/org.glite.lb.server/src/store.c.T +++ b/org.glite.lb.server/src/store.c.T @@ -128,7 +128,7 @@ int edg_wll_StoreEvent(edg_wll_Context ctx,edg_wll_Event *e,int *seq) free(stmt); } - free(stmt); + free(stmt); stmt = NULL; if ((err = store_seq(ctx,e,next)) || (err = store_flesh(ctx,e,jobid,next))) { /* attempt to cleanup, ignore new errors */ @@ -333,11 +333,13 @@ static int store_flesh(edg_wll_Context ctx,edg_wll_Event *e,char *jobid,int no) for (i=0; iany.src_instance); - if (edg_wll_ExecStmt(ctx,stmt,NULL) < 0) err = edg_wll_Error(ctx,NULL,NULL); - free(stmt); + if (!err) { + trio_asprintf(&stmt,"insert into short_fields(jobid,event,name,value) " + "values ('%|Ss',%d,'SRC_INSTANCE','%|Ss')", + jobid,no,e->any.src_instance); + if (edg_wll_ExecStmt(ctx,stmt,NULL) < 0) err = edg_wll_Error(ctx,NULL,NULL); + free(stmt); + } return err; } @@ -490,9 +492,11 @@ static int register_subjobs(edg_wll_Context ctx,const edg_wll_RegJobEvent *e) e2.any.host = strdup(ctx->srvName); e2.any.level = e->level; e2.any.priority = e->priority; - e2.any.seqcode = NULL; /* XXX: I'm not sure :-( */ + e2.any.seqcode = strdup(EDG_WLL_SEQ_NULL); e2.any.user = strdup(e->user); e2.any.source = e->source; + e2.any.src_instance = strdup(ctx->isProxy ? + "L&B proxy" : "L&B server"); e2.regJob.ns = strdup(e->ns); edg_wlc_JobIdDup(e->jobId,&e2.regJob.parent); e2.regJob.jobtype = EDG_WLL_REGJOB_SIMPLE; diff --git a/org.glite.lb.server/src/stored_master.c b/org.glite.lb.server/src/stored_master.c index 748d851..c2ca48d 100644 --- a/org.glite.lb.server/src/stored_master.c +++ b/org.glite.lb.server/src/stored_master.c @@ -58,8 +58,10 @@ int edg_wll_StoreProto(edg_wll_Context ctx) edg_wll_ResetError(ctx); ret = read_il_data(ctx, &buf, gss_reader); + if (ret == EDG_WLL_GSS_ERROR_EOF) + return edg_wll_SetError(ctx,ENOTCONN,"client side"); if(ret < 0) - return(ret); + return edg_wll_SetError(ctx,EIO,"interlogger protocol"); handle_request(ctx,buf); free(buf); diff --git a/org.glite.lb.utils/project/build.number b/org.glite.lb.utils/project/build.number index 5cfec85..505690c 100644 --- a/org.glite.lb.utils/project/build.number +++ b/org.glite.lb.utils/project/build.number @@ -1 +1,2 @@ -module.build = 0 +#Sun Oct 16 20:40:38 CEST 2005 +module.build=1 diff --git a/org.glite.lb.ws-interface/project/build.number b/org.glite.lb.ws-interface/project/build.number index ca5f569..17f82e7 100644 --- a/org.glite.lb.ws-interface/project/build.number +++ b/org.glite.lb.ws-interface/project/build.number @@ -1,2 +1,2 @@ -#Sat Oct 15 06:34:10 CEST 2005 -module.build=54 +#Sun Oct 16 20:34:11 CEST 2005 +module.build=55 diff --git a/org.glite.lb.ws-interface/project/version.properties b/org.glite.lb.ws-interface/project/version.properties index 84b4b0d..db5a284 100755 --- a/org.glite.lb.ws-interface/project/version.properties +++ b/org.glite.lb.ws-interface/project/version.properties @@ -1,4 +1,4 @@ #Fri Sep 02 14:16:49 CEST 2005 -module.version=3.0.0 +module.version=2.1.0 module.build=2 module.age=1 diff --git a/org.glite.lb/build.xml b/org.glite.lb/build.xml index 429dd44..d7337b8 100755 --- a/org.glite.lb/build.xml +++ b/org.glite.lb/build.xml @@ -20,6 +20,33 @@ Revision history: $Log$ + Revision 1.36.4.5 2005/12/02 11:15:33 akrenek + resolved logger dependency conflict + + Revision 1.36.4.4 2005/12/02 10:04:14 jpospi + server depends on logger + + Revision 1.36.4.3 2005/11/28 10:39:08 akrenek + merge bug #13928 fix on the pre_cares branch + + Revision 1.36.4.2 2005/11/24 12:59:36 akrenek + server depends on bones + + Revision 1.36.4.1 2005/11/24 12:32:02 akrenek + merged in "lbonly" + + Revision 1.39 2005/11/27 21:51:18 eronchie + Applied fix for bug 13928 + + Revision 1.38 2005/11/22 12:13:47 eronchie + Removed one utils + + Revision 1.37 2005/11/04 14:39:20 akrenek + merge in the "lbonly" hack + + Revision 1.36 2005/10/15 13:36:26 akrenek + added lb.utils + Revision 1.35 2005/10/14 17:19:08 akrenek build also lb.utils @@ -29,6 +56,17 @@ Revision 1.33 2005/09/19 15:23:45 akrenek "The gigantic merge"; from release 1.4 branch to HEAD + Revision 1.32.2.2 2005/10/31 12:45:10 akrenek + conditional disabling of cross-subsystem builds via "lbonly" property + + Revision 1.32.2.1 2005/08/18 10:36:05 eronchie + Added cross-subsystem dependencies feature in org.glite.lb subsystem. + Added wms-utils.jobid and security.gsoap-plugin among common dependencies. + Added security.voms among server dependencies. + At the moment I have not consider gridsite.core component. + Once built gridsiste component, run ant in org.glite.lb to build the whole lb + and its external gLite dependencies. + Revision 1.32 2005/08/03 11:58:25 akrenek Merged the release 1.0 branch @@ -292,7 +330,7 @@ - + @@ -310,17 +348,17 @@ - + - + @@ -328,7 +366,7 @@ - + @@ -346,7 +384,7 @@ - + @@ -364,6 +402,13 @@ + + + + + + + @@ -444,7 +489,7 @@ - + @@ -460,7 +505,7 @@ - + diff --git a/org.glite.lb/project/build.number b/org.glite.lb/project/build.number index 7e1b0d4..440ecb5 100644 --- a/org.glite.lb/project/build.number +++ b/org.glite.lb/project/build.number @@ -1,2 +1,2 @@ -#Fri Oct 14 12:41:13 CEST 2005 -module.build=153 +#Mon Feb 20 05:06:26 CET 2006 +module.build=0212 diff --git a/org.glite.lb/project/dependencies.properties b/org.glite.lb/project/dependencies.properties index bd7e9af..382bba5 100644 --- a/org.glite.lb/project/dependencies.properties +++ b/org.glite.lb/project/dependencies.properties @@ -1,19 +1,20 @@ - ################################################################### # System dependencies ################################################################### -org.glite.version = HEAD -org.glite.lb.version = HEAD +org.glite.version = glite_R_1_5_1 +org.glite.lb.version = glite-lb_R_1_2_9 # Component dependencies tag = do not remove this line = -org.glite.lb.client-interface.version = HEAD -org.glite.lb.ws-interface.version = HEAD -org.glite.lb.common.version = HEAD -org.glite.lb.client.version = HEAD -org.glite.lb.server.version = HEAD -org.glite.lb.proxy.version = HEAD -org.glite.lb.server-bones.version = HEAD -org.glite.lb.logger.version = HEAD -ext.gsoap.version=2.7.0 +org.glite.lb.client-interface.version = glite-lb-client-interface_R_2_1_1 +org.glite.lb.ws-interface.version = glite-lb-ws-interface_R_2_1_0 +org.glite.lb.common.version = glite-lb-common_R_3_0_4 +org.glite.lb.client.version = glite-lb-client_R_2_1_3 +org.glite.lb.server-bones.version = glite-lb-server-bones_R_2_1_3 +org.glite.lb.server.version = glite-lb-server_R_1_3_6 +org.glite.lb.logger.version = glite-lb-logger_R_1_2_2 +org.glite.lb.proxy.version = glite-lb-proxy_R_1_2_5 +org.glite.lb.utils.version = glite-lb-utils_R_1_0_0 + +ext.gsoap.version = 2.7.0 diff --git a/org.glite.lb/project/glite.lb.csf.xml b/org.glite.lb/project/glite.lb.csf.xml index 96511ac..23862ad 100644 --- a/org.glite.lb/project/glite.lb.csf.xml +++ b/org.glite.lb/project/glite.lb.csf.xml @@ -22,6 +22,18 @@ Revision history: $Log$ + Revision 1.13.2.1 2005/10/17 16:27:48 akrenek + merged in the duplicate utils targed patch + + Revision 1.15 2005/11/27 21:51:18 eronchie + Applied fix for bug 13928 + + Revision 1.14 2005/10/15 20:14:55 jpospi + remove duplicate lb.utils section + + Revision 1.13 2005/10/15 13:36:26 akrenek + added lb.utils + Revision 1.12 2005/03/16 10:02:52 zsalvet proxy component added @@ -249,17 +261,6 @@ - - - - - - - - - - @@ -341,7 +342,7 @@ - + diff --git a/org.glite.lb/project/version.properties b/org.glite.lb/project/version.properties index 7089efc..43a5044 100644 --- a/org.glite.lb/project/version.properties +++ b/org.glite.lb/project/version.properties @@ -1,4 +1,4 @@ #Fri Sep 02 14:19:10 CEST 2005 -module.version=1.2.0 +module.version=1.2.9 module.build=3 module.age=1 diff --git a/org.glite.security.gsoap-plugin/Makefile b/org.glite.security.gsoap-plugin/Makefile index 17fc5be..8ced4f6 100644 --- a/org.glite.security.gsoap-plugin/Makefile +++ b/org.glite.security.gsoap-plugin/Makefile @@ -17,7 +17,7 @@ gsoap_prefix=/opt/gsoap CC=gcc -gsoap_versions?=2.6.2 2.7.0 +gsoap_versions?=2.6.2 2.7.0 2.7.6b -include Makefile.inc -include ../Makefile.inc @@ -53,10 +53,9 @@ default: all CFLAGS:= ${DEBUG} \ -DVERSION=\"${version}\" \ + -DWITH_NONAMESPACES \ -I. -I${top_srcdir}/interface \ -I${stagedir}/include \ - -I${globus_prefix}/include/${nothrflavour} \ - -I${globus_prefix}/include/${nothrflavour}/openssl \ -I${ares_prefix}/include \ ${COVERAGE_FLAGS} -D_GNU_SOURCE -DDATAGRID_EXTENSION @@ -69,13 +68,21 @@ INSTALL:=libtool --mode=install install LINKXX:=libtool --mode=link ${CXX} -rpath ${stagedir}/lib ${LDFLAGS} GLOBUS_INC:= -I${globus_prefix}/include/${nothrflavour} +GLOBUS_THR_INC:= -I${globus_prefix}/include/${thrflavour} + GLOBUS_LIBS:= -L${globus_prefix}/lib \ -lglobus_common_${nothrflavour} \ -lglobus_gssapi_gsi_${nothrflavour} \ +GLOBUS_THR_LIBS:= -L${globus_prefix}/lib \ + -lglobus_common_${thrflavour} \ + -lglobus_gssapi_gsi_${thrflavour} + GSOAP_LIBS:= -L${gsoap_prefix}/lib -lgsoap +ARES_LIBS:=-L${ares_prefix}/lib -lares -EX_LIBS:= ${GLOBUS_LIBS} -L${ares_prefix}/lib -lares +EX_LIBS:= ${GLOBUS_LIBS} ${ARES_LIBS} +EX_THRLIBS := ${GLOBUS_THR_LIBS} ${ARES_LIBS} HDRS:=glite_gss.h glite_gsplugin.h @@ -106,7 +113,7 @@ ${GSS_LTLIB}: ${GSS_OBJS} ${LINK} ${version_info} -o $@ ${GSS_LOBJS} ${EX_LIBS} ${GSS_THRLTLIB}: ${GSS_THROBJS} - ${LINK} ${version_info} -o $@ ${GSS_THRLOBJS} ${EX_LIBS} + ${LINK} ${version_info} -o $@ ${GSS_THRLOBJS} ${EX_THRLIBS} OBJS:=${GSS_OBJS} glite_gsplugin.o @@ -137,7 +144,7 @@ ${LTLIB}: ${OBJS} ${LINK} ${version_info} -o $@ ${LOBJS} ${EX_LIBS} ${THRLTLIB}: ${THROBJS} - ${LINK} ${version_info} -o $@ ${THRLOBJS} ${EX_LIBS} + ${LINK} ${version_info} -o $@ ${THRLOBJS} ${EX_THRLIBS} ${STATICLIB_S}: ${OBJS_S} ar crv $@ ${OBJS_S} @@ -151,7 +158,7 @@ ${LTLIB_S}: ${OBJS_S} ${LINK} ${version_info} -o $@ ${LOBJS_S} ${EX_LIBS} ${THRLTLIB_S}: ${THROBJS_S} - ${LINK} ${version_info} -o $@ ${THRLOBJS_S} ${EX_LIBS} + ${LINK} ${version_info} -o $@ ${THRLOBJS_S} ${EX_THRLIBS} all compile: \ ${GSS_STATICLIB} ${GSS_LTLIB} ${GSS_THRSTATICLIB} ${GSS_THRLTLIB} \ @@ -271,9 +278,9 @@ clean: ${COMPILE} ${GLOBUS_THR_INC} -o $@ -c $< test_gss.o: %.o: %.cpp - ${CXX} -c ${CFLAGS} ${GLOBUSINC} ${TEST_INC} $< + ${CXX} -c ${CFLAGS} ${GLOBUS_INC} ${TEST_INC} $< -glite_gsplugin.o: soap_version.h +glite_gsplugin.o, glite_gsplugin.thr.o: soap_version.h soap_version.h: stdsoap2.h head stdsoap2.h | \ diff --git a/org.glite.security.gsoap-plugin/build.xml b/org.glite.security.gsoap-plugin/build.xml index b5b3f7f..1bfdeed 100755 --- a/org.glite.security.gsoap-plugin/build.xml +++ b/org.glite.security.gsoap-plugin/build.xml @@ -93,6 +93,11 @@ + + + + + diff --git a/org.glite.security.gsoap-plugin/project/build.number b/org.glite.security.gsoap-plugin/project/build.number index d794048..80f2b00 100644 --- a/org.glite.security.gsoap-plugin/project/build.number +++ b/org.glite.security.gsoap-plugin/project/build.number @@ -1 +1,2 @@ -module.build=0 +#Fri Jan 20 02:46:44 CET 2006 +module.build=0006 diff --git a/org.glite.security.gsoap-plugin/project/version.properties b/org.glite.security.gsoap-plugin/project/version.properties index ff80206..11d5538 100644 --- a/org.glite.security.gsoap-plugin/project/version.properties +++ b/org.glite.security.gsoap-plugin/project/version.properties @@ -1,2 +1,2 @@ -module.version=1.2.0 +module.version=1.2.2 module.age=0 diff --git a/org.glite.security.proxyrenewal/build.xml b/org.glite.security.proxyrenewal/build.xml index 6ebb14f..0bf0729 100755 --- a/org.glite.security.proxyrenewal/build.xml +++ b/org.glite.security.proxyrenewal/build.xml @@ -95,7 +95,8 @@ Load version file ========================================= --> - + +