You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by db...@apache.org on 2005/11/21 12:03:37 UTC
svn commit: r345891 - in /geronimo/gbuild/trunk:
gbuild-agent-application/src/conf/
gbuild-agent/src/main/java/org/apache/geronimo/gbuild/agent/
gbuild-agent/src/main/resources/META-INF/plexus/
Author: dblevins
Date: Mon Nov 21 03:03:26 2005
New Revision: 345891
URL: http://svn.apache.org/viewcvs?rev=345891&view=rev
Log:
Fixed connection dropping issue for now at least. Flushed out the required regular expressions required for header flow and file include/write.
Nailed down the file include/write functionality for results aggregation.
Modified:
geronimo/gbuild/trunk/gbuild-agent-application/src/conf/application.xml
geronimo/gbuild/trunk/gbuild-agent/src/main/java/org/apache/geronimo/gbuild/agent/AbstractContinuumBuildAgent.java
geronimo/gbuild/trunk/gbuild-agent/src/main/java/org/apache/geronimo/gbuild/agent/ContinuumBuildAgent.java
geronimo/gbuild/trunk/gbuild-agent/src/main/java/org/apache/geronimo/gbuild/agent/FileIncludeExtention.java
geronimo/gbuild/trunk/gbuild-agent/src/main/java/org/apache/geronimo/gbuild/agent/HeaderIncludeExtention.java
geronimo/gbuild/trunk/gbuild-agent/src/main/java/org/apache/geronimo/gbuild/agent/PropertiesBuildTaskProducer.java
geronimo/gbuild/trunk/gbuild-agent/src/main/java/org/apache/geronimo/gbuild/agent/WriteIncludeFileExtention.java
geronimo/gbuild/trunk/gbuild-agent/src/main/resources/META-INF/plexus/components.xml
Modified: geronimo/gbuild/trunk/gbuild-agent-application/src/conf/application.xml
URL: http://svn.apache.org/viewcvs/geronimo/gbuild/trunk/gbuild-agent-application/src/conf/application.xml?rev=345891&r1=345890&r2=345891&view=diff
==============================================================================
--- geronimo/gbuild/trunk/gbuild-agent-application/src/conf/application.xml (original)
+++ geronimo/gbuild/trunk/gbuild-agent-application/src/conf/application.xml Mon Nov 21 03:03:26 2005
@@ -58,6 +58,30 @@
<implementation>org.apache.geronimo.gbuild.agent.MockContinuumNotificationDispatcher</implementation>
</component>
+ <component>
+ <role>org.apache.geronimo.gbuild.agent.BuildAgentExtention</role>
+ <role-hint>file-include</role-hint>
+ <implementation>org.apache.geronimo.gbuild.agent.FileIncludeExtention</implementation>
+ <requirements>
+ <requirement>
+ <role>org.apache.maven.continuum.configuration.ConfigurationService</role>
+ </requirement>
+ </requirements>
+ <configuration>
+ <pattern>^include.*</pattern>
+ </configuration>
+ </component>
+
+ <component>
+ <role>org.apache.geronimo.gbuild.agent.BuildAgentExtention</role>
+ <role-hint>general-headers</role-hint>
+ <implementation>org.apache.geronimo.gbuild.agent.HeaderIncludeExtention</implementation>
+ <configuration>
+ <pattern>^(project|build|header).*</pattern>
+ </configuration>
+ </component>
+
+
<!--
| Build Producer
-->
@@ -98,10 +122,10 @@
<role-hint>write-include-file</role-hint>
<implementation>org.apache.geronimo.gbuild.agent.WriteIncludeFileExtention</implementation>
<configuration>
- <include-pattern>^include\.</include-pattern>
+ <include-pattern>^include.*</include-pattern>
<file-extention>.properties</file-extention>
<results-directory>${plexus.home}/results</results-directory>
- <use-header>project.name</use-header>
+ <use-header>build.name</use-header>
<date-format>yyyy-MM-dd</date-format>
</configuration>
</component>
@@ -152,6 +176,55 @@
</appender>
</appenders>
<levels>
+ <level>
+ <hierarchy>org.apache.geronimo.gbuild.agent.BuildAgentExtention:file-include</hierarchy>
+ <level>INFO</level>
+ </level>
+ <level>
+ <hierarchy>org.apache.geronimo.gbuild.agent.BuildAgentExtention:general-headers</hierarchy>
+ <level>INFO</level>
+ </level>
+ <level>
+ <hierarchy>org.apache.geronimo.gbuild.agent.BuildResultsExtention:write-include-file</hierarchy>
+ <level>INFO</level>
+ </level>
+ <level>
+ <hierarchy>org.apache.geronimo.gbuild.agent.BuildAgentExtention:file-include</hierarchy>
+ <level>INFO</level>
+ </level>
+
+ <!--There was no such logger 'org.apache.maven.continuum.configuration.ConfigurationService' 8918836.-->
+ <!--There was no such logger 'org.apache.maven.continuum.execution.maven.m2.MavenBuilderHelper' 8918836.-->
+ <!--There was no such logger 'org.apache.geronimo.gbuild.agent.BuildResultsExtentionManager' 8918836.-->
+ <!--There was no such logger 'org.apache.maven.continuum.execution.ContinuumBuildExecutor:shell' 8918836.-->
+ <!--There was no such logger 'org.codehaus.plexus.action.Action:checkout-project' 8918836.-->
+ <!--There was no such logger 'org.apache.maven.continuum.buildcontroller.BuildController' 8918836.-->
+ <!--There was no such logger 'org.apache.maven.continuum.scm.ContinuumScm' 8918836.-->
+ <!--There was no such logger 'org.apache.maven.settings.MavenSettingsBuilder' 8918836.-->
+ <!--There was no such logger 'org.apache.geronimo.gbuild.agent.BuildResultsExtention:write-include-file' 8918836.-->
+ <!--There was no such logger 'org.apache.maven.continuum.utils.WorkingDirectoryService' 8918836.-->
+ <!--There was no such logger 'org.apache.maven.artifact.resolver.ArtifactResolver' 8918836.-->
+ <!--There was no such logger 'org.apache.geronimo.gbuild.agent.BuildAgentExtentionManager' 8918836.-->
+ <!--There was no such logger 'org.apache.geronimo.gbuild.agent.BuildAgent:build-producer' 8918836.-->
+ <!--There was no such logger 'org.codehaus.plexus.action.ActionManager' 8918836.-->
+ <!--There was no such logger 'org.apache.geronimo.gbuild.agent.BuildAgent:build-results' 8918836.-->
+ <!--There was no such logger 'org.apache.maven.continuum.execution.ContinuumBuildExecutor:maven2' 8918836.-->
+ <!--There was no such logger 'org.apache.maven.project.interpolation.ModelInterpolator' 8918836.-->
+ <!--There was no such logger 'org.apache.maven.continuum.execution.manager.BuildExecutorManager' 8918836.-->
+ <!--There was no such logger 'org.apache.maven.continuum.utils.shell.ShellCommandHelper' 8918836.-->
+ <!--There was no such logger 'org.apache.maven.continuum.execution.ContinuumBuildExecutor:maven-1' 8918836.-->
+ <!--There was no such logger 'org.apache.geronimo.gbuild.agent.BuildAgentExtention:file-include' 8918836.-->
+ <!--There was no such logger 'org.apache.maven.continuum.execution.maven.m1.MavenOneMetadataHelper' 8918836.-->
+ <!--There was no such logger 'org.codehaus.plexus.action.Action:execute-builder' 8918836.-->
+ <!--There was no such logger 'org.apache.maven.artifact.repository.metadata.RepositoryMetadataManager' 8918836.-->
+ <!--There was no such logger 'org.apache.maven.artifact.transform.ArtifactTransformation:release' 8918836.-->
+ <!--There was no such logger 'org.apache.maven.project.MavenProjectBuilder' 8918836.-->
+ <!--There was no such logger 'org.apache.maven.artifact.transform.ArtifactTransformation:snapshot' 8918836.-->
+ <!--There was no such logger 'org.apache.maven.scm.manager.ScmManager' 8918836.-->
+ <!--There was no such logger 'org.apache.maven.artifact.manager.WagonManager' 8918836.-->
+ <!--There was no such logger 'org.codehaus.plexus.action.Action:update-project-from-working-directory' 8918836.-->
+ <!--There was no such logger 'org.codehaus.plexus.action.Action:check-working-directory' 8918836.-->
+ <!--There was no such logger 'org.apache.maven.artifact.transform.ArtifactTransformation:latest' 8918836.-->
<!--<level>-->
<!--<hierarchy>org.codehaus.plexus.velocity</hierarchy>-->
<!--<level>WARN</level>-->
Modified: geronimo/gbuild/trunk/gbuild-agent/src/main/java/org/apache/geronimo/gbuild/agent/AbstractContinuumBuildAgent.java
URL: http://svn.apache.org/viewcvs/geronimo/gbuild/trunk/gbuild-agent/src/main/java/org/apache/geronimo/gbuild/agent/AbstractContinuumBuildAgent.java?rev=345891&r1=345890&r2=345891&view=diff
==============================================================================
--- geronimo/gbuild/trunk/gbuild-agent/src/main/java/org/apache/geronimo/gbuild/agent/AbstractContinuumBuildAgent.java (original)
+++ geronimo/gbuild/trunk/gbuild-agent/src/main/java/org/apache/geronimo/gbuild/agent/AbstractContinuumBuildAgent.java Mon Nov 21 03:03:26 2005
@@ -19,6 +19,7 @@
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Startable;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.StartingException;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.StoppingException;
+import org.codehaus.plexus.logging.Logger;
import org.activemq.ActiveMQConnectionFactory;
import javax.jms.ExceptionListener;
@@ -51,7 +52,7 @@
public synchronized void start() throws StartingException {
try {
- setClient(new Client(coordinatorUrl));
+ setClient(new Client(coordinatorUrl, this, getLogger()));
connection = getClient().getConnection();
} catch (Throwable e) {
getLogger().error("Could not create connection to: "+coordinatorUrl, e);
@@ -75,8 +76,17 @@
}
public void onException(JMSException ex) {
- getLogger().fatalError("JMS Exception occured. Shutting down client.", ex);
- setRun(false);
+ getLogger().fatalError("JMS Exception occured. Attempting reconnect.", ex);
+ try {
+ reconnect();
+ } catch (JMSException e) {
+ getLogger().error("Reconnect failed.", e);
+ }
+// setRun(false);
+ }
+
+ public synchronized void reconnect() throws JMSException {
+ this.client = client.reconnect();
}
public synchronized boolean isRunning() {
@@ -146,24 +156,39 @@
this.client = client;
}
- public static class Client {
+ public static class Client implements ExceptionListener {
private final String brokerUrl;
private final Connection connection;
private final Session session;
+ private final ExceptionListener listener;
+ private final Logger logger;
+ private boolean connected = true;
- private Client(String brokerUrl, Connection connection, Session session) {
- this.brokerUrl = brokerUrl;
+ private Client(Client old, Connection connection, Session session) {
+ this.brokerUrl = old.brokerUrl;
this.connection = connection;
this.session = session;
+ this.listener = old.listener;
+ this.logger = old.logger;
}
- public Client(String brokerUrl) throws JMSException {
+ public Client(String brokerUrl, ExceptionListener listener, Logger logger) throws JMSException {
this.brokerUrl = brokerUrl;
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerUrl);
connection = connectionFactory.createConnection();
-// connection.setExceptionListener(this);
+ connection.setExceptionListener(this);
connection.start();
+ this.listener = listener;
this.session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+ this.logger = logger;
+ }
+
+ public synchronized boolean isConnected() {
+ return connected;
+ }
+
+ private Logger getLogger() {
+ return logger;
}
public String getBrokerUrl() {
@@ -196,9 +221,10 @@
}
public synchronized Client reconnect() throws JMSException {
+ failed();
Connection connection = connect();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
- return new Client(brokerUrl, connection, session);
+ return new Client(this, connection, session);
}
public synchronized void close() throws JMSException {
@@ -211,23 +237,43 @@
}
private Connection connect(int tries) throws JMSException {
+
try {
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerUrl);
Connection connection = connectionFactory.createConnection();
-// connection.setExceptionListener(this);
+ connection.setExceptionListener(this);
connection.start();
+ getLogger().info("Client reconnect successful.");
return connection;
} catch (JMSException e) {
if (tries <= 0) {
+ getLogger().info("Client reconnect failed. Giving up.", e);
throw e;
} else {
try {
- Thread.sleep(5000);
+ int delay = 5000;
+ getLogger().info("Client reconnect failed. Trying again in "+delay+" milliseconds. ("+ e.getMessage()+")");
+ Thread.sleep(delay);
} catch (InterruptedException dontCare) {
}
return connect(--tries);
}
}
+ }
+
+ /**
+ * Marks this client as failed and returns its previous state
+ * @return false if the client was not previously in a failed state
+ */
+ private synchronized boolean failed() {
+ boolean failed = !connected;
+ connected = false;
+ return failed;
+ }
+
+ public void onException(JMSException jmsException) {
+ getLogger().info("JMSException "+this.hashCode());
+ this.listener.onException(jmsException);
}
}
}
Modified: geronimo/gbuild/trunk/gbuild-agent/src/main/java/org/apache/geronimo/gbuild/agent/ContinuumBuildAgent.java
URL: http://svn.apache.org/viewcvs/geronimo/gbuild/trunk/gbuild-agent/src/main/java/org/apache/geronimo/gbuild/agent/ContinuumBuildAgent.java?rev=345891&r1=345890&r2=345891&view=diff
==============================================================================
--- geronimo/gbuild/trunk/gbuild-agent/src/main/java/org/apache/geronimo/gbuild/agent/ContinuumBuildAgent.java (original)
+++ geronimo/gbuild/trunk/gbuild-agent/src/main/java/org/apache/geronimo/gbuild/agent/ContinuumBuildAgent.java Mon Nov 21 03:03:26 2005
@@ -103,7 +103,7 @@
try {
processMessages(client);
} catch (JMSException e) {
- onException(e);
+// onException(e);
}
}
@@ -116,7 +116,7 @@
MessageConsumer buildConsumer = client.createQueueConsumer(buildTaskQueue);
MessageProducer resultsProducer = client.createTopicProducer(buildResultsTopic);
- while (isRunning()) {
+ while (isRunning() && client.isConnected()) {
Message message = buildConsumer.receive(1000);
if (message instanceof ObjectMessage) {
processMessage(message, client, resultsProducer);
Modified: geronimo/gbuild/trunk/gbuild-agent/src/main/java/org/apache/geronimo/gbuild/agent/FileIncludeExtention.java
URL: http://svn.apache.org/viewcvs/geronimo/gbuild/trunk/gbuild-agent/src/main/java/org/apache/geronimo/gbuild/agent/FileIncludeExtention.java?rev=345891&r1=345890&r2=345891&view=diff
==============================================================================
--- geronimo/gbuild/trunk/gbuild-agent/src/main/java/org/apache/geronimo/gbuild/agent/FileIncludeExtention.java (original)
+++ geronimo/gbuild/trunk/gbuild-agent/src/main/java/org/apache/geronimo/gbuild/agent/FileIncludeExtention.java Mon Nov 21 03:03:26 2005
@@ -46,6 +46,8 @@
}
public void postProcess(Map build, Map results) {
+ getLogger().debug("Pattern '"+pattern+"'");
+
Iterator keys = build.keySet().iterator();
while (keys.hasNext()) {
@@ -53,9 +55,10 @@
String key = (String) keys.next();
if (key.matches(pattern)){
-
+ getLogger().debug("Match '"+key+"'");
include(key, build, results);
-
+ } else {
+ getLogger().debug("No Match '"+key+"'");
}
}
}
@@ -70,11 +73,15 @@
return;
}
- getLogger().info("Found entry " + fileNameKey + " = " + fileName);
+ getLogger().debug("Found entry " + fileNameKey + " = " + fileName);
- File workingDirectory = configurationService.getWorkingDirectory();
+ File dir = configurationService.getWorkingDirectory();
- File file = new File(workingDirectory, fileName);
+ int projectId = ContinuumBuildAgent.getProjectId(build);
+
+ dir = new File(dir, Integer.toString(projectId));
+
+ File file = new File(dir, fileName);
if (!file.exists()) {
@@ -85,8 +92,11 @@
try {
+ getLogger().debug("Reading "+file.getAbsolutePath());
+
String content = FileUtils.fileRead(file.getAbsolutePath());
+ getLogger().debug("Including "+content.length()+" - "+file.getAbsolutePath());
results.put(fileNameKey, content);
}
Modified: geronimo/gbuild/trunk/gbuild-agent/src/main/java/org/apache/geronimo/gbuild/agent/HeaderIncludeExtention.java
URL: http://svn.apache.org/viewcvs/geronimo/gbuild/trunk/gbuild-agent/src/main/java/org/apache/geronimo/gbuild/agent/HeaderIncludeExtention.java?rev=345891&r1=345890&r2=345891&view=diff
==============================================================================
--- geronimo/gbuild/trunk/gbuild-agent/src/main/java/org/apache/geronimo/gbuild/agent/HeaderIncludeExtention.java (original)
+++ geronimo/gbuild/trunk/gbuild-agent/src/main/java/org/apache/geronimo/gbuild/agent/HeaderIncludeExtention.java Mon Nov 21 03:03:26 2005
@@ -36,6 +36,8 @@
}
public void postProcess(Map build, Map results) {
+ getLogger().debug("Pattern '"+pattern+"'");
+
Iterator keys = build.keySet().iterator();
while (keys.hasNext()) {
@@ -43,9 +45,10 @@
String key = (String) keys.next();
if (key.matches(pattern)){
-
+ getLogger().debug("Match '"+key+"'");
include(key, build, results);
-
+ } else {
+ getLogger().debug("No Match '"+key+"'");
}
}
}
Modified: geronimo/gbuild/trunk/gbuild-agent/src/main/java/org/apache/geronimo/gbuild/agent/PropertiesBuildTaskProducer.java
URL: http://svn.apache.org/viewcvs/geronimo/gbuild/trunk/gbuild-agent/src/main/java/org/apache/geronimo/gbuild/agent/PropertiesBuildTaskProducer.java?rev=345891&r1=345890&r2=345891&view=diff
==============================================================================
--- geronimo/gbuild/trunk/gbuild-agent/src/main/java/org/apache/geronimo/gbuild/agent/PropertiesBuildTaskProducer.java (original)
+++ geronimo/gbuild/trunk/gbuild-agent/src/main/java/org/apache/geronimo/gbuild/agent/PropertiesBuildTaskProducer.java Mon Nov 21 03:03:26 2005
@@ -81,7 +81,10 @@
getLogger().debug("buildTaskQueue "+buildTaskQueue);
File dir = new File(watchDirectory);
- scanner = new DirectoryMonitor(dir, this, pollInterval, getLogger().getChildLogger("scanner"));
+ dir.mkdirs();
+ scanner = new DirectoryMonitor(dir, this, pollInterval, getLogger());
+
+ getLogger().info("Watching "+dir.getAbsolutePath());
super.start();
}
@@ -131,7 +134,7 @@
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
- int id = getInteger(def, "project.id");
+ int id = Integer.parseInt(getString(def, "project.id"));
String scmUrl = getString(def, "project.scmUrl");
@@ -182,6 +185,8 @@
map.put(key, value);
+ map.put("build.name", key.replaceFirst("build.",""));
+
map.put(KEY_STORE, store);
map.put(KEY_PROJECT_ID, new Integer(project.getId()));
Modified: geronimo/gbuild/trunk/gbuild-agent/src/main/java/org/apache/geronimo/gbuild/agent/WriteIncludeFileExtention.java
URL: http://svn.apache.org/viewcvs/geronimo/gbuild/trunk/gbuild-agent/src/main/java/org/apache/geronimo/gbuild/agent/WriteIncludeFileExtention.java?rev=345891&r1=345890&r2=345891&view=diff
==============================================================================
--- geronimo/gbuild/trunk/gbuild-agent/src/main/java/org/apache/geronimo/gbuild/agent/WriteIncludeFileExtention.java (original)
+++ geronimo/gbuild/trunk/gbuild-agent/src/main/java/org/apache/geronimo/gbuild/agent/WriteIncludeFileExtention.java Mon Nov 21 03:03:26 2005
@@ -64,10 +64,12 @@
public void start() throws StartingException {
directory = new File(resultsDirectory);
+ directory.mkdirs();
assert directory.exists(): "File specified does not exist. " + directory.getAbsolutePath();
assert directory.isDirectory(): "File specified is not a directory. " + directory.getAbsolutePath();
assert directory.canWrite(): "Directory specified is not writable. " + directory.getAbsolutePath();
+ getLogger().info("Include files will be written to "+directory.getAbsolutePath());
dateFormatter = new SimpleDateFormat(dateFormat);
}
@@ -75,33 +77,42 @@
}
public void execute(Map context) throws Exception {
+ getLogger().debug("Pattern "+includePattern);
+ try {
+ String header = (String) context.get(useHeader);
- String header = (String) context.get(useHeader);
-
- for (Iterator iterator = context.entrySet().iterator(); iterator.hasNext();) {
- Map.Entry entry = (Map.Entry) iterator.next();
- String key = (String) entry.getKey();
- Object value = entry.getValue();
-
- if (key.startsWith(includePattern)){
-
- String fileName = header;
- fileName += key.replaceFirst(includePattern, "");
- fileName += "-"+ dateFormatter.format(new Date());
- fileName += fileExtention;
-
- write(fileName, (String)value);
+ for (Iterator iterator = context.entrySet().iterator(); iterator.hasNext();) {
+ Map.Entry entry = (Map.Entry) iterator.next();
+ String key = (String) entry.getKey();
+ Object value = entry.getValue();
+
+ if (key.matches(includePattern)){
+ getLogger().info("Found include pattern "+key);
+ String fileName = header;
+ fileName += key.replaceFirst(includePattern, "");
+ fileName += "-"+ dateFormatter.format(new Date());
+ fileName += fileExtention;
+
+ write(fileName, (String)value);
+ } else {
+ getLogger().debug("No Match "+key);
+ }
}
+ } catch (Exception e) {
+ e.printStackTrace();
}
}
private void write(String fileName, String content) {
+ File outputFile = new File(directory, fileName);
try {
- FileOutputStream file = new FileOutputStream(fileName);
+ getLogger().info("Writing "+content.length()+" characters to "+outputFile.getAbsolutePath());
+ FileOutputStream file = new FileOutputStream(outputFile);
file.write(content.getBytes());
+ file.flush();
file.close();
} catch (IOException e) {
- getLogger().error("Could not write to file "+fileName, e);
+ getLogger().error("Could not write to file "+outputFile.getAbsolutePath(), e);
}
}
}
Modified: geronimo/gbuild/trunk/gbuild-agent/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewcvs/geronimo/gbuild/trunk/gbuild-agent/src/main/resources/META-INF/plexus/components.xml?rev=345891&r1=345890&r2=345891&view=diff
==============================================================================
--- geronimo/gbuild/trunk/gbuild-agent/src/main/resources/META-INF/plexus/components.xml (original)
+++ geronimo/gbuild/trunk/gbuild-agent/src/main/resources/META-INF/plexus/components.xml Mon Nov 21 03:03:26 2005
@@ -90,7 +90,7 @@
</requirement>
</requirements>
<configuration>
- <pattern>^include\.</pattern>
+ <pattern>^include</pattern>
</configuration>
</component>
@@ -99,7 +99,7 @@
<role-hint>general-headers</role-hint>
<implementation>org.apache.geronimo.gbuild.agent.HeaderIncludeExtention</implementation>
<configuration>
- <pattern>^(project|build|header)\.</pattern>
+ <pattern>^(project|build|header).*</pattern>
</configuration>
</component>
@@ -155,7 +155,7 @@
<role-hint>write-include-file</role-hint>
<implementation>org.apache.geronimo.gbuild.agent.WriteIncludeFileExtention</implementation>
<configuration>
- <include-pattern>^include\.</include-pattern>
+ <include-pattern>^include.*</include-pattern>
<file-extention>.properties</file-extention>
<results-directory>results</results-directory>
<use-header>project.name</use-header>