Continuum
  1. Continuum
  2. CONTINUUM-1688

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

            • Assignee:
              Olivier Lamy
              Reporter:
              Olivier Lamy
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: