Subversion Repositories DevTools

Rev

Rev 6914 | Rev 7176 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 6914 Rev 7033
Line 8... Line 8...
8
import com.erggroup.buildtool.ripple.RunLevel.BuildState;
8
import com.erggroup.buildtool.ripple.RunLevel.BuildState;
9
import com.erggroup.buildtool.utilities.MutableDate;
9
import com.erggroup.buildtool.utilities.MutableDate;
10
 
10
 
11
import java.sql.SQLException;
11
import java.sql.SQLException;
12
 
12
 
13
import org.apache.log4j.Logger;
13
import org.slf4j.Logger;
-
 
14
import org.slf4j.LoggerFactory;
14
 
15
 
15
/**
16
/**
16
 * Slave Thread sub component
17
 * Slave Thread sub component
17
 */
18
 */
18
public class SlaveThread extends BuildThread
19
public class SlaveThread extends BuildThread
Line 21... Line 22...
21
    /**
22
    /**
22
     * Logger
23
     * Logger
23
     * 
24
     * 
24
     * @attribute
25
     * @attribute
25
     */
26
     */
26
    private static final Logger mLogger = Logger.getLogger(SlaveThread.class);
27
    private static final Logger mLogger = LoggerFactory.getLogger(SlaveThread.class);
27
    
28
    
28
    /** Holds the buildFile content
29
    /** Holds the buildFile content
29
     * 
30
     * 
30
     */
31
     */
31
    protected String mBuildFileContent = null;
32
    protected String mBuildFileContent = null;
Line 56... Line 57...
56
 
57
 
57
        while (!exit)
58
        while (!exit)
