Changeset 8 for trunk/pbs_drmaa/log_reader.c
- Timestamp:
- 03/02/11 22:08:19 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/pbs_drmaa/log_reader.c
r7 r8 53 53 54 54 static void 55 pbsdrmaa_ chose_file_wait_thread ( pbsdrmaa_log_reader_t * self);55 pbsdrmaa_select_file_wait_thread ( pbsdrmaa_log_reader_t * self); 56 56 57 57 static ssize_t 58 pbsdrmaa_read_line_wait_thread ( pbsdrmaa_log_reader_t * self, char * buffer, ssize_t size);58 pbsdrmaa_read_line_wait_thread ( pbsdrmaa_log_reader_t * self, char * line, char * buffer, ssize_t size, int * idx, int * end_idx, int * line_idx ); 59 59 60 60 static void 61 pbsdrmaa_ chose_file_job_on_missing ( pbsdrmaa_log_reader_t * self );61 pbsdrmaa_select_file_job_on_missing ( pbsdrmaa_log_reader_t * self ); 62 62 63 63 static ssize_t 64 pbsdrmaa_read_line_job_on_missing ( pbsdrmaa_log_reader_t * self, char * buffer, ssize_t size);64 pbsdrmaa_read_line_job_on_missing ( pbsdrmaa_log_reader_t * self, char * line, char * buffer, ssize_t size, int * idx, int * end_idx, int * line_idx ); 65 65 66 66 int … … 87 87 self->job = job; 88 88 self->name = "Job_on_missing"; 89 self-> chose_file = pbsdrmaa_chose_file_job_on_missing;89 self->select_file = pbsdrmaa_select_file_job_on_missing; 90 90 self->read_line = pbsdrmaa_read_line_job_on_missing; 91 91 } … … 94 94 self->job = NULL; 95 95 self->name = "WT"; 96 self-> chose_file = pbsdrmaa_chose_file_wait_thread;96 self->select_file = pbsdrmaa_select_file_wait_thread; 97 97 self->read_line = pbsdrmaa_read_line_wait_thread; 98 98 } … … 179 179 if(self->job == NULL) 180 180 fsd_mutex_lock( &self->session->mutex ); 181 /*else 182 fsd_mutex_lock( &self->job->mutex );*/ 181 183 182 TRY 184 183 { … … 186 185 TRY 187 186 { 188 char buffer[4096] = ""; 187 char line[4096] = ""; 188 char buffer[4096] = ""; 189 int idx = 0, end_idx = 0, line_idx = 0; 189 190 190 self-> chose_file(self);191 192 while ((self->read_line(self, buffer, sizeof(buffer))) > 0)191 self->select_file(self); 192 193 while ((self->read_line(self, line,buffer, sizeof(line), &idx,&end_idx,&line_idx)) > 0) 193 194 { 194 const char *volatile ptr = buffer;195 const char *volatile ptr = line; 195 196 char field[256] = ""; 196 197 char job_id[256] = ""; … … 198 199 int volatile field_n = 0; 199 200 int n; 200 201 201 202 bool volatile job_id_match = false; 202 203 bool volatile event_match = false; … … 286 287 bool state_running = false; 287 288 288 struct_status.name = NULL; 289 struct_status.value = NULL; 290 struct_status.next = NULL; 291 struct_status.resource = NULL; 292 293 struct_state.name = NULL; 294 struct_state.value = NULL; 295 struct_state.next = NULL; 296 struct_state.resource = NULL; 297 298 struct_resource_cput.name = NULL; 299 struct_resource_cput.value = NULL; 300 struct_resource_cput.next = NULL; 301 struct_resource_cput.resource = NULL; 302 303 struct_resource_mem.name = NULL; 304 struct_resource_mem.value = NULL; 305 struct_resource_mem.next = NULL; 306 struct_resource_mem.resource = NULL; 307 308 struct_resource_vmem.name = NULL; 309 struct_resource_vmem.value = NULL; 310 struct_resource_vmem.next = NULL; 311 struct_resource_vmem.resource = NULL; 312 313 struct_resource_walltime.name = NULL; 314 struct_resource_walltime.value = NULL; 315 struct_resource_walltime.next = NULL; 316 struct_resource_walltime.resource = NULL; 317 318 struct_start_time.name = NULL; 319 struct_start_time.value = NULL; 320 struct_start_time.next = NULL; 321 struct_start_time.resource = NULL; 322 323 struct_mtime.name = NULL; 324 struct_mtime.value = NULL; 325 struct_mtime.next = NULL; 326 struct_mtime.resource = NULL; 327 328 struct_queue.name = NULL; 329 struct_queue.value = NULL; 330 struct_queue.next = NULL; 331 struct_queue.resource = NULL; 332 333 struct_account_name.name = NULL; 334 struct_account_name.value = NULL; 335 struct_account_name.next = NULL; 336 struct_account_name.resource = NULL; 289 memset(&struct_status,0,sizeof(struct attrl)); /**/ 290 memset(&struct_state,0,sizeof(struct attrl)); 291 memset(&struct_resource_cput,0,sizeof(struct attrl)); 292 memset(&struct_resource_mem,0,sizeof(struct attrl)); 293 memset(&struct_resource_vmem,0,sizeof(struct attrl)); 294 memset(&struct_resource_walltime,0,sizeof(struct attrl)); 295 memset(&struct_start_time,0,sizeof(struct attrl)); 296 memset(&struct_mtime,0,sizeof(struct attrl)); 297 memset(&struct_queue,0,sizeof(struct attrl)); 298 memset(&struct_account_name,0,sizeof(struct attrl)); 337 299 338 300 if (strcmp(event,FLD_MSG_STATE) == 0) … … 507 469 log_event = false; 508 470 } 509 else if( self->job == NULL && log_match && field_n == FLD_MSG && 510 field[0] == 'L' && 511 field[1] == 'o' && 512 field[2] == 'g' && 513 field[3] == ' ' && 514 field[4] == 'c' && 515 field[5] == 'l' && 516 field[6] == 'o' && 517 field[7] == 's' && 518 field[8] == 'e' && 519 field[9] == 'd' ) /* last field in the file - strange bahaviour*/ 471 else if( self->job == NULL && log_match && field_n == FLD_MSG && strncmp(field,"Log closed",10) == 0) 520 472 { 521 473 fsd_log_debug(("%s - Date changed. Closing log file",self->name)); … … 532 484 ++ptr; 533 485 } 534 535 if( strlcpy(buffer,"",sizeof(buffer)) > sizeof(buffer) ) {536 fsd_log_error(("%s - strlcpy error",self->name));537 }538 486 539 487 fsd_free(temp_date); … … 577 525 578 526 void 579 pbsdrmaa_ chose_file_wait_thread ( pbsdrmaa_log_reader_t * self )527 pbsdrmaa_select_file_wait_thread ( pbsdrmaa_log_reader_t * self ) 580 528 { 581 529 pbsdrmaa_session_t *pbssession = (pbsdrmaa_session_t*) self->session; … … 648 596 649 597 ssize_t 650 pbsdrmaa_read_line_wait_thread ( pbsdrmaa_log_reader_t * self, char * buffer, ssize_t size)651 { 652 return fsd_getline (buffer,size,self->fd);598 pbsdrmaa_read_line_wait_thread ( pbsdrmaa_log_reader_t * self, char * line, char * buffer, ssize_t size, int * idx, int * end_idx, int * line_idx ) 599 { 600 return fsd_getline_buffered(line,buffer,size,self->fd,idx,end_idx,line_idx); 653 601 } 654 602 … … 663 611 664 612 void 665 pbsdrmaa_ chose_file_job_on_missing( pbsdrmaa_log_reader_t * self )613 pbsdrmaa_select_file_job_on_missing( pbsdrmaa_log_reader_t * self ) 666 614 { 667 615 pbsdrmaa_session_t *pbssession = (pbsdrmaa_session_t*) self->session; … … 769 717 770 718 ssize_t 771 pbsdrmaa_read_line_job_on_missing ( pbsdrmaa_log_reader_t * self, char * buffer, ssize_t size)772 { 773 int n = fsd_getline (buffer,size,self->fd);719 pbsdrmaa_read_line_job_on_missing ( pbsdrmaa_log_reader_t * self, char * line, char * buffer, ssize_t size, int * idx, int * end_idx, int * line_idx ) 720 { 721 int n = fsd_getline_buffered(line,buffer,size,self->fd, idx, end_idx, line_idx); 774 722 775 723 if(n >= 0) … … 789 737 char *rest = NULL; 790 738 char *token = NULL; 791 char *ptr = strdup(s1);739 char *ptr = fsd_strdup(s1); 792 740 token = strtok_r(ptr, ".", &rest); 793 741 job1 = atoi(token); … … 795 743 fsd_free(token); 796 744 797 ptr = strdup(s2);745 ptr = fsd_strdup(s2); 798 746 token = strtok_r(ptr,".",&rest); 799 747 job2 = atoi(token);
Note: See TracChangeset
for help on using the changeset viewer.