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

On Mar 24, 1:40 pm, Guoliang C. [email protected]
wrote:

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

Frederick C. wrote:

On Mar 24, 1:40�pm, Guoliang C. [email protected]
wrote:

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

Thank you.

That sounds a reasonable guess. We do use cookies in a few places, it
might trigger rails to generate session id differently. I’ll try to dig
through rails code and see if I can find anything interesting.

I reset my databases and the application works great now. Not sure what
caused the original problem, maybe just some random thing related to
session database.

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 S.-5 wrote:

comments?


View this message in context:
http://www.nabble.com/Upgrade-application-from-rails-2.2.2-to-2.3.2-tp22680659p23230162.html
Sent from the RubyOnRails Users mailing list archive at Nabble.com.