58
        {
59
        {
59
            try
60
            try
60
            {
61
            {
61
                mLogger.fatal("run calling sleepCheck");
62
                mLogger.error("run calling sleepCheck");
62
                mPhase.setPhase("sleepCheck");
63
                mPhase.setPhase("sleepCheck");
63
                sleepCheck();
64
                sleepCheck();
64
                
65
                
65
                mLogger.fatal("run calling rippleEngine.collectMetaData");
66
                mLogger.error("run calling rippleEngine.collectMetaData");
66
                mPhase.setPhase("collectMetaData");
67
                mPhase.setPhase("collectMetaData");
67
                mRippleEngine.collectMetaData();
68
                mRippleEngine.collectMetaData();
68
 
69
 
69
                if (Thread.currentThread().isInterrupted())
70
                if (Thread.currentThread().isInterrupted())
70
                {
71
                {
Line 79... Line 80...
79
                }
80
                }
80
 
81
 
81
                // allowed to proceed
82
                // allowed to proceed
82
                if (mUnitTest.compareTo("unit test consume build files") != 0)
83
                if (mUnitTest.compareTo("unit test consume build files") != 0)
83
                {
84
                {
84
                    mLogger.fatal("run calling allowedToProceed");
85
                    mLogger.error("run calling allowedToProceed");
85
                    mPhase.setPhase("allowedToProceed");
86
                    mPhase.setPhase("allowedToProceed");
86
                    allowedToProceed(false);
87
                    allowedToProceed(false);
87
                    mLogger.info("run allowedToProceed returned");
88
                    mLogger.info("run allowedToProceed returned");
88
                }
89
                }
89
 
90
 
90
                // Indicate that the Slave is WAITING - for a job
91
                // Indicate that the Slave is WAITING - for a job
91
                mPhase.setPhase("Waiting for work");
92
                mPhase.setPhase("Waiting for work");
92
                mLogger.fatal("run changing run level to WAITING for rcon_id " + mRconId);
93
                mLogger.error("run changing run level to WAITING for rcon_id " + mRconId);
93
 
94
 
94
 
95
 
95
                // Wait for Slave to be set as Active
96
                // Wait for Slave to be set as Active
96
                while (!BuildDaemon.mShutDown)
97
                while (!BuildDaemon.mShutDown)
97
                {
98
                {
Line 177... Line 178...
177
                    // entire build log
178
                    // entire build log
178
                    mPhase.setPhase("flagStartBuildCycle");
179
                    mPhase.setPhase("flagStartBuildCycle");
179
                    flagStartBuildCycle();
180
                    flagStartBuildCycle();
180
                    mReporting.resetData();
181
                    mReporting.resetData();
181
                    
182
                    
182
                    mLogger.fatal("Collect fresh MetaData");
183
                    mLogger.error("Collect fresh MetaData");
183
                    mPhase.setPhase("collectMetaData");
184
                    mPhase.setPhase("collectMetaData");
184
                    mRippleEngine.collectMetaData();
185
                    mRippleEngine.collectMetaData();
185
                    
186
                    
186
                    // Save the build file
187
                    // Save the build file
187
                    mLogger.fatal("Save buildfile");
188
                    mLogger.error("Save buildfile");
188
                    mPhase.setPhase("Save buildfile");
189
                    mPhase.setPhase("Save buildfile");
189
                    saveBuildFile(mBuildFileContent);
190
                    saveBuildFile(mBuildFileContent);
190
 
191
 
191
                    // deliver change to product baseline
192
                    // deliver change to product baseline
192
                    mLogger.fatal("run calling setViewUp");
193
                    mLogger.error("run calling setViewUp");
193
                    mPhase.setPhase("Setup View for build");
194
                    mPhase.setPhase("Setup View for build");
194
                    deliverChange("AbtSetUp", true, true);
195
                    deliverChange("AbtSetUp", true, true);
195
 
196
 
196
                    mLogger.fatal("run calling deliverChange - the actual build");
197
                    mLogger.error("run calling deliverChange - the actual build");
197
                    mPhase.setPhase("deliverChange for Build");
198
                    mPhase.setPhase("deliverChange for Build");
198
                    deliverChange(null, true, false);
199
                    deliverChange(null, true, false);
199
                    
200
                    
200
                    mLogger.fatal("run calling deliverChange on AbtTearDown");
201
                    mLogger.error("run calling deliverChange on AbtTearDown");
201
                    mPhase.setPhase("AbtTearDown");
202
                    mPhase.setPhase("AbtTearDown");
202
                    deliverChange("AbtTearDown", false, true);
203
                    deliverChange("AbtTearDown", false, true);
203
 
204
 
204
                    if (mReporting.buildFailureLogFile != null)
205
                    if (mReporting.buildFailureLogFile != null)
205
                    {
206
                    {
206
                        mLogger.fatal("run calling excludeFromBuild");
207
                        mLogger.error("run calling excludeFromBuild");
207
                        mPhase.setPhase("excludeFromBuild");
208
                        mPhase.setPhase("excludeFromBuild");
208
                        mReleaseManager.excludeFromBuild(false, 
209
                        mReleaseManager.excludeFromBuild(false, 
209
                                                         mReporting.packageVersionId,
210
                                                         mReporting.packageVersionId,
210
                                                         mReporting.packageVersion, 
211
                                                         mReporting.packageVersion, 
211
                                                         mRtagId, 
212
                                                         mRtagId, 
Line 223... Line 224...
223
            //---------------------------------------------------------------
224
            //---------------------------------------------------------------
224
            //    Build loop exception handling (only)
225
            //    Build loop exception handling (only)
225
            //
226
            //
226
            catch (ShouldNotContinueExpection e)
227
            catch (ShouldNotContinueExpection e)
227
            {
228
            {
228
                mLogger.fatal("ShouldNotContinueExpection:" + e.getMessage());
229
                mLogger.error("ShouldNotContinueExpection:" + e.getMessage());
229
            }
230
            }
230
            catch (SQLException e)
231
            catch (SQLException e)
231
            {
232
            {
232
                // oracle connection issues
233
                // oracle connection issues
233
                //  Request a prolonged sleep at the start of the build loop
234
                //  Request a prolonged sleep at the start of the build loop
234
                mLogger.fatal("run oracle connection issues");
235
                mLogger.error("run oracle connection issues");
235
                mException = true;
236
                mException = true;
236
            } 
237
            } 
237
            catch (ExitException e)
238
            catch (ExitException e)
238
            {
239
            {
239
                mLogger.warn("run ExitException");
240
                mLogger.warn("run ExitException");
Line 248... Line 249...
248
                // BuildSystem exception - a (possibly) correctable error
249
                // BuildSystem exception - a (possibly) correctable error
249
                // Flag as recoverable
250
                // Flag as recoverable
250
                //    - Can't create XML build file
251
                //    - Can't create XML build file
251
                //    - 
252
                //    - 
252
                // 
253
                // 
253
                mLogger.fatal("run BuildSystemException");
254
                mLogger.error("run BuildSystemException");
254
                mPhase.setPhase("BuildSystemException indefinitePause");
255
                mPhase.setPhase("BuildSystemException indefinitePause");
255
                notifyIndefinitePause(e.getMessage());
256
                notifyIndefinitePause(e.getMessage());
256
                mReleaseManager.indefinitePause(false);
257
                mReleaseManager.indefinitePause(false);
257
                mException = true;
258
                mException = true;
258
                mRecoverable = true;
259
                mRecoverable = true;
Line 262... Line 263...
262
            {
263
            {
263
                // Buildtool exception - an uncorrectable error
264
                // Buildtool exception - an uncorrectable error
264
                //    - Can't parse XML build file
265
                //    - Can't parse XML build file
265
                //    - 
266
                //    - 
266
                // 
267
                // 
267
                mLogger.fatal("run BuildToolException");
268
                mLogger.error("run BuildToolException");
268
                mPhase.setPhase("BuildToolException indefinitePause");
269
                mPhase.setPhase("BuildToolException indefinitePause");
269
                notifyIndefinitePause(e.getMessage());
270
                notifyIndefinitePause(e.getMessage());
270
                mReleaseManager.indefinitePause(false);
271
                mReleaseManager.indefinitePause(false);
271
                mException = true;
272
                mException = true;
272
            }
273
            }
Line 338... Line 339...
338
            throw new ExitException();
339
            throw new ExitException();
339
        }
340
        }
340
        
341
        
341
        try
342
        try
342
        {
343
        {
343
            mLogger.fatal("allowedToContinue calling mReleaseManager.connect");                      
344
            mLogger.error("allowedToContinue calling mReleaseManager.connect");                      
344
            mReleaseManager.connect();
345
            mReleaseManager.connect();
345
            
346
            
346
            //  Ensure that the machine is a part of the current build set
347
            //  Ensure that the machine is a part of the current build set
347
            mLogger.fatal("allowedToContinue calling mReleaseManager.queryReleaseConfig");                      
348
            mLogger.error("allowedToContinue calling mReleaseManager.queryReleaseConfig");                      
348
            if ( !mReleaseManager.queryReleaseConfig(mRtagId, mRconId, BuildDaemon.mHostname, getMode(), mStartTime) )
349
            if ( !mReleaseManager.queryReleaseConfig(mRtagId, mRconId, BuildDaemon.mHostname, getMode(), mStartTime) )
349
            {
350
            {
350
                mLogger.warn("allowedToContinue queryReleaseConfig failed");
351
                mLogger.warn("allowedToContinue queryReleaseConfig failed");
351
                mReleaseManager.disconnect();
352
                mReleaseManager.disconnect();
352
                throw new ExitException();
353
                throw new ExitException();
353
            }
354
            }
354
            
355
            
355
            
356
            
356
            //  Check for scheduled downtime or indefinite pause
357
            //  Check for scheduled downtime or indefinite pause
357
            MutableDate resumeTime = new MutableDate();
358
            MutableDate resumeTime = new MutableDate();
358
            mLogger.fatal("allowedToContinue calling mReleaseManager.queryRunLevelSchedule");                      
359
            mLogger.error("allowedToContinue calling mReleaseManager.queryRunLevelSchedule");                      
359
            if ( !mReleaseManager.queryRunLevelSchedule(resumeTime) )
360
            if ( !mReleaseManager.queryRunLevelSchedule(resumeTime) )
360
            {
361
            {
361
              mLogger.info("allowedToContinue scheduled downtime");
362
              mLogger.info("allowedToContinue scheduled downtime");
362
              mReleaseManager.disconnect();
363
              mReleaseManager.disconnect();
363
              throw new ShouldNotContinueExpection("Scheduled downtime");
364
              throw new ShouldNotContinueExpection("Scheduled downtime");
364
            }
365
            }
365
            
366
            
366
            //
367
            //
367
            //  If commanded to pause, then wait around until the command has been removed.
368
            //  If commanded to pause, then wait around until the command has been removed.
368
            //
369
            //
369
            mLogger.fatal("allowedToContinue calling mReleaseManager.queryDirectedRunLevel");                      
370
            mLogger.error("allowedToContinue calling mReleaseManager.queryDirectedRunLevel");                      
370
            if ( !mReleaseManager.queryDirectedRunLevel(mRconId) )
371
            if ( !mReleaseManager.queryDirectedRunLevel(mRconId) )
371
            {
372
            {
372
                mLogger.fatal("allowedToContinue Pause Detected");
373
                mLogger.error("allowedToContinue Pause Detected");
373
                throw new ShouldNotContinueExpection("Pause Detected");
374
                throw new ShouldNotContinueExpection("Pause Detected");
374
            }
375
            }
375
          
376
          
376
        }
377
        }
377
        finally
378
        finally
378
        {
379
        {
379
          // this block is executed regardless of what happens in the try block
380
          // this block is executed regardless of what happens in the try block
380
          // even if an exception is thrown
381
          // even if an exception is thrown
381
          // ensure disconnect
382
          // ensure disconnect
382
          mLogger.fatal("allowedToContinue calling mReleaseManager.disconnect");                      
383
          mLogger.error("allowedToContinue calling mReleaseManager.disconnect");                      
383
          mReleaseManager.disconnect();
384
          mReleaseManager.disconnect();
384
        }
385
        }
385
 
386
 
386
        // One last test for a shut down request
387
        // One last test for a shut down request
387
        if (BuildDaemon.mShutDown)
388
        if (BuildDaemon.mShutDown)