It's all about the answers!

Ask a question

CQ Import: Can tag field be extended beyond 1k?


Gerry Cullen (4651) | asked Dec 19 '11, 5:18 p.m.
We are in the midst of converting from CQ to RTC, and are trying to import some CQ multi-select list values into RTC as tags. We have run into a problem where one of the fields holding these values contains more than 1k of text, and trying to update the imported CQ record in RTC fails when we try to apply these values. I was wondering if there is a way to extend the amount of data a tag field holds. I'm also wondering if there is a limit on the number tags or the total size in bytes of the possible tag values for a field.

This is what we're doing - In CQ, the field in question holds a multi-select list of values that the user selects by querying a predefined table with all possible values. By clicking Add, the user is taken to a separate dialog window where they can enter a search string that will return a list of possible values, then use the <Ctrl> key to select multiple entries from this list. Clicking OK in this dialog window will save the values in the original multi-select list. The user can repeat the Add process as many times as they need to populate the list. They can also select mulitple entries from the list and hit a Remove button to have the values removed from the list.

At this time, the predefined CQ table users select from holds about 250 entries, each of which are from 10-80 bytes long. We were going to auto-populate this list of possible values as tags in RTC, then later restrict which users could add additional tags. The auto-complete feature of typing in the tags field would be a reasonable alternative to allowing the users to search for multiple values. This field typically only has a handful of entries stored in it, so all our records except for one got updated just fine. All of these reasons are why we originally thought that using tags would be a good fit.

We did not realize there was a 1k restriction on the data being saved in the tags field. I'm also not sure how many of the values from the predefined CQ table have been brought over yet, and if having 250 10-80 byte values would be OK for a tag field.

Any suggestions would be appreciated!

2 answers



permanent link
Gerry Cullen (4651) | answered Dec 19 '11, 5:49 p.m.
Here is the exception reported when we try to do a CSV update to the RTC work item that had been imported from CQ in order to populate the tag field with a value that is too large:


!ENTRY com.ibm.team.workitem.rcp.core 4 0 2011-12-19 11:38:58.739
!MESSAGE Could not update work item from 20111218_2129_WTXCreateCSVUpdates.pl.importUpdateCSV.csv (Line 37835)
!STACK 0
com.ibm.team.repository.common.TeamRepositoryException: Exception saving work item
at com.ibm.team.workitem.rcp.core.internal.bugzilla.BugzillaImporter$2.execute(BugzillaImporter.java:400)
at com.ibm.team.workitem.client.WorkItemOperation.execute(WorkItemOperation.java:85)
at com.ibm.team.workitem.client.WorkItemOperation.doRun(WorkItemOperation.java:272)
at com.ibm.team.workitem.client.WorkItemOperation.run(WorkItemOperation.java:177)
at com.ibm.team.workitem.client.WorkItemOperation.run(WorkItemOperation.java:136)
at com.ibm.team.workitem.rcp.core.internal.bugzilla.BugzillaImporter.saveWorkItem(BugzillaImporter.java:440)
at com.ibm.team.workitem.rcp.core.internal.bugzilla.BugzillaImporter.importBugs(BugzillaImporter.java:277)
at com.ibm.team.workitem.rcp.core.internal.bugzilla.BugzillaImporter.runImport(BugzillaImporter.java:185)
at com.ibm.team.workitem.rcp.core.internal.bugzilla.BugzillaImporter.access$0(BugzillaImporter.java:136)
at com.ibm.team.workitem.rcp.core.internal.bugzilla.BugzillaImporter$1.run(BugzillaImporter.java:128)
at com.ibm.team.workitem.common.internal.util.Utils.runImport(Utils.java:496)
at com.ibm.team.workitem.rcp.core.internal.bugzilla.BugzillaImporter.doImport(BugzillaImporter.java:126)
at com.ibm.team.workitem.rcp.ui.internal.wizards.inport.WorkItemImportWizard$1.run(WorkItemImportWizard.java:168)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)


Caused by: com.ibm.team.repository.common.validation.PropertyConstraintException: Validation errors for item: type = WorkItem, itemId = [UUID _Mf7k0CjcEeGFj-6T0HzxLA]
Value of attribute "mediumStringExtensions.value" is 3409 bytes, which is greater than the allowed encoded length of 1000 bytes.


