Subversion Repositories DevTools

Rev

Rev 814 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 814 Rev 816
Line 98... Line 98...
98
   */
98
   */
99
  BuildThread()
99
  BuildThread()
100
  {
100
  {
101
    super(mThreadGroup, "");
101
    super(mThreadGroup, "");
102
    mLogger.debug("BuildThread");
102
    mLogger.debug("BuildThread");
103
    mRunLevel = RunLevel.IDLE;
-
 
104
    mSleep = false;
103
    mSleep = false;
105
    mReleaseManager = new ReleaseManager();
104
    mReleaseManager = new ReleaseManager();
106
    
105
    
107
    // no need to be synchronized - BuildThreads are instantiated in a single thread
106
    // no need to be synchronized - BuildThreads are instantiated in a single thread
108
    if ( mResumeTimerTask == null )
107
    if ( mResumeTimerTask == null )
Line 142... Line 141...
142
    
141
    
143
    // IMPORTANT - this is done AFTER a Thread.sleep by design
142
    // IMPORTANT - this is done AFTER a Thread.sleep by design
144
    // In the case of an SQLException (signifying a database access issue)
143
    // In the case of an SQLException (signifying a database access issue)
145
    // avoid accessing the database immediately
144
    // avoid accessing the database immediately
146
    mRunLevel = RunLevel.IDLE;
145
    mRunLevel = RunLevel.IDLE;
-
 
146
    mLogger.warn("allowedToProceed changing run level to IDLE for rcon_id " + mRconId);
147
    mRunLevel.persist(mReleaseManager, mRconId);
147
    mRunLevel.persist(mReleaseManager, mRconId);
148
    boolean proceed = false;
148
    boolean proceed = false;
149
    
149
    
150
    while ( !proceed )
150
    while ( !proceed )
151
    {
151
    {
Line 161... Line 161...
161
      if ( !mReleaseManager.queryRunLevelSchedule(resumeTime) )
161
      if ( !mReleaseManager.queryRunLevelSchedule(resumeTime) )
162
      {
162
      {
163
        mLogger.info("allowedToProceed scheduled downtime");
163
        mLogger.info("allowedToProceed scheduled downtime");
164
        mReleaseManager.disconnect();
164
        mReleaseManager.disconnect();
165
        mRunLevel = RunLevel.PAUSED;
165
        mRunLevel = RunLevel.PAUSED;
-
 
166
        mLogger.warn("allowedToProceed changing run level to PAUSED for rcon_id " + mRconId);
166
        mRunLevel.persist(mReleaseManager, mRconId);
167
        mRunLevel.persist(mReleaseManager, mRconId);
167
        
168
        
168
        synchronized(mSynchroniser)
169
        synchronized(mSynchroniser)
169
        {
170
        {
170
          // contain the schedule and wait in the same synchronized block to prevent a deadlock
171
          // contain the schedule and wait in the same synchronized block to prevent a deadlock
Line 230... Line 231...
230
        }
231
        }
231
      }
232
      }
232
    }
233
    }
233
 
234
 
234
    mRunLevel = RunLevel.WAITING;
235
    mRunLevel = RunLevel.WAITING;
-
 
236
    mLogger.warn("allowedToProceed changing run level to WAITING for rcon_id " + mRconId);
235
    mRunLevel.persist(mReleaseManager, mRconId);
237
    mRunLevel.persist(mReleaseManager, mRconId);
236
 
238
 
237
  }
239
  }
238
 
240
 
239
  /**periodically 
241
  /**periodically 
Line 258... Line 260...
258
      if ( !hasSufficientDiskSpace() )
260
      if ( !hasSufficientDiskSpace() )
259
      {
261
      {
260
        mLogger.warn("checkEnvironment below disk free threshold");
262
        mLogger.warn("checkEnvironment below disk free threshold");
261
        exit = false;
263
        exit = false;
262
        mRunLevel = RunLevel.CANNOT_CONTINUE;
264
        mRunLevel = RunLevel.CANNOT_CONTINUE;
-
 
265
        mLogger.warn("checkEnvironment changing run level to CANNOT_CONTINUE for rcon_id " + mRconId);
263
        mRunLevel.persist(mReleaseManager, mRconId);
266
        mRunLevel.persist(mReleaseManager, mRconId);
264
        try
267
        try
265
        {
268
        {
266
          // to do, sleep for periodicMs
269
          // to do, sleep for periodicMs
267
          if ( mGbebuildfilter.compareTo("unit test check environment") != 0 )
270
          if ( mGbebuildfilter.compareTo("unit test check environment") != 0 )
Line 277... Line 280...
277
        }
280
        }
278
      }
281
      }
279
    }
282
    }
280
 
283
 
281
    mRunLevel = RunLevel.ACTIVE;    
284
    mRunLevel = RunLevel.ACTIVE;    
-
 
285
    mLogger.warn("checkEnvironment changing run level to ACTIVE for rcon_id " + mRconId);
282
    mRunLevel.persist(mReleaseManager, mRconId);
286
    mRunLevel.persist(mReleaseManager, mRconId);
283
  }
287
  }
284
 
288
 
285
  /**performs disk housekeeping which involves deleting build directories > 5 days old
289
  /**performs disk housekeeping which involves deleting build directories > 5 days old
286
   * refer to the sequence diagram check environment
290
   * refer to the sequence diagram check environment
Line 372... Line 376...
372
          retVal = true;
376
          retVal = true;
373
        }
377
        }
374
      }
378
      }
375
      else
379
      else
376
      {
380
      {
377
        freeSpace = cwd.getFreeSpace();
381
        freeSpace = cwd.getUsableSpace();
378
        
382
        
379
        if ( freeSpace < 5368709120L )
383
        if ( freeSpace < 5368709120L )
380
        {
384
        {
-
 
385
          mLogger.warn("hasSufficientDiskSpace on " + cwd.getAbsolutePath() + " freeSpace " + freeSpace);
381
          retVal = false;
386
          retVal = false;
382
        }
387
        }
383
      }
388
      }
384
    }
389
    }
385
    catch( SecurityException e )
390
    catch( SecurityException e )