We see this exception many times in IntroscopeEnterpriseManager.log. Is it possible that this type exception might be threatening the integrity of the database or case any issues? How to solve this issue?
[ERROR] [Thread-ModelSynchronization] [Manager.AppMap] Unable to process graph {"vertices":{"ATC:..................................... org.springframework.dao.DataIntegrityViolationException: PreparedStatementCallback; SQL [INSERT INTO appmap_id_mappings (vertex_id, external_id, type, tenant_id, layer) VALUES (?, ?, ?, ?, ?)]; ERROR: value too long for type character varying(2048); nested exception is org.postgresql.util.PSQLException: ERROR: value too long for type character varying(2048) at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:102) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:73) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:82) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:82) at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:655) at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:876) at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:900) at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.update(NamedParameterJdbcTemplate.java:287) at com.wily.introscope.appmap.em.model.dao.impl.gmt.GMTNamedParameterJdbcTemplate.update(GMTNamedParameterJdbcTemplate.java:250) at com.wily.introscope.appmap.em.model.dao.impl.CollectorOperationsDaoImpl.createMappingTransactional(CollectorOperationsDaoImpl.java:799) at com.wily.introscope.appmap.em.model.dao.impl.SubtransactionsDaoImpl.createMappingTransactional(SubtransactionsDaoImpl.java:61) at sun.reflect.GeneratedMethodAccessor454.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:282) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213) at com.sun.proxy.$Proxy120.createMappingTransactional(Unknown Source) at com.wily.introscope.appmap.em.model.dao.impl.CollectorOperationsDaoImpl.getOrCreateMapping(CollectorOperationsDaoImpl.java:656) at com.wily.introscope.appmap.em.model.dao.impl.CollectorOperationsDaoImpl.getOrCreateMappingOneByOne(CollectorOperationsDaoImpl.java:716) at com.wily.introscope.appmap.em.model.dao.impl.CollectorOperationsDaoImpl.createBulkMapping(CollectorOperationsDaoImpl.java:694) at com.wily.introscope.appmap.em.model.dao.impl.CollectorOperationsDaoImpl.getOrCreateMapping(CollectorOperationsDaoImpl.java:683) at sun.reflect.GeneratedMethodAccessor436.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) at com.sun.proxy.$Proxy141.getOrCreateMapping(Unknown Source) at sun.reflect.GeneratedMethodAccessor436.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) at com.sun.proxy.$Proxy142.getOrCreateMapping(Unknown Source) at com.wily.introscope.appmap.em.ontology.AppMapModelImpl.processGraph(AppMapModelImpl.java:1592) at com.wily.introscope.appmap.em.ontology.OntologyModelBean.processGraph(OntologyModelBean.java:204) at com.wily.introscope.appmap.em.ontology.ModelSynchronization.run(ModelSynchronization.java:341) at java.lang.Thread.run(Thread.java:745) Caused by: org.postgresql.util.PSQLException: ERROR: value too long for type character varying(2048) at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2157) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1886) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255) at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:555) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:417) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:363) at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeUpdate(ProxyPreparedStatement.java:61) at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeUpdate(HikariProxyPreparedStatement.java) at org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:883) at org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:876) at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:639) ... 38 more
Environment
Release : 10.7.0
Component : APM EM
Resolution
Stop EM.
Make a back up of APM DB.
Run the following two SQL queries against the APM DB to increase the character limit to 4096:
ALTER TABLE appmap_attribs ALTER COLUMN value TYPE varchar(4096);
ALTER TABLE appmap_id_mappings ALTER COLUMN external_id TYPE varchar(4096);