at com.ibm.team.repository.service.internal.RdbRepositoryDataMediator.failIfNecessary(RdbRepositoryDataMediator.java:376)
at com.ibm.team.repository.service.internal.RdbRepositoryDataMediator.validateItem(RdbRepositoryDataMediator.java:358)
at com.ibm.team.repository.service.internal.RdbRepositoryDataMediator.saveAuditable(RdbRepositoryDataMediator.java:742)
at com.ibm.team.repository.service.internal.RepositoryItemService.doSaveAuditable(RepositoryItemService.java:1341)
at com.ibm.team.repository.service.internal.RepositoryItemService.doSaveItem(RepositoryItemService.java:1290)
at com.ibm.team.repository.service.internal.RepositoryItemService.access$12(RepositoryItemService.java:1268)
at com.ibm.team.repository.service.internal.RepositoryItemService$19.run(RepositoryItemService.java:1262)
at com.ibm.team.repository.service.internal.RepositoryItemService$19.run(RepositoryItemService.java)
at com.ibm.team.repository.service.internal.rdb.RepositoryDatabase.runTransaction(RepositoryDatabase.java:312)
at com.ibm.team.repository.service.internal.rdb.RepositoryDatabase.runInTransaction(RepositoryDatabase.java:236)
at com.ibm.team.repository.service.internal.TransactionService.runInTransaction(TransactionService.java:119)
at sun.reflect.GeneratedMethodAccessor209.invoke(null)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.invoke(ExportProxyServiceRecord.java:370)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.access$0(ExportProxyServiceRecord.java:356)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord$ExportedServiceInvocationHandler.invoke(ExportProxyServiceRecord.java:56)
at $Proxy1076.runInTransaction(null)
at com.ibm.team.repository.service.internal.RepositoryItemService.saveItem(RepositoryItemService.java:1259)
at sun.reflect.GeneratedMethodAccessor332.invoke(null)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.invoke(ExportProxyServiceRecord.java:370)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.access$0(ExportProxyServiceRecord.java:356)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord$ExportedServiceInvocationHandler.invoke(ExportProxyServiceRecord.java:56)
at $Proxy1114.saveItem(null)
at com.ibm.team.repository.service.internal.ComponentRepositoryItemService.saveItem(ComponentRepositoryItemService.java:550)
at com.ibm.team.workitem.service.internal.WorkItemRepositoryService.plainSave(WorkItemRepositoryService.java:525)
at com.ibm.team.workitem.service.internal.WorkItemRepositoryService.save(WorkItemRepositoryService.java:405)
at com.ibm.team.workitem.service.internal.WorkItemRepositoryService.save(WorkItemRepositoryService.java:391)
at com.ibm.team.workitem.service.internal.WorkItemRepositoryService.access$3(WorkItemRepositoryService.java:387)
at com.ibm.team.workitem.service.internal.WorkItemRepositoryService$1.run(WorkItemRepositoryService.java:270)
at com.ibm.team.workitem.service.internal.WorkItemRepositoryService$1.run(WorkItemRepositoryService.java:1)
at com.ibm.team.repository.service.internal.TransactionService$2.run(TransactionService.java:204)
at com.ibm.team.repository.service.internal.rdb.RepositoryDatabase$Transaction.run(RepositoryDatabase.java:458)
at com.ibm.team.repository.service.internal.rdb.RepositoryDatabase$1.run(RepositoryDatabase.java:285)
at com.ibm.team.repository.service.internal.rdb.ConnectionPoolService.withCurrentConnection(ConnectionPoolService.java:379)
at sun.reflect.GeneratedMethodAccessor178.invoke(null)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.invoke(ExportProxyServiceRecord.java:370)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.access$0(ExportProxyServiceRecord.java:356)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord$ExportedServiceInvocationHandler.invoke(ExportProxyServiceRecord.java:56)
at $Proxy982.withCurrentConnection(null)
at com.ibm.team.repository.service.internal.rdb.RepositoryDatabase.runTransaction(RepositoryDatabase.java:281)
at com.ibm.team.repository.service.internal.rdb.RepositoryDatabase.runInTransaction(RepositoryDatabase.java:236)
at com.ibm.team.repository.service.internal.TransactionService.runInTransaction(TransactionService.java:119)
at com.ibm.team.repository.service.internal.TransactionService.runInTransaction(TransactionService.java:88)
at sun.reflect.GeneratedMethodAccessor306.invoke(null)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.invoke(ExportProxyServiceRecord.java:370)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.access$0(ExportProxyServiceRecord.java:356)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord$ExportedServiceInvocationHandler.invoke(ExportProxyServiceRecord.java:56)
at $Proxy1075.runInTransaction(null)
at com.ibm.team.repository.service.AbstractService.runInTransaction(AbstractService.java:947)
at com.ibm.team.workitem.service.internal.WorkItemRepositoryService.saveTransaction(WorkItemRepositoryService.java:259)
at com.ibm.team.workitem.service.internal.WorkItemRepositoryService.save(WorkItemRepositoryService.java:217)
at sun.reflect.GeneratedMethodAccessor1021.invoke(null)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.invoke(ExportProxyServiceRecord.java:370)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.access$0(ExportProxyServiceRecord.java:356)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord$ExportedServiceInvocationHandler.invoke(ExportProxyServiceRecord.java:56)
at $Proxy1419.save(null)
at sun.reflect.GeneratedMethodAccessor1021.invoke(null)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at com.ibm.team.repository.servlet.AbstractTeamServerServlet.handleMethod(AbstractTeamServerServlet.java:1285)
at com.ibm.team.repository.servlet.AbstractTeamServerServlet.executeMethod(AbstractTeamServerServlet.java:882)
at com.ibm.team.repository.servlet.AbstractTeamServerServlet.doPost(AbstractTeamServerServlet.java:672)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:738)
at com.ibm.team.repository.servlet.AbstractTeamServerServlet.handleRequest2(AbstractTeamServerServlet.java:1871)
at com.ibm.team.repository.servlet.AbstractTeamServerServlet.handleRequest(AbstractTeamServerServlet.java:1725)
at com.ibm.team.repository.servlet.AbstractTeamServerServlet.access$0(AbstractTeamServerServlet.java:1710)
at com.ibm.team.repository.servlet.AbstractTeamServerServlet$1.service(AbstractTeamServerServlet.java:198)
at com.ibm.team.repository.internal.service.auth.impl.JAuthHandler.handleRequest(JAuthHandler.java:47)
at sun.reflect.GeneratedMethodAccessor421.invoke(null)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.invoke(ExportProxyServiceRecord.java:370)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord.access$0(ExportProxyServiceRecord.java:356)
at org.eclipse.soda.sat.core.internal.record.ExportProxyServiceRecord$ExportedServiceInvocationHandler.invoke(ExportProxyServiceRecord.java:56)
at $Proxy1134.handleRequest(null)
at com.ibm.team.repository.servlet.AbstractTeamServerServlet.service(AbstractTeamServerServlet.java:1578)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
at org.eclipse.equinox.http.registry.internal.ServletManager$ServletWrapper.service(ServletManager.java:180)
at org.eclipse.equinox.http.servlet.internal.ServletRegistration.handleRequest(ServletRegistration.java:90)
at org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:111)
at org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:75)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
at org.eclipse.equinox.servletbridge.BridgeServlet.service(BridgeServlet.java:120)
at com.ibm.team.repository.server.servletbridge.JazzServlet.service(JazzServlet.java:76)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1657)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:939)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:502)
at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:179)
at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:91)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:864)
at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1583)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:186)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:452)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:511)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:305)
at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:83)
at com.ibm.ws.ssl.channel.impl.SSLReadServiceContext$SSLReadCompletedCallback.complete(SSLReadServiceContext.java:1784)
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1604)
at com.ibm.team.repository.common.internal.marshal.util.MarshallerUtil.decodeExceptions(MarshallerUtil.java:326)
at com.ibm.team.repository.common.internal.marshal.util.MarshallerUtil.decodeExceptions(MarshallerUtil.java:296)
at com.ibm.team.repository.common.internal.marshal.util.MarshallerUtil.decodeFault(MarshallerUtil.java:261)
at com.ibm.team.repository.transport.client.RemoteTeamService.constructExceptionFromFault(RemoteTeamService.java:622)
at com.ibm.team.repository.transport.client.RemoteTeamService.executeMethod(RemoteTeamService.java:497)
at com.ibm.team.repository.transport.client.RemoteTeamService.invoke(RemoteTeamService.java:202)
at com.ibm.team.repository.transport.client.ServiceInvocationHandler.invoke(ServiceInvocationHandler.java:43)
at $Proxy37.save(Unknown Source)
at sun.reflect.GeneratedMethodAccessor129.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:618)
at com.ibm.team.repository.client.internal.ServiceInterfaceProxy.invokeServiceCall(ServiceInterfaceProxy.java:164)
at com.ibm.team.repository.client.internal.ServiceInterfaceProxy.invoke(ServiceInterfaceProxy.java:88)
at $Proxy37.save(Unknown Source)
at com.ibm.team.workitem.client.internal.WorkItemSaveTransport$1.run(WorkItemSaveTransport.java:33)
at com.ibm.team.repository.client.internal.TeamRepository$3.run(TeamRepository.java:1261)
at com.ibm.team.repository.common.transport.CancelableCaller.call(CancelableCaller.java:79)
at com.ibm.team.repository.client.internal.TeamRepository.callCancelableService(TeamRepository.java:1254)
at com.ibm.team.workitem.client.internal.WorkItemSaveTransport.call(WorkItemSaveTransport.java:30)
at com.ibm.team.workitem.client.internal.WorkItemSaveRunnable.run(WorkItemSaveRunnable.java:37)
at com.ibm.team.process.internal.common.advice.runtime.OperationAdviceManager.runRunnable(OperationAdviceManager.java:1317)
at com.ibm.team.process.internal.common.advice.runtime.OperationAdviceManager.execute(OperationAdviceManager.java:191)
at com.ibm.team.process.internal.client.ProcessClientService.execute(ProcessClientService.java:764)
at com.ibm.team.workitem.client.internal.WorkItemClient.save(WorkItemClient.java:599)
at com.ibm.team.workitem.client.internal.WorkItemWorkingCopyRegistry.saveWorkItems(WorkItemWorkingCopyRegistry.java:2256)
at com.ibm.team.workitem.client.internal.WorkItemWorkingCopyRegistry.saveAffected(WorkItemWorkingCopyRegistry.java:2147)
at com.ibm.team.workitem.client.internal.WorkItemWorkingCopyRegistry.save(WorkItemWorkingCopyRegistry.java:2030)
at com.ibm.team.workitem.client.internal.WorkItemWorkingCopyRegistry.save(WorkItemWorkingCopyRegistry.java:1991)
at com.ibm.team.workitem.client.internal.WorkItemWorkingCopyManager.save(WorkItemWorkingCopyManager.java:122)
at com.ibm.team.workitem.client.internal.WorkItemWorkingCopyImpl.save(WorkItemWorkingCopyImpl.java:232)
at com.ibm.team.workitem.rcp.core.internal.bugzilla.BugzillaImporter$2.execute(BugzillaImporter.java:398)
... 13 more

