http://jira.hyperic.com/browse/HHQ-4185
Looks like the problem here is that the entry point is a read-only method, AIQueueManagerImpl.findAIPlatformById(), which calls a read-write method, CPropManagerImpl.setValue().
Not sure if it is because of the jdbcTemplate or if it is a bigger issue. Could be a big problem.
2010-08-03 22:08:31,255 ERROR [catalina-exec-191] [org.hyperic.hq.appdef.server.session.CPropManagerImpl@281] Unable to update CPropKey values: StatementCallback; SQL [DELETE FROM EAM_CPROP WHERE KEYID=10295 AND APPDEF_ID=10201]; Connection is read-only. Queries leading to data modification are not allowed.; nested exception is java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed.
org.springframework.dao.TransientDataAccessResourceException: StatementCallback; SQL [DELETE FROM EAM_CPROP WHERE KEYID=10295 AND APPDEF_ID=10201]; Connection is read-only. Queries leading to data modification are not allowed.; nested exception is java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed.
at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:107)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:406)
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:518)
at org.hyperic.hq.appdef.server.session.CpropDAO.setValue(CpropDAO.java:128)
at org.hyperic.hq.appdef.server.session.CPropManagerImpl.setValue(CPropManagerImpl.java:279)
...
...
at $Proxy33.setValue(Unknown Source)
at org.hyperic.hq.appdef.server.session.AI2AppdefDiff.updateCprops(AI2AppdefDiff.java:554)
at org.hyperic.hq.appdef.server.session.AI2AppdefDiff.doServerDiffs(AI2AppdefDiff.java:421)
at org.hyperic.hq.appdef.server.session.AI2AppdefDiff.diffAgainstAppdef(AI2AppdefDiff.java:155)
at org.hyperic.hq.appdef.server.session.AIQueueManagerImpl.queue(AIQueueManagerImpl.java:160)
at org.hyperic.hq.appdef.server.session.AIQueueManagerImpl.syncQueue(AIQueueManagerImpl.java:207)
at org.hyperic.hq.appdef.server.session.AIQueueManagerImpl.findAIPlatformById(AIQueueManagerImpl.java:335)
...
...
at $Proxy40.findAIPlatformById(Unknown Source)
at AutodiscoveryController.approve(AutodiscoveryController:46)
...
...
Caused by: java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1599)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1566)
at org.springframework.jdbc.core.JdbcTemplate$1UpdateStatementCallback.doInStatement(JdbcTemplate.java:508)
at org.springframework.jdbc.core.JdbcTemplate$1UpdateStatementCallback.doInStatement(JdbcTemplate.java:1)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:395)
... 168 more
Anonymous