Show
Ignore:
Timestamp:
03/18/04 20:11:25 (20 years ago)
Author:
jalet
Message:

Fix for raw jobs in cupspykota

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • pykota/trunk/bin/cupspykota

    r1410 r1411  
    2424# 
    2525# $Log$ 
     26# Revision 1.37  2004/03/18 19:11:25  jalet 
     27# Fix for raw jobs in cupspykota 
     28# 
    2629# Revision 1.36  2004/03/18 14:03:18  jalet 
    2730# Added fsync() calls 
     
    317320         
    318321        # Save file descriptors, we will need them later. 
    319         infno = infile.fileno() 
    320322        stdoutfno = sys.stdout.fileno() 
    321323        stderrfno = sys.stderr.fileno() 
     
    327329        # So we use a poll object to know when to read or write 
    328330        pollster = select.poll() 
    329         pollster.register(infno, select.POLLIN | select.POLLPRI) 
    330331        pollster.register(fromcfno, select.POLLIN | select.POLLPRI) 
    331332        pollster.register(cerrfno, select.POLLIN | select.POLLPRI) 
     
    340341        endinput = endoutput = enderr = 0 
    341342        inputclosed = outputclosed = errclosed = 0 
     343         
     344        if self.preserveinputfile is None : 
     345            # this is not a real file, we read the job's data 
     346            # from stdin  
     347            infno = infile.fileno() 
     348            pollster.register(infno, select.POLLIN | select.POLLPRI) 
     349        else :     
     350            # job's data is in a file, no need to pass the data 
     351            # to the real backend 
     352            self.logdebug("Job's data is in %s" % self.preserveinputfile) 
     353            infno = None 
     354            endinput = 1 
     355         
    342356        killed = 0 
    343357        self.logdebug("Entering streams polling loop...") 
     
    366380                        if indata : 
    367381                            os.write(fd, indata)     
    368                             os.fsync(fd) 
     382                            try : 
     383                                os.fsync(fd) 
     384                            except OSError : 
     385                                pass 
    369386                            indata = "" 
    370387                        if endinput :     
     
    376393                        if outdata : 
    377394                            os.write(fd, outdata) 
    378                             os.fsync(fd) 
     395                            try : 
     396                                os.fsync(fd) 
     397                            except OSError :     
     398                                pass 
    379399                            outdata = "" 
    380400                        if endoutput :     
     
    384404                        if errdata : 
    385405                            os.write(fd, errdata) 
    386                             os.fsync(fd) 
     406                            try : 
     407                                os.fsync(fd) 
     408                            except OSError :     
     409                                pass 
    387410                            errdata = "" 
    388411                        if enderr :