You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@continuum.apache.org by oc...@apache.org on 2009/01/05 08:37:36 UTC
svn commit: r731477 -
/continuum/branches/continuum-parallel-builds/continuum-core/src/main/java/org/apache/continuum/buildmanager/ParallelBuildsManager.java
Author: oching
Date: Sun Jan 4 23:37:36 2009
New Revision: 731477
URL: http://svn.apache.org/viewvc?rev=731477&view=rev
Log:
use the default overall build queue if no build queue is attached to the schedule
Modified:
continuum/branches/continuum-parallel-builds/continuum-core/src/main/java/org/apache/continuum/buildmanager/ParallelBuildsManager.java
Modified: continuum/branches/continuum-parallel-builds/continuum-core/src/main/java/org/apache/continuum/buildmanager/ParallelBuildsManager.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-parallel-builds/continuum-core/src/main/java/org/apache/continuum/buildmanager/ParallelBuildsManager.java?rev=731477&r1=731476&r2=731477&view=diff
==============================================================================
--- continuum/branches/continuum-parallel-builds/continuum-core/src/main/java/org/apache/continuum/buildmanager/ParallelBuildsManager.java (original)
+++ continuum/branches/continuum-parallel-builds/continuum-core/src/main/java/org/apache/continuum/buildmanager/ParallelBuildsManager.java Sun Jan 4 23:37:36 2009
@@ -351,13 +351,19 @@
OverallBuildQueue overallBuildQueue =
getOverallBuildQueue( projectId, CHECKOUT_QUEUE, defaultBuildDefinition.getSchedule().getBuildQueues() );
-
CheckOutTask checkoutTask =
new CheckOutTask( projectId, workingDirectory, projectName, scmUsername, scmPassword );
try
{
- log.info( "Project '" + projectName + "' added to overall build queue '" + overallBuildQueue.getName() + "'." );
- overallBuildQueue.addToCheckoutQueue( checkoutTask );
+ if( overallBuildQueue != null )
+ {
+ log.info( "Project '" + projectName + "' added to overall build queue '" + overallBuildQueue.getName() + "'." );
+ overallBuildQueue.addToCheckoutQueue( checkoutTask );
+ }
+ else
+ {
+ throw new BuildManagerException( "Unable to add project to checkout queue. No overall build queue configured." );
+ }
}
catch ( TaskQueueException e )
{
@@ -1018,6 +1024,11 @@
int size = 0;
int idx = 0;
+
+ // TODO:
+ // - the number of build queues to be used should respect the number of allowed builds in parallel!
+ // - what to do when the number of allowed builds in parallel is reduced and there are queued tasks?
+
try
{
for ( BuildQueue buildQueue : buildQueues )
@@ -1061,23 +1072,51 @@
}
}
+ // use default overall build queue if none is configured
if ( whereToBeQueued == null )
{
+ boolean found = false;
Set<Integer> keySet = overallBuildQueues.keySet();
for( Integer key : keySet )
{
- OverallBuildQueue overallBuildQueue = overallBuildQueues.get( key );
+ OverallBuildQueue overallBuildQueue = overallBuildQueues.get( key );
if( overallBuildQueue.getName().equals( ConfigurationService.DEFAULT_BUILD_QUEUE_NAME ) )
{
+ found = true;
return overallBuildQueue;
}
}
- //throw new BuildManagerException( "No build queue found." );
+
+ // no default "overall" build queue configured
+ if( !found )
+ {
+ try
+ {
+ // add the default build queue to the map
+ BuildQueue defaultBuildQueue = buildQueueDao.getBuildQueueByName( ConfigurationService.DEFAULT_BUILD_QUEUE_NAME );
+ if( defaultBuildQueue != null )
+ {
+ return createOverallBuildQueue( defaultBuildQueue );
+ }
+ else
+ {
+ throw new BuildManagerException( "No default build queue configured." );
+ }
+ }
+ catch ( ContinuumStoreException e )
+ {
+ throw new BuildManagerException( "Error encountered while retrieving default build queue from the database." );
+ }
+ catch ( ComponentLookupException e )
+ {
+ throw new BuildManagerException( "Error occurred while creating default build queue." );
+ }
+ }
}
return whereToBeQueued;
}
-
+
public void setBuildDefinitionDao( BuildDefinitionDao buildDefinitionDao )
{
this.buildDefinitionDao = buildDefinitionDao;
@@ -1086,22 +1125,17 @@
public void contextualize( Context context )
throws ContextException
{
- container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY );
+ container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY );
synchronized ( overallBuildQueues )
{
try
{
// create all the build queues configured in the database, not just the default!
- List<BuildQueue> buildQueues = buildQueueDao.getAllBuildQueues();
+ List<BuildQueue> buildQueues = buildQueueDao.getAllBuildQueues();
for( BuildQueue buildQueue : buildQueues )
- {
- OverallBuildQueue defaultOverallBuildQueue =
- (OverallBuildQueue) container.lookup( OverallBuildQueue.class );
- defaultOverallBuildQueue.setId( buildQueue.getId() );
- defaultOverallBuildQueue.setName( buildQueue.getName() );
-
- overallBuildQueues.put( defaultOverallBuildQueue.getId(), defaultOverallBuildQueue );
+ {
+ createOverallBuildQueue( buildQueue );
}
//BuildQueue defaultBuildQueue = configurationService.getDefaultBuildQueue();
}
@@ -1120,4 +1154,17 @@
{
this.container = container;
}
+
+ private OverallBuildQueue createOverallBuildQueue( BuildQueue defaultBuildQueue )
+ throws ComponentLookupException
+ {
+ OverallBuildQueue overallBuildQueue =
+ (OverallBuildQueue) container.lookup( OverallBuildQueue.class );
+ overallBuildQueue.setId( defaultBuildQueue.getId() );
+ overallBuildQueue.setName( defaultBuildQueue.getName() );
+
+ overallBuildQueues.put( overallBuildQueue.getId(), overallBuildQueue );
+
+ return overallBuildQueue;
+ }
}