I have code to delete the Plugin device from the system, when I try to execute this code I get an exception before my Command gets invoked in system code that tries to create an event. I debugged this to the event table underlying SQL definition. I wanted to know what the best practice was for CloudStack:
* Update the Event Table definition to accommodate a longer Type Field * Limit my choice of naming to fit the existing 32 byte Event Field Ideally I wanted to change the event definition, but the change will impact database upgrade as we go from one release to another. -Soheil mysql> describe event; +-------------+---------------------+------+-----+-----------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+---------------------+------+-----+-----------+----------------+ | id | bigint(20) unsigned | NO | PRI | NULL | auto_increment | ..... | type | varchar(32) | NO | MUL | NULL | | ..... +-------------+---------------------+------+-----+-----------+----------------+ ------- @Entity @Table(name="event") public class EventVO implements Event { .... @Column(name="type") private String type; ------ ERROR [cloud.api.ApiServer] (183551903@qtp-729770861-5:) unhandled exception executing api command: deleteInfobloxDevice com.cloud.utils.exception.CloudRuntimeException: DB Exception on: com.mysql.jdbc.JDBC4PreparedStatement@59c7f05d: INSERT INTO event (event.type, event.state, event.description, event.created, event.user_id, event.account_id, event.domain_id, event.level, event.start_id, event.parameters, event.uuid, event.archived) VALUES (_binary'PHYSICAL.INFOBLOXCONTROLLER.DELETE', 'Scheduled', _binary'Deleting Infoblox Controller', '2013-07-16 04:11:58', 2, 2, 1, _binary'INFO', 0, null, _binary'eefc03f0-f60b-4450-a43a-319e66c15e94', 0) at com.cloud.utils.db.GenericDaoBase.persist(GenericDaoBase.java:1342) ...... at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'type' at row 1 at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4072)