3021: Do not compute etag for initial model state unless/until actually needed.
authorTom Clegg <tom@curoverse.com>
Sat, 10 Jan 2015 07:54:22 +0000 (02:54 -0500)
committerTom Clegg <tom@curoverse.com>
Wed, 14 Jan 2015 05:52:16 +0000 (00:52 -0500)
commitf4cd3a9893e2f4a0b6fffcd6824a422e3d603b96
tree09457acc78309cf456a0dc7cc02bc035ea25f22f
parenteec57e32699568c315ca1134e9186a04c76d2359
3021: Do not compute etag for initial model state unless/until actually needed.

Profiling shows that making a copy of the attributes hash (which
modelinstance.attributes() does) is much faster than
md5(attrs.inspect). Given that md5(attrs_when_loaded) is never needed
in the common case where a model gets loaded but never changed or
written back to the database, it's better to just stash a copy of the
attributes hash when loading, and defer computing the md5 until
it's time to write a log entry.
services/api/app/models/arvados_model.rb
services/api/lib/kind_and_etag.rb