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 2008/12/16 04:03:12 UTC
svn commit: r726931 - in /continuum/branches/continuum-parallel-builds:
continuum-base/continuum-configuration/src/main/java/org/apache/continuum/configuration/
continuum-commons/src/main/java/org/apache/maven/continuum/configuration/
continuum-core/sr...
Author: oching
Date: Mon Dec 15 19:03:11 2008
New Revision: 726931
URL: http://svn.apache.org/viewvc?rev=726931&view=rev
Log:
o updated some of the implementation of parallel builds manager & overall build queue
o fixed number of builds in parallel not being saved in configuration
Modified:
continuum/branches/continuum-parallel-builds/continuum-base/continuum-configuration/src/main/java/org/apache/continuum/configuration/DefaultContinuumConfiguration.java
continuum/branches/continuum-parallel-builds/continuum-commons/src/main/java/org/apache/maven/continuum/configuration/DefaultConfigurationService.java
continuum/branches/continuum-parallel-builds/continuum-core/src/main/java/org/apache/continuum/buildmanager/ParallelBuildsManager.java
continuum/branches/continuum-parallel-builds/continuum-core/src/main/java/org/apache/continuum/taskqueue/DefaultOverallBuildQueue.java
continuum/branches/continuum-parallel-builds/continuum-model/src/main/mdo/continuum.xml
continuum/branches/continuum-parallel-builds/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/ConfigurationAction.java
continuum/branches/continuum-parallel-builds/continuum-webapp/src/main/resources/localization/Continuum.properties
Modified: continuum/branches/continuum-parallel-builds/continuum-base/continuum-configuration/src/main/java/org/apache/continuum/configuration/DefaultContinuumConfiguration.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-parallel-builds/continuum-base/continuum-configuration/src/main/java/org/apache/continuum/configuration/DefaultContinuumConfiguration.java?rev=726931&r1=726930&r2=726931&view=diff
==============================================================================
--- continuum/branches/continuum-parallel-builds/continuum-base/continuum-configuration/src/main/java/org/apache/continuum/configuration/DefaultContinuumConfiguration.java (original)
+++ continuum/branches/continuum-parallel-builds/continuum-base/continuum-configuration/src/main/java/org/apache/continuum/configuration/DefaultContinuumConfiguration.java Mon Dec 15 19:03:11 2008
@@ -155,8 +155,6 @@
.getReleaseOutputDirectory() ) );
}
-
-
}
catch ( IOException e )
{
@@ -178,15 +176,15 @@
{
ContinuumConfigurationModel configurationModel = new ContinuumConfigurationModel();
configurationModel.setBaseUrl( this.generalConfiguration.getBaseUrl() );
-
-
+ configurationModel.setNumberOfBuildsInParallel( this.generalConfiguration.getNumberOfBuildsInParallel() );
+
// normally not null but NPE free is better !
if ( this.generalConfiguration.getBuildOutputDirectory() != null )
{
configurationModel.setBuildOutputDirectory( this.generalConfiguration.getBuildOutputDirectory()
- .getPath() );
- configurationModel.setNumberOfBuildsInParallel( this.generalConfiguration.getNumberOfBuildsInParallel() );
+ .getPath() );
}
+
if ( this.generalConfiguration.getWorkingDirectory() != null )
{
configurationModel.setWorkingDirectory( this.generalConfiguration.getWorkingDirectory().getPath() );
@@ -219,8 +217,6 @@
configurationModel.setReleaseOutputDirectory( this.generalConfiguration.getReleaseOutputDirectory()
.getPath() );
}
-
-
ContinuumConfigurationModelXpp3Writer writer = new ContinuumConfigurationModelXpp3Writer();
FileWriter fileWriter = new FileWriter( file );
Modified: continuum/branches/continuum-parallel-builds/continuum-commons/src/main/java/org/apache/maven/continuum/configuration/DefaultConfigurationService.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-parallel-builds/continuum-commons/src/main/java/org/apache/maven/continuum/configuration/DefaultConfigurationService.java?rev=726931&r1=726930&r2=726931&view=diff
==============================================================================
--- continuum/branches/continuum-parallel-builds/continuum-commons/src/main/java/org/apache/maven/continuum/configuration/DefaultConfigurationService.java (original)
+++ continuum/branches/continuum-parallel-builds/continuum-commons/src/main/java/org/apache/maven/continuum/configuration/DefaultConfigurationService.java Mon Dec 15 19:03:11 2008
@@ -46,7 +46,7 @@
{
private Logger log = LoggerFactory.getLogger( this.getClass() );
- // when adding requirement the template in spring-context.xml must be updated CONTINUUM-1207
+ // when adding a requirement, the template in spring-context.xml must be updated CONTINUUM-1207
/**
* @plexus.configuration default-value="${plexus.home}"
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=726931&r1=726930&r2=726931&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 Mon Dec 15 19:03:11 2008
@@ -428,27 +428,20 @@
public boolean isProjectInAnyCurrentBuild( int projectId )
throws BuildManagerException
{
- try
+ synchronized( overallBuildQueues )
{
- List<Object> objects = container.lookupList( ThreadedTaskQueueExecutor.class );
- for ( Object obj : objects )
+ Set<Integer> keys = overallBuildQueues.keySet();
+ for( Integer key : keys )
{
- log.info( "Task queue executor : " + obj );
- ThreadedTaskQueueExecutor executor = (ThreadedTaskQueueExecutor) obj;
- Task task = executor.getCurrentTask();
- if ( task instanceof BuildProjectTask )
+ OverallBuildQueue overallBuildQueue = overallBuildQueues.get( key );
+ BuildProjectTask task = (BuildProjectTask) overallBuildQueue.getBuildTaskQueueExecutor().getCurrentTask();
+ if( task != null && task.getProjectId() == projectId )
{
- log.info( "current task is a BuildProjectTask." );
return true;
}
}
+ return false;
}
- catch ( ComponentLookupException e )
- {
- throw new BuildManagerException( e.getMessage() );
- }
-
- return false;
}
public void prepareBuildProjects( Map<Integer, Integer> projectsBuildDefinitionsMap, int trigger )
@@ -727,8 +720,23 @@
public List<Task> getCurrentBuilds()
throws BuildManagerException
{
- List<Task> currentBuilds = new ArrayList<Task>();
- try
+ synchronized( overallBuildQueues )
+ {
+ List<Task> currentBuilds = new ArrayList<Task>();
+ Set<Integer> keys = overallBuildQueues.keySet();
+ for( Integer key : keys )
+ {
+ OverallBuildQueue overallBuildQueue = overallBuildQueues.get( key );
+ Task task = overallBuildQueue.getBuildTaskQueueExecutor().getCurrentTask();
+ if( task != null )
+ {
+ currentBuilds.add( task );
+ }
+ }
+
+ return currentBuilds;
+ }
+ /*try
{
List<Object> objects = container.lookupList( ThreadedTaskQueueExecutor.class );
for ( Object obj : objects )
@@ -745,34 +753,28 @@
catch ( ComponentLookupException e )
{
throw new BuildManagerException( e.getMessage() );
- }
-
- return currentBuilds;
+ }*/
}
public List<Task> getCurrentCheckouts()
throws BuildManagerException
{
- List<Task> currentCheckouts = new ArrayList<Task>();
- try
+ synchronized( overallBuildQueues )
{
- List<Object> objects = container.lookupList( ThreadedTaskQueueExecutor.class );
- for ( Object obj : objects )
+ List<Task> currentCheckouts = new ArrayList<Task>();
+ Set<Integer> keys = overallBuildQueues.keySet();
+ for( Integer key : keys )
{
- ThreadedTaskQueueExecutor executor = (ThreadedTaskQueueExecutor) obj;
- Task task = executor.getCurrentTask();
- if ( task instanceof CheckOutTask )
+ OverallBuildQueue overallBuildQueue = overallBuildQueues.get( key );
+ Task task = overallBuildQueue.getCheckoutTaskQueueExecutor().getCurrentTask();
+ if( task != null )
{
currentCheckouts.add( task );
}
}
+
+ return currentCheckouts;
}
- catch ( ComponentLookupException e )
- {
- throw new BuildManagerException( e.getMessage() );
- }
-
- return currentCheckouts;
}
public Map<String, List<Task>> getProjectsInBuildQueues()
Modified: continuum/branches/continuum-parallel-builds/continuum-core/src/main/java/org/apache/continuum/taskqueue/DefaultOverallBuildQueue.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-parallel-builds/continuum-core/src/main/java/org/apache/continuum/taskqueue/DefaultOverallBuildQueue.java?rev=726931&r1=726930&r2=726931&view=diff
==============================================================================
--- continuum/branches/continuum-parallel-builds/continuum-core/src/main/java/org/apache/continuum/taskqueue/DefaultOverallBuildQueue.java (original)
+++ continuum/branches/continuum-parallel-builds/continuum-core/src/main/java/org/apache/continuum/taskqueue/DefaultOverallBuildQueue.java Mon Dec 15 19:03:11 2008
@@ -31,13 +31,13 @@
import org.apache.maven.continuum.store.ContinuumStoreException;
import org.codehaus.plexus.PlexusContainer;
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
-import org.codehaus.plexus.logging.AbstractLogEnabled;
import org.codehaus.plexus.taskqueue.Task;
import org.codehaus.plexus.taskqueue.TaskQueue;
import org.codehaus.plexus.taskqueue.TaskQueueException;
import org.codehaus.plexus.taskqueue.execution.TaskQueueExecutor;
-import org.codehaus.plexus.taskqueue.execution.ThreadedTaskQueueExecutor;
import org.codehaus.plexus.util.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* "Overall" build queue which has a checkout queue and a build queue.
@@ -46,25 +46,12 @@
* @plexus.component role="org.apache.continuum.taskqueue.OverallBuildQueue" instantiation-strategy="per-lookup"
*/
public class DefaultOverallBuildQueue
- extends AbstractLogEnabled
implements OverallBuildQueue
{
/**
- * @plexus.requirement role-hint="build-project"
- */
- //private TaskQueue buildQueue;
-
- /**
- * @plexus.requirement role-hint="check-out-project"
- */
- //private TaskQueue checkoutQueue;
-
- /**
* @plexus.requirement
*/
private BuildDefinitionDao buildDefinitionDao;
-
- private PlexusContainer container;
/**
* @plexus.requirement role-hint="build-project"
@@ -79,6 +66,8 @@
private int id;
private String name;
+
+ private Logger log = LoggerFactory.getLogger( DefaultOverallBuildQueue.class );
public int getId()
{
@@ -145,7 +134,6 @@
return true;
}
}
-
return false;
}
@@ -164,7 +152,6 @@
return getCheckoutQueue().remove( task );
}
}
-
return false;
}
@@ -296,23 +283,13 @@
public void cancelBuildTask( int projectId )
throws ComponentLookupException
{
- List<Object> objects = container.lookupList( ThreadedTaskQueueExecutor.class );
- for ( Object obj : objects )
+ BuildProjectTask task = (BuildProjectTask) buildTaskQueueExecutor.getCurrentTask();
+ if( task != null && task.getProjectId() == projectId )
{
- ThreadedTaskQueueExecutor executor = (ThreadedTaskQueueExecutor) obj;
- Task task = executor.getCurrentTask();
- if ( task != null && task instanceof BuildProjectTask )
- {
- if ( ( (BuildProjectTask) task ).getProjectId() == projectId )
- {
- getLogger().info(
- "Cancelling build task for project '" + projectId + "' in task executor '" +
- executor );
- executor.cancelTask( task );
- }
- }
- }
-
+ log.info( "Cancelling build task for project '" + projectId + "' in task executor '" +
+ buildTaskQueueExecutor );
+ buildTaskQueueExecutor.cancelTask( task );
+ }
}
/**
@@ -321,20 +298,13 @@
public boolean cancelCurrentBuild()
throws ComponentLookupException
{
- List<Object> objects = container.lookupList( ThreadedTaskQueueExecutor.class );
- for ( Object obj : objects )
+ Task task = buildTaskQueueExecutor.getCurrentTask();
+ if( task != null )
{
- ThreadedTaskQueueExecutor executor = (ThreadedTaskQueueExecutor) obj;
- Task task = executor.getCurrentTask();
- if ( task != null && task instanceof BuildProjectTask )
- {
- BuildProjectTask buildTask = (BuildProjectTask) task;
- getLogger().info(
- "Cancelling task for project '" + buildTask.getProjectId() + "' in task executor '" +
- executor );
- executor.cancelTask( task );
- }
+ return buildTaskQueueExecutor.cancelTask( task );
}
+
+ log.info( "No build task currently executing on build executor: " + buildTaskQueueExecutor );
return false;
}
@@ -400,7 +370,7 @@
for ( BuildProjectTask buildProjectTask : tasks )
{
- getLogger().info( "cancel build for project " + buildProjectTask.getProjectId() );
+ log.info( "cancel build for project " + buildProjectTask.getProjectId() );
}
if ( !tasks.isEmpty() )
{
@@ -426,7 +396,6 @@
return getBuildQueue().remove( task );
}
}
-
return false;
}
@@ -462,11 +431,6 @@
return ( ( ParallelBuildsThreadedTaskQueueExecutor ) buildTaskQueueExecutor ).getQueue();
}
- /*public void setContainer( PlexusContainer container )
- {
- this.container = container;
- }*/
-
public TaskQueueExecutor getBuildTaskQueueExecutor()
{
return buildTaskQueueExecutor;
Modified: continuum/branches/continuum-parallel-builds/continuum-model/src/main/mdo/continuum.xml
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-parallel-builds/continuum-model/src/main/mdo/continuum.xml?rev=726931&r1=726930&r2=726931&view=diff
==============================================================================
--- continuum/branches/continuum-parallel-builds/continuum-model/src/main/mdo/continuum.xml (original)
+++ continuum/branches/continuum-parallel-builds/continuum-model/src/main/mdo/continuum.xml Mon Dec 15 19:03:11 2008
@@ -1273,6 +1273,12 @@
<type>String</type>
<defaultValue>release-output-directory</defaultValue>
</field>
+ <field>
+ <name>numberOfBuildsInParallel</name>
+ <version>1.1.4+</version>
+ <type>int</type>
+ <defaultValue>1</defaultValue>
+ </field>
</fields>
</class>
Modified: continuum/branches/continuum-parallel-builds/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/ConfigurationAction.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-parallel-builds/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/ConfigurationAction.java?rev=726931&r1=726930&r2=726931&view=diff
==============================================================================
--- continuum/branches/continuum-parallel-builds/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/ConfigurationAction.java (original)
+++ continuum/branches/continuum-parallel-builds/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/ConfigurationAction.java Mon Dec 15 19:03:11 2008
@@ -57,7 +57,7 @@
private String releaseOutputDirectory;
- private int numberOfAllowedBuildsinParallel;
+ private int numberOfAllowedBuildsinParallel = 1;
private boolean requireReleaseOutput;
@@ -101,11 +101,11 @@
releaseOutputDirectory = releaseOutputDirectoryFile.getAbsolutePath();
}
- if ( requireParallelBuilds )
- {
- numberOfAllowedBuildsinParallel = configuration.getNumberOfBuildsInParallel();
- }
-
+ //if ( requireParallelBuilds )
+ //{
+ numberOfAllowedBuildsinParallel = configuration.getNumberOfBuildsInParallel();
+ //}
+
String requireRelease = ServletActionContext.getRequest().getParameter( "requireReleaseOutput" );
setRequireReleaseOutput( new Boolean( requireRelease ) );
}
@@ -116,6 +116,11 @@
{
addActionError( "configuration.releaseOutputDirectory.required" );
}
+
+ if( numberOfAllowedBuildsinParallel <= 0 )
+ {
+ addActionError( "configuration.numberOfBuildsInParallel.invalid" );
+ }
return INPUT;
}
@@ -129,10 +134,10 @@
configuration.setBuildOutputDirectory( new File( buildOutputDirectory ) );
- if ( requireParallelBuilds )
- {
+ //if ( requireParallelBuilds )
+ //{
configuration.setNumberOfBuildsInParallel( numberOfAllowedBuildsinParallel );
- }
+ //}
if ( StringUtils.isNotEmpty( deploymentRepositoryDirectory ) )
{
@@ -255,6 +260,4 @@
{
this.requireParallelBuilds = requireParallelBuilds;
}
-
-
}
Modified: continuum/branches/continuum-parallel-builds/continuum-webapp/src/main/resources/localization/Continuum.properties
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-parallel-builds/continuum-webapp/src/main/resources/localization/Continuum.properties?rev=726931&r1=726930&r2=726931&view=diff
==============================================================================
--- continuum/branches/continuum-parallel-builds/continuum-webapp/src/main/resources/localization/Continuum.properties (original)
+++ continuum/branches/continuum-parallel-builds/continuum-webapp/src/main/resources/localization/Continuum.properties Mon Dec 15 19:03:11 2008
@@ -246,6 +246,7 @@
configuration.releaseOutputDirectory.label = Release Output Directory
configuration.releaseOutputDirectory.message = Enter the release output directory of the Continuum web application
configuration.releaseOutputDirectory.required = You must define a release output directory
+configuration.numberOfBuildsInParallel.invalid = Number of Allowed Builds in Parallel must be greater than zero
# ----------------------------------------------------------------------
# Page: Add Project