Upgrade application from rails 2.2.2 to 2.3.2

Hi,

We are upgrading our application to 2.3.2 recently and got a strange problem with session id.

We uses ActiveRecord to store sessions and the session id column type was VARCHAR(255). After I started the server, I had problem with inserting into session table. It turns out that the session id value is really long and after I changed the column type to text, the application works. I also tried to switch to store sessions in cookies and it works. You'll notice the session id is longer than 255 too though. Any comments?

Here are session_id and data I copied from my sessions table

session_id: BAh7FCIodmFsaWRhdGlvbl90cmFja2VyX2Zvcl9TaGlwcGluZ0luZm9vOixJcnJlc29sdXRlVmFsaWRhdGlvbjo6VmFsaWRhdGlvblRyYWNrZXIGOhpAYXR0cmlidXRlc192YWxpZGF0ZWR7BjoVc2hpcHBpbmdfYWRkcmVzc286PklycmVzb2x1dGVWYWxpZGF0aW9uOjpWYWxpZGF0aW9uVHJhY2tlcjo6QXR0cmlidXRlVHJhY2tlcgY6C0B0aW1lc2kAOg5yZXR1cm5fdG8iBi86D2V4cGlyZXNfYXRJdToJVGltZQ20ShuAlVjTQQY6H0BtYXJzaGFsX3dpdGhfdXRjX2NvZXJjaW9uRjoLbG9jYWxlIgpFTl9VUzoPc2Vzc2lvbl9pZCIlMGMxYjU0NzJiY2Y1MTc3NDlmZGVjYzJiMTBhNjYxMjg6GHN1YnNjcmliZV90eXBlX25hbWUiC0RpcmVjdDoec2hvd19idXNpbmVzc19wbGFuc19vbmx5P0Y6EF9jc3JmX3Rva2VuIjFvWVNpT2c1cDZCbXE0emZrM1FTaXlXZ1V5cWhhOUF3L1BmNDdDWkV2UC9BPSIndmFsaWRhdGlvbl90cmFja2VyX2Zvcl9CaWxsaW5nSW5mb287AAY7BnsJOhhiaWxsaW5nX3Bvc3RhbF9jb2RlbzsIBjsJaQA6F2JpbGxpbmdfZmlyc3RfbmFtZW87CAY7CWkAOhFwYXltZW50X3R5cGVvOwgGOwlpADoWYmlsbGluZ19sYXN0X25hbWVvOwgGOwlpADoObmF2aWdhdG9ybzoOTmF2aWdhdG9yCjoTQHByb3RldXNfcGFnZXNbDW86DUZsb3dQYWdlCjoTQHN0YXRlX2NsYXNzZXN7CDoLYWN0aXZlIgthY3RpdmU6DnVudmlzaXRlZCIOdW52aXNpdGVkOgx2aXNpdGVkIgx2aXNpdGVkOgpAbmFtZToVcGxhbnNfYnJlYWRjcnVtYjoPQGludmlzaWJsZUY6C0BzdGF0ZTscOglAa2V5OgpwbGFuc287Ggo7G0AaOx86HXNlbGVjdF9kZXZpY2VfYnJlYWRjcnVtYjshRjsiOx07IzoSc2VsZWN0X2RldmljZW87Ggo7G0AaOx86HXNlbGVjdF9udW1iZXJfYnJlYWRjcnVtYjshRjsiOx07IzoSc2VsZWN0X251bWJlcm87Ggo7G0AaOx86HGFjY291bnRfaW5mb19icmVhZGNydW1iOyFGOyI7HTsjOgxhY2NvdW50bzsaCjsbQBo7HzohZW1lcmdlbmN5X2FkZHJlc3NfYnJlYWRjcnVtYjshRjsiOx07IzoWZW1lcmdlbmN5X2FkZHJlc3NvOxoKOxtAGjsfOiRiaWxsaW5nX2FuZF9zaGlwcGluZ19icmVhZGNydW1iOyFGOyI7HTsjOhliaWxsaW5nX2FuZF9zaGlwcGluZ287Ggs7G0AaOx86F3N1bW1hcnlfYnJlYWRjcnVtYjshRjoKQGJhY2swOyI7HTsjOgxzdW1tYXJ5bzsaDDsbewg7HEAbOx0iDmludmlzaWJsZTseQB07HzocY29uZmlybWF0aW9uX2JyZWFkY3J1bWI7IVQ7MDA7IjsdOyM6EWNvbmZpcm1hdGlvbjoKQG5leHQwOhVAYWN0aXZlX3BhZ2Vfa2V5OyQ6F0BhbGxfcHJvdGV1c19wYWdlc3sTOzFAIzocZW1lcmdlbmN5X2FkZHJlc3NfdGVybXNvOxoKOxtAGjoMQHBhcmVudDssOyFGOyI7HTsjOzc7KEAfOhV0ZW1wb3JhcnlfbnVtYmVybzsaCzsbQBo7ODsoOyFGOzA6HHBvcnRfbnVtYmVyX3N1Y2Nlc3NfdXJsOyI7HTsjOzk7JkAeOzNAJDoZc2hpcHBpbmdfc3VnZ2VzdGlvbnNvOxoKOxtAGjs4Oy47IUY7IjsdOyM7OzskQBk6GHBvcnRfbnVtYmVyX3N1Y2Nlc3NvOxoKOxtAGjs4Oyg7IUY7IjsdOyM7PDssQCE7KkAgOiJlbWVyZ2VuY3lfYWRkcmVzc19zdWdnZXN0aW9uc287Ggs7G0AaOzg7LDshRjsiOx07Izs9OzQ6IGVtZXJnZW5jeV9hZGRyZXNzX3Rlcm1zX3VybDoYaW50ZXJuYXRpb25hbF9wbGFuc287Ggo7G0AaOzg7JDshRjsiOx07Izs/Oy5AIjoXQHByZXZpb3VzX3BhZ2Vfa2V5OyQ6D0BhbGxfcGFnZXNbDUAZQB5AH0AgQCFAIkAjQCQiN3ZhbGlkYXRpb25fdHJhY2tlcl9mb3JfQmlsbGluZ0FuZFNoaXBwaW5nUHJlc2VudGVybzsABjsGewY6EnRvc19hZ3JlZW1lbnRvOwgGOwlpADoMY2FydF9pZGkCfQ0iCmZsYXNoSUM6J0FjdGlvbkNvbnRyb2xsZXI6OkZsYXNoOjpGbGFzaEhhc2h7AAY6CkB1c2VkewA6F2phdmFzY3JpcHRfZW5hYmxlZCIJdHJ1ZToQbGFuZGluZ191cmwiFmh0dHA6Ly9sb2NhbGhvc3Qv--35e864c1c7f807e558a8a23590ae57dd22a634aa

