Details
Description
We're seeing issues right now on trunk when using webdav. This is because the sessions are now being returned as 40 characters instead of 36. This method should restrict the sessionId returned to 36 characters for compatibility with the database. Also it should log if there is an exception.
-
- WARNING: A change to address this issue introduced a bug in the Kernel 1.3.2 (Sakai 2.9.2) release that truncated the SESSION_IDs, which causes SESSION_ID constraint violations. This change was reverted in the Kernel 1.3.3 (Sakai 2.9.3) release.
2013-03-28 13:54:54,468 WARN http-bio-8082-exec-14 org.sakaiproject.util.RequestFilter -
java.lang.RuntimeException: SqlService.dbWrite failure
at org.sakaiproject.db.impl.BasicSqlService.dbWriteCount(BasicSqlService.java:1289)
at org.sakaiproject.db.impl.BasicSqlService.dbWrite(BasicSqlService.java:1143)
at org.sakaiproject.db.impl.BasicSqlService.dbWrite(BasicSqlService.java:1059)
at org.sakaiproject.event.impl.UsageSessionServiceAdaptor$ClusterStorage.addSession(UsageSessionServiceAdaptor.java:926)
at org.sakaiproject.event.impl.UsageSessionServiceAdaptor.startSession(UsageSessionServiceAdaptor.java:313)
at org.sakaiproject.event.impl.UsageSessionServiceAdaptor.login(UsageSessionServiceAdaptor.java:525)
. . .
at java.lang.Thread.run(Thread.java:722)
Caused by: java.sql.SQLException: ORA-12899: value too large for column "SAK"."SAKAI_SESSION"."SESSION_ID" (actual: 40, maximum: 36)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:745)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216)
at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:966)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1170)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3339)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3423)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105)
at org.sakaiproject.db.impl.BasicSqlService.dbWriteCount(BasicSqlService.java:1247)
... 28 more