Continuum

Maximum length for name column in object ChangeFile is too small

Details

  • Type: Bug Bug
  • Status: Closed Closed
  • Priority: Major Major
  • Resolution: Fixed
  • Affects Version/s: 1.1-beta-2
  • Fix Version/s: 1.2
  • Component/s: Database
  • Labels:
    None
  • Complexity:
    Intermediate
  • Patch Submitted:
    Yes
  • Number of attachments :
    0

Description

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)

Issue Links

Activity

Hide
Olivier Lamy added a comment -

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

Show
Olivier Lamy added a comment - Currently the size is 512. Upgrade to 2048 or 1024 ?
Hide
Olivier Lamy added a comment -

fixed in rev 636909
bump size to 1024

Show
Olivier Lamy added a comment - fixed in rev 636909 bump size to 1024
Hide
Matt Kern added a comment - - 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.

Show
Matt Kern added a comment - - 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.
Hide
Olivier Lamy added a comment -

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.
Show
Olivier Lamy added a comment - 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.
Hide
Olivier Lamy added a comment -

comments added on the upgrade page.

Show
Olivier Lamy added a comment - comments added on the upgrade page.

People

Vote (0)
Watch (0)

Dates

  • Created:
    Updated:
    Resolved: