Changeset 19335


Ignore:
Timestamp:
04/30/15 16:34:55 (10 years ago)
Author:
schlegel
Message:

CHG: need to pass restart to clusters so they have the correct launch command

Location:
issm/trunk-jpl/src/m
Files:
17 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/m/classes/clusters/acenet.m

    r19328 r19335  
    131131
    132132                 end %}}}
    133                  function LaunchQueueJob(cluster,modelname,dirname,filelist)% {{{
     133                 function LaunchQueueJob(cluster,modelname,dirname,filelist,restart)% {{{
    134134
    135135                         disp('launching solution sequence on remote cluster');
    136                          launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
    137                                  ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz && qsub ' modelname '.queue '];
     136                         if ~isempty(restart)
     137                                 launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && qsub ' modelname '.queue '];
     138                         else
     139                                 launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
     140                                         ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz && qsub ' modelname '.queue '];
     141                         end
    138142                         issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
    139143                 end %}}}
  • issm/trunk-jpl/src/m/classes/clusters/castor.m

    r19328 r19335  
    8686
    8787                 end %}}}
    88                  function LaunchQueueJob(cluster,modelname,dirname,filelist)% {{{
     88                 function LaunchQueueJob(cluster,modelname,dirname,filelist,restart)% {{{
    8989
    9090                         disp('launching solution sequence on remote cluster');
    91                          launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
    92                                  ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && qsub ' modelname '.queue '];
     91                         if ~isempty(restart)
     92                                 launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && qsub ' modelname '.queue '];
     93                         else
     94                                 launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
     95                                         ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && qsub ' modelname '.queue '];
     96                         end
    9397                         issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
    9498                 end %}}}
  • issm/trunk-jpl/src/m/classes/clusters/cloud.m

    r19328 r19335  
    8181
    8282                end %}}}
    83                 function LaunchQueueJob(cluster,modelname,dirname,filelist)% {{{
     83                function LaunchQueueJob(cluster,modelname,dirname,filelist,restart)% {{{
    8484
    8585                        if cluster.interactive,
    8686                                disp('sending files to remote cluster. once done, please log into cluster and launch job');
    87                                 launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
    88                                         ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz '];
     87                                if ~isempty(restart)
     88                                        launchcommand=['cd ' cluster.executionpath ' && cd ' dirname];
     89                                else
     90                                        launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
     91                                                ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz '];
     92                                end
    8993                        else
    9094                                disp('launching solution sequence on remote cluster');
    91                                 launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
    92                                         ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && qsub  ' modelname '.queue '];
     95                                if ~isempty(restart)
     96                                        launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && qsub  ' modelname '.queue '];
     97                                else
     98                                        launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
     99                                                ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && qsub  ' modelname '.queue '];
     100                                end
    93101                        end
    94102                        issmstssh(cluster.name,cluster.login,launchcommand);
  • issm/trunk-jpl/src/m/classes/clusters/cosmos.m

    r19328 r19335  
    8686
    8787                 end %}}}
    88                  function LaunchQueueJob(cluster,modelname,dirname,filelist)% {{{
     88                 function LaunchQueueJob(cluster,modelname,dirname,filelist,restart)% {{{
    8989
    9090                         disp('launching solution sequence on remote cluster');
    91                          launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
    92                                  ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && qsub ' modelname '.queue '];
     91                         if ~isempty(restart)
     92                                 launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && qsub ' modelname '.queue '];
     93                         else
     94                                 launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
     95                                         ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && qsub ' modelname '.queue '];
     96                         end
    9397                         issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
    9498                 end %}}}
  • issm/trunk-jpl/src/m/classes/clusters/discover.m

    r19328 r19335  
    163163                 end
    164164                 %}}}
    165                  function LaunchQueueJob(cluster,modelname,dirname,filelist)% {{{
     165                 function LaunchQueueJob(cluster,modelname,dirname,filelist,restart)% {{{
    166166
    167167                         if ~cluster.interactive,
    168                                  launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
    169                                          ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && qsub ' modelname '.queue '];
    170                          else
    171                                  launchcommand=['cd ' cluster.executionpath '/Interactive' num2str(cluster.interactive) ' && tar -zxf ' dirname '.tar.gz'];
     168                                 if ~isempty(restart)
     169                                         launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && qsub ' modelname '.queue '];
     170                                 else
     171                                         launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
     172                                                 ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && qsub ' modelname '.queue '];
     173                                 end
     174                         else
     175                                 if ~isempty(restart)
     176                                         launchcommand=['cd ' cluster.executionpath '/Interactive' num2str(cluster.interactive)];
     177                                 else
     178                                         launchcommand=['cd ' cluster.executionpath '/Interactive' num2str(cluster.interactive) ' && tar -zxf ' dirname '.tar.gz'];
     179                                 end
    172180                         end
    173181
  • issm/trunk-jpl/src/m/classes/clusters/gemini.m

    r19328 r19335  
    8787
    8888                 end %}}}
    89                  function LaunchQueueJob(cluster,modelname,dirname,filelist)% {{{
     89                 function LaunchQueueJob(cluster,modelname,dirname,filelist,restart)% {{{
    9090
    9191                         disp('launching solution sequence on remote cluster');
    92                          launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
    93                                  ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && qsub ' modelname '.queue '];
     92                         if ~isempty(restart)
     93                                 launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && qsub ' modelname '.queue '];
     94                         else
     95                                 launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
     96                                         ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && qsub ' modelname '.queue '];
     97                         end
    9498                         issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
    9599                 end %}}}
  • issm/trunk-jpl/src/m/classes/clusters/generic.m

    r19328 r19335  
    226226                        end
    227227                end %}}}
    228                 function LaunchQueueJob(cluster,modelname,dirname,filelist)% {{{
     228                function LaunchQueueJob(cluster,modelname,dirname,filelist,restart)% {{{
    229229
    230230                        if ~ispc,
     
    238238
    239239                                if cluster.verbose, disp('launching solution sequence on remote cluster'); end
    240                                 launchcommand=['source ' cluster.etcpath '/environment.' shellext ' && cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
    241                                         ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && source  ' modelname '.queue '];
     240
     241                                if ~isempty(restart)
     242                                        launchcommand=['source ' cluster.etcpath '/environment.' shellext ' && cd ' cluster.executionpath ' && cd ' dirname ' && source ' modelname '.queue '];
     243                                else
     244                                        launchcommand=['source ' cluster.etcpath '/environment.' shellext ' && cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
     245                                                ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && source  ' modelname '.queue '];
     246                                end
    242247                                issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
    243248                        else
    244249                                system([modelname '.bat']);
    245250                        end
     251
    246252                end %}}}
    247253                function Download(cluster,dirname,filelist)% {{{
  • issm/trunk-jpl/src/m/classes/clusters/generic.py

    r19328 r19335  
    176176
    177177        # }}}
    178         def LaunchQueueJob(self,modelname,dirname,filelist):    # {{{
     178        def LaunchQueueJob(self,modelname,dirname,filelist,restart):    # {{{
    179179
    180180                print 'launching solution sequence on remote cluster'
    181                 launchcommand='cd %s && rm -rf ./%s && mkdir %s && cd %s && mv ../%s.tar.gz ./ && tar -zxf %s.tar.gz  && chmod 777 %s.queue && ./%s.queue' % \
    182                         (self.executionpath,dirname,dirname,dirname,dirname,dirname,modelname,modelname)
     181                if restart:
     182                        launchcommand='cd %s && cd %s chmod 777 %s.queue && ./%s.queue' % (self.executionpath,dirname,modelname,modelname)
     183                else:
     184                        launchcommand='cd %s && rm -rf ./%s && mkdir %s && cd %s && mv ../%s.tar.gz ./ && tar -zxf %s.tar.gz  && chmod 777 %s.queue && ./%s.queue' % \
     185                                (self.executionpath,dirname,dirname,dirname,dirname,dirname,modelname,modelname)
    183186                issmssh(self.name,self.login,self.port,launchcommand)
    184187        # }}}
  • issm/trunk-jpl/src/m/classes/clusters/generic_static.m

    r19328 r19335  
    6666                        %do nothing
    6767                end %}}}
    68                 function LaunchQueueJob(cluster,modelname,dirname,filelist)% {{{
     68                function LaunchQueueJob(cluster,modelname,dirname,filelist,restart)% {{{
    6969
    7070                        if ~ispc,
  • issm/trunk-jpl/src/m/classes/clusters/greenplanet.m

    r19331 r19335  
    154154
    155155                 end %}}}
    156                  function LaunchQueueJob(cluster,modelname,dirname,filelist)% {{{
     156                 function LaunchQueueJob(cluster,modelname,dirname,filelist,restart)% {{{
    157157
    158158                         disp('launching solution sequence on remote cluster');
    159                           launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
    160                                                                                          ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && hostname && qsub ' modelname '.queue '];
     159                         if ~isempty(restart)
     160                                 launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && hostname && qsub ' modelname '.queue '];
     161                         else
     162                                 launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
     163                                         ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && hostname && qsub ' modelname '.queue '];
     164                         end
    161165                         issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
    162166                 end %}}}
  • issm/trunk-jpl/src/m/classes/clusters/hpc.m

    r19328 r19335  
    148148
    149149                 end %}}}
    150                  function LaunchQueueJob(cluster,modelname,dirname,filelist)% {{{
     150                 function LaunchQueueJob(cluster,modelname,dirname,filelist,restart)% {{{
    151151
    152152                         disp('launching solution sequence on remote cluster');
    153                           launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
    154                                                                                          ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && hostname && qsub ' modelname '.queue '];
     153                         if ~isempty(restart)
     154                                 launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && hostname && qsub ' modelname '.queue '];
     155                         else
     156                                 launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
     157                                         ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && hostname && qsub ' modelname '.queue '];
     158                         end
    155159                         issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
    156160                 end %}}}
  • issm/trunk-jpl/src/m/classes/clusters/pfe.m

    r19328 r19335  
    269269                 end
    270270                 %}}}
    271                  function LaunchQueueJob(cluster,modelname,dirname,filelist)% {{{
     271                 function LaunchQueueJob(cluster,modelname,dirname,filelist,restart)% {{{
    272272
    273273                         %lauch command, to be executed via ssh
    274274                         if ~cluster.interactive,
    275                                  launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
    276                                          ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && qsub ' modelname '.queue '];
    277                          else
    278                                  launchcommand=['cd ' cluster.executionpath '/Interactive' num2str(cluster.interactive) ' && tar -zxf ' dirname '.tar.gz'];
     275                                 if ~isempty(restart)
     276                                         launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && qsub ' modelname '.queue '];
     277                                 else
     278                                         launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
     279                                                 ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && qsub ' modelname '.queue '];
     280                                 end
     281                         else
     282                                 if ~isempty(restart)
     283                                         launchcommand=['cd ' cluster.executionpath '/Interactive' num2str(cluster.interactive)];
     284                                 else
     285                                         launchcommand=['cd ' cluster.executionpath '/Interactive' num2str(cluster.interactive) ' && tar -zxf ' dirname '.tar.gz'];
     286                                 end
    279287                         end
    280288
  • issm/trunk-jpl/src/m/classes/clusters/pfe.py

    r19328 r19335  
    169169
    170170                # }}}
    171         def LaunchQueueJob(self,modelname,dirname,filelist):
     171        def LaunchQueueJob(self,modelname,dirname,filelist,restart):
    172172                        # {{{
    173173
    174174                print 'launching solution sequence on remote cluster'
    175                 launchcommand='cd %s && rm -rf ./%s && mkdir %s && cd %s && mv ../%s.tar.gz ./ && tar -zxf %s.tar.gz  && qsub %s.queue' % (self.executionpath,dirname,dirname,dirname,dirname,dirname,modelname)
     175                if restart:
     176                        launchcommand='cd %s && cd %s && qsub %s.queue' % (self.executionpath,dirname,modelname)
     177                else:
     178                        launchcommand='cd %s && rm -rf ./%s && mkdir %s && cd %s && mv ../%s.tar.gz ./ && tar -zxf %s.tar.gz  && qsub %s.queue' % (self.executionpath,dirname,dirname,dirname,dirname,dirname,modelname)
    176179                issmssh(self.name,self.login,self.port,launchcommand)
    177180
  • issm/trunk-jpl/src/m/classes/clusters/pollux.m

    r19328 r19335  
    7070                 end
    7171                 %}}}
    72                  function LaunchQueueJob(cluster,modelname,dirname,filelist)% {{{
     72                 function LaunchQueueJob(cluster,modelname,dirname,filelist,restart)% {{{
    7373
    7474                         disp('launching solution sequence on remote cluster');
    75                          launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
    76                                  ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && qsub ' modelname '.queue '];
     75                         if ~isempty(restart)
     76                                 launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && qsub ' modelname '.queue '];
     77                         else
     78                                 launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
     79                                         ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && qsub ' modelname '.queue '];
     80                         end
    7781                         issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
    7882                 end %}}}
  • issm/trunk-jpl/src/m/solve/loadresultsfromcluster.m

    r14622 r19335  
    3838        delete([md.miscellaneous.name '.errlog']);
    3939        delete([md.miscellaneous.name '.outbin']);
    40         if ~ispc(),
     40        if exist([md.private.runtimename '.tar.gz']) & ~ispc(),
    4141                delete([md.private.runtimename '.tar.gz']);
    4242        end
  • issm/trunk-jpl/src/m/solve/solve.m

    r19328 r19335  
    5454end
    5555
     56%If we are restarting, actually use the provided runtime name:
     57restart=getfieldvalue(options,'restart','');
    5658%First, build a runtime name that is unique
    57 if getfieldvalue(options,'runtimename',true),
    58         c=clock;
    59         md.private.runtimename=sprintf('%s-%02i-%02i-%04i-%02i-%02i-%02i-%i',md.miscellaneous.name,c(2),c(3),c(1),c(4),c(5),floor(c(6)),feature('GetPid'));
     59if restart==1
     60        %Leave the runtimename as is
    6061else
    61         md.private.runtimename=md.miscellaneous.name;
    62 end
    63 
    64 %If we are restarting, actually use the provided runtime name:
    65 restart=getfieldvalue(options,'restart','');
    66 if ~isempty(restart),
    67         md.private.runtimename=restart;
     62        if ~isempty(restart),
     63                md.private.runtimename=restart;
     64        elseif getfieldvalue(options,'runtimename',true),
     65                c=clock;
     66                md.private.runtimename=sprintf('%s-%02i-%02i-%04i-%02i-%02i-%02i-%i',md.miscellaneous.name,c(2),c(3),c(1),c(4),c(5),floor(c(6)),feature('GetPid'));
     67        else
     68                md.private.runtimename=md.miscellaneous.name;
     69        end
    6870end
    6971
     
    107109
    108110%Upload all required files
     111modelname = md.miscellaneous.name;
     112filelist  = {[modelname '.bin '] [modelname '.toolkits ']};
     113if ispc,
     114        filelist{end+1}=[modelname '.bat '];
     115else
     116        filelist{end+1}=[modelname '.queue '];
     117end
     118
     119if md.qmu.isdakota,
     120        filelist{end+1} = [modelname '.qmu.in'];
     121end
     122
    109123if isempty(restart),
    110         modelname = md.miscellaneous.name;
    111         filelist  = {[modelname '.bin '] [modelname '.toolkits ']};
    112         if ispc,
    113                 filelist{end+1}=[modelname '.bat '];
    114         else
    115                 filelist{end+1}=[modelname '.queue '];
    116         end
    117 
    118         if md.qmu.isdakota,
    119                 filelist{end+1} = [modelname '.qmu.in'];
    120         end
    121124        UploadQueueJob(cluster,md.miscellaneous.name,md.private.runtimename,filelist);
    122125end
    123126
    124127%launch queue job:
    125 LaunchQueueJob(cluster,md.miscellaneous.name,md.private.runtimename,filelist);
     128LaunchQueueJob(cluster,md.miscellaneous.name,md.private.runtimename,filelist,restart);
    126129
    127130%wait on lock
  • issm/trunk-jpl/src/m/solve/solve.py

    r19328 r19335  
    6262
    6363        #First, build a runtime name that is unique
    64         if options.getfieldvalue('runtimename',True):
    65                 c=datetime.datetime.now()
    66                 md.private.runtimename="%s-%02i-%02i-%04i-%02i-%02i-%02i-%i" % (md.miscellaneous.name,c.month,c.day,c.year,c.hour,c.minute,c.second,os.getpid())
     64        restart=options.getfieldvalue('restart','')
     65        if restart == 1:
     66                pass #do nothing
    6767        else:
    68                 md.private.runtimename=md.miscellaneous.name
    69        
    70         #If we are restarting, actually use the provided runtime name:
    71         restart=options.getfieldvalue('restart','')
    72         if restart:
    73                 md.private.runtimename=restart
    74                
     68                if restart:
     69                        md.private.runtimename=restart
     70                else:
     71                        if options.getfieldvalue('runtimename',True):
     72                                c=datetime.datetime.now()
     73                                md.private.runtimename="%s-%02i-%02i-%04i-%02i-%02i-%02i-%i" % (md.miscellaneous.name,c.month,c.day,c.year,c.hour,c.minute,c.second,os.getpid())
     74                        else:
     75                                md.private.runtimename=md.miscellaneous.name
     76
    7577        #if running qmu analysis, some preprocessing of dakota files using models
    7678        #fields needs to be carried out.
     
    102104
    103105        #Upload all required files:
     106        modelname = md.miscellaneous.name
     107        filelist  = [modelname+'.bin ',modelname+'.toolkits ',modelname+'.queue ']
     108        if md.qmu.isdakota:
     109                filelist.append(modelname+'.qmu.in')
     110
    104111        if not restart:
    105                 modelname = md.miscellaneous.name
    106                 filelist  = [modelname+'.bin ',modelname+'.toolkits ',modelname+'.queue ']
    107                 if md.qmu.isdakota:
    108                         filelist.append(modelname+'.qmu.in')
    109112                cluster.UploadQueueJob(md.miscellaneous.name,md.private.runtimename,filelist)
    110113       
    111114        #Launch job
    112         cluster.LaunchQueueJob(md.miscellaneous.name,md.private.runtimename,filelist)
     115        cluster.LaunchQueueJob(md.miscellaneous.name,md.private.runtimename,filelist,restart)
    113116
    114117        #wait on lock
Note: See TracChangeset for help on using the changeset viewer.