Generation of database errors possilbe if RSS Alias number of characters is large

Description

Click on the Assignment tools /options link

Add a long RSS Alias for example 111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
Click update

Error alert is generated

Alert: An unknown error has occurred.

DB error follows

2010-03-15 13:24:12,388 WARN TP-Processor6 org.sakaiproject.db.impl.BasicSqlService - Sql.dbWrite(): error code: 1406 sql: insert into SAKAI_ALIAS( SAKAI_ALIAS.ALIAS_ID,SAKAI_ALIAS.TARGET,SAKAI_ALIAS.CREATEDBY,SAKAI_ALIAS.MODIFIEDBY,SAKAI_ALIAS.CREATEDON,SAKAI_ALIAS.MODIFIEDON ) values ( ?,?,?,?,?,? ) binds: 111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111.rss admin admin 20100315122412387 20100315122412387
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'ALIAS_ID' at row 1
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3561)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3495)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1959)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2113)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2693)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2102)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2395)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2313)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2298)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:102)
at org.sakaiproject.db.impl.BasicSqlService.dbWrite(BasicSqlService.java:1236)
at org.sakaiproject.db.impl.BasicSqlService.dbWrite(BasicSqlService.java:1091)
at org.sakaiproject.util.BaseDbFlatStorage.insertResource(BaseDbFlatStorage.java:731)
at org.sakaiproject.util.BaseDbFlatStorage.putResource(BaseDbFlatStorage.java:652)
at org.sakaiproject.util.BaseDbFlatStorage.putResource(BaseDbFlatStorage.java:635)
at org.sakaiproject.alias.impl.DbAliasService$DbStorage.put(DbAliasService.java:396)
at org.sakaiproject.alias.impl.BaseAliasService.setAlias(BaseAliasService.java:458)
at org.sakaiproject.alias.cover.AliasService.setAlias(AliasService.java:81)
at org.sakaiproject.announcement.tool.AnnouncementAction.doOptionsUpdate(AnnouncementAction.java:4406)
at org.sakaiproject.announcement.tool.AnnouncementAction.doUpdate(AnnouncementAction.java:4298)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.sakaiproject.cheftool.VelocityPortletPaneledAction.actionDispatch(VelocityPortletPaneledAction.java:578)
at org.sakaiproject.cheftool.VelocityPortletPaneledAction.processAction(VelocityPortletPaneledAction.java:516)
at org.sakaiproject.cheftool.ToolServlet.doGet(ToolServlet.java:221)
at org.sakaiproject.cheftool.VelocityPortletPaneledAction.doGet(VelocityPortletPaneledAction.java:1014)
at org.sakaiproject.cheftool.ToolServlet.doPost(ToolServlet.java:151)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at org.sakaiproject.vm.ComponentServlet.service(ComponentServlet.java:56)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:580)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:679)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:461)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:364)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
at org.sakaiproject.tool.impl.ActiveToolComponent$MyActiveTool.forward(ActiveToolComponent.java:486)
at org.sakaiproject.portal.charon.SkinnableCharonPortal.forwardTool(SkinnableCharonPortal.java:1216)
at org.sakaiproject.portal.charon.handlers.ToolHandler.doTool(ToolHandler.java:198)
at org.sakaiproject.portal.charon.handlers.ToolHandler.doGet(ToolHandler.java:96)
at org.sakaiproject.portal.charon.handlers.ToolHandler.doPost(ToolHandler.java:73)
at org.sakaiproject.portal.charon.SkinnableCharonPortal.doPost(SkinnableCharonPortal.java:1059)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:641)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:581)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:200)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:775)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:704)
at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:897)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:619)
2010-03-15 13:24:12,389 WARN TP-Processor6 org.sakaiproject.announcement.tool.AnnouncementAction - org.sakaiproject.announcement.tool.AnnouncementAction@6ec4948e.doOptionsUpdate
java.lang.RuntimeException: SqlService.dbWrite failure
at org.sakaiproject.db.impl.BasicSqlService.dbWrite(BasicSqlService.java:1278)
at org.sakaiproject.db.impl.BasicSqlService.dbWrite(BasicSqlService.java:1091)
at org.sakaiproject.util.BaseDbFlatStorage.insertResource(BaseDbFlatStorage.java:731)
at org.sakaiproject.util.BaseDbFlatStorage.putResource(BaseDbFlatStorage.java:652)
at org.sakaiproject.util.BaseDbFlatStorage.putResource(BaseDbFlatStorage.java:635)
at org.sakaiproject.alias.impl.DbAliasService$DbStorage.put(DbAliasService.java:396)
at org.sakaiproject.alias.impl.BaseAliasService.setAlias(BaseAliasService.java:458)
at org.sakaiproject.alias.cover.AliasService.setAlias(AliasService.java:81)
at org.sakaiproject.announcement.tool.AnnouncementAction.doOptionsUpdate(AnnouncementAction.java:4406)
at org.sakaiproject.announcement.tool.AnnouncementAction.doUpdate(AnnouncementAction.java:4298)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.sakaiproject.cheftool.VelocityPortletPaneledAction.actionDispatch(VelocityPortletPaneledAction.java:578)
at org.sakaiproject.cheftool.VelocityPortletPaneledAction.processAction(VelocityPortletPaneledAction.java:516)
at org.sakaiproject.cheftool.ToolServlet.doGet(ToolServlet.java:221)
at org.sakaiproject.cheftool.VelocityPortletPaneledAction.doGet(VelocityPortletPaneledAction.java:1014)
at org.sakaiproject.cheftool.ToolServlet.doPost(ToolServlet.java:151)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at org.sakaiproject.vm.ComponentServlet.service(ComponentServlet.java:56)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:580)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:679)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:461)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:364)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
at org.sakaiproject.tool.impl.ActiveToolComponent$MyActiveTool.forward(ActiveToolComponent.java:486)
at org.sakaiproject.portal.charon.SkinnableCharonPortal.forwardTool(SkinnableCharonPortal.java:1216)
at org.sakaiproject.portal.charon.handlers.ToolHandler.doTool(ToolHandler.java:198)
at org.sakaiproject.portal.charon.handlers.ToolHandler.doGet(ToolHandler.java:96)
at org.sakaiproject.portal.charon.handlers.ToolHandler.doPost(ToolHandler.java:73)
at org.sakaiproject.portal.charon.SkinnableCharonPortal.doPost(SkinnableCharonPortal.java:1059)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:641)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:581)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:200)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:775)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:704)
at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:897)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:619)
Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'ALIAS_ID' at row 1
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3561)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3495)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1959)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2113)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2693)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2102)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2395)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2313)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2298)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:102)
at org.sakaiproject.db.impl.BasicSqlService.dbWrite(BasicSqlService.java:1236)
... 57 more

Attachments

3

Activity

Anthony Whyte April 9, 2010 at 1:22 PM

alias, 2.7.x r76006.

Anthony Whyte April 9, 2010 at 1:19 PM

announcement 2.7.x, r76005.

Savitha Prakash March 31, 2010 at 8:56 AM
Edited

This is further followed in

Savitha Prakash March 31, 2010 at 8:50 AM
Edited

A patch for server-side check added in

A check also added in AnnouncementAction, to display an error message, if the length exceeds 99- r75344

Gonzalo Silverio March 23, 2010 at 3:43 AM

Assigning to you for server side catch, Savitha.

On the user interface restrictions I stuck to what I see as an existing pattern: 40 chars in the user facing UI, database max on the admin facing UI.

The only problem I can think of is aliases that were created prior to this restriction being edited by non-admin users with the new restriction in place.

Fixed

Details

Priority

Affects versions

Fix versions

Components

Assignee

Reporter

Environment

qa1-nl.sakaiproject.org

Created March 15, 2010 at 5:30 AM
Updated June 29, 2010 at 4:58 PM
Resolved April 9, 2010 at 8:33 AM