diff --git a/gram/jobmanager/lrms/fork/source/configure.ac b/gram/jobmanager/lrms/fork/source/configure.ac index 4367b303d8..f4160abcd6 100644 --- a/gram/jobmanager/lrms/fork/source/configure.ac +++ b/gram/jobmanager/lrms/fork/source/configure.ac @@ -1,6 +1,6 @@ AC_PREREQ([2.60]) -AC_INIT([globus_gram_job_manager_fork],[3.3],[https://github.com/gridcf/gct/issues]) +AC_INIT([globus_gram_job_manager_fork],[3.4],[https://github.com/gridcf/gct/issues]) AC_CONFIG_MACRO_DIR([m4]) AC_SUBST([MAJOR_VERSION], [${PACKAGE_VERSION%%.*}]) AC_SUBST([MINOR_VERSION], [${PACKAGE_VERSION##*.}]) @@ -38,11 +38,11 @@ AC_ARG_WITH(softenv-dir, AC_SUBST(SOFTENV_DIR) AC_ARG_WITH(globus-state-dir, - AC_HELP_STRING( - [--with-globus-state-dir=PATH], - [Path to Globus state files]), - globusstatedir="$withval", - globusstatedir=$localstatedir) + AC_HELP_STRING( + [--with-globus-state-dir=PATH], + [Path to Globus state files]), + globusstatedir="$withval", + globusstatedir=$localstatedir) # GRAM-333: SEG config in installer has variables that aren't resolved at # runtime @@ -50,21 +50,21 @@ globusstatedir="`eval echo $globusstatedir`" AC_SUBST(globusstatedir) AC_ARG_WITH(seg, - AC_HELP_STRING( - [--with-seg=yes|no], - [Enable GRAM configuration with the SEG module]), - SEG_ENABLED="$withval", - SEG_ENABLED="no") + AC_HELP_STRING( + [--with-seg=yes|no], + [Enable GRAM configuration with the SEG module]), + SEG_ENABLED="$withval", + SEG_ENABLED="no") case "$SEG_ENABLED" in - yes) - SEG_CLAUSE="-seg-module fork" - ;; - no) - SEG_CLAUSE="" - ;; - *) - AC_MSG_ERROR([Invalid argument to --with-seg]) - ;; + yes) + SEG_CLAUSE="-seg-module fork" + ;; + no) + SEG_CLAUSE="" + ;; + *) + AC_MSG_ERROR([Invalid argument to --with-seg]) + ;; esac AC_SUBST(SEG_CLAUSE) @@ -89,9 +89,9 @@ AC_SUBST(perlmoduledir) AC_CONFIG_FILES( globus-gram-job-manager-fork-uninstalled.pc globus-gram-job-manager-fork.pc - Makefile - globus-fork.conf - starter/Makefile - seg/Makefile - version.h) + Makefile + globus-fork.conf + starter/Makefile + seg/Makefile + version.h) AC_OUTPUT diff --git a/gram/jobmanager/lrms/fork/source/seg/seg_fork_module.c b/gram/jobmanager/lrms/fork/source/seg/seg_fork_module.c index fba1b854c9..74961ad796 100644 --- a/gram/jobmanager/lrms/fork/source/seg/seg_fork_module.c +++ b/gram/jobmanager/lrms/fork/source/seg/seg_fork_module.c @@ -688,6 +688,7 @@ globus_l_fork_parse_events( char * p; int protocol_msg_type; time_t stamp; + long long tmp_stamp; char * jobid; int job_state; int exit_code; @@ -711,9 +712,9 @@ globus_l_fork_parse_events( exit_code = EXIT_CODE_UNASSIGNED; - rc = sscanf(p, "%d;%ld;%n%*[^;]%n;%d;%d", + rc = sscanf(p, "%d;%lld;%n%*[^;]%n;%d;%d", &protocol_msg_type, - &stamp, + &tmp_stamp, &jobid_start, &jobid_end, &job_state, @@ -724,6 +725,8 @@ globus_l_fork_parse_events( goto bad_line; } + stamp = (time_t) tmp_stamp; + jobid = p + jobid_start; *(p + jobid_end) = '\0'; diff --git a/gram/jobmanager/lrms/fork/source/starter/fork_starter.c b/gram/jobmanager/lrms/fork/source/starter/fork_starter.c index a1a6c77d35..0379be6b97 100644 --- a/gram/jobmanager/lrms/fork/source/starter/fork_starter.c +++ b/gram/jobmanager/lrms/fork/source/starter/fork_starter.c @@ -1230,8 +1230,8 @@ globus_l_fork_log_state_change( return; } fprintf(logfile, - "001;%lu;%s:%lu;%d;%d\n", - (unsigned long) now, + "001;%lld;%s:%lu;%d;%d\n", + (long long) now, task->jobid_prefix, (unsigned long) pid, (int) job_state, diff --git a/gram/jobmanager/lrms/lsf/source/configure.ac b/gram/jobmanager/lrms/lsf/source/configure.ac index b44ce7b211..3845f72f03 100644 --- a/gram/jobmanager/lrms/lsf/source/configure.ac +++ b/gram/jobmanager/lrms/lsf/source/configure.ac @@ -1,6 +1,6 @@ AC_PREREQ([2.60]) -AC_INIT([globus_gram_job_manager_lsf],[3.0],[https://github.com/gridcf/gct/issues]) +AC_INIT([globus_gram_job_manager_lsf],[3.1],[https://github.com/gridcf/gct/issues]) AC_CONFIG_MACRO_DIR([m4]) AC_SUBST([MAJOR_VERSION], [${PACKAGE_VERSION%%.*}]) AC_SUBST([MINOR_VERSION], [${PACKAGE_VERSION##*.}]) @@ -29,11 +29,11 @@ fi AC_ARG_WITH([lsf-profile], AC_HELP_STRING( - [--with-lsf-profile=FILE], + [--with-lsf-profile=FILE], [Use LSF profile located at PATH ${LSF_ENVDIR:-/etc}/profile.lsf]), - [LSF_PROFILE=$withval], - [LSF_PROFILE="${LSF_ENVDIR:-/etc}/profile.lsf" - AC_MSG_WARN([Using default lsf profile of $LSF_PROFILE])]) + [LSF_PROFILE=$withval], + [LSF_PROFILE="${LSF_ENVDIR:-/etc}/profile.lsf" + AC_MSG_WARN([Using default lsf profile of $LSF_PROFILE])]) AC_SUBST(LSF_PROFILE) @@ -88,11 +88,11 @@ AC_ARG_WITH(log-path, AC_SUBST(LSF_LOG_PATH) AC_ARG_WITH(globus-state-dir, - AC_HELP_STRING( - [--with-globus-state-dir=PATH], - [Path to Globus state files]), - globusstatedir="$withval", - globusstatedir=$localstatedir) + AC_HELP_STRING( + [--with-globus-state-dir=PATH], + [Path to Globus state files]), + globusstatedir="$withval", + globusstatedir=$localstatedir) # GRAM-333: SEG config in installer has variables that aren't resolved at # runtime @@ -100,18 +100,18 @@ globusstatedir="`eval echo $globusstatedir`" AC_SUBST(globusstatedir) AC_ARG_WITH(seg, - AC_HELP_STRING( - [--with-seg=yes|no], - [Enable GRAM configuration with the SEG module]), - SEG_ENABLED="$withval", - SEG_ENABLED="no") + AC_HELP_STRING( + [--with-seg=yes|no], + [Enable GRAM configuration with the SEG module]), + SEG_ENABLED="$withval", + SEG_ENABLED="no") case "$SEG_ENABLED" in - yes|no) + yes|no) : ;; - *) - AC_MSG_ERROR([Invalid argument to --with-seg]) - ;; + *) + AC_MSG_ERROR([Invalid argument to --with-seg]) + ;; esac AC_ARG_WITH([perlmoduledir], @@ -137,5 +137,5 @@ AC_CONFIG_FILES( globus-lsf.conf Makefile seg/Makefile - version.h) + version.h) AC_OUTPUT diff --git a/gram/jobmanager/lrms/lsf/source/seg/seg_lsf_module.c b/gram/jobmanager/lrms/lsf/source/seg/seg_lsf_module.c index 1197ee51d1..0c0d6a01a0 100644 --- a/gram/jobmanager/lrms/lsf/source/seg/seg_lsf_module.c +++ b/gram/jobmanager/lrms/lsf/source/seg/seg_lsf_module.c @@ -628,6 +628,7 @@ globus_l_lsf_find_logfile( const char lsf_idx_name[] = "lsb.events.1"; int i; time_t most_recent_event; + long long tmp_most_recent_event; GlobusFuncName(globus_l_lsf_find_logfile); SEGLsfEnter(); @@ -683,7 +684,8 @@ globus_l_lsf_find_logfile( } else { - fscanf(state->fp, "#%ld", &most_recent_event); + fscanf(state->fp, "#%lld", &tmp_most_recent_event); + most_recent_event = tmp_most_recent_event; fclose(state->fp); state->fp = NULL; } @@ -805,6 +807,7 @@ globus_l_lsf_parse_events( { char * eol; time_t event_timestamp; + long long tmp_timestamp; char event_type_buffer[64]; char job_id_buffer[32]; int rc; @@ -848,15 +851,17 @@ globus_l_lsf_parse_events( * the parsing timestamp to match that when we hit EOF. */ sscanf(state->buffer + state->buffer_point + 1, - "%ld", &state->end_of_file_timestamp); + "%lld", &tmp_timestamp); + state->end_of_file_timestamp = tmp_timestamp; goto next_line; } } sscanf(state->buffer + state->buffer_point, - "\"%[^\"]\" \"%*[^\"]\" %ld %s", + "\"%[^\"]\" \"%*[^\"]\" %lld %s", event_type_buffer, - &event_timestamp, + &tmp_timestamp, job_id_buffer); + event_timestamp = tmp_timestamp; if (event_timestamp < state->start_timestamp) { @@ -895,8 +900,8 @@ globus_l_lsf_parse_events( */ SEGLsfDebug(SEG_LSF_DEBUG_TRACE, - ("ignoring JOB_STATUS: job %s in PEND state (%ld)\n", - job_id_buffer, event_timestamp)); + ("ignoring JOB_STATUS: job %s in PEND state (%lld)\n", + job_id_buffer, (long long) event_timestamp)); break; case JOB_STAT_PSUSP: /* @@ -904,16 +909,16 @@ globus_l_lsf_parse_events( * the LSF administrator, while pending. */ SEGLsfDebug(SEG_LSF_DEBUG_TRACE, - ("ignoring JOB_STATUS: job %s in PSUSP state (%ld)\n", - job_id_buffer, event_timestamp)); + ("ignoring JOB_STATUS: job %s in PSUSP state (%lld)\n", + job_id_buffer, (long long) event_timestamp)); break; case JOB_STAT_RUN: /* * the job is currently running. */ SEGLsfDebug(SEG_LSF_DEBUG_TRACE, - ("ignoring JOB_STATUS: job %s in RUN state (%ld)\n", - job_id_buffer, event_timestamp)); + ("ignoring JOB_STATUS: job %s in RUN state (%lld)\n", + job_id_buffer, (long long) event_timestamp)); break; case JOB_STAT_SSUSP: @@ -928,8 +933,8 @@ globus_l_lsf_parse_events( * bqueues(1), */ SEGLsfDebug(SEG_LSF_DEBUG_TRACE, - ("ignoring JOB_STATUS: job %s in SSUSP state (%ld)\n", - job_id_buffer, event_timestamp)); + ("ignoring JOB_STATUS: job %s in SSUSP state (%lld)\n", + job_id_buffer, (long long) event_timestamp)); break; case JOB_STAT_USUSP: /* @@ -937,8 +942,8 @@ globus_l_lsf_parse_events( * the LSF administrator, while running. */ SEGLsfDebug(SEG_LSF_DEBUG_TRACE, - ("ignoring JOB_STATUS: job %s in SSUSP state (%ld)\n", - job_id_buffer, event_timestamp)); + ("ignoring JOB_STATUS: job %s in SSUSP state (%lld)\n", + job_id_buffer, (long long) event_timestamp)); break; case JOB_STAT_EXIT: /* @@ -1000,16 +1005,16 @@ globus_l_lsf_parse_events( * Post job process done successfully */ SEGLsfDebug(SEG_LSF_DEBUG_TRACE, - ("ignoring JOB_STATUS: job %s in PDONE state (%ld)\n", - job_id_buffer, event_timestamp)); + ("ignoring JOB_STATUS: job %s in PDONE state (%lld)\n", + job_id_buffer, (long long) event_timestamp)); break; case JOB_STAT_PERR: /* * Post job process has error */ SEGLsfDebug(SEG_LSF_DEBUG_TRACE, - ("ignoring JOB_STATUS: job %s in PERR state (%ld)\n", - job_id_buffer, event_timestamp)); + ("ignoring JOB_STATUS: job %s in PERR state (%lld)\n", + job_id_buffer, (long long) event_timestamp)); break; case JOB_STAT_WAIT: /* @@ -1017,19 +1022,19 @@ globus_l_lsf_parse_events( * chunk job that are waiting to run. */ SEGLsfDebug(SEG_LSF_DEBUG_TRACE, - ("ignoring JOB_STATUS: job %s in WAIT state (%ld)\n", - job_id_buffer, event_timestamp)); + ("ignoring JOB_STATUS: job %s in WAIT state (%lld)\n", + job_id_buffer, (long long) event_timestamp)); break; case JOB_STAT_UNKWN: SEGLsfDebug(SEG_LSF_DEBUG_TRACE, ("ignoring JOB_STATUS: job %s in UNKNWN state " - "(%ld)\n", - job_id_buffer, event_timestamp)); + "(%lld)\n", + job_id_buffer, (long long) event_timestamp)); break; case JOB_STAT_NULL: SEGLsfDebug(SEG_LSF_DEBUG_TRACE, - ("ignoring JOB_STATUS: job %s in NULL state (%ld)\n", - job_id_buffer, event_timestamp)); + ("ignoring JOB_STATUS: job %s in NULL state (%lld)\n", + job_id_buffer, (long long) event_timestamp)); break; } } diff --git a/gram/jobmanager/scheduler_event_generator/source/configure.ac b/gram/jobmanager/scheduler_event_generator/source/configure.ac index 6b741dd8df..3711ca1f1c 100644 --- a/gram/jobmanager/scheduler_event_generator/source/configure.ac +++ b/gram/jobmanager/scheduler_event_generator/source/configure.ac @@ -1,6 +1,6 @@ AC_PREREQ([2.60]) -AC_INIT([globus_scheduler_event_generator],[6.5],[https://github.com/gridcf/gct/issues]) +AC_INIT([globus_scheduler_event_generator],[6.6],[https://github.com/gridcf/gct/issues]) AC_CONFIG_MACRO_DIR([m4]) AC_SUBST([MAJOR_VERSION], [${PACKAGE_VERSION%%.*}]) AC_SUBST([MINOR_VERSION], [${PACKAGE_VERSION##*.}]) @@ -134,7 +134,7 @@ AC_CONFIG_FILES( init/globus-scheduler-event-generator-lsb init/Makefile test/Makefile - version.h) + version.h) AC_CONFIG_FILES([globus-scheduler-event-generator-admin], [chmod a+x globus-scheduler-event-generator-admin]) AC_OUTPUT diff --git a/gram/jobmanager/scheduler_event_generator/source/globus_scheduler_event_generator_stdout.c b/gram/jobmanager/scheduler_event_generator/source/globus_scheduler_event_generator_stdout.c index 68b2d03c1e..ae426c0075 100644 --- a/gram/jobmanager/scheduler_event_generator/source/globus_scheduler_event_generator_stdout.c +++ b/gram/jobmanager/scheduler_event_generator/source/globus_scheduler_event_generator_stdout.c @@ -102,32 +102,32 @@ globus_scheduler_event_generator_stdout_handler( { case GLOBUS_SCHEDULER_EVENT_PENDING: return globus_l_stdout_scheduler_event( - "001;%lu;%s;%d;%d\n", - event->timestamp, + "001;%lld;%s;%d;%d\n", + (long long) event->timestamp, event->job_id, GLOBUS_GRAM_PROTOCOL_JOB_STATE_PENDING, 0); case GLOBUS_SCHEDULER_EVENT_ACTIVE: return globus_l_stdout_scheduler_event( - "001;%lu;%s;%d;%d\n", - event->timestamp, + "001;%lld;%s;%d;%d\n", + (long long) event->timestamp, event->job_id, GLOBUS_GRAM_PROTOCOL_JOB_STATE_ACTIVE, 0); case GLOBUS_SCHEDULER_EVENT_DONE: return globus_l_stdout_scheduler_event( - "001;%lu;%s;%d;%d\n", - event->timestamp, + "001;%lld;%s;%d;%d\n", + (long long) event->timestamp, event->job_id, GLOBUS_GRAM_PROTOCOL_JOB_STATE_DONE, event->exit_code); case GLOBUS_SCHEDULER_EVENT_FAILED: return globus_l_stdout_scheduler_event( - "001;%lu;%s;%d;%d\n", - event->timestamp, + "001;%lld;%s;%d;%d\n", + (long long) event->timestamp, event->job_id, GLOBUS_GRAM_PROTOCOL_JOB_STATE_FAILED, event->failure_code); @@ -455,7 +455,7 @@ globus_l_xio_read_eof_callback( { globus_byte_t * tmp; ptrdiff_t offset; - unsigned long stamp; + long long stamp; globus_byte_t *next, *prev, *end; if (nbytes == len) @@ -481,7 +481,7 @@ globus_l_xio_read_eof_callback( while (NULL != (next = (globus_byte_t *) strchr((char *) next, '\n'))) { *next = '\0'; - if (sscanf((char *) prev, "200 %lu", &stamp) == 1) + if (sscanf((char *) prev, "200 %lld", &stamp) == 1) { globus_scheduler_event_generator_set_timestamp((time_t) stamp); } diff --git a/gram/jobmanager/scheduler_event_generator/source/main.c b/gram/jobmanager/scheduler_event_generator/source/main.c index 11c9475cee..b4c3579d26 100644 --- a/gram/jobmanager/scheduler_event_generator/source/main.c +++ b/gram/jobmanager/scheduler_event_generator/source/main.c @@ -61,6 +61,7 @@ main(int argc, char *argv[]) int rc; char * module = NULL; time_t timestamp = 0; + long long tmp_timestamp; globus_result_t result = GLOBUS_SUCCESS; globus_bool_t background = GLOBUS_FALSE; char * directory = NULL; @@ -109,13 +110,14 @@ main(int argc, char *argv[]) break; case 't': - rc = sscanf(optarg, "%lu", (unsigned long*) ×tamp); + rc = sscanf(optarg, "%lld", &tmp_timestamp); if (rc < 1) { fprintf(stderr, "Invalid timestamp [%s]\n", optarg); goto deactivate_error; } + timestamp = (time_t) tmp_timestamp; break; case 'd': @@ -427,32 +429,32 @@ globus_l_directory_write_event_handler( { case GLOBUS_SCHEDULER_EVENT_PENDING: fprintf(directory_write_fh, - "001;%lu;%s;%d;%d\n", - event->timestamp, + "001;%lld;%s;%d;%d\n", + (long long) event->timestamp, event->job_id, GLOBUS_GRAM_PROTOCOL_JOB_STATE_PENDING, 0); break; case GLOBUS_SCHEDULER_EVENT_ACTIVE: fprintf(directory_write_fh, - "001;%lu;%s;%d;%d\n", - event->timestamp, + "001;%lld;%s;%d;%d\n", + (long long) event->timestamp, event->job_id, GLOBUS_GRAM_PROTOCOL_JOB_STATE_ACTIVE, 0); break; case GLOBUS_SCHEDULER_EVENT_FAILED: fprintf(directory_write_fh, - "001;%lu;%s;%d;%d\n", - event->timestamp, + "001;%lld;%s;%d;%d\n", + (long long) event->timestamp, event->job_id, GLOBUS_GRAM_PROTOCOL_JOB_STATE_FAILED, event->failure_code); break; case GLOBUS_SCHEDULER_EVENT_DONE: fprintf(directory_write_fh, - "001;%lu;%s;%d;%d\n", - event->timestamp, + "001;%lld;%s;%d;%d\n", + (long long) event->timestamp, event->job_id, GLOBUS_GRAM_PROTOCOL_JOB_STATE_DONE, event->exit_code); diff --git a/gram/jobmanager/scheduler_event_generator/source/test/globus_scheduler_event_generator_stdout.c b/gram/jobmanager/scheduler_event_generator/source/test/globus_scheduler_event_generator_stdout.c index 9819e75033..e526c671f9 100644 --- a/gram/jobmanager/scheduler_event_generator/source/test/globus_scheduler_event_generator_stdout.c +++ b/gram/jobmanager/scheduler_event_generator/source/test/globus_scheduler_event_generator_stdout.c @@ -96,32 +96,32 @@ globus_scheduler_event_generator_stdout_handler( { case GLOBUS_SCHEDULER_EVENT_PENDING: return globus_l_stdout_scheduler_event( - "001;%lu;%s;%d;%d\n", - event->timestamp, + "001;%lld;%s;%d;%d\n", + (long long) event->timestamp, event->job_id, GLOBUS_GRAM_PROTOCOL_JOB_STATE_PENDING, 0); case GLOBUS_SCHEDULER_EVENT_ACTIVE: return globus_l_stdout_scheduler_event( - "001;%lu;%s;%d;%d\n", - event->timestamp, + "001;%lld;%s;%d;%d\n", + (long long) event->timestamp, event->job_id, GLOBUS_GRAM_PROTOCOL_JOB_STATE_ACTIVE, 0); case GLOBUS_SCHEDULER_EVENT_DONE: return globus_l_stdout_scheduler_event( - "001;%lu;%s;%d;%d\n", - event->timestamp, + "001;%lld;%s;%d;%d\n", + (long long) event->timestamp, event->job_id, GLOBUS_GRAM_PROTOCOL_JOB_STATE_DONE, event->exit_code); case GLOBUS_SCHEDULER_EVENT_FAILED: return globus_l_stdout_scheduler_event( - "001;%lu;%s;%d;%d\n", - event->timestamp, + "001;%lld;%s;%d;%d\n", + (long long) event->timestamp, event->job_id, GLOBUS_GRAM_PROTOCOL_JOB_STATE_DONE, event->failure_code); diff --git a/gram/jobmanager/scheduler_event_generator/source/test/seg_api_test.c b/gram/jobmanager/scheduler_event_generator/source/test/seg_api_test.c index cf913170f2..dd0965f96e 100644 --- a/gram/jobmanager/scheduler_event_generator/source/test/seg_api_test.c +++ b/gram/jobmanager/scheduler_event_generator/source/test/seg_api_test.c @@ -43,7 +43,6 @@ int main(int argc, char *argv[]) return 1; } - rc = globus_module_activate(GLOBUS_SCHEDULER_EVENT_GENERATOR_MODULE); if (rc != GLOBUS_SUCCESS) @@ -76,13 +75,14 @@ int main(int argc, char *argv[]) { int protocol_msg_type; time_t stamp; + long long tmp_stamp; char jobid[80]; int state; int exit_code; - rc = sscanf(line, "%d;%ld;%[^;];%d;%d\n", + rc = sscanf(line, "%d;%lld;%[^;];%d;%d\n", &protocol_msg_type, - &stamp, + &tmp_stamp, jobid, &state, &exit_code); @@ -90,6 +90,7 @@ int main(int argc, char *argv[]) { goto close_error; } + stamp = (time_t) tmp_stamp; if (protocol_msg_type != 1) { diff --git a/gram/jobmanager/source/configure.ac b/gram/jobmanager/source/configure.ac index a92f70d5c9..145ee71a59 100644 --- a/gram/jobmanager/source/configure.ac +++ b/gram/jobmanager/source/configure.ac @@ -1,6 +1,6 @@ AC_PREREQ([2.60]) -AC_INIT([globus_gram_job_manager],[15.8],[https://github.com/gridcf/gct/issues]) +AC_INIT([globus_gram_job_manager],[15.9],[https://github.com/gridcf/gct/issues]) AC_CONFIG_MACRO_DIR([m4]) AC_SUBST([MAJOR_VERSION], [${PACKAGE_VERSION%%.*}]) AC_SUBST([MINOR_VERSION], [${PACKAGE_VERSION##*.}]) @@ -135,10 +135,10 @@ AC_PATH_PROGS([A2X], [a2x a2x.py]) AM_CONDITIONAL(BUILD_MANPAGES, [test x"$A2X" != x]) AC_CONFIG_FILES([ - globus-gram-job-manager-uninstalled.pc - globus-gram-job-manager.pc - scripts/Makefile - rvf/globus-rvf-edit + globus-gram-job-manager-uninstalled.pc + globus-gram-job-manager.pc + scripts/Makefile + rvf/globus-rvf-edit rvf/Makefile seg/Makefile test/Makefile diff --git a/gram/jobmanager/source/globus_gram_job_manager_state_file.c b/gram/jobmanager/source/globus_gram_job_manager_state_file.c index a35b50db4f..a1e54f1fad 100644 --- a/gram/jobmanager/source/globus_gram_job_manager_state_file.c +++ b/gram/jobmanager/source/globus_gram_job_manager_state_file.c @@ -199,18 +199,17 @@ globus_gram_job_manager_state_file_write( { goto error_exit; } - rc = fprintf(fp, "%lu\n", - (unsigned long) request->seg_last_timestamp); + rc = fprintf(fp, "%lld\n", (long long) request->seg_last_timestamp); if (rc < 0) { goto error_exit; } - rc = fprintf(fp, "%lu\n", (unsigned long) request->creation_time); + rc = fprintf(fp, "%lld\n", (long long) request->creation_time); if (rc < 0) { goto error_exit; } - rc = fprintf(fp, "%lu\n", (unsigned long) request->queued_time); + rc = fprintf(fp, "%lld\n", (long long) request->queued_time); if (rc < 0) { goto error_exit; @@ -237,22 +236,22 @@ globus_gram_job_manager_state_file_write( goto error_exit; } rc = fprintf(fp, - "%ld.%09ld %ld.%09ld %ld.%09ld " - "%ld.%09ld %ld.%09ld %ld.%09ld %ld.%09ld " + "%lld.%09ld %lld.%09ld %lld.%09ld " + "%lld.%09ld %lld.%09ld %lld.%09ld %lld.%09ld " "%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n", - request->job_stats.unsubmitted_timestamp.tv_sec, + (long long) request->job_stats.unsubmitted_timestamp.tv_sec, request->job_stats.unsubmitted_timestamp.tv_nsec, - request->job_stats.file_stage_in_timestamp.tv_sec, + (long long) request->job_stats.file_stage_in_timestamp.tv_sec, request->job_stats.file_stage_in_timestamp.tv_nsec, - request->job_stats.pending_timestamp.tv_sec, + (long long) request->job_stats.pending_timestamp.tv_sec, request->job_stats.pending_timestamp.tv_nsec, - request->job_stats.active_timestamp.tv_sec, + (long long) request->job_stats.active_timestamp.tv_sec, request->job_stats.active_timestamp.tv_nsec, - request->job_stats.failed_timestamp.tv_sec, + (long long) request->job_stats.failed_timestamp.tv_sec, request->job_stats.failed_timestamp.tv_nsec, - request->job_stats.file_stage_out_timestamp.tv_sec, + (long long) request->job_stats.file_stage_out_timestamp.tv_sec, request->job_stats.file_stage_out_timestamp.tv_nsec, - request->job_stats.done_timestamp.tv_sec, + (long long) request->job_stats.done_timestamp.tv_sec, request->job_stats.done_timestamp.tv_nsec, request->job_stats.restart_count, request->job_stats.callback_count, @@ -406,7 +405,15 @@ globus_gram_job_manager_state_file_read( struct stat statbuf; int rc = GLOBUS_SUCCESS; int i; - unsigned long tmp_timestamp; + long long tmp_timestamp; + + long long tmp_unsubmitted_timestamp; + long long tmp_file_stage_in_timestamp; + long long tmp_pending_timestamp; + long long tmp_active_timestamp; + long long tmp_failed_timestamp; + long long tmp_file_stage_out_timestamp; + long long tmp_done_timestamp; request->old_job_contact = NULL; @@ -615,7 +622,7 @@ globus_gram_job_manager_state_file_read( goto free_scratchdir; } buffer[strlen(buffer)-1] = '\0'; - sscanf(buffer, "%lu", &tmp_timestamp); + sscanf(buffer, "%lld", &tmp_timestamp); request->seg_last_timestamp = (time_t) tmp_timestamp; if (fgets( buffer, file_len, fp ) == NULL) @@ -623,14 +630,14 @@ globus_gram_job_manager_state_file_read( goto free_scratchdir; } buffer[strlen(buffer)-1] = '\0'; - sscanf(buffer, "%lu", &tmp_timestamp); + sscanf(buffer, "%lld", &tmp_timestamp); request->creation_time = (time_t) tmp_timestamp; if (fgets( buffer, file_len, fp ) == NULL) { goto free_scratchdir; } buffer[strlen(buffer)-1] = '\0'; - sscanf(buffer, "%lu", &tmp_timestamp); + sscanf(buffer, "%lld", &tmp_timestamp); request->queued_time = (time_t) tmp_timestamp; request->stage_in_todo = NULL; @@ -674,23 +681,24 @@ globus_gram_job_manager_state_file_read( goto free_gateway_user; } buffer[strlen(buffer)-1] = 0; + sscanf(buffer, - "%ld.%09ld %ld.%09ld %ld.%09ld " - "%ld.%09ld %ld.%09ld %ld.%09ld %ld.%09ld " + "%lld.%09ld %lld.%09ld %lld.%09ld " + "%lld.%09ld %lld.%09ld %lld.%09ld %lld.%09ld " "%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d", - &request->job_stats.unsubmitted_timestamp.tv_sec, + &tmp_unsubmitted_timestamp, &request->job_stats.unsubmitted_timestamp.tv_nsec, - &request->job_stats.file_stage_in_timestamp.tv_sec, + &tmp_file_stage_in_timestamp, &request->job_stats.file_stage_in_timestamp.tv_nsec, - &request->job_stats.pending_timestamp.tv_sec, + &tmp_pending_timestamp, &request->job_stats.pending_timestamp.tv_nsec, - &request->job_stats.active_timestamp.tv_sec, + &tmp_active_timestamp, &request->job_stats.active_timestamp.tv_nsec, - &request->job_stats.failed_timestamp.tv_sec, + &tmp_failed_timestamp, &request->job_stats.failed_timestamp.tv_nsec, - &request->job_stats.file_stage_out_timestamp.tv_sec, + &tmp_file_stage_out_timestamp, &request->job_stats.file_stage_out_timestamp.tv_nsec, - &request->job_stats.done_timestamp.tv_sec, + &tmp_done_timestamp, &request->job_stats.done_timestamp.tv_nsec, &request->job_stats.restart_count, &request->job_stats.callback_count, @@ -712,6 +720,18 @@ globus_gram_job_manager_state_file_read( &request->job_stats.file_stage_out_https_count, &request->job_stats.file_stage_out_ftp_count, &request->job_stats.file_stage_out_gsiftp_count); + + request->job_stats.unsubmitted_timestamp.tv_sec = + tmp_unsubmitted_timestamp; + request->job_stats.file_stage_in_timestamp.tv_sec = + tmp_file_stage_in_timestamp; + request->job_stats.pending_timestamp.tv_sec = tmp_pending_timestamp; + request->job_stats.active_timestamp.tv_sec = tmp_active_timestamp; + request->job_stats.failed_timestamp.tv_sec = tmp_failed_timestamp; + request->job_stats.file_stage_out_timestamp.tv_sec = + tmp_file_stage_out_timestamp; + request->job_stats.done_timestamp.tv_sec = tmp_done_timestamp; + if (fgets( buffer, file_len, fp ) == NULL) { goto free_gateway_user; diff --git a/gram/jobmanager/source/seg/seg_job_manager_module.c b/gram/jobmanager/source/seg/seg_job_manager_module.c index 5db048709e..fa3150d666 100644 --- a/gram/jobmanager/source/seg/seg_job_manager_module.c +++ b/gram/jobmanager/source/seg/seg_job_manager_module.c @@ -719,6 +719,7 @@ globus_l_job_manager_parse_events( int rc; int protocol_msg_type; time_t stamp; + long long tmp_stamp; char jobid[129]; char nl[2]; int job_state; @@ -731,14 +732,15 @@ globus_l_job_manager_parse_events( fgetpos(state->fp, &pos); - while ((rc = fscanf(state->fp, "%d;%ld;%128[^;];%d;%d%1[\n]", + while ((rc = fscanf(state->fp, "%d;%lld;%128[^;];%d;%d%1[\n]", &protocol_msg_type, - &stamp, + &tmp_stamp, jobid, &job_state, &exit_code, nl)) > 4) { + stamp = tmp_stamp; if (rc == 4 && fscanf(state->fp, "%1[\n]", nl) != 1) { goto bad_line; diff --git a/packaging/debian/globus-gram-job-manager-fork/debian/changelog.in b/packaging/debian/globus-gram-job-manager-fork/debian/changelog.in index 2013f388e6..af9395b59a 100644 --- a/packaging/debian/globus-gram-job-manager-fork/debian/changelog.in +++ b/packaging/debian/globus-gram-job-manager-fork/debian/changelog.in @@ -1,3 +1,9 @@ +globus-gram-job-manager-fork (3.4-1+gct.@distro@) @distro@; urgency=medium + + * Handle 64 bit time_t on 32 bit systems + + -- Mattias Ellert Fri, 01 Mar 2024 11:28:43 +0100 + globus-gram-job-manager-fork (3.3-1+gct.@distro@) @distro@; urgency=medium * Fix some compiler warnings diff --git a/packaging/debian/globus-gram-job-manager-lsf/debian/changelog.in b/packaging/debian/globus-gram-job-manager-lsf/debian/changelog.in index 0a43704455..7c2af416dd 100644 --- a/packaging/debian/globus-gram-job-manager-lsf/debian/changelog.in +++ b/packaging/debian/globus-gram-job-manager-lsf/debian/changelog.in @@ -1,3 +1,9 @@ +globus-gram-job-manager-lsf (3.1-1+gct.@distro@) @distro@; urgency=medium + + * Handle 64 bit time_t on 32 bit systems + + -- Mattias Ellert Sun, 10 Mar 2024 20:41:04 +0100 + globus-gram-job-manager-lsf (3.0-1+gct.@distro@) @distro@; urgency=medium * First Grid Community Toolkit release diff --git a/packaging/debian/globus-gram-job-manager/debian/changelog.in b/packaging/debian/globus-gram-job-manager/debian/changelog.in index 1856168cee..6f422afa23 100644 --- a/packaging/debian/globus-gram-job-manager/debian/changelog.in +++ b/packaging/debian/globus-gram-job-manager/debian/changelog.in @@ -1,3 +1,9 @@ +globus-gram-job-manager (15.9-1+gct.@distro@) @distro@; urgency=medium + + * Handle 64 bit time_t on 32 bit systems + + -- Mattias Ellert Fri, 01 Mar 2024 11:34:58 +0100 + globus-gram-job-manager (15.8-1+gct.@distro@) @distro@; urgency=medium * Fix some compiler warnings diff --git a/packaging/debian/globus-scheduler-event-generator/debian/changelog.in b/packaging/debian/globus-scheduler-event-generator/debian/changelog.in index de7205c91e..1dc15e9c68 100644 --- a/packaging/debian/globus-scheduler-event-generator/debian/changelog.in +++ b/packaging/debian/globus-scheduler-event-generator/debian/changelog.in @@ -1,3 +1,9 @@ +globus-scheduler-event-generator (6.6-1+gct.@distro@) @distro@; urgency=medium + + * Handle 64 bit time_t on 32 bit systems + + -- Mattias Ellert Fri, 01 Mar 2024 11:32:24 +0100 + globus-scheduler-event-generator (6.5-1+gct.@distro@) @distro@; urgency=medium * Fix some compiler warnings diff --git a/packaging/fedora/globus-gram-job-manager-fork.spec b/packaging/fedora/globus-gram-job-manager-fork.spec index 03f9927c51..a9dcfa28a9 100644 --- a/packaging/fedora/globus-gram-job-manager-fork.spec +++ b/packaging/fedora/globus-gram-job-manager-fork.spec @@ -2,7 +2,7 @@ Name: globus-gram-job-manager-fork %global _name %(echo %{name} | tr - _) -Version: 3.3 +Version: 3.4 Release: 1%{?dist} Summary: Grid Community Toolkit - Fork Job Manager Support @@ -173,6 +173,9 @@ fi %config(noreplace) %{_sysconfdir}/globus/scheduler-event-generator/available/fork %changelog +* Fri Mar 01 2024 Mattias Ellert - 3.4-1 +- Handle 64 bit time_t on 32 bit systems + * Fri Mar 11 2022 Mattias Ellert - 3.3-1 - Fix some compiler warnings diff --git a/packaging/fedora/globus-gram-job-manager-lsf.spec b/packaging/fedora/globus-gram-job-manager-lsf.spec index f9ca018b68..d60a6ec2c3 100644 --- a/packaging/fedora/globus-gram-job-manager-lsf.spec +++ b/packaging/fedora/globus-gram-job-manager-lsf.spec @@ -2,8 +2,8 @@ Name: globus-gram-job-manager-lsf %global _name %(echo %{name} | tr - _) -Version: 3.0 -Release: 2%{?dist} +Version: 3.1 +Release: 1%{?dist} Summary: Grid Community Toolkit - LSF Job Manager Support Group: Applications/Internet @@ -170,6 +170,9 @@ fi %config(noreplace) %{_sysconfdir}/globus/scheduler-event-generator/available/lsf %changelog +* Sun Mar 10 2024 Mattias Ellert - 3.1-1 +- Handle 64 bit time_t on 32 bit systems + * Thu Mar 12 2020 Mattias Ellert - 3.0-2 - Add BuildRequires perl-interpreter diff --git a/packaging/fedora/globus-gram-job-manager.spec b/packaging/fedora/globus-gram-job-manager.spec index 0dcd495670..a5db14ac9b 100644 --- a/packaging/fedora/globus-gram-job-manager.spec +++ b/packaging/fedora/globus-gram-job-manager.spec @@ -2,7 +2,7 @@ Name: globus-gram-job-manager %global _name %(echo %{name} | tr - _) -Version: 15.8 +Version: 15.9 Release: 1%{?dist} Summary: Grid Community Toolkit - GRAM Jobmanager @@ -169,6 +169,9 @@ GLOBUS_HOSTNAME=localhost make %{?_smp_mflags} check VERBOSE=1 %{_libdir}/libglobus_seg_job_manager.so %changelog +* Fri Mar 01 2024 Mattias Ellert - 15.9-1 +- Handle 64 bit time_t on 32 bit systems + * Fri Mar 11 2022 Mattias Ellert - 15.8-1 - Fix some compiler warnings diff --git a/packaging/fedora/globus-scheduler-event-generator.spec b/packaging/fedora/globus-scheduler-event-generator.spec index 771a4e9d94..e71a331500 100644 --- a/packaging/fedora/globus-scheduler-event-generator.spec +++ b/packaging/fedora/globus-scheduler-event-generator.spec @@ -3,7 +3,7 @@ Name: globus-scheduler-event-generator %global soname 0 %global _name %(echo %{name} | tr - _) -Version: 6.5 +Version: 6.6 Release: 1%{?dist} Summary: Grid Community Toolkit - Scheduler Event Generator @@ -239,6 +239,9 @@ fi %doc %{_pkgdocdir}/GLOBUS_LICENSE %changelog +* Fri Mar 01 2024 Mattias Ellert - 6.6-1 +- Handle 64 bit time_t on 32 bit systems + * Thu Mar 10 2022 Mattias Ellert - 6.5-1 - Fix some compiler warnings