-
Type:
Bug
-
Resolution: Won't Fix
-
Priority:
Low
-
Component/s: Ecosystem
-
None
-
1
-
Severity 2 - Major
NOTE: This bug report is for JIRA Cloud. Using JIRA Server? See the corresponding bug report.
Summary
Setting an entity property value to a string longer than 255 characters fails returning error 500 if the property type is set to 'string'.
This is because, as mentioned in below documentation page:
text: tokenized before indexing and allows for searching for particular words.
string: indexed as-is and allows for searching for the exact phrase only.
It should be documented than the limit is 255 characters when using the type 'string' and a better error message should be returned in case a bigger value is provided.
Steps to Reproduce
- Set the entity property type to 'string'
- Send a text longer than 255 character as the property value. E.g. I have sent below body in a REST request as described in:
https://docs.atlassian.com/jira/REST/cloud/#api/2/issue/{issueIdOrKey}/properties-setProperty{ "cachedItems":"[{\"id\":\"57dbe48fc0e1d6f6570ccdca\",\"summary\":\"--- template 1\",\"fixed\":false,\"order\":0,\"toggleUser\":\"Mario Thor\",\"toggleDate\":1474028687137},{\"id\":\"57dbe48fc0e1d6f6570ccdcb\",\"summary\":\"abc\",\"fixed\":true,\"order\":1,\"toggleUser\":\"Mario Thor\",\"toggleDate\":1474028704728}]" }
Expected Results
Either 200 OK, or a meaningful error message
Actual Results
You get Error 500 (internal server error) in the REST response and the below exception is thrown in JIRA logs.
The same body is accepted without any problem when the type is set to 'text'.
2016-09-26 18:26:15.207066500 2016-09-26 18:26:15,194 http-nio-2991-exec-34 ERROR sysadmin 1106x17978x1 ua82jq 193.240.188.96 /rest/api/2/issue/DEMO-22/properties/cachedchecklist [c.a.j.r.exception.ExceptionInterceptor.privacy-safe] Returning internal server error in response 2016-09-26 18:26:15.207068500 java.lang.reflect.InvocationTargetException 2016-09-26 18:26:15.207068500 at sun.reflect.GeneratedMethodAccessor1239.invoke(Unknown Source) 2016-09-26 18:26:15.207069500 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 2016-09-26 18:26:15.207108500 at java.lang.reflect.Method.invoke(Method.java:498) 2016-09-26 18:26:15.207108500 at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$ResponseOutInvoker$1.invoke(DispatchProviderHelper.java:192) 2016-09-26 18:26:15.207109500 at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$1.intercept(DispatchProviderHelper.java:83) 2016-09-26 18:26:15.207109500 ... 3 filtered 2016-09-26 18:26:15.207114500 at com.atlassian.jira.rest.exception.ExceptionInterceptor.intercept(ExceptionInterceptor.java:55) 2016-09-26 18:26:15.207115500 ... 1 filtered 2016-09-26 18:26:15.207115500 at com.atlassian.jira.rest.v2.issue.scope.RequestScopeInterceptor.intercept(RequestScopeInterceptor.java:39) 2016-09-26 18:26:15.207116500 ... 15 filtered 2016-09-26 18:26:15.207116500 at com.atlassian.plugins.rest.module.RestDelegatingServletFilter$JerseyOsgiServletContainer.doFilter(RestDelegatingServletFilter.java:159) 2016-09-26 18:26:15.207122500 ... 1 filtered 2016-09-26 18:26:15.207122500 at com.atlassian.plugins.rest.module.RestDelegatingServletFilter.doFilter(RestDelegatingServletFilter.java:69) 2016-09-26 18:26:15.207123500 ... 16 filtered 2016-09-26 18:26:15.207123500 at com.atlassian.servicedesk.internal.web.OperationalStatusAwareHttpFilter.doFilterWhenNotLicensed(OperationalStatusAwareHttpFilter.java:71) 2016-09-26 18:26:15.207128500 at com.atlassian.servicedesk.internal.web.OperationalStatusAwareHttpFilter.doFilter(OperationalStatusAwareHttpFilter.java:33) 2016-09-26 18:26:15.207128500 ... 19 filtered 2016-09-26 18:26:15.207128500 at com.atlassian.web.servlet.plugin.request.RedirectInterceptingFilter.doFilter(RedirectInterceptingFilter.java:21) 2016-09-26 18:26:15.207129500 ... 42 filtered 2016-09-26 18:26:15.207133500 at com.atlassian.plugin.connect.plugin.auth.scope.ApiScopingFilter.doFilter(ApiScopingFilter.java:81) 2016-09-26 18:26:15.207134500 ... 14 filtered 2016-09-26 18:26:15.207134500 at com.atlassian.jira.security.JiraSecurityFilter.lambda$doFilter$0(JiraSecurityFilter.java:76) 2016-09-26 18:26:15.207134500 ... 1 filtered 2016-09-26 18:26:15.207134500 at com.atlassian.jira.security.JiraSecurityFilter.doFilter(JiraSecurityFilter.java:74) 2016-09-26 18:26:15.207135500 ... 16 filtered 2016-09-26 18:26:15.207140500 at com.atlassian.plugins.rest.module.servlet.RestSeraphFilter.doFilter(RestSeraphFilter.java:37) 2016-09-26 18:26:15.207140500 ... 16 filtered 2016-09-26 18:26:15.207141500 at com.atlassian.studio.jira.homepage.CloudHomepageFilter$Action.lambda$nextInFilterChain$1(CloudHomepageFilter.java:110) 2016-09-26 18:26:15.207141500 at com.atlassian.studio.jira.homepage.CloudHomepageFilter.doFilter(CloudHomepageFilter.java:68) 2016-09-26 18:26:15.207141500 ... 19 filtered 2016-09-26 18:26:15.207146500 at com.atlassian.plugin.connect.plugin.auth.oauth2.DefaultSalAuthenticationFilter.doFilter(DefaultSalAuthenticationFilter.java:76) 2016-09-26 18:26:15.207146500 ... 3 filtered 2016-09-26 18:26:15.207147500 at com.atlassian.plugin.connect.plugin.auth.user.ThreeLeggedAuthFilter.doFilter(ThreeLeggedAuthFilter.java:110) 2016-09-26 18:26:15.207147500 ... 3 filtered 2016-09-26 18:26:15.207147500 at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.lambda$invokeFilterChain$0(CustomerContextSettingFilter.java:181) 2016-09-26 18:26:15.207155500 at com.atlassian.servicedesk.internal.utils.context.ReentrantThreadLocalBasedCodeContext.rteInvoke(ReentrantThreadLocalBasedCodeContext.java:139) 2016-09-26 18:26:15.207156500 at com.atlassian.servicedesk.internal.utils.context.ReentrantThreadLocalBasedCodeContext.runOutOfContext(ReentrantThreadLocalBasedCodeContext.java:92) 2016-09-26 18:26:15.207164500 at com.atlassian.servicedesk.internal.utils.context.CustomerContextServiceImpl.runOutOfCustomerContext(CustomerContextServiceImpl.java:64) 2016-09-26 18:26:15.207165500 at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.outOfCustomerContext(CustomerContextSettingFilter.java:174) 2016-09-26 18:26:15.207165500 at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.doFilterImpl(CustomerContextSettingFilter.java:130) 2016-09-26 18:26:15.207170500 at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.doFilter(CustomerContextSettingFilter.java:121) 2016-09-26 18:26:15.207171500 ... 4 filtered 2016-09-26 18:26:15.207171500 at com.atlassian.jwt.internal.servlet.JwtAuthFilter.doFilter(JwtAuthFilter.java:32) 2016-09-26 18:26:15.207172500 ... 8 filtered 2016-09-26 18:26:15.207172500 at com.atlassian.web.servlet.plugin.request.RedirectInterceptingFilter.doFilter(RedirectInterceptingFilter.java:21) 2016-09-26 18:26:15.207176500 ... 4 filtered 2016-09-26 18:26:15.207176500 at com.atlassian.web.servlet.plugin.LocationCleanerFilter.doFilter(LocationCleanerFilter.java:36) 2016-09-26 18:26:15.207177500 ... 40 filtered 2016-09-26 18:26:15.207177500 at com.atlassian.jira.util.zipkin.ZipkinTracingFilter.lambda$doFilter$1(ZipkinTracingFilter.java:53) 2016-09-26 18:26:15.207182500 at com.github.kristofa.brave.servlet.BraveServletFilter.doFilter(BraveServletFilter.java:59) 2016-09-26 18:26:15.207183500 at com.atlassian.jira.util.zipkin.ZipkinTracingFilter.doFilter(ZipkinTracingFilter.java:41) 2016-09-26 18:26:15.207183500 ... 21 filtered 2016-09-26 18:26:15.207183500 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 2016-09-26 18:26:15.207188500 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 2016-09-26 18:26:15.207188500 at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 2016-09-26 18:26:15.207189500 at java.lang.Thread.run(Thread.java:745) 2016-09-26 18:26:15.207189500 Caused by: com.querydsl.core.QueryException: Caught PSQLException for insert into public.entity_property_value (property_index_id, value_string, id) 2016-09-26 18:26:15.207193500 values (?, ?, ?) 2016-09-26 18:26:15.207194500 at com.querydsl.sql.DefaultSQLExceptionTranslator.translate(DefaultSQLExceptionTranslator.java:50) 2016-09-26 18:26:15.207194500 at com.querydsl.sql.Configuration.translate(Configuration.java:453) 2016-09-26 18:26:15.207194500 at com.querydsl.sql.dml.SQLInsertClause.execute(SQLInsertClause.java:396) 2016-09-26 18:26:15.207199500 at com.atlassian.jira.database.IdGeneratingSQLInsertClause.executeWithId(IdGeneratingSQLInsertClause.java:73) 2016-09-26 18:26:15.207204500 at com.atlassian.jira.database.DefaultQueryDslAccessor.lambda$execute$1(DefaultQueryDslAccessor.java:69) 2016-09-26 18:26:15.207204500 at com.atlassian.jira.database.DatabaseAccessorImpl.lambda$runInTransaction$0(DatabaseAccessorImpl.java:98) 2016-09-26 18:26:15.207205500 at com.atlassian.jira.database.DatabaseAccessorImpl.executeQuery(DatabaseAccessorImpl.java:67) 2016-09-26 18:26:15.207209500 at com.atlassian.jira.database.DatabaseAccessorImpl.runInTransaction(DatabaseAccessorImpl.java:93) 2016-09-26 18:26:15.207210500 at com.atlassian.jira.database.DefaultQueryDslAccessor.execute(DefaultQueryDslAccessor.java:68) 2016-09-26 18:26:15.207210500 at com.atlassian.jira.index.property.database.SQLEntityPropertyIndexManagerImpl.indexProperty(SQLEntityPropertyIndexManagerImpl.java:132) 2016-09-26 18:26:15.207217500 at com.atlassian.jira.index.property.database.SQLEntityPropertyIndexManagerImpl.indexStringProperty(SQLEntityPropertyIndexManagerImpl.java:104) 2016-09-26 18:26:15.207218500 at com.atlassian.jira.entity.property.JsonEntityPropertyDbIndexer.indexNewProperties(JsonEntityPropertyDbIndexer.java:108) 2016-09-26 18:26:15.207218500 at com.atlassian.jira.entity.property.JsonEntityPropertyDbIndexer.lambda$addEntityPropertyToIndex$0(JsonEntityPropertyDbIndexer.java:53) 2016-09-26 18:26:15.207223500 at io.atlassian.fugue.Option$Some.forEach(Option.java:454) 2016-09-26 18:26:15.207224500 at com.atlassian.jira.entity.property.JsonEntityPropertyDbIndexer.addEntityPropertyToIndex(JsonEntityPropertyDbIndexer.java:41) 2016-09-26 18:26:15.207224500 at com.atlassian.jira.entity.property.JsonEntityPropertyManagerImpl.lambda$put$1(JsonEntityPropertyManagerImpl.java:143) 2016-09-26 18:26:15.207229500 at com.atlassian.jira.database.DefaultQueryDslAccessor.lambda$execute$1(DefaultQueryDslAccessor.java:69) 2016-09-26 18:26:15.207229500 at com.atlassian.jira.database.DatabaseAccessorImpl.lambda$runInTransaction$0(DatabaseAccessorImpl.java:98) 2016-09-26 18:26:15.207230500 at com.atlassian.jira.database.DatabaseAccessorImpl.executeQuery(DatabaseAccessorImpl.java:67) 2016-09-26 18:26:15.207234500 at com.atlassian.jira.database.DatabaseAccessorImpl.runInTransaction(DatabaseAccessorImpl.java:93) 2016-09-26 18:26:15.207234500 at com.atlassian.jira.database.DefaultQueryDslAccessor.execute(DefaultQueryDslAccessor.java:68) 2016-09-26 18:26:15.207235500 at com.atlassian.jira.entity.property.JsonEntityPropertyManagerImpl.put(JsonEntityPropertyManagerImpl.java:132) 2016-09-26 18:26:15.207235500 at com.atlassian.jira.entity.property.JsonEntityPropertyManagerImpl.put(JsonEntityPropertyManagerImpl.java:150) 2016-09-26 18:26:15.207241500 at com.atlassian.jira.entity.property.BaseEntityPropertyService.setProperty(BaseEntityPropertyService.java:101) 2016-09-26 18:26:15.207242500 at com.atlassian.jira.entity.property.DelegatingEntityPropertyService.setProperty(DelegatingEntityPropertyService.java:41) 2016-09-26 18:26:15.207242500 ... 2 filtered 2016-09-26 18:26:15.207243500 at java.lang.reflect.Method.invoke(Method.java:498) 2016-09-26 18:26:15.207247500 at com.atlassian.plugin.util.ContextClassLoaderSettingInvocationHandler.invoke(ContextClassLoaderSettingInvocationHandler.java:26) 2016-09-26 18:26:15.207248500 at com.sun.proxy.$Proxy489.setProperty(Unknown Source) 2016-09-26 18:26:15.207248500 ... 2 filtered 2016-09-26 18:26:15.207248500 at java.lang.reflect.Method.invoke(Method.java:498) 2016-09-26 18:26:15.207249500 at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302) 2016-09-26 18:26:15.207253500 at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.doInvoke(ServiceInvoker.java:56) 2016-09-26 18:26:15.207253500 at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.invoke(ServiceInvoker.java:60) 2016-09-26 18:26:15.207254500 at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 2016-09-26 18:26:15.207283500 at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:133) 2016-09-26 18:26:15.207283500 at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:121) 2016-09-26 18:26:15.207284500 at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 2016-09-26 18:26:15.207290500 at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invokeUnprivileged(ServiceTCCLInterceptor.java:70) 2016-09-26 18:26:15.207290500 at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invoke(ServiceTCCLInterceptor.java:53) 2016-09-26 18:26:15.207291500 at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 2016-09-26 18:26:15.207295500 at org.eclipse.gemini.blueprint.service.importer.support.LocalBundleContextAdvice.invoke(LocalBundleContextAdvice.java:57) 2016-09-26 18:26:15.207296500 at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 2016-09-26 18:26:15.207296500 at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:133) 2016-09-26 18:26:15.207304500 at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:121) 2016-09-26 18:26:15.207305500 at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 2016-09-26 18:26:15.207305500 at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:208) 2016-09-26 18:26:15.207310500 at com.sun.proxy.$Proxy2657.setProperty(Unknown Source) 2016-09-26 18:26:15.207310500 at com.atlassian.jira.rest.v2.entity.property.BasePropertyResource.setProperty(BasePropertyResource.java:140) 2016-09-26 18:26:15.207310500 at com.atlassian.jira.rest.v2.issue.IssuePropertyResource.setProperty(IssuePropertyResource.java:91) 2016-09-26 18:26:15.207311500 ... 283 more 2016-09-26 18:26:15.207311500 Caused by: org.postgresql.util.PSQLException: ERROR: value too long for type character varying(255) 2016-09-26 18:26:15.207316500 at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2157) 2016-09-26 18:26:15.207316500 at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1886) 2016-09-26 18:26:15.207316500 at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255) 2016-09-26 18:26:15.207322500 at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:555) 2016-09-26 18:26:15.207323500 at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:417) 2016-09-26 18:26:15.207323500 ... 2 filtered 2016-09-26 18:26:15.207323500 at java.lang.reflect.Method.invoke(Method.java:498) 2016-09-26 18:26:15.207324500 at org.vibur.dbcp.proxy.AbstractInvocationHandler.targetInvoke(AbstractInvocationHandler.java:109) 2016-09-26 18:26:15.207328500 at org.vibur.dbcp.proxy.StatementInvocationHandler.processExecute(StatementInvocationHandler.java:126) 2016-09-26 18:26:15.207329500 at org.vibur.dbcp.proxy.StatementInvocationHandler.doInvoke(StatementInvocationHandler.java:75) 2016-09-26 18:26:15.207329500 at org.vibur.dbcp.proxy.StatementInvocationHandler.doInvoke(StatementInvocationHandler.java:40) 2016-09-26 18:26:15.207330500 at org.vibur.dbcp.proxy.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:80) 2016-09-26 18:26:15.207334500 at com.sun.proxy.$Proxy4301.executeUpdate(Unknown Source) 2016-09-26 18:26:15.207334500 at com.querydsl.sql.dml.SQLInsertClause.execute(SQLInsertClause.java:382) 2016-09-26 18:26:15.207335500 ... 333 more
Notes
This is happening because the value provided is a string longer than 256 characters and "value_string" is set to character varying(255) in the DB.
When using type text the single words from the string are added to "value_string".
jira=> \d public.entity_property_value
Table "public.entity_property_value"
Column | Type | Modifiers
-------------------+--------------------------+--------------------------------------------------------------------
id | numeric(18,0) | not null default nextval('entity_property_value_id_seq'::regclass)
property_index_id | numeric(18,0) |
value_date | timestamp with time zone |
value_string | character varying(255) |
value_number | numeric(24,6) |
Indexes:
"pk_entity_property_value" PRIMARY KEY, btree (id)
Workaround
Set the property type to 'text'
- is related to
-
JRASERVER-62695 Error 500 returned when setting entity property value more than 255 characters if the type is 'string'
-
- Closed
-
- relates to
-
JCE-1949 Loading...