permanent link
Gerry Cullen (4651) | answered Dec 21 '11, 7:55 a.m.
From: Geoffrey Clemm
To: Tom Loeber
Cc: Gerry Cullen
Date: 12/20/2011 09:15 AM
Subject: Re: Work Item Tags limit

Hi Tom,

You'll probably want to post these questions to the forum.

My take:

1: Probably not. But you should be able to import them as a custom field (they just wouldn't be treated as "tags" though).
2: I have never heard of someone encountering a limit on the total number of tags in the repo, but that doesn't mean there isn't one (:-).
3: There must be a way via the API, because the Eclipse client obtains a list of them for Control-Space completion when adding an entry to the Tag field of a work item.

Cheers,
Geoff


From: Tom Loeber
To: Geoffrey Clemm
Cc: Gerry Cullen
Date: 12/20/2011 06:48 AM
Subject: Work Item Tags limit


Hi Geoffrey - We've just discovered, during a migration from CQ, that attributes of type tag on work items seem to have a size limit of 1000 bytes. See the forum entry below. This raises a few questions.

Can this limit be adjusted some how? Tag seems to be defined as medium string.
This limit is on the size of the actual tag type attribute on the work item. Is there a limit on the total number of available tags in the repository?
Is there a way to query or find out what tags are currently available in the repository?

https://jazz.net/forums/viewtopic.php?t=21547


Regards,
Tom Loeber

Your answer


Register or to post your answer.


Dashboards and work items are no longer publicly available, so some links may be invalid. We now provide similar information through other means. Learn more here.