data: BAh7EDoMY2FydF9pZGkCfg06C2xvY2FsZSIKRU5fVVM6EGxhbmRpbmdfdXJs IhZodHRwOi8vbG9jYWxob3N0LzoXamF2YXNjcmlwdF9lbmFibGVkIgl0cnVl Og9leHBpcmVzX2F0SXU6CVRpbWUNtUobgDie08QGOh9AbWFyc2hhbF93aXRo X3V0Y19jb2VyY2lvbkY6DnJldHVybl90byIGLzoQX2NzcmZfdG9rZW4iMXVa ek5DTUhubGhTZ2tJaFZuYmc1emo4WmpJandQM0RXNDhNTG9lY0llQ3c9Ohhz dWJzY3JpYmVfdHlwZV9uYW1lIgtEaXJlY3Q6HnNob3dfYnVzaW5lc3NfcGxh bnNfb25seT9GOg5uYXZpZ2F0b3JvOg5OYXZpZ2F0b3ILOhdAcHJldmlvdXNf cGFnZV9rZXk6EnNlbGVjdF9kZXZpY2U6FUBhY3RpdmVfcGFnZV9rZXk6EnNl bGVjdF9udW1iZXI6D0B2ZGNfcGFnZXNbADoXQGFsbF9wcm90ZXVzX3BhZ2Vz exM6DHN1bW1hcnlvOg1GbG93UGFnZQs6E0BzdGF0ZV9jbGFzc2Vzewg6C2Fj dGl2ZSILYWN0aXZlOg51bnZpc2l0ZWQiDnVudmlzaXRlZDoMdmlzaXRlZCIM dmlzaXRlZDoKQG5hbWU6F3N1bW1hcnlfYnJlYWRjcnVtYjoPQGludmlzaWJs ZUY6C0BzdGF0ZTscOglAa2V5Oxg6CkBiYWNrMDoiZW1lcmdlbmN5X2FkZHJl c3Nfc3VnZ2VzdGlvbnNvOxkLOgpAbmV4dDogZW1lcmdlbmN5X2FkZHJlc3Nf dGVybXNfdXJsOxpAEToMQHBhcmVudDoWZW1lcmdlbmN5X2FkZHJlc3M7IEY7 ITscOyI7JDoYaW50ZXJuYXRpb25hbF9wbGFuc287GQo7GkAROyc6CnBsYW5z OyBGOyE7HDsiOyk6GWJpbGxpbmdfYW5kX3NoaXBwaW5nbzsZCjsaQBE7Hjok YmlsbGluZ19hbmRfc2hpcHBpbmdfYnJlYWRjcnVtYjsgRjshOxw7IjsrOhxl bWVyZ2VuY3lfYWRkcmVzc190ZXJtc287GQo7GkAROyc7KDsgRjshOxw7Ijst OxVvOxkKOxpAETseOh1zZWxlY3RfbnVtYmVyX2JyZWFkY3J1bWI7IEY7ITsb OyI7FToRY29uZmlybWF0aW9ubzsZDDslMDsaewg7G0ASOxwiDmludmlzaWJs ZTsdQBQ7HjocY29uZmlybWF0aW9uX2JyZWFkY3J1bWI7IFQ7ITscOyI7Lzsj MDoVdGVtcG9yYXJ5X251bWJlcm87GQs7GkAROyc7FTsgRjshOxw7IjsxOyM6 HHBvcnRfbnVtYmVyX3N1Y2Nlc3NfdXJsOxNvOxkKOxpAETseOh1zZWxlY3Rf ZGV2aWNlX2JyZWFkY3J1bWI7IEY7ITsdOyI7EzoZc2hpcHBpbmdfc3VnZ2Vz dGlvbnNvOxkKOxpAETsnOys7IEY7ITscOyI7NDsqbzsZCjsaQBE7HjoVcGxh bnNfYnJlYWRjcnVtYjsgRjshOx07IjsqOhhwb3J0X251bWJlcl9zdWNjZXNz bzsZCjsaQBE7JzsVOyBGOyE7HDsiOzY6DGFjY291bnRvOxkKOxpAETseOhxh Y2NvdW50X2luZm9fYnJlYWRjcnVtYjsgRjshOxw7Ijs3OyhvOxkKOxpAETse OiFlbWVyZ2VuY3lfYWRkcmVzc19icmVhZGNydW1iOyBGOyE7HDsiOyg6D0Bh bGxfcGFnZXNbDUAgQB5AGUAiQCNAF0AQQBo6E0Bwcm90ZXVzX3BhZ2VzWw1A IEAeQBlAIkAjQBdAEEAaIgpmbGFzaElDOidBY3Rpb25Db250cm9sbGVyOjpG bGFzaDo6Rmxhc2hIYXNoewAGOgpAdXNlZHsA

Thank you. Cao

Hi,

We are upgrading our application to 2.3.2 recently and got a strange problem with session id.

We uses ActiveRecord to store sessions and the session id column type was VARCHAR(255). After I started the server, I had problem with inserting into session table. It turns out that the session id value is really long and after I changed the column type to text, the application works. I also tried to switch to store sessions in cookies and it works. You'll notice the session id is longer than 255 too though. Any comments?

That looks like it's taking cookie store type session_ids (where the session_id is the the entire session) and trying to insert it into the database. Not sure how that would happen unless you were switching back and forth between session store types (because then you would get a session cookie with that long session id).

Fred

The reason is well explained by differences between how session id is calculated for different session stores.

You need to clear the cookies in the client web browser's cache before they start using session ids compatible with your new session store.

You don't really need to reset any database.

I believe you would have faced the same problem in previous rails releases as well.

-erekyus

Perry Smith-5 wrote: