[Anthill-pro] Archiving a build life in 3.4.9 issue

Anderson, Eric Eric.Anderson at agedwards.com
Thu Feb 28 16:24:45 CST 2008


The NAME column in WORKFLOW_DEFINITION is set in the mysql schema are
set to not allow NULL, but a name is not being set when an archive job
is created.

mysql> desc WORKFLOW_DEFINITION;
+---------------------+---------------+------+-----+---------+-------+
| Field               | Type          | Null | Key | Default | Extra |
+---------------------+---------------+------+-----+---------+-------+
| ID                  | bigint(20)    | NO   | PRI |         |       |
| VERSION             | decimal(10,0) | NO   |     | 0       |       |
| NAME                | varchar(64)   | NO   |     |         |       |
| DESCRIPTION         | varchar(255)  | YES  |     | NULL    |       |
| IS_LIBRARY          | decimal(10,0) | NO   |     | 0       |       |
| LIFE_CYCLE_MODEL_ID | bigint(20)    | YES  | MUL | NULL    |       |
| SOURCE_CONFIG_TYPE  | varchar(255)  | YES  |     | NULL    |       |
| FOLDER_ID           | bigint(20)    | YES  | MUL | NULL    |       |
+---------------------+---------------+------+-----+---------+-------+
8 rows in set (0.05 sec)

This results in a following exception being shown to the user when the
"archive" button is clicked for a build life.  I think however, that
this is a symptom of the fact that the GenericJobConfig was already
created, but it tries to create it again since the WorkflowDefinition is
not found to exist.

IllegalStateException:
com.urbancode.anthill3.domain.jobconfig.generic.GenericJobConfig:
Persistent IDs cannot be changed once set

More Info
java.lang.IllegalStateException:
com.urbancode.anthill3.domain.jobconfig.generic.GenericJobConfig:
Persistent IDs cannot be changed once set
	at
com.urbancode.anthill3.domain.persistent.AbstractPersistent.setId(Abstra
ctPersistent.java:91)
	at
com.urbancode.anthill3.domain.persistent.HiLoIdentityGenerator.assignIde
ntity(HiLoIdentityGenerator.java:62)
	at
com.urbancode.anthill3.persistence.UnitOfWorkDefault.commit0(UnitOfWorkD
efault.java:127)
	at
com.urbancode.anthill3.persistence.UnitOfWork.commit(UnitOfWork.java:700
)
	at
com.urbancode.anthill3.web.controller.ControllerServlet.doPost(Controlle
rServlet.java:326)
	at
com.urbancode.anthill3.web.controller.ControllerServlet.doGet(Controller
Servlet.java:160)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
tionFilterChain.java:269)
	at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
erChain.java:188)
	at
com.urbancode.anthill3.web.util.LicenseFilter.doFilter(LicenseFilter.jav
a:78)
	at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
tionFilterChain.java:215)
	at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
erChain.java:188)
	at
com.urbancode.anthill3.web.util.SecurityFilter.doFilter(SecurityFilter.j
ava:132)
	at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
tionFilterChain.java:215)
	at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
erChain.java:188)
	at
com.urbancode.anthill3.web.util.AuthorityFilter.doFilter(AuthorityFilter
.java:67)
	at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
tionFilterChain.java:215)
	at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
erChain.java:188)
	at
com.urbancode.anthill3.web.security.DisableSessionUrlFilter.doFilter(Dis
ableSessionUrlFilter.java:114)
	at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
tionFilterChain.java:215)
	at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
erChain.java:188)
	at
com.urbancode.anthill3.web.security.SecureSessionFilter.doFilter(SecureS
essionFilter.java:114)
	at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
tionFilterChain.java:215)
	at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
erChain.java:188)
	at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv
e.java:213)
	at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv
e.java:174)
	at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java
:127)
	at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java
:117)
	at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.
java:108)
	at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:1
51)
	at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:87
4)
	at
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.proc
essConnection(Http11BaseProtocol.java:665)
	at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint
.java:528)
	at
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollow
erWorkerThread.java:81)
	at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool
.java:689)
	at java.lang.Thread.run(Thread.java:595)

For example, if I try to archive five times, I get five different job
configs.

mysql> SELECT NAME, DESCRIPTION, PROJECT_ID FROM JOB_CONFIG WHERE
PROJECT_ID = 252 AND NAME = 'Archive Job Config';
+--------------------+--------------------------------------------------
----+------------+
| NAME               | DESCRIPTION
| PROJECT_ID |
+--------------------+--------------------------------------------------
----+------------+
| Archive Job Config | Anthill3 internally created Job Config for
archiving |        252 |
| Archive Job Config | Anthill3 internally created Job Config for
archiving |        252 |
| Archive Job Config | Anthill3 internally created Job Config for
archiving |        252 |
| Archive Job Config | Anthill3 internally created Job Config for
archiving |        252 |
| Archive Job Config | Anthill3 internally created Job Config for
archiving |        252 |
+--------------------+--------------------------------------------------
----+------------+
5 rows in set (0.00 sec)

The server log reveals the following cause (mysql tracing enabled):

/* conn id 0 */ PREPARE debug_stmt_33535 FROM "
            INSERT INTO WORKFLOW_DEFINITION (
              ID,
              VERSION,
              NAME,
              DESCRIPTION,
              LIFE_CYCLE_MODEL_ID,
              SOURCE_CONFIG_TYPE,
              IS_LIBRARY,
              FOLDER_ID
            ) VALUES (
              ?, ?, ?, ?,
              ?, ?, ?, ?
            )
    ";

/* conn id 0 */ SET @debug_stmt_param33535_0=1025;
/* conn id 0 */ SET @debug_stmt_param33535_1=0;
/* conn id 0 */ SET @debug_stmt_param33535_2=NULL;
/* conn id 0 */ SET @debug_stmt_param33535_3=NULL;
/* conn id 0 */ SET @debug_stmt_param33535_4=6;
/* conn id 0 */ SET
@debug_stmt_param33535_5='com.urbancode.anthill3.domain.sour
ce.cvs.CvsSourceConfig';
/* conn id 0 */ SET @debug_stmt_param33535_6=0;
/* conn id 0 */ SET @debug_stmt_param33535_7=NULL;
/* conn id 0 */ EXECUTE debug_stmt_33535 USING @debug_stmt_param33535_0,
@debug_
stmt_param33535_1, @debug_stmt_param33535_2, @debug_stmt_param33535_3,
@debug_st
mt_param33535_4, @debug_stmt_param33535_5, @debug_stmt_param33535_6,
@debug_stmt
_param33535_7;

2008-02-28 17:00:41,843 ERROR http-0.0.0.0-7337-Processor14
com.urbancode.anthil
l3.domain.workflow.WorkflowDefinitionDaoSql - Error storing
WorkflowDefinition i
n database: Column 'NAME' cannot be null
java.sql.SQLException: Column 'NAME' cannot be null
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2975)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1600)
        at
com.mysql.jdbc.ServerPreparedStatement.serverExecute(ServerPreparedSt
atement.java:1129)
        at
com.mysql.jdbc.ServerPreparedStatement.executeInternal(ServerPrepared
Statement.java:681)
        at
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java
:1368)

Thanks!
Eric P. Anderson
Development Frameworks Team
A.G. Edwards & Sons, Inc. a division of Wachovia Securities, LLC.
314-955-0060


A.G. Edwards outgoing and incoming e-mails are electronically
archived and subject to review and/or disclosure to someone other 
than the recipient.

A.G. Edwards is a division of Wachovia Securities, LLC.





More information about the Anthill-pro mailing list