Issue Details (XML | Word | Printable)

Key: CONTINUUM-1688
Type: Bug Bug
Status: Closed Closed
Resolution: Fixed
Priority: Major Major
Assignee: Olivier Lamy
Reporter: Olivier Lamy
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
Continuum

Maximum length for name column in object ChangeFile is too small

Created: 10/Mar/08 12:45 PM   Updated: 10/Sep/08 11:38 AM   Resolved: 10/Sep/08 11:38 AM
Return to search
Component/s: Database
Affects Version/s: 1.1-beta-2
Fix Version/s: 1.2

Time Tracking:
Not Specified

Issue Links:
Duplicate
 
Related
 

Complexity: Intermediate
Patch Submitted: Yes


 Description  « Hide

This bug is similar to a bunch of other bugs like this, it seems the data model has been consistently designed with too few characters in the name field. This particular bugs occurs when Continuum tries to store the test results (SuiteResult in the model). Using -Dmaven.test.skip=true made the problem disappear.

I've attached a very simple fix for the problem, however, I note that TestCaseFailure has no stash.maxSize set, and as soon as my Test breaks it will probably crash with the same problem.

Here's the stack trace:

863290102 [Thread-6] ERROR org.codehaus.plexus.taskqueue.execution.TaskQueueExecutor:build-project - Error executing task
edu.emory.mathcs.backport.java.util.concurrent.ExecutionException: javax.jdo.JDOFatalUserException: Attempt to store value "/new-web/newweb-erp-integration/trunk/src/main/ja
va/com/pointcarbon/erp/agresso/domain/agressostatus/AcuhistrStatus.java (from /new-web/newweb-erp-integration/trunk/src/main/java/com/pointcarbon/erp/agresso/domain/agressos
tatus/AcuhistrStatusEnum.java:4297)" in column ""NAME"" that has maximum length of 255. Please correct your data!
at edu.emory.mathcs.backport.java.util.concurrent.FutureTask.getResult(FutureTask.java:299)
at edu.emory.mathcs.backport.java.util.concurrent.FutureTask.get(FutureTask.java:118)
at org.codehaus.plexus.taskqueue.execution.ThreadedTaskQueueExecutor$ExecutorRunnable.waitForTask(ThreadedTaskQueueExecutor.java:159)
at org.codehaus.plexus.taskqueue.execution.ThreadedTaskQueueExecutor$ExecutorRunnable.run(ThreadedTaskQueueExecutor.java:127)
Caused by: javax.jdo.JDOFatalUserException: Attempt to store value "/new-web/newweb-erp-integration/trunk/src/main/java/com/pointcarbon/erp/agresso/domain/agressostatus/Acuh
istrStatus.java (from /new-web/newweb-erp-integration/trunk/src/main/java/com/pointcarbon/erp/agresso/domain/agressostatus/AcuhistrStatusEnum.java:4297)" in column ""NAME""
that has maximum length of 255. Please correct your data!
at org.jpox.store.rdbms.mapping.CharRDBMSMapping.setString(CharRDBMSMapping.java:214)
at org.jpox.store.mapping.SingleFieldMapping.setString(SingleFieldMapping.java:203)
at org.jpox.store.rdbms.fieldmanager.ParameterSetter.storeStringField(ParameterSetter.java:122)
at org.jpox.state.StateManagerImpl.providedStringField(StateManagerImpl.java:2757)
at org.apache.maven.continuum.model.scm.ChangeFile.jdoProvideField(ChangeFile.java)
at org.apache.maven.continuum.model.scm.ChangeFile.jdoProvideFields(ChangeFile.java)
at org.jpox.state.StateManagerImpl.provideFields(StateManagerImpl.java:3115)
at org.jpox.store.rdbms.request.InsertRequest.execute(InsertRequest.java:252)
at org.jpox.store.rdbms.table.ClassTable.insert(ClassTable.java:2519)
at org.jpox.store.StoreManager.insert(StoreManager.java:920)
at org.jpox.state.StateManagerImpl.internalMakePersistent(StateManagerImpl.java:3667)
at org.jpox.state.StateManagerImpl.makePersistent(StateManagerImpl.java:3646)
at org.jpox.AbstractPersistenceManager.internalMakePersistent(AbstractPersistenceManager.java:1198)
at org.jpox.AbstractPersistenceManager.makePersistentInternal(AbstractPersistenceManager.java:1243)
at org.jpox.store.rdbms.scostore.FKListStore.validateElementForWriting(FKListStore.java:1231)
at org.jpox.store.rdbms.scostore.FKListStore.internalAdd(FKListStore.java:772)
at org.jpox.store.rdbms.scostore.AbstractListStore.addAll(AbstractListStore.java:386)
at org.jpox.store.mapping.CollectionMapping.postInsert(CollectionMapping.java:209)
at org.jpox.store.rdbms.request.InsertRequest.execute(InsertRequest.java:464)
at org.jpox.store.rdbms.table.ClassTable.insert(ClassTable.java:2519)
at org.jpox.store.StoreManager.insert(StoreManager.java:920)
at org.jpox.state.StateManagerImpl.internalMakePersistent(StateManagerImpl.java:3667)
at org.jpox.state.StateManagerImpl.makePersistent(StateManagerImpl.java:3646)
at org.jpox.AbstractPersistenceManager.internalMakePersistent(AbstractPersistenceManager.java:1198)
at org.jpox.AbstractPersistenceManager.makePersistentInternal(AbstractPersistenceManager.java:1243)
at org.jpox.store.rdbms.scostore.FKListStore.validateElementForWriting(FKListStore.java:1231)
at org.jpox.store.rdbms.scostore.FKListStore.internalAdd(FKListStore.java:772)
at org.jpox.store.rdbms.scostore.AbstractListStore.addAll(AbstractListStore.java:386)
at org.jpox.store.mapping.CollectionMapping.postInsert(CollectionMapping.java:209)
at org.jpox.store.rdbms.request.InsertRequest.execute(InsertRequest.java:464)
at org.jpox.store.rdbms.table.ClassTable.insert(ClassTable.java:2519)
at org.jpox.store.StoreManager.insert(StoreManager.java:920)
at org.jpox.state.StateManagerImpl.internalMakePersistent(StateManagerImpl.java:3667)
at org.jpox.state.StateManagerImpl.makePersistent(StateManagerImpl.java:3646)
at org.jpox.AbstractPersistenceManager.internalMakePersistent(AbstractPersistenceManager.java:1198)
at org.jpox.AbstractPersistenceManager.makePersistentInternal(AbstractPersistenceManager.java:1243)
at org.jpox.store.mapping.PersistenceCapableMapping.setObject(PersistenceCapableMapping.java:450)
at org.jpox.store.rdbms.fieldmanager.ParameterSetter.storeObjectField(ParameterSetter.java:144)
at org.jpox.state.StateManagerImpl.providedObjectField(StateManagerImpl.java:2771)
at org.apache.maven.continuum.model.project.BuildResult.jdoProvideField(BuildResult.java)
at org.apache.maven.continuum.model.project.BuildResult.jdoProvideFields(BuildResult.java)
at org.jpox.state.StateManagerImpl.provideFields(StateManagerImpl.java:3115)
at org.jpox.store.rdbms.request.InsertRequest.execute(InsertRequest.java:252)
at org.jpox.store.rdbms.table.ClassTable.insert(ClassTable.java:2519)
at org.jpox.store.StoreManager.insert(StoreManager.java:920)
at org.jpox.state.StateManagerImpl.internalMakePersistent(StateManagerImpl.java:3667)
at org.jpox.state.StateManagerImpl.makePersistent(StateManagerImpl.java:3646)
at org.jpox.AbstractPersistenceManager.internalMakePersistent(AbstractPersistenceManager.java:1198)
at org.jpox.AbstractPersistenceManager.makePersistent(AbstractPersistenceManager.java:1261)
at org.codehaus.plexus.jdo.PlexusJdoUtils.makePersistent(PlexusJdoUtils.java:175)
at org.apache.maven.continuum.store.JdoContinuumStore.makePersistent(JdoContinuumStore.java:763)
at org.apache.maven.continuum.store.JdoContinuumStore.addBuildResult(JdoContinuumStore.java:436)
at org.apache.maven.continuum.buildcontroller.DefaultBuildController.makeAndStoreBuildResult(DefaultBuildController.java:686)
at org.apache.maven.continuum.buildcontroller.DefaultBuildController.updateBuildResult(DefaultBuildController.java:230)
at org.apache.maven.continuum.buildcontroller.DefaultBuildController.performAction(DefaultBuildController.java:444)
at org.apache.maven.continuum.buildcontroller.DefaultBuildController.build(DefaultBuildController.java:145)
at org.apache.maven.continuum.buildcontroller.BuildProjectTaskExecutor.executeTask(BuildProjectTaskExecutor.java:50)
at org.codehaus.plexus.taskqueue.execution.ThreadedTaskQueueExecutor$ExecutorRunnable$1.run(ThreadedTaskQueueExecutor.java:116)
at edu.emory.mathcs.backport.java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:442)
at edu.emory.mathcs.backport.java.util.concurrent.FutureTask.run(FutureTask.java:176)
at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
at java.lang.Thread.run(Thread.java:595)



Olivier Lamy added a comment - 10/Mar/08 12:46 PM

Currently the size is 512.
Upgrade to 2048 or 1024 ?


Olivier Lamy added a comment - 13/Mar/08 05:50 PM

fixed in rev 636909
bump size to 1024


Matt Kern added a comment - 10/Apr/08 11:17 AM - edited

You might consider setting it to either 8192+19, 131072+19 or unbounded, assuming the database supports this. The error in question is caused by a string "PATH, (from PATH:REV)". Linux PATH_MAX is 4096 and Windows Unicode paths can be up to 32k characters. I can see legitimate, non-pathological cases tripping up over any other arbitrary limit.


Olivier Lamy added a comment - 10/Sep/08 02:06 AM

It looks database vendor doesn't 8192 string length.
I propose :

  • reduce to 8000
  • control the size before inserting in database and reduce the string if it's long to prevent sql error.

Olivier Lamy added a comment - 10/Sep/08 11:38 AM

comments added on the upgrade page.